kernel: ubnt-ledbar: use devm_mutex_init
authorRosen Penev <rosenp@gmail.com>
Fri, 4 Oct 2024 20:27:26 +0000 (13:27 -0700)
committerRobert Marko <robimarko@gmail.com>
Tue, 8 Oct 2024 17:21:43 +0000 (19:21 +0200)
Allows remove the _remove function as devm calls mutex_destroy
automatically.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16615
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/kernel/ubnt-ledbar/src/leds-ubnt-ledbar.c

index 52b33ef43d8254bc65d590fca6c9eff5f10f3d3b..9fb52b4b3a8c260293a7c36408538ec0db088b70 100644 (file)
@@ -164,6 +164,7 @@ static int ubnt_ledbar_probe(struct i2c_client *client)
 {
        struct device_node *np = client->dev.of_node;
        struct ubnt_ledbar *ledbar;
+       int err;
 
        ledbar = devm_kzalloc(&client->dev, sizeof(*ledbar), GFP_KERNEL);
        if (!ledbar)
@@ -184,7 +185,9 @@ static int ubnt_ledbar_probe(struct i2c_client *client)
 
        ledbar->client = client;
 
-       mutex_init(&ledbar->lock);
+       err = devm_mutex_init(&ofdev->dev, &ledbar->lock);
+       if (err)
+               return err;
 
        i2c_set_clientdata(client, ledbar);
 
@@ -203,13 +206,6 @@ static int ubnt_ledbar_probe(struct i2c_client *client)
        return ubnt_ledbar_apply_state(ledbar);
 }
 
-static void ubnt_ledbar_remove(struct i2c_client *client)
-{
-       struct ubnt_ledbar *ledbar = i2c_get_clientdata(client);
-
-       mutex_destroy(&ledbar->lock);
-}
-
 static const struct i2c_device_id ubnt_ledbar_id[] = {
        { "ubnt-ledbar", 0 },
        { }
@@ -228,7 +224,6 @@ static struct i2c_driver ubnt_ledbar_driver = {
                .of_match_table = of_ubnt_ledbar_match,
        },
        .probe          = ubnt_ledbar_probe,
-       .remove         = ubnt_ledbar_remove,
        .id_table       = ubnt_ledbar_id,
 };
 module_i2c_driver(ubnt_ledbar_driver);