Message ID | tencent_579220610AF1240FE3735A3443DBB01F9D07@qq.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm/slub: mark racy access on slab->freelist | expand |
On Sat, 27 Apr 2024, linke li wrote: > 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. > Thanks! Do you have a data race report to copy+paste into the commit description so people can search for it if they stumble across the same thing? > Signed-off-by: linke li <lilinke99@qq.com> > --- > mm/slub.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/slub.c b/mm/slub.c > index 0d700f6ca547..bb0e05a321e9 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -2813,7 +2813,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; > } > -- > 2.39.3 (Apple Git-146) > >
> Thanks! Do you have a data race report to copy+paste into the commit > description so people can search for it if they stumble across the same > thing? I don't have a data race report, just try to analyze the code statically and then check it manually. I hope I could help in some way.
On 4/27/24 10:51, linke li wrote: > 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> Added to slab/for-6.10, thanks > --- > mm/slub.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/slub.c b/mm/slub.c > index 0d700f6ca547..bb0e05a321e9 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -2813,7 +2813,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; > }
diff --git a/mm/slub.c b/mm/slub.c index 0d700f6ca547..bb0e05a321e9 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2813,7 +2813,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; }
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> --- mm/slub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)