vsnprintf returns the number of chars that would have been written, not
the actual number of chars written. This can lead to crashlog_buf->len
being too big which in turn can lead to get_maxlen() returning negative
numbers. The length argument of kmsg_dump_get_buffer will be casted to
a size_t which makes a negative input a big positive number allowing
kmsg_dump_get_buffer to write out of bounds.
Fix this by using vscnprintf which returns the actually written number
of chars.
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37820 3c298f89-4303-0410-b956-a3cf2f4a3e73
This is crashing the kernel in crashlog_init_fs(), until fixed, disable it
for SPARC too.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34213 3c298f89-4303-0410-b956-a3cf2f4a3e73
Fixes this section mismatch warning:
WARNING: vmlinux.o(.meminit.text+0xb14): Section mismatch in reference
from the function memblock_insert_region() to the function
.init.text:crashlog_init_memblock()
The function __meminit memblock_insert_region() references
a function __init crashlog_init_memblock().
If crashlog_init_memblock is only used by memblock_insert_region then
annotate crashlog_init_memblock with a matching annotation.
Also, remove the __init annotations from 'include/linux/crashlog.h'
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33137 3c298f89-4303-0410-b956-a3cf2f4a3e73
It is currently badly broken on ARM, until fixed, disable it
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32926 3c298f89-4303-0410-b956-a3cf2f4a3e73