aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/ipmi
diff options
context:
space:
mode:
authorHidehiro Kawai <hidehiro.kawai.ez@hitachi.com>2015-04-22 22:16:44 -0400
committerCorey Minyard <cminyard@mvista.com>2015-05-05 20:33:49 -0400
commit9f8127048ab8b47b43f8aeaaec9fec2da44be9a1 (patch)
treeded69906802d1151af32d5e1f150f87306d6127b /drivers/char/ipmi
parenta182a4b2b3e85a559ea2cd3545f4311db41325f2 (diff)
ipmi: Fix a problem that messages are not issued in run_to_completion mode
start_next_msg() issues a message placed in smi_info->waiting_msg if it is non-NULL. However, sender() sets a message to smi_info->curr_msg and NULL to smi_info->waiting_msg in the context of run_to_completion mode. As the result, it leads an infinite loop by waiting the completion of unissued message when leaving dying message after kernel panic. sender() should set the message to smi_info->waiting_msg not curr_msg. Signed-off-by: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com> Signed-off-by: Corey Minyard <cminyard@mvista.com>
Diffstat (limited to 'drivers/char/ipmi')
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index b5a1b450471f..8a45e92ff60c 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -942,8 +942,7 @@ static void sender(void *send_info,
942 * If we are running to completion, start it and run 942 * If we are running to completion, start it and run
943 * transactions until everything is clear. 943 * transactions until everything is clear.
944 */ 944 */
945 smi_info->curr_msg = msg; 945 smi_info->waiting_msg = msg;
946 smi_info->waiting_msg = NULL;
947 946
948 /* 947 /*
949 * Run to completion means we are single-threaded, no 948 * Run to completion means we are single-threaded, no