Messages in this thread | | | Date | Wed, 1 Apr 2009 04:03:39 +0100 | From | Al Viro <> | Subject | Re: Q: check_unsafe_exec() races (Was: [PATCH 2/4] fix setuid sometimes doesn't) |
| |
On Wed, Apr 01, 2009 at 03:38:49AM +0100, Al Viro wrote: > On Wed, Apr 01, 2009 at 01:28:01AM +0100, Hugh Dickins wrote: > > Minor bisectability issue: the third patch, which introduces > > int unshare_fs_struct(void), needs to return 0 when it succeeds: > > that gets corrected in the fourth patch. > > ACK. > > > Lockdep objects to how check_unsafe_exec nests write_lock(&p->fs_lock) > > inside lock_task_sighand(p, &flags). It's right: we sometimes take > > sighand->siglock in interrupt, so if such an interrupt occurred just > > after you take fs_lock elsewhere, that could deadlock with this. It > > seems happy with taking fs_lock just outside the lock_task_sighand. > > Right you are, check_unsafe_exec() reordered. Will push in a few.
Rebased and pushed (same tree, same branch; included into for-next, along with related cleanups).
| |