On Tue, Jan 28, 2020 at 05:08:27PM +0530, Naresh Kamboju wrote: > On Sun, 1 Jul 2018 at 01:49, Andy Shevchenko > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > > > A lot of code become ugly because of open coding allocations for bitmaps. > > > > Introduce three helpers to allow users be more clear of intention > > and keep their code neat. > > > > Note, due to multiple circular dependencies we may not provide > > the helpers as inliners. For now we keep them exported and, perhaps, > > at some point in the future we will sort out header inclusion and > > inheritance. > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > --- > > include/linux/bitmap.h | 8 ++++++++ > > lib/bitmap.c | 19 +++++++++++++++++++ > > 2 files changed, 27 insertions(+) > > > > diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h > > index 1ee46f492267..acf5e8df3504 100644 > > --- a/include/linux/bitmap.h > > +++ b/include/linux/bitmap.h > > @@ -104,6 +104,14 @@ > > * contain all bit positions from 0 to 'bits' - 1. > > */ > > > > +/* > > + * Allocation and deallocation of bitmap. > > + * Provided in lib/bitmap.c to avoid circular dependency. > > + */ > > +extern unsigned long *bitmap_alloc(unsigned int nbits, gfp_t flags); > > +extern unsigned long *bitmap_zalloc(unsigned int nbits, gfp_t flags); > > +extern void bitmap_free(const unsigned long *bitmap); > > + > > /* > > * lib/bitmap.c provides these functions: > > */ > > diff --git a/lib/bitmap.c b/lib/bitmap.c > > index 33e95cd359a2..09acf2fd6a35 100644 > > --- a/lib/bitmap.c > > +++ b/lib/bitmap.c > > @@ -13,6 +13,7 @@ > > #include <linux/bitops.h> > > #include <linux/bug.h> > > #include <linux/kernel.h> > > +#include <linux/slab.h> > > #include <linux/string.h> > > #include <linux/uaccess.h> > > > > @@ -1125,6 +1126,24 @@ void bitmap_copy_le(unsigned long *dst, const unsigned long *src, unsigned int n > > EXPORT_SYMBOL(bitmap_copy_le); > > #endif > > > > +unsigned long *bitmap_alloc(unsigned int nbits, gfp_t flags) > > +{ > > + return kmalloc_array(BITS_TO_LONGS(nbits), sizeof(unsigned long), flags); > > +} > > +EXPORT_SYMBOL(bitmap_alloc); > > + > > +unsigned long *bitmap_zalloc(unsigned int nbits, gfp_t flags) > > +{ > > + return bitmap_alloc(nbits, flags | __GFP_ZERO); > > +} > > +EXPORT_SYMBOL(bitmap_zalloc); > > + > > +void bitmap_free(const unsigned long *bitmap) > > +{ > > + kfree(bitmap); > > +} > > +EXPORT_SYMBOL(bitmap_free); > > + > > #if BITS_PER_LONG == 64 > > /** > > * bitmap_from_arr32 - copy the contents of u32 array of bits to bitmap > > stable-rc 4.14 build failed due to these build error, Yeah, sorry, I noticed this right before I had to leave for a few hours. I'll go fix this up now... greg k-h