Loading fs/open.c +18 −2 Original line number Diff line number Diff line Loading @@ -828,9 +828,25 @@ struct file *nameidata_to_filp(struct nameidata *nd) /* Has the filesystem initialised the file for us? */ if (filp->f_path.dentry == NULL) { struct file *res; path_get(&nd->path); filp = __dentry_open(nd->path.dentry, nd->path.mnt, filp, NULL, cred); res = do_dentry_open(nd->path.dentry, nd->path.mnt, filp, NULL, cred); if (!IS_ERR(res)) { int error; BUG_ON(res != filp); error = open_check_o_direct(filp); if (error) { fput(filp); filp = ERR_PTR(error); } } else { put_filp(filp); filp = res; } } return filp; } Loading Loading
fs/open.c +18 −2 Original line number Diff line number Diff line Loading @@ -828,9 +828,25 @@ struct file *nameidata_to_filp(struct nameidata *nd) /* Has the filesystem initialised the file for us? */ if (filp->f_path.dentry == NULL) { struct file *res; path_get(&nd->path); filp = __dentry_open(nd->path.dentry, nd->path.mnt, filp, NULL, cred); res = do_dentry_open(nd->path.dentry, nd->path.mnt, filp, NULL, cred); if (!IS_ERR(res)) { int error; BUG_ON(res != filp); error = open_check_o_direct(filp); if (error) { fput(filp); filp = ERR_PTR(error); } } else { put_filp(filp); filp = res; } } return filp; } Loading