path: root/drivers/char/ipmi/ipmi_ssif.c
diff options
authorLinus Torvalds <torvalds@linux-foundation.org>2020-02-16 13:05:46 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2020-02-16 13:05:46 -0800
commitab02b61f24c76b1659086fcc8b00cbeeb6e95ac7 (patch)
treef6760b0bf32bd3b9a760d6e895c7fb76cd9c2ef8 /drivers/char/ipmi/ipmi_ssif.c
parent44024adb4aabefd275c6f9c00cac323473447dd5 (diff)
parente0354d147e5889b5faa12e64fa38187aed39aad4 (diff)
Merge tag 'for-linus-5.6-1' of https://github.com/cminyard/linux-ipmi
Pull IPMI update from Corey Minyard: "Minor bug fixes for IPMI I know this is late; I've been travelling and, well, I've been distracted. This is just a few bug fixes and adding i2c support to the IPMB driver, which is something I wanted from the beginning for it" * tag 'for-linus-5.6-1' of https://github.com/cminyard/linux-ipmi: drivers: ipmi: fix off-by-one bounds check that leads to a out-of-bounds write ipmi:ssif: Handle a possible NULL pointer reference drivers: ipmi: Modify max length of IPMB packet drivers: ipmi: Support raw i2c packet in IPMB
Diffstat (limited to 'drivers/char/ipmi/ipmi_ssif.c')
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index 22c6a2e61236..8ac390c2b514 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -775,10 +775,14 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,
flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
msg = ssif_info->curr_msg;
if (msg) {
+ if (data) {
+ if (len > IPMI_MAX_MSG_LENGTH)
+ memcpy(msg->rsp, data, len);
+ } else {
+ len = 0;
+ }
msg->rsp_size = len;
- if (msg->rsp_size > IPMI_MAX_MSG_LENGTH)
- msg->rsp_size = IPMI_MAX_MSG_LENGTH;
- memcpy(msg->rsp, data, msg->rsp_size);
ssif_info->curr_msg = NULL;