diff options
| author | Jason Gerecke <jason.gerecke@wacom.com> | 2025-03-03 11:55:18 -0800 |
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.com> | 2025-03-04 21:51:04 +0100 |
| commit | 5e013ad206895e72d7da41bc1ae89d8cb499c3aa (patch) | |
| tree | 07ca334e3ff3c1719e675855b065f42a22ff493f /drivers/hid/wacom_wac.c | |
| parent | 58c9bf3363e596d744f56616d407278ef5f97f5a (diff) | |
| download | linux-next-5e013ad206895e72d7da41bc1ae89d8cb499c3aa.tar.gz linux-next-5e013ad206895e72d7da41bc1ae89d8cb499c3aa.zip | |
HID: wacom: Remove static WACOM_PKGLEN_MAX limit
Rather than memcpy every packet that we receive from HID into our own
local fixed-size array, we can just access the data directly through
the original pointer. While we're at it, remove the few other places
that assume a fixed maximum packet size and make them dynamic (in
particular: temporary buffers created by the wacom_wac_queue_flush and
wacom_intuos_bt_process_data functions; and the pen_fifo FIFO).
To ensure pen_fifo allocation has access to the maximum used packet
length, this commit also moves the function call to occur a little
later in the probe process.
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Diffstat (limited to 'drivers/hid/wacom_wac.c')
| -rw-r--r-- | drivers/hid/wacom_wac.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c index b60bfafc6a8f..5107a676e24f 100644 --- a/drivers/hid/wacom_wac.c +++ b/drivers/hid/wacom_wac.c @@ -1201,12 +1201,10 @@ static void wacom_intuos_bt_process_data(struct wacom_wac *wacom, static int wacom_intuos_bt_irq(struct wacom_wac *wacom, size_t len) { - unsigned char data[WACOM_PKGLEN_MAX]; + u8 *data = kmemdup(wacom->data, len, GFP_KERNEL); int i = 1; unsigned power_raw, battery_capacity, bat_charging, ps_connected; - memcpy(data, wacom->data, len); - switch (data[0]) { case 0x04: wacom_intuos_bt_process_data(wacom, data + i); @@ -1230,8 +1228,10 @@ static int wacom_intuos_bt_irq(struct wacom_wac *wacom, size_t len) dev_dbg(wacom->pen_input->dev.parent, "Unknown report: %d,%d size:%zu\n", data[0], data[1], len); - return 0; + break; } + + kfree(data); return 0; } |
