aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/ipmi/ipmi_msghandler.c')
-rw-r--r--drivers/char/ipmi/ipmi_msghandler.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index a084a4751fa9..25372dc381d4 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -3877,6 +3877,9 @@ static void smi_recv_tasklet(unsigned long val)
3877 * because the lower layer is allowed to hold locks while calling 3877 * because the lower layer is allowed to hold locks while calling
3878 * message delivery. 3878 * message delivery.
3879 */ 3879 */
3880
3881 rcu_read_lock();
3882
3880 if (!run_to_completion) 3883 if (!run_to_completion)
3881 spin_lock_irqsave(&intf->xmit_msgs_lock, flags); 3884 spin_lock_irqsave(&intf->xmit_msgs_lock, flags);
3882 if (intf->curr_msg == NULL && !intf->in_shutdown) { 3885 if (intf->curr_msg == NULL && !intf->in_shutdown) {
@@ -3899,6 +3902,8 @@ static void smi_recv_tasklet(unsigned long val)
3899 if (newmsg) 3902 if (newmsg)
3900 intf->handlers->sender(intf->send_info, newmsg); 3903 intf->handlers->sender(intf->send_info, newmsg);
3901 3904
3905 rcu_read_unlock();
3906
3902 handle_new_recv_msgs(intf); 3907 handle_new_recv_msgs(intf);
3903} 3908}
3904 3909