Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

liveupdate: luo_file: don't use invalid list iterator

If we exit a list_for_each_entry() without hitting a break then the list
iterator points to an offset from the list_head. It's a non-NULL but
invalid pointer and dereferencing it isn't allowed.

Introduce a new "found" variable to test instead.

Link: https://lkml.kernel.org/r/aSlMc4SS09Re4_xn@stanley.mountain
Fixes: 3ee1d673194e ("liveupdate: luo_file: implement file systems callbacks")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/r/202511280420.y9O4fyhX-lkp@intel.com/
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Pratyush Yadav <pratyush@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Dan Carpenter and committed by
Andrew Morton
b2135d1c aa514a29

+5 -2
+5 -2
kernel/liveupdate/luo_file.c
··· 554 554 { 555 555 struct liveupdate_file_op_args args = {0}; 556 556 struct luo_file *luo_file; 557 + bool found = false; 557 558 int err; 558 559 559 560 if (list_empty(&file_set->files_list)) 560 561 return -ENOENT; 561 562 562 563 list_for_each_entry(luo_file, &file_set->files_list, list) { 563 - if (luo_file->token == token) 564 + if (luo_file->token == token) { 565 + found = true; 564 566 break; 567 + } 565 568 } 566 569 567 - if (luo_file->token != token) 570 + if (!found) 568 571 return -ENOENT; 569 572 570 573 guard(mutex)(&luo_file->mutex);