summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJian Zhang <zhangjian.3032@bytedance.com>2026-04-03 12:05:59 +0300
committerCorey Minyard <corey@minyard.net>2026-04-03 15:49:53 +0300
commitea641be7a4faee4351f9c5ed6b188e1bbf5586a6 (patch)
treef7bf0230c14250becf042c17fd9be14e4e59cb2f
parent7fc3e2546cf3fa9a28a2acc92a512c779a8e5038 (diff)
downloadlinux-ea641be7a4faee4351f9c5ed6b188e1bbf5586a6.tar.xz
ipmi: ssif_bmc: fix missing check for copy_to_user() partial failure
copy_to_user() returns the number of bytes that could not be copied, with a non-zero value indicating a partial or complete failure. The current code only checks for negative return values and treats all non-negative results as success. Treating any positive return value from copy_to_user() as an error and returning -EFAULT. Fixes: dd2bc5cc9e25 ("ipmi: ssif_bmc: Add SSIF BMC driver") Signed-off-by: Jian Zhang <zhangjian.3032@bytedance.com> Message-ID: <20260403090603.3988423-2-zhangjian.3032@bytedance.com> Signed-off-by: Corey Minyard <corey@minyard.net>
-rw-r--r--drivers/char/ipmi/ssif_bmc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/char/ipmi/ssif_bmc.c b/drivers/char/ipmi/ssif_bmc.c
index dc1d5bb4a460..fbc7d2cfd535 100644
--- a/drivers/char/ipmi/ssif_bmc.c
+++ b/drivers/char/ipmi/ssif_bmc.c
@@ -163,6 +163,8 @@ static ssize_t ssif_bmc_read(struct file *file, char __user *buf, size_t count,
spin_unlock_irqrestore(&ssif_bmc->lock, flags);
ret = copy_to_user(buf, &msg, count);
+ if (ret > 0)
+ ret = -EFAULT;
}
return (ret < 0) ? ret : count;