diff options
| author | NeilBrown <neilb@suse.de> | 2015-05-08 10:16:23 +1000 | 
|---|---|---|
| committer | Jan Kara <jack@suse.cz> | 2015-05-18 11:23:08 +0200 | 
| commit | 92acca45428f28c0b387f85b52b230d526dd0ecc (patch) | |
| tree | fdd266da5dc154d2eade6a30086472dd63f2e259 /fs/udf | |
| parent | 4649f6b36214bd0707eda6e28afd594db4e19f98 (diff) | |
UDF: support NFSv2 export
The "fh_len" passed to ->fh_to_* is not guaranteed to be that same as
that returned by encode_fh - it may be larger.
With NFSv2, the filehandle is fixed length, so it may appear longer
than expected and be zero-padded.
So we must test that fh_len is at least some value, not exactly equal
to it.
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf')
| -rw-r--r-- | fs/udf/namei.c | 4 | 
1 files changed, 2 insertions, 2 deletions
| diff --git a/fs/udf/namei.c b/fs/udf/namei.c index 6abbb649c28a..c97b5a8d1e24 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c @@ -1272,7 +1272,7 @@ static struct dentry *udf_nfs_get_inode(struct super_block *sb, u32 block,  static struct dentry *udf_fh_to_dentry(struct super_block *sb,  				       struct fid *fid, int fh_len, int fh_type)  { -	if ((fh_len != 3 && fh_len != 5) || +	if (fh_len < 3 ||  	    (fh_type != FILEID_UDF_WITH_PARENT &&  	     fh_type != FILEID_UDF_WITHOUT_PARENT))  		return NULL; @@ -1284,7 +1284,7 @@ static struct dentry *udf_fh_to_dentry(struct super_block *sb,  static struct dentry *udf_fh_to_parent(struct super_block *sb,  				       struct fid *fid, int fh_len, int fh_type)  { -	if (fh_len != 5 || fh_type != FILEID_UDF_WITH_PARENT) +	if (fh_len < 5 || fh_type != FILEID_UDF_WITH_PARENT)  		return NULL;  	return udf_nfs_get_inode(sb, fid->udf.parent_block, | 
