bpf: tcp: Use sock_gen_put instead of sock_put in bpf_iter_tcp
Subsystems (4)
Martin KaFai Lau
reviewerPATCH 1/1 bpf: tcp: Use sock_gen_put instead of sock_put in bpf_iter_tcp
From: Martin KaFai Lau <[email protected]>
While reviewing the udp-iter batching patches, notice the bpf_iter_tcp calling sock_put() is incorrect. It should call sock_gen_put instead because bpf_iter_tcp is iterating the ehash table which has the req sk and tw sk. This patch replaces all sock_put with sock_gen_put in the bpf_iter_tcp codepath.
--- net/ipv4/tcp_ipv4.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/ipv4/tcp_ipv4.c +2 -2
@@ -2780,7 +2780,7 @@ static int tcp_prog_seq_show(struct bpf_prog *prog, struct bpf_iter_meta *meta,static void bpf_iter_tcp_put_batch (struct bpf_tcp_iter_state *iter) {while (iter->cur_sk < iter->end_sk) -sock_put (iter->batch[iter->cur_sk++]); +sock_gen_put (iter->batch[iter->cur_sk++]); } static int bpf_iter_tcp_realloc_batch(struct bpf_tcp_iter_state *iter,
@@ -2941,7 +2941,7 @@ static void *bpf_iter_tcp_seq_next(struct seq_file *seq, void *v, loff_t *pos)* st->bucket. See tcp_seek_last_pos(). */ st->offset++; -sock_put (iter->batch[iter->cur_sk++]); +sock_gen_put (iter->batch[iter->cur_sk++]); }if (iter->cur_sk < iter->end_sk)
Signature · 1 line
2.34.1
Daniel Borkmann
maintainerQuoted 10 lines · Martin KaFai Lau
From: Martin KaFai Lau <[email protected]>
While reviewing the udp-iter batching patches, notice the
bpf_iter_tcpcallingsock_put()is incorrect. It should callsock_gen_putinstead becausebpf_iter_tcpis iterating the ehash table which has the req sk and tw sk. This patch replaces allsock_putwithsock_gen_putin thebpf_iter_tcpcodepath.Fixes 04c7820b776f ("bpf: tcp: Bpf iter batching and lock_sock")Signed-off-by Martin KaFai Lau <[email protected]>
Looks like patchbot is on vacation :( The below looks good to me, so I applied it to bpf, thanks!
Quoted 26 lines
net/ipv4/tcp_ipv4.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)net/ipv4/tcp_ipv4.c +2
-2@@ -2780,7 +2780,7 @@ static int tcp_prog_seq_show(struct bpf_prog *prog, struct bpf_iter_meta *meta,static void bpf_iter_tcp_put_batch (struct bpf_tcp_iter_state *iter) {while (iter->cur_sk < iter->end_sk) -sock_put (iter->batch[iter->cur_sk++]); +sock_gen_put (iter->batch[iter->cur_sk++]); } static int bpf_iter_tcp_realloc_batch(struct bpf_tcp_iter_state *iter,@@ -2941,7 +2941,7 @@ static void *bpf_iter_tcp_seq_next(struct seq_file *seq, void *v, loff_t *pos)* st->bucket. See tcp_seek_last_pos(). */ st->offset++; -sock_put (iter->batch[iter->cur_sk++]); +sock_gen_put (iter->batch[iter->cur_sk++]); }if (iter->cur_sk < iter->end_sk)