From f1e62f214499f0c2c7ab80a13d631ead6ca7856f Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 10 Jun 2012 14:24:38 -0400 Subject: [PATCH] --- yaml --- r: 312912 b: refs/heads/master c: 2a027e7a1873812240cbdac0f55c4734ff0042a5 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/open.c | 33 ++++++++++++--------------------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/[refs] b/[refs] index 4292e92cfa23..165c51fb0a97 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 96b7e579addd3cdc806c1667bf5b6b126070827c +refs/heads/master: 2a027e7a1873812240cbdac0f55c4734ff0042a5 diff --git a/trunk/fs/open.c b/trunk/fs/open.c index 1241c597d317..28fbacbd5e31 100644 --- a/trunk/fs/open.c +++ b/trunk/fs/open.c @@ -752,26 +752,6 @@ static int do_dentry_open(struct dentry *dentry, struct vfsmount *mnt, return error; } -static struct file *__dentry_open(struct dentry *dentry, struct vfsmount *mnt, - struct file *f, - int (*open)(struct inode *, struct file *), - const struct cred *cred) -{ - int error; - error = do_dentry_open(dentry, mnt, f, open, cred); - if (!error) { - error = open_check_o_direct(f); - if (error) { - fput(f); - f = ERR_PTR(error); - } - } else { - put_filp(f); - f = ERR_PTR(error); - } - return f; -} - /** * finish_open - finish opening a file * @od: opaque open data @@ -841,7 +821,18 @@ struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags, } f->f_flags = flags; - return __dentry_open(dentry, mnt, f, NULL, cred); + error = do_dentry_open(dentry, mnt, f, NULL, cred); + if (!error) { + error = open_check_o_direct(f); + if (error) { + fput(f); + f = ERR_PTR(error); + } + } else { + put_filp(f); + f = ERR_PTR(error); + } + return f; } EXPORT_SYMBOL(dentry_open);