[PATCH] HID: usbhid: fix memleak for ctrl or out raw_report

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Zqiang <qiang.zhang@xxxxxxxxxxxxx>

When the usb device disconnect, usbhid_stop function be called,
if ctrl or out's raw_report exists, need to be free.

Signed-off-by: Zqiang <qiang.zhang@xxxxxxxxxxxxx>
---
 drivers/hid/usbhid/hid-core.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 17a29ee0ac6c..f8a49f8d4015 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -1209,6 +1209,7 @@ static int usbhid_start(struct hid_device *hid)
 static void usbhid_stop(struct hid_device *hid)
 {
 	struct usbhid_device *usbhid = hid->driver_data;
+	int index;
 
 	if (WARN_ON(!usbhid))
 		return;
@@ -1232,6 +1233,13 @@ static void usbhid_stop(struct hid_device *hid)
 
 	hid->claimed = 0;
 
+	for (index = 0; index < HID_CONTROL_FIFO_SIZE; index++) {
+		if (usbhid->ctrl[index].raw_report)
+			kfree(usbhid->ctrl[index].raw_report);
+		if (usbhid->out[index].raw_report)
+			kfree(usbhid->out[index].raw_report);
+	}
+
 	usb_free_urb(usbhid->urbin);
 	usb_free_urb(usbhid->urbctrl);
 	usb_free_urb(usbhid->urbout);
-- 
2.17.1




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux