diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-07-17 17:09:15 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-07-17 17:09:15 -0700 |
commit | 221fd1e154ee533c529280bd3866570c086ec792 (patch) | |
tree | d92a806043a6a1c51053b2ae3e19b8ef1326935f | |
parent | a5cb6b2bbff9cdd32aab635ad464a1ee299a63bd (diff) | |
parent | 19a01155ddfe525e3a4e7cef734f18cce640b1ef (diff) | |
download | lwn-221fd1e154ee533c529280bd3866570c086ec792.tar.gz lwn-221fd1e154ee533c529280bd3866570c086ec792.zip |
Merge tag 'for-linus-6.11-1' of https://github.com/cminyard/linux-ipmi
Pull IPMI updates from Corey Minyard:
"Some cleanups for device changes coming, and some range checks on data
coming from a host to a BMC"
* tag 'for-linus-6.11-1' of https://github.com/cminyard/linux-ipmi:
ipmi: Drop explicit initialization of struct i2c_device_id::driver_data to 0
ipmi: ssif_bmc: prevent integer overflow on 32bit systems
-rw-r--r-- | drivers/char/ipmi/ipmb_dev_int.c | 4 | ||||
-rw-r--r-- | drivers/char/ipmi/ipmi_ipmb.c | 4 | ||||
-rw-r--r-- | drivers/char/ipmi/ipmi_ssif.c | 2 | ||||
-rw-r--r-- | drivers/char/ipmi/ssif_bmc.c | 10 |
4 files changed, 11 insertions, 9 deletions
diff --git a/drivers/char/ipmi/ipmb_dev_int.c b/drivers/char/ipmi/ipmb_dev_int.c index 49100845fcb7..7296127181ec 100644 --- a/drivers/char/ipmi/ipmb_dev_int.c +++ b/drivers/char/ipmi/ipmb_dev_int.c @@ -350,8 +350,8 @@ static void ipmb_remove(struct i2c_client *client) } static const struct i2c_device_id ipmb_id[] = { - { "ipmb-dev", 0 }, - {}, + { "ipmb-dev" }, + {} }; MODULE_DEVICE_TABLE(i2c, ipmb_id); diff --git a/drivers/char/ipmi/ipmi_ipmb.c b/drivers/char/ipmi/ipmi_ipmb.c index 4e335832fc26..6a4f279c7c1f 100644 --- a/drivers/char/ipmi/ipmi_ipmb.c +++ b/drivers/char/ipmi/ipmi_ipmb.c @@ -561,8 +561,8 @@ MODULE_DEVICE_TABLE(of, of_ipmi_ipmb_match); #endif static const struct i2c_device_id ipmi_ipmb_id[] = { - { DEVICE_NAME, 0 }, - {}, + { DEVICE_NAME }, + {} }; MODULE_DEVICE_TABLE(i2c, ipmi_ipmb_id); diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c index 3f509a22217b..96ad571d041a 100644 --- a/drivers/char/ipmi/ipmi_ssif.c +++ b/drivers/char/ipmi/ipmi_ssif.c @@ -2049,7 +2049,7 @@ static int dmi_ipmi_probe(struct platform_device *pdev) #endif static const struct i2c_device_id ssif_id[] = { - { DEVICE_NAME, 0 }, + { DEVICE_NAME }, { } }; MODULE_DEVICE_TABLE(i2c, ssif_id); diff --git a/drivers/char/ipmi/ssif_bmc.c b/drivers/char/ipmi/ssif_bmc.c index 56346fb32872..a14fafc583d4 100644 --- a/drivers/char/ipmi/ssif_bmc.c +++ b/drivers/char/ipmi/ssif_bmc.c @@ -177,13 +177,15 @@ static ssize_t ssif_bmc_write(struct file *file, const char __user *buf, size_t unsigned long flags; ssize_t ret; - if (count > sizeof(struct ipmi_ssif_msg)) + if (count < sizeof(msg.len) || + count > sizeof(struct ipmi_ssif_msg)) return -EINVAL; if (copy_from_user(&msg, buf, count)) return -EFAULT; - if (!msg.len || count < sizeof_field(struct ipmi_ssif_msg, len) + msg.len) + if (!msg.len || msg.len > IPMI_SSIF_PAYLOAD_MAX || + count < sizeof_field(struct ipmi_ssif_msg, len) + msg.len) return -EINVAL; spin_lock_irqsave(&ssif_bmc->lock, flags); @@ -850,8 +852,8 @@ static const struct of_device_id ssif_bmc_match[] = { MODULE_DEVICE_TABLE(of, ssif_bmc_match); static const struct i2c_device_id ssif_bmc_id[] = { - { DEVICE_NAME, 0 }, - { }, + { DEVICE_NAME }, + { } }; MODULE_DEVICE_TABLE(i2c, ssif_bmc_id); |