]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
HID: wacom: use cleanup.h for wacom_wac_queue_flush() buffer management
authorJinmo Yang <jinmo44.yang@gmail.com>
Mon, 1 Jun 2026 13:41:24 +0000 (22:41 +0900)
committerBenjamin Tissoires <bentiss@kernel.org>
Mon, 1 Jun 2026 16:39:07 +0000 (18:39 +0200)
Use __free(kfree) cleanup facility for the temporary buffer in
wacom_wac_queue_flush() to simplify error paths and ensure the buffer
is freed automatically when it goes out of scope.

Signed-off-by: Jinmo Yang <jinmo44.yang@gmail.com>
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
drivers/hid/wacom_sys.c

index 3a06be1e163aed9f9b97b4670f6b929f855fbe61..3e3bcf695296c3dea4d3982d062b7ab821542f7a 100644 (file)
@@ -72,11 +72,10 @@ static void wacom_wac_queue_flush(struct hid_device *hdev,
 {
        while (!kfifo_is_empty(fifo)) {
                int size = kfifo_peek_len(fifo);
-               u8 *buf;
+               u8 *buf __free(kfree) = kzalloc(size, GFP_ATOMIC);
                unsigned int count;
                int err;
 
-               buf = kzalloc(size, GFP_ATOMIC);
                if (!buf) {
                        kfifo_skip(fifo);
                        continue;
@@ -89,7 +88,6 @@ 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, size, false);
@@ -97,8 +95,6 @@ static void wacom_wac_queue_flush(struct hid_device *hdev,
                        hid_warn(hdev, "%s: unable to flush event due to error %d\n",
                                 __func__, err);
                }
-
-               kfree(buf);
        }
 }