The IO error path in kvm__emulate_io would call br_read_unlock(), then
goto error, which would call br_read_unlock() again.  Refactor the
control flow to have only one exit path and one call to
br_read_unlock().

Signed-off-by: Josh Triplett <[email protected]>
---
 ioport.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/ioport.c b/ioport.c
index 81a747d..8c55a84 100644
--- a/ioport.c
+++ b/ioport.c
@@ -185,7 +185,7 @@ bool kvm__emulate_io(struct kvm_cpu *vcpu, u16 port, void 
*data, int direction,
        br_read_lock();
        entry = ioport_search(&ioport_tree, port);
        if (!entry)
-               goto error;
+               goto out;
 
        ops     = entry->ops;
 
@@ -198,14 +198,11 @@ bool kvm__emulate_io(struct kvm_cpu *vcpu, u16 port, void 
*data, int direction,
                ptr += size;
        }
 
+out:
        br_read_unlock();
 
-       if (!ret)
-               goto error;
-
-       return true;
-error:
-       br_read_unlock();
+       if (ret)
+               return true;
 
        if (kvm->cfg.ioport_debug)
                ioport_error(port, data, direction, size, count);
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to