Sfoglia il codice sorgente

sysctl: use bitmap library functions

Use bitmap_set() instead of using set_bit() for each bit.  This conversion
is valid because the bitmap is private in the function call and atomic
bitops were unnecessary.

This also includes minor change.
- Use bitmap_copy() for shorter typing

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Akinobu Mita 13 anni fa
parent
commit
5a04cca6c3
1 ha cambiato i file con 3 aggiunte e 5 eliminazioni
  1. 3 5
      kernel/sysctl.c

+ 3 - 5
kernel/sysctl.c

@@ -23,6 +23,7 @@
 #include <linux/swap.h>
 #include <linux/swap.h>
 #include <linux/slab.h>
 #include <linux/slab.h>
 #include <linux/sysctl.h>
 #include <linux/sysctl.h>
+#include <linux/bitmap.h>
 #include <linux/signal.h>
 #include <linux/signal.h>
 #include <linux/printk.h>
 #include <linux/printk.h>
 #include <linux/proc_fs.h>
 #include <linux/proc_fs.h>
@@ -2393,9 +2394,7 @@ int proc_do_large_bitmap(struct ctl_table *table, int write,
 				}
 				}
 			}
 			}
 
 
-			while (val_a <= val_b)
-				set_bit(val_a++, tmp_bitmap);
-
+			bitmap_set(tmp_bitmap, val_a, val_b - val_a + 1);
 			first = 0;
 			first = 0;
 			proc_skip_char(&kbuf, &left, '\n');
 			proc_skip_char(&kbuf, &left, '\n');
 		}
 		}
@@ -2438,8 +2437,7 @@ int proc_do_large_bitmap(struct ctl_table *table, int write,
 			if (*ppos)
 			if (*ppos)
 				bitmap_or(bitmap, bitmap, tmp_bitmap, bitmap_len);
 				bitmap_or(bitmap, bitmap, tmp_bitmap, bitmap_len);
 			else
 			else
-				memcpy(bitmap, tmp_bitmap,
-					BITS_TO_LONGS(bitmap_len) * sizeof(unsigned long));
+				bitmap_copy(bitmap, tmp_bitmap, bitmap_len);
 		}
 		}
 		kfree(tmp_bitmap);
 		kfree(tmp_bitmap);
 		*lenp -= left;
 		*lenp -= left;