This patch is trying to fix KASAN issue reported by Syzkaller scan.

Backtrace:
        die+0x15c/0x6a0
        bug_handler.part.2+0x68/0xf8
        bug_handler+0x48/0x68
        brk_handler+0x1e4/0x3a8
        do_debug_exception+0xc0/0x250
        el1_dbg+0x18/0xbc
        __asan_report_load1_noabort+0x18/0x20
        param_set_kgdboc_var+0x194/0x198
        param_attr_store+0x14c/0x270
        module_attr_store+0x60/0x90
        sysfs_kf_write+0x100/0x158
        kernfs_fop_write+0x27c/0x3a8
        do_loop_readv_writev+0x114/0x1b0
        do_readv_writev+0x4f8/0x5e0
        vfs_writev+0x7c/0xb8
        Sys_writev+0xcc/0x208
        el0_svc_naked+0x24/0x28
        0xfffffffffffffff

Signed-off-by: Macpaul Lin <macp...@gmail.com>
---
 drivers/tty/serial/kgdboc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
index b4ba2b1..c89eb9d 100644
--- a/drivers/tty/serial/kgdboc.c
+++ b/drivers/tty/serial/kgdboc.c
@@ -245,13 +245,16 @@ static void kgdboc_put_char(u8 chr)
 static int param_set_kgdboc_var(const char *kmessage,
                                const struct kernel_param *kp)
 {
-       int len = strlen(kmessage);
+       size_t len = strlen(kmessage);
 
        if (len >= MAX_CONFIG_LEN) {
                printk(KERN_ERR "kgdboc: config string too long\n");
                return -ENOSPC;
        }
 
+       if (len == 0)
+               return -EINVAL;
+
        /* Only copy in the string if the init function has not run yet */
        if (configured < 0) {
                strcpy(config, kmessage);
-- 
1.7.11.2.138.g2b53359



_______________________________________________
Kgdb-bugreport mailing list
Kgdb-bugreport@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to