Message ID | 20230403200138.937569-2-john.fastabend@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | bpf sockmap fixes | expand |
Hi John, kernel test robot noticed the following build warnings: [auto build test WARNING on bpf/master] url: https://github.com/intel-lab-lkp/linux/commits/John-Fastabend/bpf-sockmap-pass-skb-ownership-through-read_skb/20230404-040431 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git master patch link: https://lore.kernel.org/r/20230403200138.937569-2-john.fastabend%40gmail.com patch subject: [PATCH bpf v3 01/12] bpf: sockmap, pass skb ownership through read_skb config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20230404/202304040949.mjn0pmKV-lkp@intel.com/config) compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/44ddc6a14f8903f3f97d347b5303f678a8e2c3ea git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review John-Fastabend/bpf-sockmap-pass-skb-ownership-through-read_skb/20230404-040431 git checkout 44ddc6a14f8903f3f97d347b5303f678a8e2c3ea # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash net/ipv4/ net/unix/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Link: https://lore.kernel.org/oe-kbuild-all/202304040949.mjn0pmKV-lkp@intel.com/ All warnings (new ones prefixed by >>): net/ipv4/udp.c: In function 'udp_read_skb': >> net/ipv4/udp.c:1816:18: warning: unused variable 'copied' [-Wunused-variable] 1816 | int err, copied; | ^~~~~~ -- net/unix/af_unix.c: In function 'unix_read_skb': >> net/unix/af_unix.c:2556:18: warning: unused variable 'copied' [-Wunused-variable] 2556 | int err, copied; | ^~~~~~ vim +/copied +1816 net/ipv4/udp.c 2276f58ac5890e Paolo Abeni 2017-05-16 1812 965b57b469a589 Cong Wang 2022-06-15 1813 int udp_read_skb(struct sock *sk, skb_read_actor_t recv_actor) d7f571188ecf25 Cong Wang 2021-03-30 1814 { d7f571188ecf25 Cong Wang 2021-03-30 1815 struct sk_buff *skb; 31f1fbcb346c93 Peilin Ye 2022-09-22 @1816 int err, copied; d7f571188ecf25 Cong Wang 2021-03-30 1817 31f1fbcb346c93 Peilin Ye 2022-09-22 1818 try_again: ec095263a96572 Oliver Hartkopp 2022-04-11 1819 skb = skb_recv_udp(sk, MSG_DONTWAIT, &err); d7f571188ecf25 Cong Wang 2021-03-30 1820 if (!skb) d7f571188ecf25 Cong Wang 2021-03-30 1821 return err; 099f896f498a2b Cong Wang 2021-11-14 1822 099f896f498a2b Cong Wang 2021-11-14 1823 if (udp_lib_checksum_complete(skb)) { 31f1fbcb346c93 Peilin Ye 2022-09-22 1824 int is_udplite = IS_UDPLITE(sk); 31f1fbcb346c93 Peilin Ye 2022-09-22 1825 struct net *net = sock_net(sk); 31f1fbcb346c93 Peilin Ye 2022-09-22 1826 31f1fbcb346c93 Peilin Ye 2022-09-22 1827 __UDP_INC_STATS(net, UDP_MIB_CSUMERRORS, is_udplite); 31f1fbcb346c93 Peilin Ye 2022-09-22 1828 __UDP_INC_STATS(net, UDP_MIB_INERRORS, is_udplite); 099f896f498a2b Cong Wang 2021-11-14 1829 atomic_inc(&sk->sk_drops); 099f896f498a2b Cong Wang 2021-11-14 1830 kfree_skb(skb); 31f1fbcb346c93 Peilin Ye 2022-09-22 1831 goto try_again; 099f896f498a2b Cong Wang 2021-11-14 1832 } 099f896f498a2b Cong Wang 2021-11-14 1833 db39dfdc1c3bd9 Peilin Ye 2022-09-20 1834 WARN_ON_ONCE(!skb_set_owner_sk_safe(skb, sk)); 44ddc6a14f8903 John Fastabend 2023-04-03 1835 return recv_actor(sk, skb); d7f571188ecf25 Cong Wang 2021-03-30 1836 } 965b57b469a589 Cong Wang 2022-06-15 1837 EXPORT_SYMBOL(udp_read_skb); d7f571188ecf25 Cong Wang 2021-03-30 1838
diff --git a/net/core/skmsg.c b/net/core/skmsg.c index f81883759d38..4a3dc8d27295 100644 --- a/net/core/skmsg.c +++ b/net/core/skmsg.c @@ -1183,8 +1183,6 @@ static int sk_psock_verdict_recv(struct sock *sk, struct sk_buff *skb) int ret = __SK_DROP; int len = skb->len; - skb_get(skb); - rcu_read_lock(); psock = sk_psock(sk); if (unlikely(!psock)) { diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 288693981b00..1be305e3d3c7 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1770,7 +1770,6 @@ int tcp_read_skb(struct sock *sk, skb_read_actor_t recv_actor) WARN_ON_ONCE(!skb_set_owner_sk_safe(skb, sk)); tcp_flags = TCP_SKB_CB(skb)->tcp_flags; used = recv_actor(sk, skb); - consume_skb(skb); if (used < 0) { if (!copied) copied = used; diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index c605d171eb2d..73cb561c3a4f 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1832,10 +1832,7 @@ int udp_read_skb(struct sock *sk, skb_read_actor_t recv_actor) } WARN_ON_ONCE(!skb_set_owner_sk_safe(skb, sk)); - copied = recv_actor(sk, skb); - kfree_skb(skb); - - return copied; + return recv_actor(sk, skb); } EXPORT_SYMBOL(udp_read_skb); diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 0b0f18ecce44..162ec061d438 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2561,10 +2561,7 @@ static int unix_read_skb(struct sock *sk, skb_read_actor_t recv_actor) if (!skb) return err; - copied = recv_actor(sk, skb); - kfree_skb(skb); - - return copied; + return recv_actor(sk, skb); } /*