Message ID | AM6PR03MB58487A9704FD150CF76F542899272@AM6PR03MB5848.eurprd03.prod.outlook.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 76839e2f1fded42382ac7bad215cd9e9c293e97d |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v3] net/packet: Add getsockopt support for PACKET_COPY_THRESH | expand |
Juntong Deng wrote: > Currently getsockopt does not support PACKET_COPY_THRESH, > and we are unable to get the value of PACKET_COPY_THRESH > socket option through getsockopt. > > This patch adds getsockopt support for PACKET_COPY_THRESH. > > In addition, this patch converts access to copy_thresh to > READ_ONCE/WRITE_ONCE. > > Signed-off-by: Juntong Deng <juntong.deng@outlook.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Thanks for addressing the READ_ONCE/WRITE_ONCE.
On Fri, Mar 8, 2024 at 9:08 PM Juntong Deng <juntong.deng@outlook.com> wrote: > > Currently getsockopt does not support PACKET_COPY_THRESH, > and we are unable to get the value of PACKET_COPY_THRESH > socket option through getsockopt. > > This patch adds getsockopt support for PACKET_COPY_THRESH. > > In addition, this patch converts access to copy_thresh to > READ_ONCE/WRITE_ONCE. > > Signed-off-by: Juntong Deng <juntong.deng@outlook.com> Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
Hello: This patch was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Fri, 8 Mar 2024 13:06:36 +0000 you wrote: > Currently getsockopt does not support PACKET_COPY_THRESH, > and we are unable to get the value of PACKET_COPY_THRESH > socket option through getsockopt. > > This patch adds getsockopt support for PACKET_COPY_THRESH. > > In addition, this patch converts access to copy_thresh to > READ_ONCE/WRITE_ONCE. > > [...] Here is the summary with links: - [net-next,v3] net/packet: Add getsockopt support for PACKET_COPY_THRESH https://git.kernel.org/netdev/net-next/c/76839e2f1fde You are awesome, thank you!
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 0db31ca4982d..61270826b9ac 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2318,7 +2318,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, } if (po->tp_version <= TPACKET_V2) { if (macoff + snaplen > po->rx_ring.frame_size) { - if (po->copy_thresh && + if (READ_ONCE(po->copy_thresh) && atomic_read(&sk->sk_rmem_alloc) < sk->sk_rcvbuf) { if (skb_shared(skb)) { copy_skb = skb_clone(skb, GFP_ATOMIC); @@ -3836,7 +3836,7 @@ packet_setsockopt(struct socket *sock, int level, int optname, sockptr_t optval, if (copy_from_sockptr(&val, optval, sizeof(val))) return -EFAULT; - pkt_sk(sk)->copy_thresh = val; + WRITE_ONCE(pkt_sk(sk)->copy_thresh, val); return 0; } case PACKET_VERSION: @@ -4090,6 +4090,9 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, case PACKET_VNET_HDR_SZ: val = READ_ONCE(po->vnet_hdr_sz); break; + case PACKET_COPY_THRESH: + val = READ_ONCE(pkt_sk(sk)->copy_thresh); + break; case PACKET_VERSION: val = po->tp_version; break; diff --git a/net/packet/diag.c b/net/packet/diag.c index b3bd2f6c2bf7..47f69f3dbf73 100644 --- a/net/packet/diag.c +++ b/net/packet/diag.c @@ -17,7 +17,7 @@ static int pdiag_put_info(const struct packet_sock *po, struct sk_buff *nlskb) pinfo.pdi_index = po->ifindex; pinfo.pdi_version = po->tp_version; pinfo.pdi_reserve = po->tp_reserve; - pinfo.pdi_copy_thresh = po->copy_thresh; + pinfo.pdi_copy_thresh = READ_ONCE(po->copy_thresh); pinfo.pdi_tstamp = READ_ONCE(po->tp_tstamp); pinfo.pdi_flags = 0;
Currently getsockopt does not support PACKET_COPY_THRESH, and we are unable to get the value of PACKET_COPY_THRESH socket option through getsockopt. This patch adds getsockopt support for PACKET_COPY_THRESH. In addition, this patch converts access to copy_thresh to READ_ONCE/WRITE_ONCE. Signed-off-by: Juntong Deng <juntong.deng@outlook.com> --- V2 -> V3: Fix pdiag_put_info(). V1 -> V2: Use READ_ONCE/WRITE_ONCE. net/packet/af_packet.c | 7 +++++-- net/packet/diag.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-)