| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Andi Kleen <[email protected]>
- Date: Fri, 13 Oct 2017 14:56:41 -0700
- Subject: [PATCH] bitops: Add clear/set_bit32() to linux/bitops.h
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- CVE-2017-5754
- Add two simple wrappers around set_bit/clear_bit() that accept
- the common case of an u32 array. This avoids writing
- casts in all callers.
- Signed-off-by: Andi Kleen <[email protected]>
- Reviewed-by: Thomas Gleixner <[email protected]>
- Cc: Linus Torvalds <[email protected]>
- Cc: Peter Zijlstra <[email protected]>
- Link: http://lkml.kernel.org/r/[email protected]
- Signed-off-by: Ingo Molnar <[email protected]>
- (cherry picked from commit cbe96375025e14fc76f9ed42ee5225120d7210f8)
- Signed-off-by: Andy Whitcroft <[email protected]>
- Signed-off-by: Kleber Sacilotto de Souza <[email protected]>
- (cherry picked from commit 06d31c11519ca0e8f9b7cab857f442ef44dfc1b2)
- Signed-off-by: Fabian Grünbichler <[email protected]>
- ---
- include/linux/bitops.h | 26 ++++++++++++++++++++++++++
- 1 file changed, 26 insertions(+)
- diff --git a/include/linux/bitops.h b/include/linux/bitops.h
- index a83c822c35c2..eb257a96db6d 100644
- --- a/include/linux/bitops.h
- +++ b/include/linux/bitops.h
- @@ -226,6 +226,32 @@ static inline unsigned long __ffs64(u64 word)
- return __ffs((unsigned long)word);
- }
-
- +/*
- + * clear_bit32 - Clear a bit in memory for u32 array
- + * @nr: Bit to clear
- + * @addr: u32 * address of bitmap
- + *
- + * Same as clear_bit, but avoids needing casts for u32 arrays.
- + */
- +
- +static __always_inline void clear_bit32(long nr, volatile u32 *addr)
- +{
- + clear_bit(nr, (volatile unsigned long *)addr);
- +}
- +
- +/*
- + * set_bit32 - Set a bit in memory for u32 array
- + * @nr: Bit to clear
- + * @addr: u32 * address of bitmap
- + *
- + * Same as set_bit, but avoids needing casts for u32 arrays.
- + */
- +
- +static __always_inline void set_bit32(long nr, volatile u32 *addr)
- +{
- + set_bit(nr, (volatile unsigned long *)addr);
- +}
- +
- #ifdef __KERNEL__
-
- #ifndef set_mask_bits
- --
- 2.14.2
|