Skip to contentSkip to conversation

staging: unisys: visorinput: Use struct_size() helper in kzalloc()

PATCH New Gustavo A. R. Silva 1 participant 1 message Jan 25, 2022 Staging

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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

---
 drivers/staging/unisys/visorinput/visorinput.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/staging/unisys/visorinput/visorinput.c +2 -1
index 426deab22d62..dffa71ac3cc5 100644
@@ -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);
Signature · 1 line
2.27.0