HID: thrustmaster: Fix memory leaks in probe
authorEvgeny Novikov <novikov@ispras.ru>
Fri, 30 Jul 2021 16:51:08 +0000 (19:51 +0300)
committerJiri Kosina <jkosina@suse.cz>
Fri, 20 Aug 2021 12:24:56 +0000 (14:24 +0200)
When thrustmaster_probe() handles errors of usb_submit_urb() it does not
free allocated resources and fails. The patch fixes that.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Evgeny Novikov <novikov@ispras.ru>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-thrustmaster.c

index cdc7d82ae9eda9a95e881e0d0fb04fce52d79f89..e94d3409fd1051c48b0d6a12ded49fed6f3b787d 100644 (file)
@@ -336,11 +336,14 @@ static int thrustmaster_probe(struct hid_device *hdev, const struct hid_device_i
        );
 
        ret = usb_submit_urb(tm_wheel->urb, GFP_ATOMIC);
-       if (ret)
+       if (ret) {
                hid_err(hdev, "Error %d while submitting the URB. I am unable to initialize this wheel...\n", ret);
+               goto error6;
+       }
 
        return ret;
 
+error6: kfree(tm_wheel->change_request);
 error5: kfree(tm_wheel->response);
 error4: kfree(tm_wheel->model_request);
 error3: usb_free_urb(tm_wheel->urb);