at 23.11-beta 31 lines 1.1 kB view raw
1Revert commit https://github.com/torvalds/linux/commit/a0ade8404c3bc2bf2631cb0f20d372eed22d9d96 2 3The change caused API regression by turning fixed size struct to 4flexible size struct. It was an unintentional change, broke `udp2raw`: 5 https://github.com/NixOS/nixpkgs/pull/252587#issuecomment-1744427473 6--- a/include/uapi/linux/if_packet.h 7+++ b/include/uapi/linux/if_packet.h 8@@ -18,11 +18,7 @@ struct sockaddr_ll { 9 unsigned short sll_hatype; 10 unsigned char sll_pkttype; 11 unsigned char sll_halen; 12- union { 13- unsigned char sll_addr[8]; 14- /* Actual length is in sll_halen. */ 15- __DECLARE_FLEX_ARRAY(unsigned char, sll_addr_flex); 16- }; 17+ unsigned char sll_addr[8]; 18 }; 19 20 /* Packet types */ 21--- a/net/packet/af_packet.c 22+++ b/net/packet/af_packet.c 23@@ -3607,7 +3607,7 @@ static int packet_getname(struct socket *sock, struct sockaddr *uaddr, 24 if (dev) { 25 sll->sll_hatype = dev->type; 26 sll->sll_halen = dev->addr_len; 27- memcpy(sll->sll_addr_flex, dev->dev_addr, dev->addr_len); 28+ memcpy(sll->sll_addr, dev->dev_addr, dev->addr_len); 29 } else { 30 sll->sll_hatype = 0; /* Bad: we have no ARPHRD_UNSPEC */ 31 sll->sll_halen = 0;