Re: [PATCH 06/14] nfsd: define xattr functions to call in to their vfs counterparts

kbuild test robot
2020-03-12T07:38:09Z

Hi Frank,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on nfsd/nfsd-next]
[also build test WARNING on nfs/linux-next linus/master v5.6-rc5 next-20200311]
[cannot apply to cel/for-next]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Frank-van-der-Linden/server-side-user-xattr-support-RFC-8276/20200312-064928
base: git://linux-nfs.org/~bfields/linux.git nfsd-next
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-174-g094d5a94-dirty
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

sparse warnings: (new ones prefixed by >>)

>> fs/nfsd/vfs.c:2102:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int err @@ got restricted __int err @@
>> fs/nfsd/vfs.c:2102:13: sparse: expected int err
>> fs/nfsd/vfs.c:2102:13: sparse: got restricted __be32
>> fs/nfsd/vfs.c:2104:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted __be32 @@ got be32 @@
>> fs/nfsd/vfs.c:2104:24: sparse: expected restricted __be32
>> fs/nfsd/vfs.c:2104:24: sparse: got int err
fs/nfsd/vfs.c:2108:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected int err @@ got restricted __int err @@
fs/nfsd/vfs.c:2108:21: sparse: expected int err
fs/nfsd/vfs.c:2108:21: sparse: got restricted __be32
fs/nfsd/vfs.c:2112:16: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted __be32 @@ got be32 @@
fs/nfsd/vfs.c:2112:16: sparse: expected restricted __be32
fs/nfsd/vfs.c:2112:16: sparse: got int err
fs/nfsd/vfs.c:2121:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int err @@ got restricted __int err @@
fs/nfsd/vfs.c:2121:13: sparse: expected int err
fs/nfsd/vfs.c:2121:13: sparse: got restricted __be32
fs/nfsd/vfs.c:2123:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted __be32 @@ got be32 @@
fs/nfsd/vfs.c:2123:24: sparse: expected restricted __be32
fs/nfsd/vfs.c:2123:24: sparse: got int err
fs/nfsd/vfs.c:2128:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected int err @@ got restricted __int err @@
fs/nfsd/vfs.c:2128:21: sparse: expected int err
fs/nfsd/vfs.c:2128:21: sparse: got restricted __be32
fs/nfsd/vfs.c:2132:16: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted __be32 @@ got be32 @@
fs/nfsd/vfs.c:2132:16: sparse: expected restricted __be32
fs/nfsd/vfs.c:2132:16: sparse: got int err
fs/nfsd/vfs.c:2148:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int err @@ got restricted __int err @@
fs/nfsd/vfs.c:2148:13: sparse: expected int err
fs/nfsd/vfs.c:2148:13: sparse: got restricted __be32
fs/nfsd/vfs.c:2150:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted __be32 @@ got be32 @@
fs/nfsd/vfs.c:2150:24: sparse: expected restricted __be32
fs/nfsd/vfs.c:2150:24: sparse: got int err
fs/nfsd/vfs.c:2172:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int err @@ got restricted __int err @@
fs/nfsd/vfs.c:2172:13: sparse: expected int err
fs/nfsd/vfs.c:2172:13: sparse: got restricted __be32
fs/nfsd/vfs.c:2174:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted __be32 @@ got be32 @@
fs/nfsd/vfs.c:2174:24: sparse: expected restricted __be32
fs/nfsd/vfs.c:2174:24: sparse: got int err

vim +2102 fs/nfsd/vfs.c

2094
2095 __be32
2096 nfsd_getxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name,
2097 void *buf, int *lenp)
2098 {
2099 ssize_t lerr;
2100 int err;
2101
> 2102 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_READ);
2103 if (err)
> 2104 return err;
2105
2106 lerr = vfs_getxattr(fhp->fh_dentry, name, buf, *lenp);
2107 if (lerr < 0)
2108 err = nfsd_xattr_errno(lerr);
2109 else
2110 *lenp = lerr;
2111
2112 return err;
2113 }
2114

---
0-DAY CI Kernel Test Service, Intel Corporation