Skip to content

Commit

Permalink
Input: gtco - fix double kfree in error handling path
Browse files Browse the repository at this point in the history
The code would try to free 'report' twice upon input_register_device()
failure.

Reported-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Dmitry Torokhov committed May 30, 2008
1 parent 471637a commit 501a525
Showing 1 changed file with 7 additions and 10 deletions.
17 changes: 7 additions & 10 deletions drivers/input/tablet/gtco.c
Original file line number Diff line number Diff line change
@@ -830,7 +830,7 @@ static int gtco_probe(struct usb_interface *usbinterface,
struct gtco *gtco;
struct input_dev *input_dev;
struct hid_descriptor *hid_desc;
char *report = NULL;
char *report;
int result = 0, retry;
int error;
struct usb_endpoint_descriptor *endpoint;
@@ -916,25 +916,23 @@ static int gtco_probe(struct usb_interface *usbinterface,
le16_to_cpu(hid_desc->wDescriptorLength),
5000); /* 5 secs */

if (result == le16_to_cpu(hid_desc->wDescriptorLength))
dbg("usb_control_msg result: %d", result);
if (result == le16_to_cpu(hid_desc->wDescriptorLength)) {
parse_hid_report_descriptor(gtco, report, result);
break;
}
}

kfree(report);

/* If we didn't get the report, fail */
dbg("usb_control_msg result: :%d", result);
if (result != le16_to_cpu(hid_desc->wDescriptorLength)) {
err("Failed to get HID Report Descriptor of size: %d",
hid_desc->wDescriptorLength);
error = -EIO;
goto err_free_urb;
}

/* Now we parse the report */
parse_hid_report_descriptor(gtco, report, result);

/* Now we delete it */
kfree(report);

/* Create a device file node */
usb_make_path(gtco->usbdev, gtco->usbpath, sizeof(gtco->usbpath));
strlcat(gtco->usbpath, "/input0", sizeof(gtco->usbpath));
@@ -988,7 +986,6 @@ static int gtco_probe(struct usb_interface *usbinterface,
usb_buffer_free(gtco->usbdev, REPORT_MAX_SIZE,
gtco->buffer, gtco->buf_dma);
err_free_devs:
kfree(report);
input_free_device(input_dev);
kfree(gtco);
return error;

0 comments on commit 501a525

Please sign in to comment.