From 37877d52a9d21b501a1b39902c3473a1c973625e Mon Sep 17 00:00:00 2001 From: David Carlier Date: Wed, 15 May 2024 22:52:44 +0100 Subject: [PATCH 1/2] fix ControlMessageOwned::UdpGroSegments UDP packets processing type. The kernel, since 5.0, process the segmentation offload with a signed int. close #2403. --- src/sys/socket/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index 3d1651bd3f..db2bad2da0 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -773,7 +773,7 @@ pub enum ControlMessageOwned { #[cfg(target_os = "linux")] #[cfg(feature = "net")] #[cfg_attr(docsrs, doc(cfg(feature = "net")))] - UdpGroSegments(u16), + UdpGroSegments(i32), /// SO_RXQ_OVFL indicates that an unsigned 32 bit value /// ancilliary msg (cmsg) should be attached to recieved @@ -949,7 +949,7 @@ impl ControlMessageOwned { #[cfg(target_os = "linux")] #[cfg(feature = "net")] (libc::SOL_UDP, libc::UDP_GRO) => { - let gso_size: u16 = unsafe { ptr::read_unaligned(p as *const _) }; + let gso_size: i32 = unsafe { ptr::read_unaligned(p as *const _) }; ControlMessageOwned::UdpGroSegments(gso_size) }, #[cfg(any(linux_android, target_os = "fuchsia"))] From 1c61c601a5df8558c3828ad0c4b4cd364cb51b91 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Wed, 15 May 2024 23:35:33 +0100 Subject: [PATCH 2/2] changelog --- changelog/2406.fixed.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/2406.fixed.md diff --git a/changelog/2406.fixed.md b/changelog/2406.fixed.md new file mode 100644 index 0000000000..41bc9c7789 --- /dev/null +++ b/changelog/2406.fixed.md @@ -0,0 +1 @@ +Fixed ControlMessageOwned::UdpGroSegments wrapped type from u16 to i32 to reflect the used kernel's one.