From: kernel test robot <lkp@intel.com>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Daniel Borkmann <daniel@iogearbox.net>
Subject: kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
Date: Sun, 22 May 2022 20:30:15 +0800 [thread overview]
Message-ID: <202205222029.xpW3PM1y-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: eaea45fc0e7b6ae439526b4a41d91230c8517336
commit: 782347b6bcad07ddb574422e01e22c92e05928c8 xdp: Add proper __rcu annotations to redirect map entries
date: 11 months ago
config: ia64-randconfig-s031-20220522 (https://download.01.org/0day-ci/archive/20220522/202205222029.xpW3PM1y-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 11.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.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=782347b6bcad07ddb574422e01e22c92e05928c8
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 782347b6bcad07ddb574422e01e22c92e05928c8
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=ia64 SHELL=/bin/bash kernel/bpf/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/bpf/devmap.c:561:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct bpf_dtab_netdev *dst @@ got struct bpf_dtab_netdev [noderef] __rcu * @@
kernel/bpf/devmap.c:561:29: sparse: expected struct bpf_dtab_netdev *dst
kernel/bpf/devmap.c:561:29: sparse: got struct bpf_dtab_netdev [noderef] __rcu *
kernel/bpf/devmap.c:657:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct bpf_dtab_netdev *dst @@ got struct bpf_dtab_netdev [noderef] __rcu * @@
kernel/bpf/devmap.c:657:29: sparse: expected struct bpf_dtab_netdev *dst
kernel/bpf/devmap.c:657:29: sparse: got struct bpf_dtab_netdev [noderef] __rcu *
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
>> kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression
vim +/__rcu +1030 kernel/bpf/devmap.c
990
991 static int dev_map_notification(struct notifier_block *notifier,
992 ulong event, void *ptr)
993 {
994 struct net_device *netdev = netdev_notifier_info_to_dev(ptr);
995 struct bpf_dtab *dtab;
996 int i, cpu;
997
998 switch (event) {
999 case NETDEV_REGISTER:
1000 if (!netdev->netdev_ops->ndo_xdp_xmit || netdev->xdp_bulkq)
1001 break;
1002
1003 /* will be freed in free_netdev() */
1004 netdev->xdp_bulkq = alloc_percpu(struct xdp_dev_bulk_queue);
1005 if (!netdev->xdp_bulkq)
1006 return NOTIFY_BAD;
1007
1008 for_each_possible_cpu(cpu)
1009 per_cpu_ptr(netdev->xdp_bulkq, cpu)->dev = netdev;
1010 break;
1011 case NETDEV_UNREGISTER:
1012 /* This rcu_read_lock/unlock pair is needed because
1013 * dev_map_list is an RCU list AND to ensure a delete
1014 * operation does not free a netdev_map entry while we
1015 * are comparing it against the netdev being unregistered.
1016 */
1017 rcu_read_lock();
1018 list_for_each_entry_rcu(dtab, &dev_map_list, list) {
1019 if (dtab->map.map_type == BPF_MAP_TYPE_DEVMAP_HASH) {
1020 dev_map_hash_remove_netdev(dtab, netdev);
1021 continue;
1022 }
1023
1024 for (i = 0; i < dtab->map.max_entries; i++) {
1025 struct bpf_dtab_netdev *dev, *odev;
1026
1027 dev = rcu_dereference(dtab->netdev_map[i]);
1028 if (!dev || netdev != dev->dev)
1029 continue;
> 1030 odev = unrcu_pointer(cmpxchg(&dtab->netdev_map[i], RCU_INITIALIZER(dev), NULL));
1031 if (dev == odev)
1032 call_rcu(&dev->rcu,
1033 __dev_map_entry_free);
1034 }
1035 }
1036 rcu_read_unlock();
1037 break;
1038 default:
1039 break;
1040 }
1041 return NOTIFY_OK;
1042 }
1043
--
0-DAY CI Kernel Test Service
https://01.org/lkp
next reply other threads:[~2022-05-22 12:30 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-22 12:30 kernel test robot [this message]
2022-05-23 10:30 ` kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression Toke Høiland-Jørgensen
2022-05-23 10:30 ` Toke Høiland-Jørgensen
2022-05-24 20:51 ` Paul E. McKenney
2022-05-24 20:51 ` Paul E. McKenney
2022-06-01 0:38 ` Luc Van Oostenryck
2022-06-01 0:38 ` Luc Van Oostenryck
2022-06-01 10:26 ` Toke Høiland-Jørgensen
2022-06-01 10:26 ` Toke Høiland-Jørgensen
2022-06-01 11:59 ` Luc Van Oostenryck
2022-06-01 12:00 ` Luc Van Oostenryck
2022-06-01 12:00 ` Luc Van Oostenryck
2022-06-05 16:07 ` [PATCH] ia64: fix sparse warnings with cmpxchg() & xchg() Luc Van Oostenryck
2022-06-05 16:07 ` Luc Van Oostenryck
2022-06-05 19:58 ` Paul E. McKenney
2022-06-05 19:58 ` Paul E. McKenney
2022-06-06 7:53 ` Toke Høiland-Jørgensen
2022-06-06 7:53 ` Toke Høiland-Jørgensen
-- strict thread matches above, loose matches on Subject: below --
2021-11-20 1:45 kernel/bpf/devmap.c:1030:40: sparse: sparse: cast removes address space '__rcu' of expression kernel test robot
2021-11-20 1:45 ` 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=202205222029.xpW3PM1y-lkp@intel.com \
--to=lkp@intel.com \
--cc=daniel@iogearbox.net \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=toke@redhat.com \
/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.