Message ID | 20250414183309.11460-1-qasdev00@gmail.com |
---|---|
State | New |
Headers | show |
Series | [RESEND] HID: wacom: fix memory leak on size mismatch in wacom_wac_queue_flush() | expand |
… > number of elements it has copied. The code checks if the number > of copied elements does not equal the size of the fifo record, … is? Under which circumstances would you dare to use text lines which would be longer than 63 characters? Can a patch series be more appropriate for the affected software module? Regards, Markus
On Mon, 14 Apr 2025, Qasim Ijaz wrote: > In wacom_wac_queue_flush() the code allocates zero initialised > buffer which it uses as a storage buffer for copying data from > a fifo via kfifo_out(). The kfifo_out() function returns the > number of elements it has copied. The code checks if the number > of copied elements does not equal the size of the fifo record, > if it does not it simply skips the entry and continues to the > next iteration. However it does not release the storage buffer > leading to a memory leak. > > Fix the memory leak by freeing the buffer on size mismatch. > > Fixes: 5e013ad20689 ("HID: wacom: Remove static WACOM_PKGLEN_MAX limit") > Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com> > Signed-off-by: Qasim Ijaz <qasdev00@gmail.com> > --- > drivers/hid/wacom_sys.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c > index 666b7eb0fdfe..3e4f823f8ee8 100644 > --- a/drivers/hid/wacom_sys.c > +++ b/drivers/hid/wacom_sys.c > @@ -87,6 +87,7 @@ static void wacom_wac_queue_flush(struct hid_device *hdev, > // to flush seems reasonable enough, however. > hid_warn(hdev, "%s: removed fifo entry with unexpected size\n", > __func__); > + kfree(buf); > continue; > } > err = hid_report_raw_event(hdev, HID_INPUT_REPORT, buf, size, false); Applied, thanks.
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 666b7eb0fdfe..3e4f823f8ee8 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -87,6 +87,7 @@ static void wacom_wac_queue_flush(struct hid_device *hdev, // to flush seems reasonable enough, however. hid_warn(hdev, "%s: removed fifo entry with unexpected size\n", __func__); + kfree(buf); continue; } err = hid_report_raw_event(hdev, HID_INPUT_REPORT, buf, size, false);