summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo A. R. Silva <gustavoars@kernel.org>2022-01-26 01:34:43 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-01-26 15:04:14 +0300
commit94106f6c21e58900badfeeef5acadf0d6cae7f68 (patch)
treef84ea31190a0861abbb6cc721d8a27ec3e4f23ed
parent0a93c0d75809582893e82039143591b9265b520e (diff)
downloadlinux-94106f6c21e58900badfeeef5acadf0d6cae7f68.tar.xz
staging: unisys: visorinput: Use struct_size() helper in kzalloc()
Make use of the struct_size() helper instead of an open-coded version, in order to avoid any potential type mistakes or integer overflows that, in the worst scenario, could lead to heap overflows. Also, address the following sparse warnings: drivers/staging/unisys/visorinput/visorinput.c:409:27: warning: using sizeof on a flexible structure Link: https://github.com/KSPP/linux/issues/174 Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Link: https://lore.kernel.org/r/20220125223443.GA76937@embeddedor Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/unisys/visorinput/visorinput.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/staging/unisys/visorinput/visorinput.c b/drivers/staging/unisys/visorinput/visorinput.c
index 426deab22d62..dffa71ac3cc5 100644
--- a/drivers/staging/unisys/visorinput/visorinput.c
+++ b/drivers/staging/unisys/visorinput/visorinput.c
@@ -406,7 +406,8 @@ static struct visorinput_devdata *devdata_create(struct visor_device *dev,
if (dtype == visorinput_keyboard)
/* allocate room for devdata->keycode_table, filled in below */
extra_bytes = KEYCODE_TABLE_BYTES * 2;
- devdata = kzalloc(sizeof(*devdata) + extra_bytes, GFP_KERNEL);
+ devdata = kzalloc(struct_size(devdata, keycode_table, extra_bytes),
+ GFP_KERNEL);
if (!devdata)
return NULL;
mutex_init(&devdata->lock_visor_dev);