* 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).