mm/slub: mark racy access on slab->freelist
authorlinke li <lilinke99@qq.com>
Sat, 27 Apr 2024 08:51:54 +0000 (16:51 +0800)
committerVlastimil Babka <vbabka@suse.cz>
Thu, 2 May 2024 12:19:21 +0000 (14:19 +0200)
In deactivate_slab(), slab->freelist can be changed concurrently. Mark
data race on slab->freelist as benign using READ_ONCE.

This patch is aimed at reducing the number of benign races reported by
KCSAN in order to focus future debugging effort on harmful races.

Signed-off-by: linke li <lilinke99@qq.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slub.c

index 3aa12b9b323d9e8969a3506cece15d512be08216..88d3dcdfa45d836d44ed64b0f727f14fbf50ae85 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2806,7 +2806,7 @@ static void deactivate_slab(struct kmem_cache *s, struct slab *slab,
        struct slab new;
        struct slab old;
 
-       if (slab->freelist) {
+       if (READ_ONCE(slab->freelist)) {
                stat(s, DEACTIVATE_REMOTE_FREES);
                tail = DEACTIVATE_TO_TAIL;
        }