]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: ia64: Fix irq disabling leak in error handling code
authorJulia Lawall <julia@diku.dk>
Tue, 22 Jul 2008 19:38:18 +0000 (21:38 +0200)
committerAvi Kivity <avi@qumranet.com>
Sun, 27 Jul 2008 08:35:32 +0000 (11:35 +0300)
commit9a8fe1545926607a059e6d72604b9de9dc6237c5
tree1a384bb77cd56512ba2b3a1c7ac83eacea0165ec
parent5c90e18a78c52f746f688e7044ad8a2b10908293
KVM: ia64: Fix irq disabling leak in error handling code

There is a call to local_irq_restore in the normal exit case, so it would
seem that there should be one on an error return as well.

The semantic patch that finds this problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@@
expression l;
expression E,E1,E2;
@@

local_irq_save(l);
... when != local_irq_restore(l)
    when != spin_unlock_irqrestore(E,l)
    when any
    when strict
(
if (...) { ... when != local_irq_restore(l)
               when != spin_unlock_irqrestore(E1,l)
+   local_irq_restore(l);
    return ...;
}
|
if (...)
+   {local_irq_restore(l);
    return ...;
+   }
|
spin_unlock_irqrestore(E2,l);
|
local_irq_restore(l);
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Avi Kivity <avi@qumranet.com>
arch/ia64/kvm/kvm-ia64.c