diff options
Diffstat (limited to 'drivers/net/tun.c')
| -rw-r--r-- | drivers/net/tun.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 3c9985f29950..5ce580f413b9 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1496,11 +1496,13 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,  	switch (tun->flags & TUN_TYPE_MASK) {  	case IFF_TUN:  		if (tun->flags & IFF_NO_PI) { -			switch (skb->data[0] & 0xf0) { -			case 0x40: +			u8 ip_version = skb->len ? (skb->data[0] >> 4) : 0; + +			switch (ip_version) { +			case 4:  				pi.proto = htons(ETH_P_IP);  				break; -			case 0x60: +			case 6:  				pi.proto = htons(ETH_P_IPV6);  				break;  			default: | 
