diff options
Diffstat (limited to 'recipes-bsp/u-boot/u-boot-2016.09.01/fix_net.patch')
-rw-r--r-- | recipes-bsp/u-boot/u-boot-2016.09.01/fix_net.patch | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot/u-boot-2016.09.01/fix_net.patch b/recipes-bsp/u-boot/u-boot-2016.09.01/fix_net.patch new file mode 100644 index 0000000..3d9a986 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2016.09.01/fix_net.patch @@ -0,0 +1,136 @@ +From 9436a1e4dfcc7d6f0cbf9511f84c8164e49f23c6 Mon Sep 17 00:00:00 2001 +From: Serhii Voloshynov <serhii.voloshynov@globallogic.com> +Date: Mon, 10 Feb 2020 13:10:58 +0200 +Subject: [PATCH] based on https://patchwork.ozlabs.org/patch/792238/ Core + reason is usage of structures for network headers without packed attribute. + +--- + include/net.h | 14 +++++++------- + net/bootp.h | 2 +- + net/dns.h | 2 +- + net/nfs.h | 2 +- + net/sntp.h | 2 +- + 5 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/include/net.h b/include/net.h +index 06320c6..60baf6b 100644 +--- a/include/net.h ++++ b/include/net.h +@@ -296,7 +296,7 @@ struct ethernet_hdr { + u8 et_dest[6]; /* Destination node */ + u8 et_src[6]; /* Source node */ + u16 et_protlen; /* Protocol or length */ +-}; ++} __attribute__((packed)); + + /* Ethernet header size */ + #define ETHER_HDR_SIZE (sizeof(struct ethernet_hdr)) +@@ -314,7 +314,7 @@ struct e802_hdr { + u8 et_snap2; + u8 et_snap3; + u16 et_prot; /* 802 protocol */ +-}; ++} __attribute__((packed)); + + /* 802 + SNAP + ethernet header size */ + #define E802_HDR_SIZE (sizeof(struct e802_hdr)) +@@ -328,7 +328,7 @@ struct vlan_ethernet_hdr { + u16 vet_vlan_type; /* PROT_VLAN */ + u16 vet_tag; /* TAG of VLAN */ + u16 vet_type; /* protocol type */ +-}; ++} __attribute__((packed)); + + /* VLAN Ethernet header size */ + #define VLAN_ETHER_HDR_SIZE (sizeof(struct vlan_ethernet_hdr)) +@@ -357,7 +357,7 @@ struct ip_hdr { + u16 ip_sum; /* checksum */ + struct in_addr ip_src; /* Source IP address */ + struct in_addr ip_dst; /* Destination IP address */ +-}; ++} __attribute__((packed)); + + #define IP_OFFS 0x1fff /* ip offset *= 8 */ + #define IP_FLAGS 0xe000 /* first 3 bits */ +@@ -385,7 +385,7 @@ struct ip_udp_hdr { + u16 udp_dst; /* UDP destination port */ + u16 udp_len; /* Length of UDP packet */ + u16 udp_xsum; /* Checksum */ +-}; ++} __attribute__((packed)); + + #define IP_UDP_HDR_SIZE (sizeof(struct ip_udp_hdr)) + #define UDP_HDR_SIZE (IP_UDP_HDR_SIZE - IP_HDR_SIZE) +@@ -424,7 +424,7 @@ struct arp_hdr { + u8 ar_tha[]; /* Target hardware address */ + u8 ar_tpa[]; /* Target protocol address */ + #endif /* 0 */ +-}; ++} __attribute__((packed)); + + #define ARP_HDR_SIZE (8+20) /* Size assuming ethernet */ + +@@ -459,7 +459,7 @@ struct icmp_hdr { + } frag; + u8 data[0]; + } un; +-}; ++} __attribute__((packed)); + + #define ICMP_HDR_SIZE (sizeof(struct icmp_hdr)) + #define IP_ICMP_HDR_SIZE (IP_HDR_SIZE + ICMP_HDR_SIZE) +diff --git a/net/bootp.h b/net/bootp.h +index fcb0a64..567340e 100644 +--- a/net/bootp.h ++++ b/net/bootp.h +@@ -49,7 +49,7 @@ struct bootp_hdr { + char bp_sname[64]; /* Server host name */ + char bp_file[128]; /* Boot file name */ + char bp_vend[OPT_FIELD_SIZE]; /* Vendor information */ +-}; ++} __attribute__((packed)); + + #define BOOTP_HDR_SIZE sizeof(struct bootp_hdr) + +diff --git a/net/dns.h b/net/dns.h +index c4e96af..c55a5c1 100644 +--- a/net/dns.h ++++ b/net/dns.h +@@ -29,7 +29,7 @@ struct header { + uint16_t nauth; /* Authority PRs */ + uint16_t nother; /* Other PRs */ + unsigned char data[1]; /* Data, variable length */ +-}; ++} __attribute__((packed)); + + void dns_start(void); /* Begin DNS */ + +diff --git a/net/nfs.h b/net/nfs.h +index 45da246..70a1a6d 100644 +--- a/net/nfs.h ++++ b/net/nfs.h +@@ -79,7 +79,7 @@ struct rpc_t { + uint32_t data[NFS_READ_SIZE]; + } reply; + } u; +-}; ++} __attribute__((packed)); + void nfs_start(void); /* Begin NFS */ + + +diff --git a/net/sntp.h b/net/sntp.h +index 6a9c6bb..c38bcee 100644 +--- a/net/sntp.h ++++ b/net/sntp.h +@@ -51,7 +51,7 @@ struct sntp_pkt_t { + unsigned long long originate_timestamp; + unsigned long long receive_timestamp; + unsigned long long transmit_timestamp; +-}; ++} __attribute__((packed)); + + void sntp_start(void); /* Begin SNTP */ + +-- +2.7.4 + |