Re: [PATCH v8 10/13] sunrpc: add dst_attr attributes to the sysfs xprt directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Olga,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on nfs/linux-next]
[also build test WARNING on v5.13-rc4 next-20210602]
[cannot apply to nfsd/nfsd-next]
[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/Olga-Kornievskaia/create-sysfs-files-for-changing-IP-address/20210602-061025
base:   git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next
config: x86_64-randconfig-s021-20210603 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-341-g8af24329-dirty
        # https://github.com/0day-ci/linux/commit/587333d27097360f103c2eaa1bf836d1b4c5e5c5
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Olga-Kornievskaia/create-sysfs-files-for-changing-IP-address/20210602-061025
        git checkout 587333d27097360f103c2eaa1bf836d1b4c5e5c5
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=x86_64 

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


sparse warnings: (new ones prefixed by >>)
>> net/sunrpc/sysfs.c:118:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> net/sunrpc/sysfs.c:118:9: sparse:    char const [noderef] __rcu *
>> net/sunrpc/sysfs.c:118:9: sparse:    char const *

vim +118 net/sunrpc/sysfs.c

    84	
    85	static ssize_t rpc_sysfs_xprt_dstaddr_store(struct kobject *kobj,
    86						    struct kobj_attribute *attr,
    87						    const char *buf, size_t count)
    88	{
    89		struct rpc_xprt *xprt = rpc_sysfs_xprt_kobj_get_xprt(kobj);
    90		struct sockaddr *saddr;
    91		char *dst_addr;
    92		int port;
    93		struct xprt_addr *saved_addr;
    94	
    95		if (!xprt)
    96			return 0;
    97		if (!(xprt->xprt_class->ident == XPRT_TRANSPORT_TCP ||
    98		      xprt->xprt_class->ident == XPRT_TRANSPORT_RDMA)) {
    99			xprt_put(xprt);
   100			return -EOPNOTSUPP;
   101		}
   102	
   103		if (wait_on_bit_lock(&xprt->state, XPRT_LOCKED, TASK_KILLABLE)) {
   104			count = -EINTR;
   105			goto out_put;
   106		}
   107		saddr = (struct sockaddr *)&xprt->addr;
   108		port = rpc_get_port(saddr);
   109	
   110		dst_addr = kstrndup(buf, count - 1, GFP_KERNEL);
   111		if (!dst_addr)
   112			goto out_err;
   113		saved_addr = kzalloc(sizeof(*saved_addr), GFP_KERNEL);
   114		if (!saved_addr)
   115			goto out_err_free;
   116		saved_addr->addr =
   117			rcu_dereference_raw(xprt->address_strings[RPC_DISPLAY_ADDR]);
 > 118		rcu_assign_pointer(xprt->address_strings[RPC_DISPLAY_ADDR], dst_addr);
   119		call_rcu(&saved_addr->rcu, free_xprt_addr);
   120		xprt->addrlen = rpc_pton(xprt->xprt_net, buf, count - 1, saddr,
   121					 sizeof(*saddr));
   122		rpc_set_port(saddr, port);
   123	
   124		xprt_force_disconnect(xprt);
   125	out:
   126		xprt_release_write(xprt, NULL);
   127	out_put:
   128		xprt_put(xprt);
   129		return count;
   130	out_err_free:
   131		kfree(dst_addr);
   132	out_err:
   133		count = -ENOMEM;
   134		goto out;
   135	}
   136	

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux