From 0c17853c97b1675cdf6a04dbfd25a6bbe1d1fdd5 Mon Sep 17 00:00:00 2001 From: Bian Jin chen Date: Tue, 17 Nov 2020 14:24:34 +0800 Subject: [PATCH] dm table: Avoid null pointer dereference Test: vts_libdm_test Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000018 [ 83.108561] Mem abort info: [ 83.108896] ESR = 0x96000005 [ 83.109191] Exception class = DABT (current EL), IL = 32 bits [ 83.110203] SET = 0, FnV = 0 [ 83.110505] EA = 0, S1PTW = 0 [ 83.110894] Data abort info: [ 83.111182] ISV = 0, ISS = 0x00000005 [ 83.111537] CM = 0, WnR = 0 [ 83.111929] user pgtable: 4k pages, 39-bit VAs, pgdp = 00000000cff2854e [ 83.112534] [0000000000000018] pgd=0000000033f28003, pud=0000000033f28003, pmd=0000000000000000 [ 83.113403] Internal error: Oops: 96000005 [#1] PREEMPT SMP [ 83.113912] Modules linked in: 8723cs [ 83.114257] Process vts_libdm_test (pid: 1985, stack limit = 0x000000007ea1bacc) [ 83.114923] CPU: 3 PID: 1985 Comm: vts_libdm_test Not tainted 4.19.154 #41 [ 83.115534] Hardware name: Rockchip rk3326 863 rkisp1 board (DT) [ 83.116082] pstate: 40400005 (nZcv daif +PAN -UAO) [ 83.116534] pc : __pi_strncmp+0x24/0x208 [ 83.116908] lr : dm_table_add_target+0x184/0x3bc [ 83.117326] sp : ffffff8012bcbb70 Fixes: 531fc5e28051 ("dm: add check target device probe completely") Signed-off-by: Bian Jin chen Change-Id: Icb943c4d1dfe116b3b39f4cd77b2eda232de65fe --- drivers/md/dm-table.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index edc39d731f86..f3ef3b53c95c 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c @@ -788,7 +788,7 @@ int dm_table_add_target(struct dm_table *t, const char *type, } #ifdef CONFIG_ARCH_ROCKCHIP - while (argv && + while (argv && (argc > 1) && strncmp(argv[1], "PARTUUID=", 9) == 0 && name_to_dev_t(argv[1]) == 0) { DMINFO("%s: %s: Waiting for device %s ...",