summaryrefslogtreecommitdiff
path: root/include/linux/udp.h
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2023-09-12 12:17:30 +0300
committerPaolo Abeni <pabeni@redhat.com>2023-09-14 17:16:36 +0300
commit882af43a0fc37e26d85fb0df0c9edd3bed928de4 (patch)
tree285d545b88e7edfaa8c03073cad7e8f4ae1cf572 /include/linux/udp.h
parent729549aa350c56a777bb342941ed4d69b6585769 (diff)
downloadlinux-882af43a0fc37e26d85fb0df0c9edd3bed928de4.tar.xz
udplite: fix various data-races
udp->pcflag, udp->pcslen and udp->pcrlen reads/writes are racy. Move udp->pcflag to udp->udp_flags for atomicity, and add READ_ONCE()/WRITE_ONCE() annotations for pcslen and pcrlen. Fixes: ba4e58eca8aa ("[NET]: Supporting UDP-Lite (RFC 3828) in Linux") Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'include/linux/udp.h')
-rw-r--r--include/linux/udp.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/include/linux/udp.h b/include/linux/udp.h
index 58156edec009..d04188714dca 100644
--- a/include/linux/udp.h
+++ b/include/linux/udp.h
@@ -40,6 +40,8 @@ enum {
UDP_FLAGS_ACCEPT_FRAGLIST,
UDP_FLAGS_ACCEPT_L4,
UDP_FLAGS_ENCAP_ENABLED, /* This socket enabled encap */
+ UDP_FLAGS_UDPLITE_SEND_CC, /* set via udplite setsockopt */
+ UDP_FLAGS_UDPLITE_RECV_CC, /* set via udplite setsockopt */
};
struct udp_sock {
@@ -54,10 +56,6 @@ struct udp_sock {
int pending; /* Any pending frames ? */
__u8 encap_type; /* Is this an Encapsulation socket? */
-/* indicator bits used by pcflag: */
-#define UDPLITE_SEND_CC 0x1 /* set via udplite setsockopt */
-#define UDPLITE_RECV_CC 0x2 /* set via udplite setsocktopt */
- __u8 pcflag; /* marks socket as UDP-Lite if > 0 */
/*
* Following member retains the information to create a UDP header
* when the socket is uncorked.