diff options
| author | Christoph Hellwig <hch@lst.de> | 2008-02-15 17:37:24 -0500 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-03-19 06:50:44 -0400 |
| commit | 322ee5b36eac42e762526b0df7fa432beba6e7a0 (patch) | |
| tree | 2499695b67123a8d463a1e59e91aa793f4803c10 | |
| parent | 3227e14c3cab5ef7972c72eb13c13de444b5bfbc (diff) | |
[PATCH] check for null vfsmount in dentry_open()
Make sure no-one calls dentry_open with a NULL vfsmount argument and crap
out with a stacktrace otherwise. A NULL file->f_vfsmnt has always been
problematic, but with the per-mount r/o tracking we can't accept anymore
at all.
[AV] the last place that passed NULL had been eliminated by the previous
patch (reiserfs xattr stuff)
Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | fs/open.c | 12 |
1 files changed, 12 insertions, 0 deletions
| @@ -903,6 +903,18 @@ struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags) | |||
| 903 | int error; | 903 | int error; |
| 904 | struct file *f; | 904 | struct file *f; |
| 905 | 905 | ||
| 906 | /* | ||
| 907 | * We must always pass in a valid mount pointer. Historically | ||
| 908 | * callers got away with not passing it, but we must enforce this at | ||
| 909 | * the earliest possible point now to avoid strange problems deep in the | ||
| 910 | * filesystem stack. | ||
| 911 | */ | ||
| 912 | if (!mnt) { | ||
| 913 | printk(KERN_WARNING "%s called with NULL vfsmount\n", __func__); | ||
| 914 | dump_stack(); | ||
| 915 | return ERR_PTR(-EINVAL); | ||
| 916 | } | ||
| 917 | |||
| 906 | error = -ENFILE; | 918 | error = -ENFILE; |
| 907 | f = get_empty_filp(); | 919 | f = get_empty_filp(); |
| 908 | if (f == NULL) { | 920 | if (f == NULL) { |
