Looks correct. Acked-by: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> On Mon, Apr 18, 2016 at 6:41 AM, Goldwyn Rodrigues <rgoldwyn@xxxxxxx> wrote: > From: Goldwyn Rodrigues <rgoldwyn@xxxxxxxx> > > CIFS may be used as lower layer of overlayfs and accessing f_path.dentry can > lead to a crash. > > Fix by replacing direct access of file->f_path.dentry with the > file_dentry() accessor, which will always return a native object. > > Signed-off-by: Goldwyn Rodrigues <rgoldwyn@xxxxxxxx> > > diff --git a/fs/cifs/file.c b/fs/cifs/file.c > index c03d074..489ddc7 100644 > --- a/fs/cifs/file.c > +++ b/fs/cifs/file.c > @@ -271,7 +271,7 @@ struct cifsFileInfo * > cifs_new_fileinfo(struct cifs_fid *fid, struct file *file, > struct tcon_link *tlink, __u32 oplock) > { > - struct dentry *dentry = file->f_path.dentry; > + struct dentry *dentry = file_dentry(file); > struct inode *inode = d_inode(dentry); > struct cifsInodeInfo *cinode = CIFS_I(inode); > struct cifsFileInfo *cfile; > @@ -461,7 +461,7 @@ int cifs_open(struct inode *inode, struct file *file) > tcon = tlink_tcon(tlink); > server = tcon->ses->server; > > - full_path = build_path_from_dentry(file->f_path.dentry); > + full_path = build_path_from_dentry(file_dentry(file)); > if (full_path == NULL) { > rc = -ENOMEM; > goto out; > diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c > index b30a4a6..8806584 100644 > --- a/fs/cifs/readdir.c > +++ b/fs/cifs/readdir.c > @@ -300,7 +300,7 @@ initiate_cifs_search(const unsigned int xid, struct file *file) > cifsFile->invalidHandle = true; > cifsFile->srch_inf.endOfSearch = false; > > - full_path = build_path_from_dentry(file->f_path.dentry); > + full_path = build_path_from_dentry(file_dentry(file)); > if (full_path == NULL) { > rc = -ENOMEM; > goto error_exit; > @@ -759,7 +759,7 @@ static int cifs_filldir(char *find_entry, struct file *file, > */ > fattr.cf_flags |= CIFS_FATTR_NEED_REVAL; > > - cifs_prime_dcache(file->f_path.dentry, &name, &fattr); > + cifs_prime_dcache(file_dentry(file), &name, &fattr); > > ino = cifs_uniqueid_to_ino_t(fattr.cf_uniqueid); > return !dir_emit(ctx, name.name, name.len, ino, fattr.cf_dtype); > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html