Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19e36da6 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by David S. Miller
Browse files

s390/qeth: robustify qeth_get_ip_version()



Instead of assuming that skb->data points to the Ethernet header, use
the right helper and struct to access the Ethertype field.

Signed-off-by: default avatarJulian Wiedmann <jwi@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 00c163f1
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -847,14 +847,16 @@ static inline int qeth_get_micros(void)

static inline int qeth_get_ip_version(struct sk_buff *skb)
{
	__be16 *p = &((struct ethhdr *)skb->data)->h_proto;
	struct vlan_ethhdr *veth = vlan_eth_hdr(skb);
	__be16 prot = veth->h_vlan_proto;

	if (be16_to_cpu(*p) == ETH_P_8021Q)
		p += 2;
	switch (be16_to_cpu(*p)) {
	case ETH_P_IPV6:
	if (prot == htons(ETH_P_8021Q))
		prot = veth->h_vlan_encapsulated_proto;

	switch (prot) {
	case htons(ETH_P_IPV6):
		return 6;
	case ETH_P_IP:
	case htons(ETH_P_IP):
		return 4;
	default:
		return 0;