diff options
| -rw-r--r-- | drivers/char/ipmi/ipmi_ssif.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c index 5f1c3d08ba65..8b3be8b92573 100644 --- a/drivers/char/ipmi/ipmi_ssif.c +++ b/drivers/char/ipmi/ipmi_ssif.c | |||
| @@ -920,23 +920,18 @@ static void msg_written_handler(struct ssif_info *ssif_info, int result, | |||
| 920 | msg_done_handler(ssif_info, -EIO, NULL, 0); | 920 | msg_done_handler(ssif_info, -EIO, NULL, 0); |
| 921 | } | 921 | } |
| 922 | } else { | 922 | } else { |
| 923 | /* Ready to request the result. */ | ||
| 923 | unsigned long oflags, *flags; | 924 | unsigned long oflags, *flags; |
| 924 | bool got_alert; | ||
| 925 | 925 | ||
| 926 | ssif_inc_stat(ssif_info, sent_messages); | 926 | ssif_inc_stat(ssif_info, sent_messages); |
| 927 | ssif_inc_stat(ssif_info, sent_messages_parts); | 927 | ssif_inc_stat(ssif_info, sent_messages_parts); |
| 928 | 928 | ||
| 929 | flags = ipmi_ssif_lock_cond(ssif_info, &oflags); | 929 | flags = ipmi_ssif_lock_cond(ssif_info, &oflags); |
| 930 | got_alert = ssif_info->got_alert; | 930 | if (ssif_info->got_alert) { |
| 931 | if (got_alert) { | 931 | /* The result is already ready, just start it. */ |
| 932 | ssif_info->got_alert = false; | 932 | ssif_info->got_alert = false; |
| 933 | ssif_info->waiting_alert = false; | ||
| 934 | } | ||
| 935 | |||
| 936 | if (got_alert) { | ||
| 937 | ipmi_ssif_unlock_cond(ssif_info, flags); | 933 | ipmi_ssif_unlock_cond(ssif_info, flags); |
| 938 | /* The alert already happened, try now. */ | 934 | start_get(ssif_info); |
| 939 | retry_timeout((unsigned long) ssif_info); | ||
| 940 | } else { | 935 | } else { |
| 941 | /* Wait a jiffie then request the next message */ | 936 | /* Wait a jiffie then request the next message */ |
| 942 | ssif_info->waiting_alert = true; | 937 | ssif_info->waiting_alert = true; |
