kvm__emulate_io: Don't call br_read_unlock() twice on IO error
PATCH 1/1 kvm__emulate_io: Don't call br_read_unlock() twice on IO error
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(-)
ioport.c +4 -7
@@ -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);
Signature · 1 line
2.5.0
Quoted 4 lines · Josh Triplett
The IO error path in
kvm__emulate_iowould callbr_read_unlock(), then goto error, which would callbr_read_unlock()again. Refactor the control flow to have only one exit path and one call tobr_read_unlock().
Thanks, Josh. I applied all three patches!
Will