vfs: move O_DIRECT check to common code
authorMiklos Szeredi <mszeredi@suse.cz>
Tue, 5 Jun 2012 13:10:32 +0000 (15:10 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 14 Jul 2012 12:33:28 +0000 (16:33 +0400)
Perform open_check_o_direct() in a common place in do_last after opening the
file.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c

index 183a769..4bc4bc6 100644 (file)
@@ -2305,22 +2305,15 @@ static struct file *atomic_open(struct nameidata *nd, struct dentry *dentry,
         * here.
         */
        error = may_open(&filp->f_path, acc_mode, open_flag);
-       if (error)
-               goto out_fput;
-
-       error = open_check_o_direct(filp);
-       if (error)
-               goto out_fput;
+       if (error) {
+               fput(filp);
+               filp = ERR_PTR(error);
+       }
 
 out:
        dput(dentry);
        return filp;
 
-out_fput:
-       fput(filp);
-       filp = ERR_PTR(error);
-       goto out;
-
 no_open:
        if (need_lookup) {
                dentry = lookup_real(dir, dentry, nd);
@@ -2619,10 +2612,10 @@ finish_open_created:
                        goto stale_open;
                goto out;
        }
+opened:
        error = open_check_o_direct(filp);
        if (error)
                goto exit_fput;
-opened:
        error = ima_file_check(filp, op->acc_mode);
        if (error)
                goto exit_fput;