aboutsummaryrefslogtreecommitdiff
path: root/drivers/char/ipmi
diff options
context:
space:
mode:
authorGravatar Corey Minyard <cminyard@mvista.com> 2021-09-30 08:50:06 -0500
committerGravatar Corey Minyard <cminyard@mvista.com> 2021-10-05 06:54:16 -0500
commitfac56b7ddec949a957b5d8a9c37a6db3881e4cba (patch)
tree3754100cd15ecfcaa4e816a3b3fa811569b7c09a /drivers/char/ipmi
parentipmi:devintf: Return a proper error when recv buffer too small (diff)
downloadlinux-fac56b7ddec949a957b5d8a9c37a6db3881e4cba.tar.gz
linux-fac56b7ddec949a957b5d8a9c37a6db3881e4cba.tar.bz2
linux-fac56b7ddec949a957b5d8a9c37a6db3881e4cba.zip
ipmi: Check error code before processing BMC response
In case an error did occur, print out useful information. Signed-off-by: Corey Minyard <cminyard@mvista.com>
Diffstat (limited to 'drivers/char/ipmi')
-rw-r--r--drivers/char/ipmi/ipmi_msghandler.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index a08f53f208bf..13988f88f1b0 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -2369,6 +2369,13 @@ static void bmc_device_id_handler(struct ipmi_smi *intf,
return;
}
+ if (msg->msg.data[0]) {
+ dev_warn(intf->si_dev, "device id fetch failed: 0x%2.2x\n",
+ msg->msg.data[0]);
+ intf->bmc->dyn_id_set = 0;
+ goto out;
+ }
+
rv = ipmi_demangle_device_id(msg->msg.netfn, msg->msg.cmd,
msg->msg.data, msg->msg.data_len, &intf->bmc->fetch_id);
if (rv) {
@@ -2384,7 +2391,7 @@ static void bmc_device_id_handler(struct ipmi_smi *intf,
smp_wmb();
intf->bmc->dyn_id_set = 1;
}
-
+out:
wake_up(&intf->waitq);
}