| From stable-bounces@linux.kernel.org Mon May 21 02:42:28 2007 |
| To: akpm@linux-foundation.org, stable@kernel.org |
| Message-Id: <E1Hq4Mw-0002qK-00@dorka.pomaz.szeredi.hu> |
| From: Miklos Szeredi <miklos@szeredi.hu> |
| Date: Mon, 21 May 2007 11:39:58 +0200 |
| Cc: linux-kernel@vger.kernel.org |
| Subject: fuse: fix mknod of regular file |
| |
| From: Miklos Szeredi <mszeredi@suse.cz> |
| |
| The wrong lookup flag was tested in ->create() causing havoc (error or |
| Oops) when a regular file was created with mknod() in a fuse |
| filesystem. |
| |
| Thanks to J. Cameijo Cerdeira for the report. |
| |
| Kernels 2.6.18 onward are affected. Please apply to -stable as well. |
| |
| Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/fuse/dir.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- linux-2.6.21.4.orig/fs/fuse/dir.c |
| +++ linux-2.6.21.4/fs/fuse/dir.c |
| @@ -485,7 +485,7 @@ static int fuse_mknod(struct inode *dir, |
| static int fuse_create(struct inode *dir, struct dentry *entry, int mode, |
| struct nameidata *nd) |
| { |
| - if (nd && (nd->flags & LOOKUP_CREATE)) { |
| + if (nd && (nd->flags & LOOKUP_OPEN)) { |
| int err = fuse_create_open(dir, entry, mode, nd); |
| if (err != -ENOSYS) |
| return err; |