On Tue, 12 Mar 2019 15:03:52 +0100 Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> wrote: > wt., 12 mar 2019 o 14:59 Khalid Aziz <khalid.aziz@xxxxxxxxxx> napisał(a): > > > > On 3/12/19 7:28 AM, Bartosz Golaszewski wrote: > > > From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > > > > > > The mm variable is set but unused. Remove it. > > > > It is used. Look further down for calls to set_pte_at(). > > > > -- > > Khalid > > > > > > > > Signed-off-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > > > --- > > > mm/mprotect.c | 1 - > > > 1 file changed, 1 deletion(-) > > > > > > diff --git a/mm/mprotect.c b/mm/mprotect.c > > > index 028c724dcb1a..130dac3ad04f 100644 > > > --- a/mm/mprotect.c > > > +++ b/mm/mprotect.c > > > @@ -39,7 +39,6 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, > > > unsigned long addr, unsigned long end, pgprot_t newprot, > > > int dirty_accountable, int prot_numa) > > > { > > > - struct mm_struct *mm = vma->vm_mm; > > > pte_t *pte, oldpte; > > > spinlock_t *ptl; > > > unsigned long pages = 0; > > > > > > > > > Oops, I blindly assumed the compiler is right, sorry for that. GCC > complains it's unused when building usermode linux. I guess it's a > matter of how set_pte_at() is defined for ARCH=um. I'll take a second > look. > The problem is that set_pte_at() is implemented as a macro on some architectures. The appropriate fix is to make all architectures use a static inline C functions in all cases. That will make the compiler think that the `mm' arg is used, even if it is not.