aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-mcp2221.c
diff options
context:
space:
mode:
authorWolfram Sang <wsa+renesas@sang-engineering.com>2025-09-06 10:17:35 +0200
committerWolfram Sang <wsa+renesas@sang-engineering.com>2025-09-06 10:17:35 +0200
commitd035b4baebfc5112b128b66cafd45d2522a9c8f1 (patch)
treefc96e96e81597068c9a869c679d18a1a44394164 /drivers/hid/hid-mcp2221.c
parentLinux 6.17-rc3 (diff)
parenti2c: rtl9300: remove broken SMBus Quick operation support (diff)
downloadlinux-d035b4baebfc5112b128b66cafd45d2522a9c8f1.tar.gz
linux-d035b4baebfc5112b128b66cafd45d2522a9c8f1.zip
Merge tag 'i2c-host-fixes-6.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current
i2c-host-fixes for v6.17-rc5 - i801: fix device IDs - in rtl9300: - fix channel number check in probe - check data length boundaries in xfer - drop unsupported SMBus quick operation
Diffstat (limited to 'drivers/hid/hid-mcp2221.c')
-rw-r--r--drivers/hid/hid-mcp2221.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/hid/hid-mcp2221.c b/drivers/hid/hid-mcp2221.c
index 475ac352df30..33603b019f97 100644
--- a/drivers/hid/hid-mcp2221.c
+++ b/drivers/hid/hid-mcp2221.c
@@ -906,6 +906,10 @@ static int mcp2221_raw_event(struct hid_device *hdev,
}
if (data[2] == MCP2221_I2C_READ_COMPL ||
data[2] == MCP2221_I2C_READ_PARTIAL) {
+ if (!mcp->rxbuf || mcp->rxbuf_idx < 0 || data[3] > 60) {
+ mcp->status = -EINVAL;
+ break;
+ }
buf = mcp->rxbuf;
memcpy(&buf[mcp->rxbuf_idx], &data[4], data[3]);
mcp->rxbuf_idx = mcp->rxbuf_idx + data[3];