Re: mm_release() call in exit_mm() looks dangerous

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On 13/11/2007, Jeremy Fitzhardinge <[email protected]> wrote:
> Jesper Juhl wrote:
> > In kernel/exit.c we have this code :
> >
> > static void exit_mm(struct task_struct * tsk)
> > {
> >         struct mm_struct *mm = tsk->mm;
> >
> >         mm_release(tsk, mm);
> >         if (!mm)
> >                 return;
> > ...
> >
> >
> > But, mm_release() may dereference it's second argument ('mm'), so
> > shouldn't we be doing the "!mm" test *before* we call mm_release() and
> > not after?
> > I don't know the mm code well enough to be able to tell if some of the
> > other stuff mm_release does needs to be done always and the mm
> > dereference can't actually happen, but maybe someone else who knows
> > the code better can tell...  In any case, what's currently there looks
> > a little shaky..
> >
> Yeah, it looks wrong.  mm_release() calls deactivate_mm() as its first
> act, which could well dereference mm (though it often doesn't).
So, whould simply moving the !mm check up as the first in the function
be an appropriate way to deal with this?

Jesper Juhl <[email protected]>
Don't top-post
Plain text mails only, please
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at
Please read the FAQ at

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux