在 2010-01-13三的 09:44 -0500,Mike Frysinger写道: > On Wed, Jan 13, 2010 at 03:09, <[email protected]> wrote: > > Revision 8149 Author gyang Date 2010-01-13 03:09:27 -0500 (Wed, 13 Jan 2010) > > > > Log Message > > > > Task [#5545], revise previous commit, avoid schedule in decode_address() as > > Sonic pointed out > > > > --- trunk/arch/blackfin/kernel/traps.c 2010-01-13 06:09:34 UTC (rev > > 8148) > > +++ trunk/arch/blackfin/kernel/traps.c 2010-01-13 08:09:27 UTC (rev > > 8149) > > @@ -138,7 +138,9 @@ > > if (!mm) > > continue; > > > > - down_write(&mm->mmap_sem); > > + while (!down_read_trylock(&mm->mmap_sem)) > > + barrier(); > > + > > for (n = rb_first(&mm->mm_rb); n; n = rb_next(n)) { > > struct vm_area_struct *vma; > > > > @@ -184,11 +186,11 @@ > > if (buf[0] == '\0') > > sprintf(buf, "[ %s ] dynamic memory", > > name); > > > > - up_write(&mm->mmap_sem); > > + up_read(&mm->mmap_sem); > > goto done; > > } > > } > > - up_write(&mm->mmap_sem); > > + up_read(&mm->mmap_sem); > > > > if (!in_atomic) > > mmput(mm); > > i think this needs in_atomic handling. if an exception occurred while > one of these locks were held, the kernel would hang. > -mike
So we have to skip this mm if it's mmap_sem is held. I will modify it. -Graff _______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
