HID: nvidia-shield: Reference hid_device devm allocation of input_dev name
authorRahul Rameshbabu <rrameshbabu@nvidia.com>
Thu, 24 Aug 2023 06:14:54 +0000 (06:14 +0000)
committerBenjamin Tissoires <bentiss@kernel.org>
Thu, 24 Aug 2023 13:57:58 +0000 (15:57 +0200)
Use hid_device for devm allocation of the input_dev name to avoid a
use-after-free. input_unregister_device would trigger devres cleanup of all
resources associated with the input_dev, free-ing the name. The name would
subsequently be used in a uevent fired at the end of unregistering the
input_dev.

Reported-by: Maxime Ripard <mripard@kernel.org>
Closes: https://lore.kernel.org/linux-input/ZOZIZCND+L0P1wJc@penguin/T/#m443f3dce92520f74b6cf6ffa8653f9c92643d4ae
Fixes: 09308562d4af ("HID: nvidia-shield: Initial driver implementation with Thunderstrike support")
Suggested-by: Maxime Ripard <mripard@kernel.org>
Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20230824061308.222021-4-sergeantsagara@protonmail.com
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
drivers/hid/hid-nvidia-shield.c

index a928ad2..084179a 100644 (file)
@@ -164,7 +164,7 @@ static struct input_dev *shield_allocate_input_dev(struct hid_device *hdev,
        idev->id.product = hdev->product;
        idev->id.version = hdev->version;
        idev->uniq = hdev->uniq;
-       idev->name = devm_kasprintf(&idev->dev, GFP_KERNEL, "%s %s", hdev->name,
+       idev->name = devm_kasprintf(&hdev->dev, GFP_KERNEL, "%s %s", hdev->name,
                                    name_suffix);
        if (!idev->name)
                goto err_name;