Hi Chris, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on nfs/linux-next] [also build test WARNING on net/master ipvs/master net-next/master nfsd/nfsd-next v5.12-rc3] [cannot apply to next-20210319] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Chris-Down/SUNRPC-Output-oversized-frag-reclen-as-ASCII-if-printable/20210319-225807 base: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next config: i386-randconfig-s002-20210318 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-277-gc089cd2d-dirty # https://github.com/0day-ci/linux/commit/05c000d59d3659fd34ca2ac15ebce6383362fb5a git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Chris-Down/SUNRPC-Output-oversized-frag-reclen-as-ASCII-if-printable/20210319-225807 git checkout 05c000d59d3659fd34ca2ac15ebce6383362fb5a # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> net/sunrpc/svcsock.c:883:22: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int [usertype] len_be @@ got restricted __be32 [usertype] @@ net/sunrpc/svcsock.c:883:22: sparse: expected unsigned int [usertype] len_be net/sunrpc/svcsock.c:883:22: sparse: got restricted __be32 [usertype] vim +883 net/sunrpc/svcsock.c 866 867 /* The reclen is taken directly from the first four bytes of the message with 868 * the highest bit stripped, which makes it ripe for protocol mixups. For 869 * example, if someone tries to send a HTTP GET request to us, we'll interpret 870 * it as a 1195725856-sized fragment (ie. (u32)'GET '), and print a ratelimited 871 * KERN_NOTICE with that number verbatim. 872 * 873 * To allow users to more easily understand and debug these cases, this 874 * function decodes the purported length as ASCII, and returns it if all 875 * characters were printable. Otherwise, we return NULL. 876 * 877 * WARNING: Since we reuse the u32 directly, the return value is not null 878 * terminated, and must be printed using %.*s with 879 * sizeof(svc_sock_reclen(svsk)). 880 */ 881 static char *svc_sock_reclen_ascii(struct svc_sock *svsk) 882 { > 883 u32 len_be = cpu_to_be32(svc_sock_reclen(svsk)); 884 char *len_be_ascii = (char *)&len_be; 885 size_t i; 886 887 for (i = 0; i < sizeof(len_be); i++) { 888 if (!isprint(len_be_ascii[i])) 889 return NULL; 890 } 891 892 return len_be_ascii; 893 } 894 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org