Message ID | 1428651140-13665-1-git-send-email-alistair@popple.id.au (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
I should have caught that one. Thanks. -corey On 04/10/2015 02:32 AM, Alistair Popple wrote: > If ipmi_powernv_recv(...) is called without a current message it > prints a warning and returns. However it fails to release the message > lock causing the system to dead lock during any subsequent IPMI > operations. > > This error path should never normally be taken unless there are bugs > elsewhere in the system. > > Signed-off-by: Alistair Popple <alistair@popple.id.au> > --- > drivers/char/ipmi/ipmi_powernv.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c > index b3a2224..9b409c0 100644 > --- a/drivers/char/ipmi/ipmi_powernv.c > +++ b/drivers/char/ipmi/ipmi_powernv.c > @@ -126,6 +126,7 @@ static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi) > spin_lock_irqsave(&smi->msg_lock, flags); > > if (!smi->cur_msg) { > + spin_unlock_irqrestore(&smi->msg_lock, flags); > pr_warn("no current message?\n"); > return 0; > }
diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c index b3a2224..9b409c0 100644 --- a/drivers/char/ipmi/ipmi_powernv.c +++ b/drivers/char/ipmi/ipmi_powernv.c @@ -126,6 +126,7 @@ static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi) spin_lock_irqsave(&smi->msg_lock, flags); if (!smi->cur_msg) { + spin_unlock_irqrestore(&smi->msg_lock, flags); pr_warn("no current message?\n"); return 0; }
If ipmi_powernv_recv(...) is called without a current message it prints a warning and returns. However it fails to release the message lock causing the system to dead lock during any subsequent IPMI operations. This error path should never normally be taken unless there are bugs elsewhere in the system. Signed-off-by: Alistair Popple <alistair@popple.id.au> --- drivers/char/ipmi/ipmi_powernv.c | 1 + 1 file changed, 1 insertion(+)