linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* fs/nfsd/nfs4xdr.c:4683:24: sparse: sparse: incorrect type in return expression (different base types)
@ 2020-09-23 15:42 kernel test robot
  2020-09-23 15:43 ` Chuck Lever
  0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2020-09-23 15:42 UTC (permalink / raw)
  To: Frank van der Linden; +Cc: kbuild-all, linux-kernel, Chuck Lever

[-- Attachment #1: Type: text/plain, Size: 9263 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   805c6d3c19210c90c109107d189744e960eae025
commit: 23e50fe3a5e6045a573c69d4b0e3d78aa6183323 nfsd: implement the xattr functions and en/decode logic
date:   2 months ago
config: m68k-randconfig-s032-20200923 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-201-g24bdaac6-dirty
        git checkout 23e50fe3a5e6045a573c69d4b0e3d78aa6183323
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 

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


sparse warnings: (new ones prefixed by >>)

   fs/nfsd/nfs4xdr.c:1860:16: sparse: sparse: incorrect type in assignment (different base types) @@     expected int status @@     got restricted __be32 @@
   fs/nfsd/nfs4xdr.c:1860:16: sparse:     expected int status
   fs/nfsd/nfs4xdr.c:1860:16: sparse:     got restricted __be32
   fs/nfsd/nfs4xdr.c:1862:24: sparse: sparse: incorrect type in return expression (different base types) @@     expected restricted __be32 @@     got int status @@
   fs/nfsd/nfs4xdr.c:1862:24: sparse:     expected restricted __be32
   fs/nfsd/nfs4xdr.c:1862:24: sparse:     got int status
>> fs/nfsd/nfs4xdr.c:4683:24: sparse: sparse: incorrect type in return expression (different base types) @@     expected int @@     got restricted __be32 [usertype] @@
>> fs/nfsd/nfs4xdr.c:4683:24: sparse:     expected int
>> fs/nfsd/nfs4xdr.c:4683:24: sparse:     got restricted __be32 [usertype]
   fs/nfsd/nfs4xdr.c:4693:32: sparse: sparse: incorrect type in return expression (different base types) @@     expected int @@     got restricted __be32 [usertype] @@
   fs/nfsd/nfs4xdr.c:4693:32: sparse:     expected int
   fs/nfsd/nfs4xdr.c:4693:32: sparse:     got restricted __be32 [usertype]
>> fs/nfsd/nfs4xdr.c:4730:13: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __be32 [usertype] err @@     got int @@
>> fs/nfsd/nfs4xdr.c:4730:13: sparse:     expected restricted __be32 [usertype] err
>> fs/nfsd/nfs4xdr.c:4730:13: sparse:     got int
>> fs/nfsd/nfs4xdr.c:4882:15: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [assigned] [usertype] count @@     got restricted __be32 [usertype] @@
>> fs/nfsd/nfs4xdr.c:4882:15: sparse:     expected unsigned int [assigned] [usertype] count
   fs/nfsd/nfs4xdr.c:4882:15: sparse:     got restricted __be32 [usertype]

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=23e50fe3a5e6045a573c69d4b0e3d78aa6183323
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 23e50fe3a5e6045a573c69d4b0e3d78aa6183323
vim +4683 fs/nfsd/nfs4xdr.c

  4669	
  4670	/*
  4671	 * Encode kmalloc-ed buffer in to XDR stream.
  4672	 */
  4673	static int
  4674	nfsd4_vbuf_to_stream(struct xdr_stream *xdr, char *buf, u32 buflen)
  4675	{
  4676		u32 cplen;
  4677		__be32 *p;
  4678	
  4679		cplen = min_t(unsigned long, buflen,
  4680			      ((void *)xdr->end - (void *)xdr->p));
  4681		p = xdr_reserve_space(xdr, cplen);
  4682		if (!p)
> 4683			return nfserr_resource;
  4684	
  4685		memcpy(p, buf, cplen);
  4686		buf += cplen;
  4687		buflen -= cplen;
  4688	
  4689		while (buflen) {
  4690			cplen = min_t(u32, buflen, PAGE_SIZE);
  4691			p = xdr_reserve_space(xdr, cplen);
  4692			if (!p)
  4693				return nfserr_resource;
  4694	
  4695			memcpy(p, buf, cplen);
  4696	
  4697			if (cplen < PAGE_SIZE) {
  4698				/*
  4699				 * We're done, with a length that wasn't page
  4700				 * aligned, so possibly not word aligned. Pad
  4701				 * any trailing bytes with 0.
  4702				 */
  4703				xdr_encode_opaque_fixed(p, NULL, cplen);
  4704				break;
  4705			}
  4706	
  4707			buflen -= PAGE_SIZE;
  4708			buf += PAGE_SIZE;
  4709		}
  4710	
  4711		return 0;
  4712	}
  4713	
  4714	static __be32
  4715	nfsd4_encode_getxattr(struct nfsd4_compoundres *resp, __be32 nfserr,
  4716			      struct nfsd4_getxattr *getxattr)
  4717	{
  4718		struct xdr_stream *xdr = &resp->xdr;
  4719		__be32 *p, err;
  4720	
  4721		p = xdr_reserve_space(xdr, 4);
  4722		if (!p)
  4723			return nfserr_resource;
  4724	
  4725		*p = cpu_to_be32(getxattr->getxa_len);
  4726	
  4727		if (getxattr->getxa_len == 0)
  4728			return 0;
  4729	
> 4730		err = nfsd4_vbuf_to_stream(xdr, getxattr->getxa_buf,
  4731					    getxattr->getxa_len);
  4732	
  4733		kvfree(getxattr->getxa_buf);
  4734	
  4735		return err;
  4736	}
  4737	
  4738	static __be32
  4739	nfsd4_encode_setxattr(struct nfsd4_compoundres *resp, __be32 nfserr,
  4740			      struct nfsd4_setxattr *setxattr)
  4741	{
  4742		struct xdr_stream *xdr = &resp->xdr;
  4743		__be32 *p;
  4744	
  4745		p = xdr_reserve_space(xdr, 20);
  4746		if (!p)
  4747			return nfserr_resource;
  4748	
  4749		encode_cinfo(p, &setxattr->setxa_cinfo);
  4750	
  4751		return 0;
  4752	}
  4753	
  4754	/*
  4755	 * See if there are cookie values that can be rejected outright.
  4756	 */
  4757	static __be32
  4758	nfsd4_listxattr_validate_cookie(struct nfsd4_listxattrs *listxattrs,
  4759					u32 *offsetp)
  4760	{
  4761		u64 cookie = listxattrs->lsxa_cookie;
  4762	
  4763		/*
  4764		 * If the cookie is larger than the maximum number we can fit
  4765		 * in either the buffer we just got back from vfs_listxattr, or,
  4766		 * XDR-encoded, in the return buffer, it's invalid.
  4767		 */
  4768		if (cookie > (listxattrs->lsxa_len) / (XATTR_USER_PREFIX_LEN + 2))
  4769			return nfserr_badcookie;
  4770	
  4771		if (cookie > (listxattrs->lsxa_maxcount /
  4772			      (XDR_QUADLEN(XATTR_USER_PREFIX_LEN + 2) + 4)))
  4773			return nfserr_badcookie;
  4774	
  4775		*offsetp = (u32)cookie;
  4776		return 0;
  4777	}
  4778	
  4779	static __be32
  4780	nfsd4_encode_listxattrs(struct nfsd4_compoundres *resp, __be32 nfserr,
  4781				struct nfsd4_listxattrs *listxattrs)
  4782	{
  4783		struct xdr_stream *xdr = &resp->xdr;
  4784		u32 cookie_offset, count_offset, eof;
  4785		u32 left, xdrleft, slen, count;
  4786		u32 xdrlen, offset;
  4787		u64 cookie;
  4788		char *sp;
  4789		__be32 status;
  4790		__be32 *p;
  4791		u32 nuser;
  4792	
  4793		eof = 1;
  4794	
  4795		status = nfsd4_listxattr_validate_cookie(listxattrs, &offset);
  4796		if (status)
  4797			goto out;
  4798	
  4799		/*
  4800		 * Reserve space for the cookie and the name array count. Record
  4801		 * the offsets to save them later.
  4802		 */
  4803		cookie_offset = xdr->buf->len;
  4804		count_offset = cookie_offset + 8;
  4805		p = xdr_reserve_space(xdr, 12);
  4806		if (!p) {
  4807			status = nfserr_resource;
  4808			goto out;
  4809		}
  4810	
  4811		count = 0;
  4812		left = listxattrs->lsxa_len;
  4813		sp = listxattrs->lsxa_buf;
  4814		nuser = 0;
  4815	
  4816		xdrleft = listxattrs->lsxa_maxcount;
  4817	
  4818		while (left > 0 && xdrleft > 0) {
  4819			slen = strlen(sp);
  4820	
  4821			/*
  4822			 * Check if this a user. attribute, skip it if not.
  4823			 */
  4824			if (strncmp(sp, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN))
  4825				goto contloop;
  4826	
  4827			slen -= XATTR_USER_PREFIX_LEN;
  4828			xdrlen = 4 + ((slen + 3) & ~3);
  4829			if (xdrlen > xdrleft) {
  4830				if (count == 0) {
  4831					/*
  4832					 * Can't even fit the first attribute name.
  4833					 */
  4834					status = nfserr_toosmall;
  4835					goto out;
  4836				}
  4837				eof = 0;
  4838				goto wreof;
  4839			}
  4840	
  4841			left -= XATTR_USER_PREFIX_LEN;
  4842			sp += XATTR_USER_PREFIX_LEN;
  4843			if (nuser++ < offset)
  4844				goto contloop;
  4845	
  4846	
  4847			p = xdr_reserve_space(xdr, xdrlen);
  4848			if (!p) {
  4849				status = nfserr_resource;
  4850				goto out;
  4851			}
  4852	
  4853			p = xdr_encode_opaque(p, sp, slen);
  4854	
  4855			xdrleft -= xdrlen;
  4856			count++;
  4857	contloop:
  4858			sp += slen + 1;
  4859			left -= slen + 1;
  4860		}
  4861	
  4862		/*
  4863		 * If there were user attributes to copy, but we didn't copy
  4864		 * any, the offset was too large (e.g. the cookie was invalid).
  4865		 */
  4866		if (nuser > 0 && count == 0) {
  4867			status = nfserr_badcookie;
  4868			goto out;
  4869		}
  4870	
  4871	wreof:
  4872		p = xdr_reserve_space(xdr, 4);
  4873		if (!p) {
  4874			status = nfserr_resource;
  4875			goto out;
  4876		}
  4877		*p = cpu_to_be32(eof);
  4878	
  4879		cookie = offset + count;
  4880	
  4881		write_bytes_to_xdr_buf(xdr->buf, cookie_offset, &cookie, 8);
> 4882		count = htonl(count);
  4883		write_bytes_to_xdr_buf(xdr->buf, count_offset, &count, 4);
  4884	out:
  4885		if (listxattrs->lsxa_len)
  4886			kvfree(listxattrs->lsxa_buf);
  4887		return status;
  4888	}
  4889	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 21232 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: fs/nfsd/nfs4xdr.c:4683:24: sparse: sparse: incorrect type in return expression (different base types)
  2020-09-23 15:42 fs/nfsd/nfs4xdr.c:4683:24: sparse: sparse: incorrect type in return expression (different base types) kernel test robot
@ 2020-09-23 15:43 ` Chuck Lever
  0 siblings, 0 replies; 2+ messages in thread
From: Chuck Lever @ 2020-09-23 15:43 UTC (permalink / raw)
  To: kernel test robot; +Cc: Frank van der Linden, kbuild-all, linux-kernel



> On Sep 23, 2020, at 11:42 AM, kernel test robot <lkp@intel.com> wrote:
> 
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   805c6d3c19210c90c109107d189744e960eae025
> commit: 23e50fe3a5e6045a573c69d4b0e3d78aa6183323 nfsd: implement the xattr functions and en/decode logic
> date:   2 months ago
> config: m68k-randconfig-s032-20200923 (attached as .config)
> compiler: m68k-linux-gcc (GCC) 9.3.0
> reproduce:
>        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>        chmod +x ~/bin/make.cross
>        # apt-get install sparse
>        # sparse version: v0.6.2-201-g24bdaac6-dirty
>        git checkout 23e50fe3a5e6045a573c69d4b0e3d78aa6183323
>        # save the attached .config to linux build tree
>        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>

I believe both of these robot reports are addressed by
patches I have sent to Bruce for v5.10.


> sparse warnings: (new ones prefixed by >>)
> 
>   fs/nfsd/nfs4xdr.c:1860:16: sparse: sparse: incorrect type in assignment (different base types) @@     expected int status @@     got restricted __be32 @@
>   fs/nfsd/nfs4xdr.c:1860:16: sparse:     expected int status
>   fs/nfsd/nfs4xdr.c:1860:16: sparse:     got restricted __be32
>   fs/nfsd/nfs4xdr.c:1862:24: sparse: sparse: incorrect type in return expression (different base types) @@     expected restricted __be32 @@     got int status @@
>   fs/nfsd/nfs4xdr.c:1862:24: sparse:     expected restricted __be32
>   fs/nfsd/nfs4xdr.c:1862:24: sparse:     got int status
>>> fs/nfsd/nfs4xdr.c:4683:24: sparse: sparse: incorrect type in return expression (different base types) @@     expected int @@     got restricted __be32 [usertype] @@
>>> fs/nfsd/nfs4xdr.c:4683:24: sparse:     expected int
>>> fs/nfsd/nfs4xdr.c:4683:24: sparse:     got restricted __be32 [usertype]
>   fs/nfsd/nfs4xdr.c:4693:32: sparse: sparse: incorrect type in return expression (different base types) @@     expected int @@     got restricted __be32 [usertype] @@
>   fs/nfsd/nfs4xdr.c:4693:32: sparse:     expected int
>   fs/nfsd/nfs4xdr.c:4693:32: sparse:     got restricted __be32 [usertype]
>>> fs/nfsd/nfs4xdr.c:4730:13: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __be32 [usertype] err @@     got int @@
>>> fs/nfsd/nfs4xdr.c:4730:13: sparse:     expected restricted __be32 [usertype] err
>>> fs/nfsd/nfs4xdr.c:4730:13: sparse:     got int
>>> fs/nfsd/nfs4xdr.c:4882:15: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [assigned] [usertype] count @@     got restricted __be32 [usertype] @@
>>> fs/nfsd/nfs4xdr.c:4882:15: sparse:     expected unsigned int [assigned] [usertype] count
>   fs/nfsd/nfs4xdr.c:4882:15: sparse:     got restricted __be32 [usertype]
> 
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=23e50fe3a5e6045a573c69d4b0e3d78aa6183323
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 23e50fe3a5e6045a573c69d4b0e3d78aa6183323
> vim +4683 fs/nfsd/nfs4xdr.c
> 
>  4669	
>  4670	/*
>  4671	 * Encode kmalloc-ed buffer in to XDR stream.
>  4672	 */
>  4673	static int
>  4674	nfsd4_vbuf_to_stream(struct xdr_stream *xdr, char *buf, u32 buflen)
>  4675	{
>  4676		u32 cplen;
>  4677		__be32 *p;
>  4678	
>  4679		cplen = min_t(unsigned long, buflen,
>  4680			      ((void *)xdr->end - (void *)xdr->p));
>  4681		p = xdr_reserve_space(xdr, cplen);
>  4682		if (!p)
>> 4683			return nfserr_resource;
>  4684	
>  4685		memcpy(p, buf, cplen);
>  4686		buf += cplen;
>  4687		buflen -= cplen;
>  4688	
>  4689		while (buflen) {
>  4690			cplen = min_t(u32, buflen, PAGE_SIZE);
>  4691			p = xdr_reserve_space(xdr, cplen);
>  4692			if (!p)
>  4693				return nfserr_resource;
>  4694	
>  4695			memcpy(p, buf, cplen);
>  4696	
>  4697			if (cplen < PAGE_SIZE) {
>  4698				/*
>  4699				 * We're done, with a length that wasn't page
>  4700				 * aligned, so possibly not word aligned. Pad
>  4701				 * any trailing bytes with 0.
>  4702				 */
>  4703				xdr_encode_opaque_fixed(p, NULL, cplen);
>  4704				break;
>  4705			}
>  4706	
>  4707			buflen -= PAGE_SIZE;
>  4708			buf += PAGE_SIZE;
>  4709		}
>  4710	
>  4711		return 0;
>  4712	}
>  4713	
>  4714	static __be32
>  4715	nfsd4_encode_getxattr(struct nfsd4_compoundres *resp, __be32 nfserr,
>  4716			      struct nfsd4_getxattr *getxattr)
>  4717	{
>  4718		struct xdr_stream *xdr = &resp->xdr;
>  4719		__be32 *p, err;
>  4720	
>  4721		p = xdr_reserve_space(xdr, 4);
>  4722		if (!p)
>  4723			return nfserr_resource;
>  4724	
>  4725		*p = cpu_to_be32(getxattr->getxa_len);
>  4726	
>  4727		if (getxattr->getxa_len == 0)
>  4728			return 0;
>  4729	
>> 4730		err = nfsd4_vbuf_to_stream(xdr, getxattr->getxa_buf,
>  4731					    getxattr->getxa_len);
>  4732	
>  4733		kvfree(getxattr->getxa_buf);
>  4734	
>  4735		return err;
>  4736	}
>  4737	
>  4738	static __be32
>  4739	nfsd4_encode_setxattr(struct nfsd4_compoundres *resp, __be32 nfserr,
>  4740			      struct nfsd4_setxattr *setxattr)
>  4741	{
>  4742		struct xdr_stream *xdr = &resp->xdr;
>  4743		__be32 *p;
>  4744	
>  4745		p = xdr_reserve_space(xdr, 20);
>  4746		if (!p)
>  4747			return nfserr_resource;
>  4748	
>  4749		encode_cinfo(p, &setxattr->setxa_cinfo);
>  4750	
>  4751		return 0;
>  4752	}
>  4753	
>  4754	/*
>  4755	 * See if there are cookie values that can be rejected outright.
>  4756	 */
>  4757	static __be32
>  4758	nfsd4_listxattr_validate_cookie(struct nfsd4_listxattrs *listxattrs,
>  4759					u32 *offsetp)
>  4760	{
>  4761		u64 cookie = listxattrs->lsxa_cookie;
>  4762	
>  4763		/*
>  4764		 * If the cookie is larger than the maximum number we can fit
>  4765		 * in either the buffer we just got back from vfs_listxattr, or,
>  4766		 * XDR-encoded, in the return buffer, it's invalid.
>  4767		 */
>  4768		if (cookie > (listxattrs->lsxa_len) / (XATTR_USER_PREFIX_LEN + 2))
>  4769			return nfserr_badcookie;
>  4770	
>  4771		if (cookie > (listxattrs->lsxa_maxcount /
>  4772			      (XDR_QUADLEN(XATTR_USER_PREFIX_LEN + 2) + 4)))
>  4773			return nfserr_badcookie;
>  4774	
>  4775		*offsetp = (u32)cookie;
>  4776		return 0;
>  4777	}
>  4778	
>  4779	static __be32
>  4780	nfsd4_encode_listxattrs(struct nfsd4_compoundres *resp, __be32 nfserr,
>  4781				struct nfsd4_listxattrs *listxattrs)
>  4782	{
>  4783		struct xdr_stream *xdr = &resp->xdr;
>  4784		u32 cookie_offset, count_offset, eof;
>  4785		u32 left, xdrleft, slen, count;
>  4786		u32 xdrlen, offset;
>  4787		u64 cookie;
>  4788		char *sp;
>  4789		__be32 status;
>  4790		__be32 *p;
>  4791		u32 nuser;
>  4792	
>  4793		eof = 1;
>  4794	
>  4795		status = nfsd4_listxattr_validate_cookie(listxattrs, &offset);
>  4796		if (status)
>  4797			goto out;
>  4798	
>  4799		/*
>  4800		 * Reserve space for the cookie and the name array count. Record
>  4801		 * the offsets to save them later.
>  4802		 */
>  4803		cookie_offset = xdr->buf->len;
>  4804		count_offset = cookie_offset + 8;
>  4805		p = xdr_reserve_space(xdr, 12);
>  4806		if (!p) {
>  4807			status = nfserr_resource;
>  4808			goto out;
>  4809		}
>  4810	
>  4811		count = 0;
>  4812		left = listxattrs->lsxa_len;
>  4813		sp = listxattrs->lsxa_buf;
>  4814		nuser = 0;
>  4815	
>  4816		xdrleft = listxattrs->lsxa_maxcount;
>  4817	
>  4818		while (left > 0 && xdrleft > 0) {
>  4819			slen = strlen(sp);
>  4820	
>  4821			/*
>  4822			 * Check if this a user. attribute, skip it if not.
>  4823			 */
>  4824			if (strncmp(sp, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN))
>  4825				goto contloop;
>  4826	
>  4827			slen -= XATTR_USER_PREFIX_LEN;
>  4828			xdrlen = 4 + ((slen + 3) & ~3);
>  4829			if (xdrlen > xdrleft) {
>  4830				if (count == 0) {
>  4831					/*
>  4832					 * Can't even fit the first attribute name.
>  4833					 */
>  4834					status = nfserr_toosmall;
>  4835					goto out;
>  4836				}
>  4837				eof = 0;
>  4838				goto wreof;
>  4839			}
>  4840	
>  4841			left -= XATTR_USER_PREFIX_LEN;
>  4842			sp += XATTR_USER_PREFIX_LEN;
>  4843			if (nuser++ < offset)
>  4844				goto contloop;
>  4845	
>  4846	
>  4847			p = xdr_reserve_space(xdr, xdrlen);
>  4848			if (!p) {
>  4849				status = nfserr_resource;
>  4850				goto out;
>  4851			}
>  4852	
>  4853			p = xdr_encode_opaque(p, sp, slen);
>  4854	
>  4855			xdrleft -= xdrlen;
>  4856			count++;
>  4857	contloop:
>  4858			sp += slen + 1;
>  4859			left -= slen + 1;
>  4860		}
>  4861	
>  4862		/*
>  4863		 * If there were user attributes to copy, but we didn't copy
>  4864		 * any, the offset was too large (e.g. the cookie was invalid).
>  4865		 */
>  4866		if (nuser > 0 && count == 0) {
>  4867			status = nfserr_badcookie;
>  4868			goto out;
>  4869		}
>  4870	
>  4871	wreof:
>  4872		p = xdr_reserve_space(xdr, 4);
>  4873		if (!p) {
>  4874			status = nfserr_resource;
>  4875			goto out;
>  4876		}
>  4877		*p = cpu_to_be32(eof);
>  4878	
>  4879		cookie = offset + count;
>  4880	
>  4881		write_bytes_to_xdr_buf(xdr->buf, cookie_offset, &cookie, 8);
>> 4882		count = htonl(count);
>  4883		write_bytes_to_xdr_buf(xdr->buf, count_offset, &count, 4);
>  4884	out:
>  4885		if (listxattrs->lsxa_len)
>  4886			kvfree(listxattrs->lsxa_buf);
>  4887		return status;
>  4888	}
>  4889	
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> <.config.gz>

--
Chuck Lever




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-09-23 15:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-23 15:42 fs/nfsd/nfs4xdr.c:4683:24: sparse: sparse: incorrect type in return expression (different base types) kernel test robot
2020-09-23 15:43 ` Chuck Lever

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).