Message ID | CAA=HWd1kn01ym8YuVFuAqK2Ggq3itEGkqX8T6eCXs_C7tiv-Jw@mail.gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm: page_alloc: Remove redundant READ_ONCE | expand |
On 4/2/25 3:41 PM, Songtang Liu wrote: > In the current code, batch is a local variable, and it cannot be > concurrently modified. It's unnecessary to use READ_ONCE here, > so remove it. > > Fixes: 51a755c56dc0 ("mm: tune PCP high automatically") > Signed-off-by: Songtang Liu <liusongtang@bytedance.com> > --- > mm/page_alloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e3ea5bf5c459..6edc6e57d4f8 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2661,7 +2661,7 @@ static void free_frozen_page_commit(struct zone *zone, > free_high = (pcp->free_count >= batch && > (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) && > (!(pcp->flags & PCPF_FREE_HIGH_BATCH) || > - pcp->count >= READ_ONCE(batch))); > + pcp->count >= batch)); > pcp->flags |= PCPF_PREV_FREE_HIGH_ORDER; > } else if (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) { > pcp->flags &= ~PCPF_PREV_FREE_HIGH_ORDER; Reviewed-by: Qi Zheng <zhengqi.arch@bytedance.com> Thanks!
Songtang Liu <liusongtang@bytedance.com> writes: > In the current code, batch is a local variable, and it cannot be > concurrently modified. It's unnecessary to use READ_ONCE here, > so remove it. > > Fixes: 51a755c56dc0 ("mm: tune PCP high automatically") > Signed-off-by: Songtang Liu <liusongtang@bytedance.com> > --- > mm/page_alloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e3ea5bf5c459..6edc6e57d4f8 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2661,7 +2661,7 @@ static void free_frozen_page_commit(struct zone *zone, > free_high = (pcp->free_count >= batch && > (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) && > (!(pcp->flags & PCPF_FREE_HIGH_BATCH) || > - pcp->count >= READ_ONCE(batch))); > + pcp->count >= batch)); Nice catch! Reviewed-by: Huang Ying <ying.huang@linux.alibaba.com> > pcp->flags |= PCPF_PREV_FREE_HIGH_ORDER; > } else if (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) { > pcp->flags &= ~PCPF_PREV_FREE_HIGH_ORDER; --- Best Regards, Huang, Ying
On 4/2/25 13:11, Songtang Liu wrote: > In the current code, batch is a local variable, and it cannot be > concurrently modified. It's unnecessary to use READ_ONCE here, > so remove it. > > Fixes: 51a755c56dc0 ("mm: tune PCP high automatically") Although READ_ONCE() should not have been used here with the above commit - does this cause any problem though ? So in other words is the Fixes: tag necessary here ? > Signed-off-by: Songtang Liu <liusongtang@bytedance.com> > --- > mm/page_alloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e3ea5bf5c459..6edc6e57d4f8 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2661,7 +2661,7 @@ static void free_frozen_page_commit(struct zone *zone, > free_high = (pcp->free_count >= batch && > (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) && > (!(pcp->flags & PCPF_FREE_HIGH_BATCH) || > - pcp->count >= READ_ONCE(batch))); > + pcp->count >= batch)); > pcp->flags |= PCPF_PREV_FREE_HIGH_ORDER; > } else if (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) { > pcp->flags &= ~PCPF_PREV_FREE_HIGH_ORDER; Otherwise LGTM Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
> In the current code, batch is a local variable, and it cannot be > concurrently modified. It's unnecessary to use READ_ONCE here, > so remove it. > > Fixes: 51a755c56dc0 ("mm: tune PCP high automatically") > Signed-off-by: Songtang Liu <liusongtang@bytedance.com> Reviewed-by: Pankaj Gupta <pankaj.gupta@amd.com> > --- > mm/page_alloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e3ea5bf5c459..6edc6e57d4f8 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2661,7 +2661,7 @@ static void free_frozen_page_commit(struct zone *zone, > free_high = (pcp->free_count >= batch && > (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) && > (!(pcp->flags & PCPF_FREE_HIGH_BATCH) || > - pcp->count >= READ_ONCE(batch))); > + pcp->count >= batch)); > pcp->flags |= PCPF_PREV_FREE_HIGH_ORDER; > } else if (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) { > pcp->flags &= ~PCPF_PREV_FREE_HIGH_ORDER;
On Wed, Apr 02, 2025 at 03:41:16AM -0400, Songtang Liu wrote: > In the current code, batch is a local variable, and it cannot be > concurrently modified. It's unnecessary to use READ_ONCE here, > so remove it. > > Fixes: 51a755c56dc0 ("mm: tune PCP high automatically") > Signed-off-by: Songtang Liu <liusongtang@bytedance.com> Reviewed-by: Oscar Salvador <osalvador@suse.de>
On Wed, Apr 02, 2025 at 03:41:16AM -0400, Songtang Liu wrote: > In the current code, batch is a local variable, and it cannot be > concurrently modified. It's unnecessary to use READ_ONCE here, > so remove it. > > Fixes: 51a755c56dc0 ("mm: tune PCP high automatically") > Signed-off-by: Songtang Liu <liusongtang@bytedance.com> Reviewed-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e3ea5bf5c459..6edc6e57d4f8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2661,7 +2661,7 @@ static void free_frozen_page_commit(struct zone *zone, free_high = (pcp->free_count >= batch && (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) && (!(pcp->flags & PCPF_FREE_HIGH_BATCH) || - pcp->count >= READ_ONCE(batch))); + pcp->count >= batch)); pcp->flags |= PCPF_PREV_FREE_HIGH_ORDER; } else if (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) { pcp->flags &= ~PCPF_PREV_FREE_HIGH_ORDER;
In the current code, batch is a local variable, and it cannot be concurrently modified. It's unnecessary to use READ_ONCE here, so remove it. Fixes: 51a755c56dc0 ("mm: tune PCP high automatically") Signed-off-by: Songtang Liu <liusongtang@bytedance.com> --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)