Re: missing mnt_drop_write() on open error

From: Dave Hansen
Date: Wed Sep 26 2007 - 14:09:20 EST


On Wed, 2007-09-26 at 19:50 +0200, Miklos Szeredi wrote:
> Maybe. Can we do the mnt_want_write() from __dentry_open(), instead
> of may_open()? That would be a lot cleaner.

I'll explore that. It may make very good sense.

> Btw, may_open() doesn't do mnt_want_write() around the truncation if
> file is opened with O_TRUNC | O_RDONLY.

What's the path to may_open() in that case? open_namei() should wrap
all callers other than nfs, and it does:

/* O_TRUNC implies we need access checks for write permissions */
if (flag & O_TRUNC)
acc_mode |= MAY_WRITE;

Which should trigger the may_open() code.

later in open_namei():
...
ok:
error = may_open(nd, acc_mode, flag);
if (error)
goto exit;
return 0;


-- Dave

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/