]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
power: supply: cw2015: Free allocated workqueue
authorKrzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Thu, 5 Mar 2026 21:45:41 +0000 (22:45 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Wed, 11 Mar 2026 05:58:00 +0000 (06:58 +0100)
Use devm interface so allocated workqueue will be freed during device
removal and error paths, thus fixing a memory leak.

Change is not equivalent in the workqueue itself: use non-legacy API
which does not set (__WQ_LEGACY | WQ_MEM_RECLAIM).  The workqueue is
used to read updated data from the battery, thus there is no point to
run it for memory reclaim.

Cc: stable@vger.kernel.org
Fixes: b4c7715c10c1 ("power: supply: add CellWise cw2015 fuel gauge driver")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260305-workqueue-devm-v2-2-66a38741c652@oss.qualcomm.com
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/cw2015_battery.c

index a05dcc4a48f227ee80eadf01e2b62bfec3d8c5f4..286524d2318cb6c3ed14e567a94986a3fe5f6e02 100644 (file)
@@ -694,7 +694,8 @@ static int cw_bat_probe(struct i2c_client *client)
                         "No monitored battery, some properties will be missing\n");
        }
 
-       cw_bat->battery_workqueue = create_singlethread_workqueue("rk_battery");
+       cw_bat->battery_workqueue = devm_alloc_ordered_workqueue(&client->dev,
+                                                                "rk_battery", 0);
        if (!cw_bat->battery_workqueue)
                return -ENOMEM;