]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Input: ims-pcu - fix firmware leak in async update
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 22 May 2026 17:25:31 +0000 (10:25 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 7 Jun 2026 04:05:13 +0000 (21:05 -0700)
The firmware object was not being released if validation failed.
Use __free(firmware) to ensure the firmware is always released.

Fixes: 628329d52474 ("Input: add IMS Passenger Control Unit driver")
Cc: stable@vger.kernel.org
Reported-by: Sashiko bot <sashiko-bot@kernel.org>
Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/ims-pcu.c

index ea11368834a3bfdcecd3ba2002679329d1d97cce..4f8265c0772f573b52f14f1b560efe9f558a2a9d 100644 (file)
@@ -935,9 +935,10 @@ out:
        return retval;
 }
 
-static void ims_pcu_process_async_firmware(const struct firmware *fw,
+static void ims_pcu_process_async_firmware(const struct firmware *_fw,
                                           void *context)
 {
+       const struct firmware *fw __free(firmware) = _fw;
        struct ims_pcu *pcu = context;
        int error;
 
@@ -957,8 +958,6 @@ static void ims_pcu_process_async_firmware(const struct firmware *fw,
        scoped_guard(mutex, &pcu->cmd_mutex)
                ims_pcu_handle_firmware_update(pcu, fw);
 
-       release_firmware(fw);
-
 out:
        complete(&pcu->async_firmware_done);
 }