mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
kmsan: fix usage of kmsan_enter_runtime() in kmsan_vmap_pages_range_noflush()
Only enter the runtime to call __vmap_pages_range_noflush(), so that error handling does not skip kmsan_leave_runtime(). This bug was spotted by CONFIG_WARN_CAPABILITY_ANALYSIS=y Link: https://lkml.kernel.org/r/20250507160012.3311104-2-glider@google.com Signed-off-by: Alexander Potapenko <glider@google.com> Acked-by: Marco Elver <elver@google.com> Cc: Bart Van Assche <bvanassche@acm.org> Cc: Kent Overstreet <kent.overstreet@linux.dev> Cc: Dmitriy Vyukov <dvyukov@google.com> Cc: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
1c1db46706
commit
8312ab31d3
@@ -247,17 +247,19 @@ int kmsan_vmap_pages_range_noflush(unsigned long start, unsigned long end,
|
||||
kmsan_enter_runtime();
|
||||
mapped = __vmap_pages_range_noflush(shadow_start, shadow_end, prot,
|
||||
s_pages, page_shift);
|
||||
kmsan_leave_runtime();
|
||||
if (mapped) {
|
||||
err = mapped;
|
||||
goto ret;
|
||||
}
|
||||
kmsan_enter_runtime();
|
||||
mapped = __vmap_pages_range_noflush(origin_start, origin_end, prot,
|
||||
o_pages, page_shift);
|
||||
kmsan_leave_runtime();
|
||||
if (mapped) {
|
||||
err = mapped;
|
||||
goto ret;
|
||||
}
|
||||
kmsan_leave_runtime();
|
||||
flush_tlb_kernel_range(shadow_start, shadow_end);
|
||||
flush_tlb_kernel_range(origin_start, origin_end);
|
||||
flush_cache_vmap(shadow_start, shadow_end);
|
||||
|
||||
Reference in New Issue
Block a user