diff options
-rw-r--r-- | drivers/char/ipmi/ipmi_powernv.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c index 9b409c0f14f7..62c0c634280f 100644 --- a/drivers/char/ipmi/ipmi_powernv.c +++ b/drivers/char/ipmi/ipmi_powernv.c | |||
@@ -143,8 +143,15 @@ static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi) | |||
143 | pr_devel("%s: -> %d (size %lld)\n", __func__, | 143 | pr_devel("%s: -> %d (size %lld)\n", __func__, |
144 | rc, rc == 0 ? size : 0); | 144 | rc, rc == 0 ? size : 0); |
145 | if (rc) { | 145 | if (rc) { |
146 | /* If came via the poll, and response was not yet ready */ | ||
147 | if (rc == OPAL_EMPTY) { | ||
148 | spin_unlock_irqrestore(&smi->msg_lock, flags); | ||
149 | return 0; | ||
150 | } | ||
151 | |||
152 | smi->cur_msg = NULL; | ||
146 | spin_unlock_irqrestore(&smi->msg_lock, flags); | 153 | spin_unlock_irqrestore(&smi->msg_lock, flags); |
147 | ipmi_free_smi_msg(msg); | 154 | send_error_reply(smi, msg, IPMI_ERR_UNSPECIFIED); |
148 | return 0; | 155 | return 0; |
149 | } | 156 | } |
150 | 157 | ||