ipmi: fix inconsistent spinlock usage
PATCH 1/1 ipmi: fix inconsistent spinlock usage
Linus,
An obvious bug. Thanks, Hironobu.
Part of a patch was accidentally reverted, this corrects an inconsistent spinlock use in the IPMI message handler.
Signed-off-by Hironobu Ishii <[email protected]>
Signed-off-by Corey Minyard <[email protected]>
drivers/char/ipmi/ipmi_msghandler.c +3 -3
@@ -2664,7 +2664,7 @@ void ipmi_smi_msg_received(ipmi_smi_tspin_lock_irqsave (&intf->waiting_msgs_lock, flags);if (!list_empty (&intf->waiting_msgs)) {list_add_tail (&msg->link, &intf->waiting_msgs); -spin_unlock (&intf->waiting_msgs_lock); +spin_unlock_irqrestore (&intf->waiting_msgs_lock, flags); goto out; }spin_unlock_irqrestore (&intf->waiting_msgs_lock, flags);
@@ -2673,9 +2673,9 @@ void ipmi_smi_msg_received(ipmi_smi_tif (rv >0 ) {/* Could not handle the message now, just add it to a list to handle later. */ -spin_lock (&intf->waiting_msgs_lock); +spin_lock_irqsave (&intf->waiting_msgs_lock, flags);list_add_tail (&msg->link, &intf->waiting_msgs); -spin_unlock (&intf->waiting_msgs_lock); +spin_unlock_irqrestore (&intf->waiting_msgs_lock, flags); }else if (rv ==0 ) {ipmi_free_smi_msg (msg); }