Commit 647fc2bf authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: samsung-keypad - use struct_size() helper



When allocating memory for the keypad use struct_size() helper to be
protected from overflows.

Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20240819045813.2154642-5-dmitry.torokhov@gmail.com


Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 706a0663
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -318,7 +318,6 @@ static int samsung_keypad_probe(struct platform_device *pdev)
	struct resource *res;
	struct input_dev *input_dev;
	unsigned int row_shift;
	unsigned int keymap_size;
	int error;

	pdata = dev_get_platdata(&pdev->dev);
@@ -345,9 +344,10 @@ static int samsung_keypad_probe(struct platform_device *pdev)
		pdata->cfg_gpio(pdata->rows, pdata->cols);

	row_shift = get_count_order(pdata->cols);
	keymap_size = (pdata->rows << row_shift) * sizeof(keypad->keycodes[0]);

	keypad = devm_kzalloc(&pdev->dev, sizeof(*keypad) + keymap_size,
	keypad = devm_kzalloc(&pdev->dev,
			      struct_size(keypad, keycodes,
					  pdata->rows << row_shift),
			      GFP_KERNEL);
	if (!keypad)
		return -ENOMEM;