linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] kasan: Prevent cpu_quarantine corruption when CPU offline and cache shrink occur at same time
@ 2022-04-14  2:59 Zqiang
  2022-04-21 22:07 ` Andrew Morton
  0 siblings, 1 reply; 4+ messages in thread
From: Zqiang @ 2022-04-14  2:59 UTC (permalink / raw)
  To: ryabinin.a.a, dvyukov, akpm; +Cc: linux-mm, linux-kernel

The kasan_quarantine_remove_cache() is called in kmem_cache_shrink()/
destroy(), the kasan_quarantine_remove_cache() call is protected by
cpuslock in kmem_cache_destroy(), can ensure serialization with
kasan_cpu_offline(). however the kasan_quarantine_remove_cache() call
is not protected by cpuslock in kmem_cache_shrink(), when CPU going
offline and cache shrink occur at same time, the cpu_quarantine may be
corrupted by interrupt(per_cpu_remove_cache operation). so add
cpu_quarantine offline flags check in per_cpu_remove_cache().

Signed-off-by: Zqiang <qiang1.zhang@intel.com>
---
 mm/kasan/quarantine.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/mm/kasan/quarantine.c b/mm/kasan/quarantine.c
index 0e33d30abb8d..51a8192d49cf 100644
--- a/mm/kasan/quarantine.c
+++ b/mm/kasan/quarantine.c
@@ -330,6 +330,8 @@ static void per_cpu_remove_cache(void *arg)
 	struct cpu_shrink_qlist *sq;
 #endif
 	q = this_cpu_ptr(&cpu_quarantine);
+	if (READ_ONCE(q->offline))
+		return;
 #ifndef CONFIG_PREEMPT_RT
 	qlist_move_cache(q, &to_free, cache);
 	qlist_free_all(&to_free, cache);
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-25 14:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-14  2:59 [PATCH] kasan: Prevent cpu_quarantine corruption when CPU offline and cache shrink occur at same time Zqiang
2022-04-21 22:07 ` Andrew Morton
2022-04-22  9:27   ` Dmitry Vyukov
2022-04-25 14:25   ` Zhang, Qiang1

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).