Re: [PATCH] mm: remove unused variable

From: Andrew Morton
Date: Tue Mar 12 2019 - 17:18:59 EST


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.