diff options
author | Mario Rodas <marsam@users.noreply.github.com> | 2023-10-04 06:38:30 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-04 06:38:30 -0500 |
commit | b7750daf119c1a9aab35f7d2a74992a8cb94fc5c (patch) | |
tree | 27542b76e0c6a515d8997ea28d16209d3190d266 /pkgs | |
parent | b34e1bd3c34887810695ff954166e85a7974ecdb (diff) | |
parent | fad90186f922aa862ef5929e05dd24d50d49ec1f (diff) | |
download | nixpkgs-b7750daf119c1a9aab35f7d2a74992a8cb94fc5c.tar nixpkgs-b7750daf119c1a9aab35f7d2a74992a8cb94fc5c.tar.gz nixpkgs-b7750daf119c1a9aab35f7d2a74992a8cb94fc5c.tar.bz2 nixpkgs-b7750daf119c1a9aab35f7d2a74992a8cb94fc5c.tar.lz nixpkgs-b7750daf119c1a9aab35f7d2a74992a8cb94fc5c.tar.xz nixpkgs-b7750daf119c1a9aab35f7d2a74992a8cb94fc5c.tar.zst nixpkgs-b7750daf119c1a9aab35f7d2a74992a8cb94fc5c.zip |
Merge pull request #258761 from trofi/linuxHeaders-revert-sockaddr_ll-flex
linuxHeaders: revert accidental `struct sockaddr_ll` size change
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/os-specific/linux/kernel-headers/default.nix | 5 | ||||
-rw-r--r-- | pkgs/os-specific/linux/kernel-headers/revert-af_packet-flex.patch | 31 |
2 files changed, 35 insertions, 1 deletions
diff --git a/pkgs/os-specific/linux/kernel-headers/default.nix b/pkgs/os-specific/linux/kernel-headers/default.nix index ff40e585b1d..e0a3c4319b8 100644 --- a/pkgs/os-specific/linux/kernel-headers/default.nix +++ b/pkgs/os-specific/linux/kernel-headers/default.nix @@ -119,7 +119,10 @@ in { hash = "sha256-eldLvCCALqdrUsp/rwcmf3IEXoYbGJFcUnKpjCer+IQ="; }; patches = [ - ./no-relocs.patch # for building x86 kernel headers on non-ELF platforms + ./no-relocs.patch # for building x86 kernel headers on non-ELF platforms + + # Fix regression turning `struct sockaddr_ll` flexible size. + ./revert-af_packet-flex.patch ]; }; } diff --git a/pkgs/os-specific/linux/kernel-headers/revert-af_packet-flex.patch b/pkgs/os-specific/linux/kernel-headers/revert-af_packet-flex.patch new file mode 100644 index 00000000000..ed6c8861d2f --- /dev/null +++ b/pkgs/os-specific/linux/kernel-headers/revert-af_packet-flex.patch @@ -0,0 +1,31 @@ +Revert commit https://github.com/torvalds/linux/commit/a0ade8404c3bc2bf2631cb0f20d372eed22d9d96 + +The change caused API regression by turning fixed size struct to +flexible size struct. It was an unintentional change, broke `udp2raw`: + https://github.com/NixOS/nixpkgs/pull/252587#issuecomment-1744427473 +--- a/include/uapi/linux/if_packet.h ++++ b/include/uapi/linux/if_packet.h +@@ -18,11 +18,7 @@ struct sockaddr_ll { + unsigned short sll_hatype; + unsigned char sll_pkttype; + unsigned char sll_halen; +- union { +- unsigned char sll_addr[8]; +- /* Actual length is in sll_halen. */ +- __DECLARE_FLEX_ARRAY(unsigned char, sll_addr_flex); +- }; ++ unsigned char sll_addr[8]; + }; + + /* Packet types */ +--- a/net/packet/af_packet.c ++++ b/net/packet/af_packet.c +@@ -3607,7 +3607,7 @@ static int packet_getname(struct socket *sock, struct sockaddr *uaddr, + if (dev) { + sll->sll_hatype = dev->type; + sll->sll_halen = dev->addr_len; +- memcpy(sll->sll_addr_flex, dev->dev_addr, dev->addr_len); ++ memcpy(sll->sll_addr, dev->dev_addr, dev->addr_len); + } else { + sll->sll_hatype = 0; /* Bad: we have no ARPHRD_UNSPEC */ + sll->sll_halen = 0; |