2017-07-27 12:35:03

by Sergey Senozhatsky

[permalink] [raw]
Subject: [mmots] build error: mm: prevent racy access to tlb_flush_pending

Hello,

8c636138f497b36ae95f ("mm: prevent racy access to tlb_flush_pending") kills
the build

kernel/fork.c: In function ‘mm_init’:
kernel/fork.c:810:18: error: ‘struct mm_struct’ has no member named ‘tlb_flush_pending’; did you mean ‘tlb_flush_batched’?
atomic_set(&mm->tlb_flush_pending, 0);
^~~~~~~~~~~~~~~~~
tlb_flush_batched



replacing clear_tlb_flush_pending() with a direct ->tlb_flush_pending
access

@@ -807,7 +807,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p,
mm_init_aio(mm);
mm_init_owner(mm, p);
mmu_notifier_mm_init(mm);
- clear_tlb_flush_pending(mm);
+ atomic_set(&mm->tlb_flush_pending, 0);


doesn't work on on !CONFIG_NUMA_BALANCING && !CONFIG_COMPACTION systems.

-ss


2017-07-27 15:18:06

by Nadav Amit

[permalink] [raw]
Subject: Re: [mmots] build error: mm: prevent racy access to tlb_flush_pending

Sergey Senozhatsky <[email protected]> wrote:

> Hello,
>
> 8c636138f497b36ae95f ("mm: prevent racy access to tlb_flush_pending") kills
> the build
>
> kernel/fork.c: In function ‘mm_init’:
> kernel/fork.c:810:18: error: ‘struct mm_struct’ has no member named ‘tlb_flush_pending’; did you mean ‘tlb_flush_batched’?
> atomic_set(&mm->tlb_flush_pending, 0);
> ^~~~~~~~~~~~~~~~~
> tlb_flush_batched
>
>
>
> replacing clear_tlb_flush_pending() with a direct ->tlb_flush_pending
> access
>
> @@ -807,7 +807,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p,
> mm_init_aio(mm);
> mm_init_owner(mm, p);
> mmu_notifier_mm_init(mm);
> - clear_tlb_flush_pending(mm);
> + atomic_set(&mm->tlb_flush_pending, 0);
>
>
> doesn't work on on !CONFIG_NUMA_BALANCING && !CONFIG_COMPACTION systems.
>
> -ss

Missed this one. Thanks, I will fix it for v3.

When Minchan repurpose this field, he should remove all of these defines
(including those in mm_types.h).

Minchan, do you want me to do it?

Nadav