Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Revert "[PATCH] Enforce "unsigned long flags;" when spinlocking"

This reverts commit ee3ce191e8eaa4cc15c51a28b34143b36404c4f5, since it
broke on at least ARM, MIPS and PA-RISC due to complicated header file
dependencies.

Conflicts in include/linux/spinlock.h (due to the "nested" variety
fixes) fixed up by hand.

Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Kyle McMartin <kyle@parisc-linux.org>
Cc: Russell King <rmk+lkml@arm.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

+20 -86
+5 -32
include/linux/irqflags.h
··· 11 11 #ifndef _LINUX_TRACE_IRQFLAGS_H 12 12 #define _LINUX_TRACE_IRQFLAGS_H 13 13 14 - #define BUILD_CHECK_IRQ_FLAGS(flags) \ 15 - do { \ 16 - BUILD_BUG_ON(sizeof(flags) != sizeof(unsigned long)); \ 17 - typecheck(unsigned long, flags); \ 18 - } while (0) 19 - 20 14 #ifdef CONFIG_TRACE_IRQFLAGS 21 15 extern void trace_hardirqs_on(void); 22 16 extern void trace_hardirqs_off(void); ··· 50 56 #define local_irq_disable() \ 51 57 do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0) 52 58 #define local_irq_save(flags) \ 53 - do { \ 54 - BUILD_CHECK_IRQ_FLAGS(flags); \ 55 - raw_local_irq_save(flags); \ 56 - trace_hardirqs_off(); \ 57 - } while (0) 59 + do { raw_local_irq_save(flags); trace_hardirqs_off(); } while (0) 58 60 59 61 #define local_irq_restore(flags) \ 60 62 do { \ 61 - BUILD_CHECK_IRQ_FLAGS(flags); \ 62 63 if (raw_irqs_disabled_flags(flags)) { \ 63 64 raw_local_irq_restore(flags); \ 64 65 trace_hardirqs_off(); \ ··· 69 80 */ 70 81 # define raw_local_irq_disable() local_irq_disable() 71 82 # define raw_local_irq_enable() local_irq_enable() 72 - # define raw_local_irq_save(flags) \ 73 - do { \ 74 - BUILD_CHECK_IRQ_FLAGS(flags); \ 75 - local_irq_save(flags); \ 76 - } while (0) 77 - # define raw_local_irq_restore(flags) \ 78 - do { \ 79 - BUILD_CHECK_IRQ_FLAGS(flags); \ 80 - local_irq_restore(flags); \ 81 - } while (0) 83 + # define raw_local_irq_save(flags) local_irq_save(flags) 84 + # define raw_local_irq_restore(flags) local_irq_restore(flags) 82 85 #endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */ 83 86 84 87 #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT ··· 80 99 raw_safe_halt(); \ 81 100 } while (0) 82 101 83 - #define local_save_flags(flags) \ 84 - do { \ 85 - BUILD_CHECK_IRQ_FLAGS(flags); \ 86 - raw_local_save_flags(flags); \ 87 - } while (0) 102 + #define local_save_flags(flags) raw_local_save_flags(flags) 88 103 89 104 #define irqs_disabled() \ 90 105 ({ \ ··· 90 113 raw_irqs_disabled_flags(flags); \ 91 114 }) 92 115 93 - #define irqs_disabled_flags(flags) \ 94 - ({ \ 95 - BUILD_CHECK_IRQ_FLAGS(flags); \ 96 - raw_irqs_disabled_flags(flags); \ 97 - }) 116 + #define irqs_disabled_flags(flags) raw_irqs_disabled_flags(flags) 98 117 #endif /* CONFIG_X86 */ 99 118 100 119 #endif
+15 -54
include/linux/spinlock.h
··· 52 52 #include <linux/thread_info.h> 53 53 #include <linux/kernel.h> 54 54 #include <linux/stringify.h> 55 - #include <linux/irqflags.h> 56 55 57 56 #include <asm/system.h> 58 57 ··· 183 184 #define read_lock(lock) _read_lock(lock) 184 185 185 186 #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) 186 - #define spin_lock_irqsave(lock, flags) \ 187 - do { \ 188 - BUILD_CHECK_IRQ_FLAGS(flags); \ 189 - flags = _spin_lock_irqsave(lock); \ 190 - } while (0) 191 - #define read_lock_irqsave(lock, flags) \ 192 - do { \ 193 - BUILD_CHECK_IRQ_FLAGS(flags); \ 194 - flags = _read_lock_irqsave(lock); \ 195 - } while (0) 196 - #define write_lock_irqsave(lock, flags) \ 197 - do { \ 198 - BUILD_CHECK_IRQ_FLAGS(flags); \ 199 - flags = _write_lock_irqsave(lock); \ 200 - } while (0) 187 + 188 + #define spin_lock_irqsave(lock, flags) flags = _spin_lock_irqsave(lock) 189 + #define read_lock_irqsave(lock, flags) flags = _read_lock_irqsave(lock) 190 + #define write_lock_irqsave(lock, flags) flags = _write_lock_irqsave(lock) 201 191 202 192 #ifdef CONFIG_DEBUG_LOCK_ALLOC 203 - #define spin_lock_irqsave_nested(lock, flags, subclass) \ 204 - do { \ 205 - BUILD_CHECK_IRQ_FLAGS(flags); \ 206 - flags = _spin_lock_irqsave_nested(lock, subclass); \ 207 - } while (0) 193 + #define spin_lock_irqsave_nested(lock, flags, subclass) \ 194 + flags = _spin_lock_irqsave_nested(lock, subclass) 208 195 #else 209 - #define spin_lock_irqsave_nested(lock, flags, subclass) \ 210 - do { \ 211 - BUILD_CHECK_IRQ_FLAGS(flags); \ 212 - flags = _spin_lock_irqsave(lock); \ 213 - } while (0) 196 + #define spin_lock_irqsave_nested(lock, flags, subclass) \ 197 + flags = _spin_lock_irqsave(lock) 214 198 #endif 215 199 216 200 #else 217 - #define spin_lock_irqsave(lock, flags) \ 218 - do { \ 219 - BUILD_CHECK_IRQ_FLAGS(flags); \ 220 - _spin_lock_irqsave(lock, flags); \ 221 - } while (0) 222 - #define read_lock_irqsave(lock, flags) \ 223 - do { \ 224 - BUILD_CHECK_IRQ_FLAGS(flags); \ 225 - _read_lock_irqsave(lock, flags); \ 226 - } while (0) 227 - #define write_lock_irqsave(lock, flags) \ 228 - do { \ 229 - BUILD_CHECK_IRQ_FLAGS(flags); \ 230 - _write_lock_irqsave(lock, flags); \ 231 - } while (0) 201 + 202 + #define spin_lock_irqsave(lock, flags) _spin_lock_irqsave(lock, flags) 203 + #define read_lock_irqsave(lock, flags) _read_lock_irqsave(lock, flags) 204 + #define write_lock_irqsave(lock, flags) _write_lock_irqsave(lock, flags) 232 205 #define spin_lock_irqsave_nested(lock, flags, subclass) \ 233 206 spin_lock_irqsave(lock, flags) 234 207 ··· 239 268 #endif 240 269 241 270 #define spin_unlock_irqrestore(lock, flags) \ 242 - do { \ 243 - BUILD_CHECK_IRQ_FLAGS(flags); \ 244 - _spin_unlock_irqrestore(lock, flags); \ 245 - } while (0) 271 + _spin_unlock_irqrestore(lock, flags) 246 272 #define spin_unlock_bh(lock) _spin_unlock_bh(lock) 247 273 248 274 #define read_unlock_irqrestore(lock, flags) \ 249 - do { \ 250 - BUILD_CHECK_IRQ_FLAGS(flags); \ 251 - _read_unlock_irqrestore(lock, flags); \ 252 - } while (0) 275 + _read_unlock_irqrestore(lock, flags) 253 276 #define read_unlock_bh(lock) _read_unlock_bh(lock) 254 277 255 278 #define write_unlock_irqrestore(lock, flags) \ 256 - do { \ 257 - BUILD_CHECK_IRQ_FLAGS(flags); \ 258 - _write_unlock_irqrestore(lock, flags); \ 259 - } while (0) 279 + _write_unlock_irqrestore(lock, flags) 260 280 #define write_unlock_bh(lock) _write_unlock_bh(lock) 261 281 262 282 #define spin_trylock_bh(lock) __cond_lock(lock, _spin_trylock_bh(lock)) ··· 261 299 262 300 #define spin_trylock_irqsave(lock, flags) \ 263 301 ({ \ 264 - BUILD_CHECK_IRQ_FLAGS(flags); \ 265 302 local_irq_save(flags); \ 266 303 spin_trylock(lock) ? \ 267 304 1 : ({ local_irq_restore(flags); 0; }); \