Messages in this thread | | | Date | Fri, 5 Dec 2008 14:12:31 +0000 (GMT) | From | Hugh Dickins <> | Subject | Re: [PATCH] EXPORTFS: Don't return NULL from fh_to_dentry()/fh_to_parent() [ver #2] |
| |
On Fri, 5 Dec 2008, David Howells wrote: > Returning NULL from fh_to_dentry() and fh_to_parent() is not permitted, so > return -ESTALE instead. exportfs_decode_fh() does not check for NULL, but > will try to dereference it as IS_ERR() does not check for it. > > The generic_fh_to_dentry() and generic_fh_to_parent() functions also no longer > return NULL, but return -ESTALE instead. > > Signed-off-by: David Howells <dhowells@redhat.com> > Acked-by: J. Bruce Fields <bfields@citi.umich.edu>
I think it's still wrong in shmem_fh_to_dentry(): you've fixed the early return, but there'd be another return NULL if !inode?
Hugh
> --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -2055,7 +2055,7 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, > inum = (inum << 32) | fid->raw[1]; > > if (fh_len < 3) > - return NULL; > + return ERR_PTR(-ESTALE); > > inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), > shmem_match, fid->raw); >
| |