提交 a747c5ab 编写于 作者: J Jiri Kosina 提交者: Linus Torvalds

ipmi: handle run_to_completion properly in deliver_recv_msg()

If run_to_completion flag is set, it means that we are running in a
single-threaded mode, and thus no locks are held.

This fixes a deadlock when IPMI notifier is being called during panic.
Signed-off-by: NJiri Kosina <jkosina@suse.cz>
Acked-by: NCorey Minyard <minyard@acm.org>
Cc: <stable@kernel.org>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 279fbd0c
...@@ -323,9 +323,14 @@ static void deliver_recv_msg(struct smi_info *smi_info, ...@@ -323,9 +323,14 @@ static void deliver_recv_msg(struct smi_info *smi_info,
{ {
/* Deliver the message to the upper layer with the lock /* Deliver the message to the upper layer with the lock
released. */ released. */
if (smi_info->run_to_completion) {
ipmi_smi_msg_received(smi_info->intf, msg);
} else {
spin_unlock(&(smi_info->si_lock)); spin_unlock(&(smi_info->si_lock));
ipmi_smi_msg_received(smi_info->intf, msg); ipmi_smi_msg_received(smi_info->intf, msg);
spin_lock(&(smi_info->si_lock)); spin_lock(&(smi_info->si_lock));
}
} }
static void return_hosed_msg(struct smi_info *smi_info, int cCode) static void return_hosed_msg(struct smi_info *smi_info, int cCode)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册