Message ID | ZspoEPdTcH-hpciy@google.com |
---|---|
State | Accepted |
Commit | 40a6bb10d3d124c9adfd9f5e0bb8e020e0ccb712 |
Headers | show |
Series | Input: matrix-keymap - switch to using __free() cleanup facility | expand |
Hi, On 8/25/24 1:09 AM, Dmitry Torokhov wrote: > Use __free(kfree) cleanup facility in matrix_keypad_parse_keymap() to > automatically free temporarily allocated memory. > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Thanks, patch looks good to me: Reviewed-by: Hans de Goede <hdegoede@redhat.com> Regards, Hans > --- > drivers/input/matrix-keymap.c | 25 +++++++++---------------- > 1 file changed, 9 insertions(+), 16 deletions(-) > > diff --git a/drivers/input/matrix-keymap.c b/drivers/input/matrix-keymap.c > index 5d93043bad8e..3bea3575a0a9 100644 > --- a/drivers/input/matrix-keymap.c > +++ b/drivers/input/matrix-keymap.c > @@ -73,10 +73,9 @@ static int matrix_keypad_parse_keymap(const char *propname, > struct device *dev = input_dev->dev.parent; > unsigned int row_shift = get_count_order(cols); > unsigned int max_keys = rows << row_shift; > - u32 *keys; > int i; > int size; > - int retval; > + int error; > > if (!propname) > propname = "linux,keymap"; > @@ -94,30 +93,24 @@ static int matrix_keypad_parse_keymap(const char *propname, > return -EINVAL; > } > > - keys = kmalloc_array(size, sizeof(u32), GFP_KERNEL); > + u32 *keys __free(kfree) = kmalloc_array(size, sizeof(*keys), GFP_KERNEL); > if (!keys) > return -ENOMEM; > > - retval = device_property_read_u32_array(dev, propname, keys, size); > - if (retval) { > + error = device_property_read_u32_array(dev, propname, keys, size); > + if (error) { > dev_err(dev, "failed to read %s property: %d\n", > - propname, retval); > - goto out; > + propname, error); > + return error; > } > > for (i = 0; i < size; i++) { > if (!matrix_keypad_map_key(input_dev, rows, cols, > - row_shift, keys[i])) { > - retval = -EINVAL; > - goto out; > - } > + row_shift, keys[i])) > + return -EINVAL; > } > > - retval = 0; > - > -out: > - kfree(keys); > - return retval; > + return 0; > } > > /**
diff --git a/drivers/input/matrix-keymap.c b/drivers/input/matrix-keymap.c index 5d93043bad8e..3bea3575a0a9 100644 --- a/drivers/input/matrix-keymap.c +++ b/drivers/input/matrix-keymap.c @@ -73,10 +73,9 @@ static int matrix_keypad_parse_keymap(const char *propname, struct device *dev = input_dev->dev.parent; unsigned int row_shift = get_count_order(cols); unsigned int max_keys = rows << row_shift; - u32 *keys; int i; int size; - int retval; + int error; if (!propname) propname = "linux,keymap"; @@ -94,30 +93,24 @@ static int matrix_keypad_parse_keymap(const char *propname, return -EINVAL; } - keys = kmalloc_array(size, sizeof(u32), GFP_KERNEL); + u32 *keys __free(kfree) = kmalloc_array(size, sizeof(*keys), GFP_KERNEL); if (!keys) return -ENOMEM; - retval = device_property_read_u32_array(dev, propname, keys, size); - if (retval) { + error = device_property_read_u32_array(dev, propname, keys, size); + if (error) { dev_err(dev, "failed to read %s property: %d\n", - propname, retval); - goto out; + propname, error); + return error; } for (i = 0; i < size; i++) { if (!matrix_keypad_map_key(input_dev, rows, cols, - row_shift, keys[i])) { - retval = -EINVAL; - goto out; - } + row_shift, keys[i])) + return -EINVAL; } - retval = 0; - -out: - kfree(keys); - return retval; + return 0; } /**
Use __free(kfree) cleanup facility in matrix_keypad_parse_keymap() to automatically free temporarily allocated memory. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> --- drivers/input/matrix-keymap.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-)