Message ID | 20180615132017.23889-5-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Jun 15, 2018 at 04:20:16PM +0300, Andy Shevchenko wrote: > External Email > > Switch to bitmap_zalloc() to show clearly what we are allocating. > Besides that it returns pointer of bitmap type instead of opaque void *. Nit. There's no special type for bitmaps, bitmap_zalloc() returns long *. Is it less opaque than void *, not sure. > Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/input/keyboard/gpio_keys.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c > index 052e37675086..492a971b95b5 100644 > --- a/drivers/input/keyboard/gpio_keys.c > +++ b/drivers/input/keyboard/gpio_keys.c > @@ -196,7 +196,7 @@ static ssize_t gpio_keys_attr_show_helper(struct gpio_keys_drvdata *ddata, > ssize_t ret; > int i; > > - bits = kcalloc(BITS_TO_LONGS(n_events), sizeof(*bits), GFP_KERNEL); > + bits = bitmap_zalloc(n_events, GFP_KERNEL); > if (!bits) > return -ENOMEM; > > @@ -216,7 +216,7 @@ static ssize_t gpio_keys_attr_show_helper(struct gpio_keys_drvdata *ddata, > buf[ret++] = '\n'; > buf[ret] = '\0'; > > - kfree(bits); > + bitmap_free(bits); > > return ret; > } > @@ -240,7 +240,7 @@ static ssize_t gpio_keys_attr_store_helper(struct gpio_keys_drvdata *ddata, > ssize_t error; > int i; > > - bits = kcalloc(BITS_TO_LONGS(n_events), sizeof(*bits), GFP_KERNEL); > + bits = bitmap_zalloc(n_events, GFP_KERNEL); > if (!bits) > return -ENOMEM; > > @@ -284,7 +284,7 @@ static ssize_t gpio_keys_attr_store_helper(struct gpio_keys_drvdata *ddata, > mutex_unlock(&ddata->disable_lock); > > out: > - kfree(bits); > + bitmap_free(bits); > return error; > } > > -- > 2.17.1 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Jun 16, 2018 at 1:08 AM Yury Norov <ynorov@caviumnetworks.com> wrote: > > On Fri, Jun 15, 2018 at 04:20:16PM +0300, Andy Shevchenko wrote: > > External Email > > > > Switch to bitmap_zalloc() to show clearly what we are allocating. > > Besides that it returns pointer of bitmap type instead of opaque void *. > > Nit. There's no special type for bitmaps, bitmap_zalloc() returns long *. > Is it less opaque than void *, not sure. Yes, it enables type checking by compiler, which is good thing. You can't supply other pointer to this API, like unsigned char *bar = kmalloc(BITS_PER_LONGS(nbits) * sizeof(unsigned long), GFP_KERNEL); ... bitmap_free(bar); //<< compiler will not pass this silently! Or other way around: unsigned char *foo = bitmap_alloc(nbits, GFP_KERNEL); //<< wrong types!
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index 052e37675086..492a971b95b5 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -196,7 +196,7 @@ static ssize_t gpio_keys_attr_show_helper(struct gpio_keys_drvdata *ddata, ssize_t ret; int i; - bits = kcalloc(BITS_TO_LONGS(n_events), sizeof(*bits), GFP_KERNEL); + bits = bitmap_zalloc(n_events, GFP_KERNEL); if (!bits) return -ENOMEM; @@ -216,7 +216,7 @@ static ssize_t gpio_keys_attr_show_helper(struct gpio_keys_drvdata *ddata, buf[ret++] = '\n'; buf[ret] = '\0'; - kfree(bits); + bitmap_free(bits); return ret; } @@ -240,7 +240,7 @@ static ssize_t gpio_keys_attr_store_helper(struct gpio_keys_drvdata *ddata, ssize_t error; int i; - bits = kcalloc(BITS_TO_LONGS(n_events), sizeof(*bits), GFP_KERNEL); + bits = bitmap_zalloc(n_events, GFP_KERNEL); if (!bits) return -ENOMEM; @@ -284,7 +284,7 @@ static ssize_t gpio_keys_attr_store_helper(struct gpio_keys_drvdata *ddata, mutex_unlock(&ddata->disable_lock); out: - kfree(bits); + bitmap_free(bits); return error; }