diff options
Diffstat (limited to 'releases/2.6.32.58/printk_ratelimited-fix-uninitialized-spinlock.patch')
-rw-r--r-- | releases/2.6.32.58/printk_ratelimited-fix-uninitialized-spinlock.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/releases/2.6.32.58/printk_ratelimited-fix-uninitialized-spinlock.patch b/releases/2.6.32.58/printk_ratelimited-fix-uninitialized-spinlock.patch new file mode 100644 index 0000000..61f955c --- /dev/null +++ b/releases/2.6.32.58/printk_ratelimited-fix-uninitialized-spinlock.patch @@ -0,0 +1,48 @@ +From d8521fcc5e0ad3e79bbc4231bb20a6cdc2b50164 Mon Sep 17 00:00:00 2001 +From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> +Date: Mon, 24 May 2010 14:33:11 -0700 +Subject: printk_ratelimited(): fix uninitialized spinlock + +From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> + +commit d8521fcc5e0ad3e79bbc4231bb20a6cdc2b50164 upstream. + +ratelimit_state initialization of printk_ratelimited() seems broken. This +fixes it by using DEFINE_RATELIMIT_STATE() to initialize spinlock +properly. + +Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> +Cc: Joe Perches <joe@perches.com> +Signed-off-by: Andrew Morton <akpm@linux-foundation.org> +Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> +Cc: Sven-Haegar Koch <haegar@sdinet.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> + +--- + include/linux/kernel.h | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +--- a/include/linux/kernel.h ++++ b/include/linux/kernel.h +@@ -411,14 +411,13 @@ static inline char *pack_hex_byte(char * + * no local ratelimit_state used in the !PRINTK case + */ + #ifdef CONFIG_PRINTK +-#define printk_ratelimited(fmt, ...) ({ \ +- static struct ratelimit_state _rs = { \ +- .interval = DEFAULT_RATELIMIT_INTERVAL, \ +- .burst = DEFAULT_RATELIMIT_BURST, \ +- }; \ +- \ +- if (__ratelimit(&_rs)) \ +- printk(fmt, ##__VA_ARGS__); \ ++#define printk_ratelimited(fmt, ...) ({ \ ++ static DEFINE_RATELIMIT_STATE(_rs, \ ++ DEFAULT_RATELIMIT_INTERVAL, \ ++ DEFAULT_RATELIMIT_BURST); \ ++ \ ++ if (__ratelimit(&_rs)) \ ++ printk(fmt, ##__VA_ARGS__); \ + }) + #else + /* No effect, but we still get type checking even in the !PRINTK case: */ |