Re: pipe_release oops.

2013-03-12 Thread Al Viro
On Tue, Mar 12, 2013 at 01:09:16PM -0700, Linus Torvalds wrote: > On Tue, Mar 12, 2013 at 12:43 PM, Al Viro wrote: > > > > Umm... How about the following, then? I think it makes the whole thing > > simpler and saner... NOTE: this got only a light beating and we'd > > just seen an example of lon

Re: pipe_release oops.

2013-03-12 Thread Jörn Engel
On Sun, 10 March 2013 23:33:18 +, Al Viro wrote: > On Fri, Mar 08, 2013 at 01:26:49PM -0500, J??rn Engel wrote: > > > + files_cookie = async_schedule(exit_files_async, tsk); > > exit_mm(tsk); > > > > if (group_dead) > > @@ -990,7 +998,7 @@ void do_exit(long code) > > > > exit

Re: pipe_release oops.

2013-03-12 Thread Linus Torvalds
On Tue, Mar 12, 2013 at 12:43 PM, Al Viro wrote: > > Umm... How about the following, then? I think it makes the whole thing > simpler and saner... NOTE: this got only a light beating and we'd > just seen an example of long-standing breakage in that area; I'd really > like to see it tortured by

Re: pipe_release oops.

2013-03-12 Thread Dave Jones
On Tue, Mar 12, 2013 at 07:43:53PM +, Al Viro wrote: > On Tue, Mar 12, 2013 at 08:31:50AM -0700, Linus Torvalds wrote: > > > Probably not missing anything subtle. I think all of this code is very > > old, and related to previous /proc//fd/ escapades. And the > > semantics for those files

Re: pipe_release oops.

2013-03-12 Thread Al Viro
On Tue, Mar 12, 2013 at 08:31:50AM -0700, Linus Torvalds wrote: > Probably not missing anything subtle. I think all of this code is very > old, and related to previous /proc//fd/ escapades. And the > semantics for those files were in flux some time long long ago (the > whole "dup vs new struct fil

Re: pipe_release oops.

2013-03-12 Thread Linus Torvalds
On Tue, Mar 12, 2013 at 6:06 AM, Al Viro wrote: > > While we are at it, I don't see any reason for having separate file_operations > for r/o, w/o and r/w cases; the only differences are in EBADF-returning > ->read() and ->write() (and ->f_mode checks in vfs_read() et.al. take care of > that) and m

Re: pipe_release oops.

2013-03-12 Thread Al Viro
On Mon, Mar 11, 2013 at 06:05:43PM +, Al Viro wrote: > On Mon, Mar 11, 2013 at 08:10:10AM -0700, Linus Torvalds wrote: > > On Sun, Mar 10, 2013 at 5:35 PM, Al Viro wrote: > > > > > > Hmm... How the devil would things like pipe_read_open() get called, > > > anyway? > > > pipe_rdwr_open() can

Re: pipe_release oops.

2013-03-11 Thread Dave Jones
On Fri, Mar 08, 2013 at 10:30:01AM -0800, Linus Torvalds wrote: > On Fri, Mar 8, 2013 at 6:53 AM, Dave Jones wrote: > > > > Yeah, that does the trick. > > I changed your other diff a little to use a goto, which reduces a level of > > indentation.. > > Hmm. So I've been trying to figure th

Re: pipe_release oops.

2013-03-11 Thread Al Viro
On Mon, Mar 11, 2013 at 08:10:10AM -0700, Linus Torvalds wrote: > On Sun, Mar 10, 2013 at 5:35 PM, Al Viro wrote: > > > > Hmm... How the devil would things like pipe_read_open() get called, anyway? > > pipe_rdwr_open() can be called, all right - that happens if you do pipe() > > and then open() v

Re: pipe_release oops.

2013-03-11 Thread Linus Torvalds
On Sun, Mar 10, 2013 at 5:35 PM, Al Viro wrote: > > Hmm... How the devil would things like pipe_read_open() get called, anyway? > pipe_rdwr_open() can be called, all right - that happens if you do pipe() > and then open() via /proc/self/fd/. But how could pipe_read_open() and > pipe_write_open()

Re: pipe_release oops.

2013-03-10 Thread Al Viro
On Sun, Mar 10, 2013 at 10:10:47PM +, Al Viro wrote: > On Fri, Mar 08, 2013 at 10:30:01AM -0800, Linus Torvalds wrote: > > > I must be missing something, and I wonder if the thing I'm missing is > > that with OPEN_PATH we may now have open calls that don't actually > > have FMODE_READ or FMODE

Re: pipe_release oops.

2013-03-10 Thread Al Viro
On Fri, Mar 08, 2013 at 01:26:49PM -0500, J??rn Engel wrote: > On Fri, 8 March 2013 10:30:01 -0800, Linus Torvalds wrote: > > > > Hmm. So I've been trying to figure this out, and I really don't see > > it. Every single pipe open routine *should* make sure that the inode > > has an inode->i_pipe fi

Re: pipe_release oops.

2013-03-10 Thread Al Viro
On Fri, Mar 08, 2013 at 10:30:01AM -0800, Linus Torvalds wrote: > I must be missing something, and I wonder if the thing I'm missing is > that with OPEN_PATH we may now have open calls that don't actually > have FMODE_READ or FMODE_WRITE set at all. With OPEN_PATH we don't call ->open() (or anyth

Re: pipe_release oops.

2013-03-08 Thread Jörn Engel
On Fri, 8 March 2013 10:30:01 -0800, Linus Torvalds wrote: > > Hmm. So I've been trying to figure this out, and I really don't see > it. Every single pipe open routine *should* make sure that the inode > has an inode->i_pipe field. So if the open() has succeeded and you > have a valid file descrip

Re: pipe_release oops.

2013-03-08 Thread Linus Torvalds
On Fri, Mar 8, 2013 at 6:53 AM, Dave Jones wrote: > > Yeah, that does the trick. > I changed your other diff a little to use a goto, which reduces a level of > indentation.. Hmm. So I've been trying to figure this out, and I really don't see it. Every single pipe open routine *should* make sure

Re: pipe_release oops.

2013-03-08 Thread Dave Jones
On Thu, Mar 07, 2013 at 04:21:13PM -0800, Linus Torvalds wrote: > On Thu, Mar 7, 2013 at 2:36 PM, Dave Jones wrote: > > > > The hits keep on coming.. > > > > [ 255.609172] BUG: unable to handle kernel NULL pointer dereference at > > 0064 > > [ 255.610393] IP: [] pipe_release+

Re: pipe_release oops.

2013-03-07 Thread Linus Torvalds
On Thu, Mar 7, 2013 at 2:36 PM, Dave Jones wrote: > > The hits keep on coming.. > > [ 255.609172] BUG: unable to handle kernel NULL pointer dereference at > 0064 > [ 255.610393] IP: [] pipe_release+0x42/0xd0 Ok, I think this is the same issue as your fasync thing. So add a "if (pi