Messages in this thread | ![/](/images/icornerl.gif) | | Subject | Re: [PATCH] powerpc/mm: Comment arch_unmap() | From | Laurent Dufour <> | Date | Tue, 23 Apr 2019 18:46:51 +0200 |
| |
Le 23/04/2019 à 17:17, Laurent Dufour a écrit : > During a different patch review, the check in arch_munmap() was found > spucious due the lake of explanation. > > Adding a comment to clarify the test. > > Suggested-by: Thomas Gleixner <tglx@linutronix.de> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com> > --- > arch/powerpc/include/asm/mmu_context.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h > index 6ee8195a2ffb..638f481b3c9f 100644 > --- a/arch/powerpc/include/asm/mmu_context.h > +++ b/arch/powerpc/include/asm/mmu_context.h > @@ -240,6 +240,17 @@ static inline void arch_unmap(struct mm_struct *mm, > struct vm_area_struct *vma, > unsigned long start, unsigned long end) > { > + /* > + * There are 2 assumptions here: > + * 1. the VDSO is one page size (guaranteed by vdso_data_store)
Indeed this is not true, only the descriptor is one page size. This makes that test not handling all the cases, especially if a upper part of the VDSO is unmap (start > mm->context.vdso_base).
I'll sent a new fix asap.
> + * 2. 'start' and 'end' are page aligned (guaranteed by the caller) > + * The test is wrote in a way to handle unmap operation surrounding the > + * VDSO area like: > + * | VDSO | > + * ^ start ^ end > + * The test also covers the munmap() operation done to the exact VDSO's > + * boundaries. > + */ > if (start <= mm->context.vdso_base && mm->context.vdso_base < end) > mm->context.vdso_base = 0; > } >
| ![\](/images/icornerr.gif) |