All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: net/xdp/xskmap.c:176 xsk_map_update_elem() warn: passing a valid pointer to 'PTR_ERR'
Date: Fri, 26 Nov 2021 22:06:46 +0800	[thread overview]
Message-ID: <202111262153.8OyYbLF7-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Zhu Yanjun <zyjzyj2000@gmail.com>
CC: Daniel Borkmann <daniel@iogearbox.net>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a4849f6000e29235a2707f22e39da6b897bb9543
commit: bb1b25cab04324d0749f7ae22653aff58157bf83 xdp: Remove the functions xsk_map_inc and xsk_map_put
date:   12 months ago
:::::: branch date: 12 hours ago
:::::: commit date: 12 months ago
config: mips-randconfig-m031-20211123 (https://download.01.org/0day-ci/archive/20211126/202111262153.8OyYbLF7-lkp(a)intel.com/config)
compiler: mips-linux-gcc (GCC) 11.2.0

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

smatch warnings:
net/xdp/xskmap.c:176 xsk_map_update_elem() warn: passing a valid pointer to 'PTR_ERR'

vim +/PTR_ERR +176 net/xdp/xskmap.c

fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  145  
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  146  static int xsk_map_update_elem(struct bpf_map *map, void *key, void *value,
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  147  			       u64 map_flags)
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  148  {
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  149  	struct xsk_map *m = container_of(map, struct xsk_map, map);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  150  	struct xdp_sock *xs, *old_xs, **map_entry;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  151  	u32 i = *(u32 *)key, fd = *(u32 *)value;
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  152  	struct xsk_map_node *node;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  153  	struct socket *sock;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  154  	int err;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  155  
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  156  	if (unlikely(map_flags > BPF_EXIST))
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  157  		return -EINVAL;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  158  	if (unlikely(i >= m->map.max_entries))
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  159  		return -E2BIG;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  160  
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  161  	sock = sockfd_lookup(fd, &err);
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  162  	if (!sock)
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  163  		return err;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  164  
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  165  	if (sock->sk->sk_family != PF_XDP) {
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  166  		sockfd_put(sock);
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  167  		return -EOPNOTSUPP;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  168  	}
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  169  
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  170  	xs = (struct xdp_sock *)sock->sk;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  171  
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  172  	map_entry = &m->xsk_map[i];
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  173  	node = xsk_map_node_alloc(m, map_entry);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  174  	if (IS_ERR(node)) {
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  175  		sockfd_put(sock);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15 @176  		return PTR_ERR(node);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  177  	}
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  178  
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  179  	spin_lock_bh(&m->lock);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  180  	old_xs = READ_ONCE(*map_entry);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  181  	if (old_xs == xs) {
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  182  		err = 0;
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  183  		goto out;
36cc34358caf63 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  184  	} else if (old_xs && map_flags == BPF_NOEXIST) {
36cc34358caf63 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  185  		err = -EEXIST;
36cc34358caf63 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  186  		goto out;
36cc34358caf63 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  187  	} else if (!old_xs && map_flags == BPF_EXIST) {
36cc34358caf63 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  188  		err = -ENOENT;
36cc34358caf63 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  189  		goto out;
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  190  	}
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  191  	xsk_map_sock_add(xs, node);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  192  	WRITE_ONCE(*map_entry, xs);
cee271678d0e31 kernel/bpf/xskmap.c Björn Töpel 2018-10-08  193  	if (old_xs)
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  194  		xsk_map_sock_delete(old_xs, map_entry);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  195  	spin_unlock_bh(&m->lock);
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  196  	sockfd_put(sock);
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  197  	return 0;
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  198  
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  199  out:
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  200  	spin_unlock_bh(&m->lock);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  201  	sockfd_put(sock);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  202  	xsk_map_node_free(node);
0402acd683c678 kernel/bpf/xskmap.c Björn Töpel 2019-08-15  203  	return err;
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  204  }
fbfc504a24f53f kernel/bpf/xskmap.c Björn Töpel 2018-05-02  205  

:::::: The code at line 176 was first introduced by commit
:::::: 0402acd683c678874df6bdbc23530ca07ea19353 xsk: remove AF_XDP socket from map when the socket is released

:::::: TO: Björn Töpel <bjorn.topel@intel.com>
:::::: CC: Daniel Borkmann <daniel@iogearbox.net>

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

             reply	other threads:[~2021-11-26 14:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-26 14:06 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-10-09 11:31 net/xdp/xskmap.c:176 xsk_map_update_elem() warn: passing a valid pointer to 'PTR_ERR' kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202111262153.8OyYbLF7-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.