]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Input: iqs269a - use cleanup facility for fwnodes
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 4 Sep 2024 04:48:05 +0000 (21:48 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 3 Oct 2024 16:10:37 +0000 (09:10 -0700)
Use __free(fwnode_handle) cleanup facility to ensure that references to
acquired fwnodes are dropped at appropriate times automatically.

Reviewed-by: Jeff LaBundy <jeff@labundy.com>
Reviewed-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Link: https://lore.kernel.org/r/20240904044806.1047847-1-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/iqs269a.c

index c34d847fa4af5563c10ad7fa1e121a1d7dcb037a..1851848e2cd38ffb15c172464390184b7878da46 100644 (file)
@@ -550,7 +550,6 @@ static int iqs269_parse_chan(struct iqs269_private *iqs269,
                             const struct fwnode_handle *ch_node)
 {
        struct i2c_client *client = iqs269->client;
-       struct fwnode_handle *ev_node;
        struct iqs269_ch_reg *ch_reg;
        u16 engine_a, engine_b;
        unsigned int reg, val;
@@ -727,8 +726,9 @@ static int iqs269_parse_chan(struct iqs269_private *iqs269,
        }
 
        for (i = 0; i < ARRAY_SIZE(iqs269_events); i++) {
-               ev_node = fwnode_get_named_child_node(ch_node,
-                                                     iqs269_events[i].name);
+               struct fwnode_handle *ev_node __free(fwnode_handle) =
+                       fwnode_get_named_child_node(ch_node,
+                                                   iqs269_events[i].name);
                if (!ev_node)
                        continue;
 
@@ -737,7 +737,6 @@ static int iqs269_parse_chan(struct iqs269_private *iqs269,
                                dev_err(&client->dev,
                                        "Invalid channel %u threshold: %u\n",
                                        reg, val);
-                               fwnode_handle_put(ev_node);
                                return -EINVAL;
                        }
 
@@ -751,7 +750,6 @@ static int iqs269_parse_chan(struct iqs269_private *iqs269,
                                dev_err(&client->dev,
                                        "Invalid channel %u hysteresis: %u\n",
                                        reg, val);
-                               fwnode_handle_put(ev_node);
                                return -EINVAL;
                        }
 
@@ -767,7 +765,6 @@ static int iqs269_parse_chan(struct iqs269_private *iqs269,
                }
 
                error = fwnode_property_read_u32(ev_node, "linux,code", &val);
-               fwnode_handle_put(ev_node);
                if (error == -EINVAL) {
                        continue;
                } else if (error) {