aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/bitmap.h8
-rw-r--r--lib/bitmap.c20
2 files changed, 28 insertions, 0 deletions
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
@@ -105,6 +105,14 @@
105 */ 105 */
106 106
107/* 107/*
108 * Allocation and deallocation of bitmap.
109 * Provided in lib/bitmap.c to avoid circular dependency.
110 */
111extern unsigned long *bitmap_alloc(unsigned int nbits, gfp_t flags);
112extern unsigned long *bitmap_zalloc(unsigned int nbits, gfp_t flags);
113extern void bitmap_free(const unsigned long *bitmap);
114
115/*
108 * lib/bitmap.c provides these functions: 116 * lib/bitmap.c provides these functions:
109 */ 117 */
110 118
diff --git a/lib/bitmap.c b/lib/bitmap.c
index a42eff7e8c48..5b476d8414be 100644
--- a/lib/bitmap.c
+++ b/lib/bitmap.c
@@ -13,6 +13,7 @@
13#include <linux/bitops.h> 13#include <linux/bitops.h>
14#include <linux/bug.h> 14#include <linux/bug.h>
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/slab.h>
16#include <linux/string.h> 17#include <linux/string.h>
17#include <linux/uaccess.h> 18#include <linux/uaccess.h>
18 19
@@ -1128,6 +1129,25 @@ void bitmap_copy_le(unsigned long *dst, const unsigned long *src, unsigned int n
1128EXPORT_SYMBOL(bitmap_copy_le); 1129EXPORT_SYMBOL(bitmap_copy_le);
1129#endif 1130#endif
1130 1131
1132unsigned long *bitmap_alloc(unsigned int nbits, gfp_t flags)
1133{
1134 return kmalloc_array(BITS_TO_LONGS(nbits), sizeof(unsigned long),
1135 flags);
1136}
1137EXPORT_SYMBOL(bitmap_alloc);
1138
1139unsigned long *bitmap_zalloc(unsigned int nbits, gfp_t flags)
1140{
1141 return bitmap_alloc(nbits, flags | __GFP_ZERO);
1142}
1143EXPORT_SYMBOL(bitmap_zalloc);
1144
1145void bitmap_free(const unsigned long *bitmap)
1146{
1147 kfree(bitmap);
1148}
1149EXPORT_SYMBOL(bitmap_free);
1150
1131#if BITS_PER_LONG == 64 1151#if BITS_PER_LONG == 64
1132/** 1152/**
1133 * bitmap_from_arr32 - copy the contents of u32 array of bits to bitmap 1153 * bitmap_from_arr32 - copy the contents of u32 array of bits to bitmap