Messages in this thread Patch in this message |  | | | Date | Thu, 14 Feb 2008 10:32:07 +0900 | | From | Tejun Heo <> | | Subject | [PATCH UPDATED] printk: fix possible printk buffer overrun introduced with recursion check |
| |
printk recursion detection prepends message to printk_buf and offsets printk_buf when actual message is printed but it forgets to trim buffer length accordingly. This can result in buffer overrun in extreme cases. Fix it.
Signed-off-by: Tejun Heo <htejun@gmail.com> Acked-by: Ingo Molnar <mingo@elte.hu> --- Splitted out fix portion. kernel/printk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/printk.c b/kernel/printk.c index bee3610..9adc2a4 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -666,7 +666,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) } /* Emit the output into the temporary buffer */ printed_len += vscnprintf(printk_buf + printed_len, - sizeof(printk_buf), fmt, args); + sizeof(printk_buf) - printed_len, fmt, args); /* * Copy the output into log_buf. If the caller didn't provide
|  |