Showing error 1742

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/net/tun.c
Line in file: 497
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

 467                                          gso.csum_offset)) {
 468                        tun->dev->stats.rx_frame_errors++;
 469                        kfree_skb(skb);
 470                        return -EINVAL;
 471                }
 472        } else if (tun->flags & TUN_NOCHECKSUM)
 473                skb->ip_summed = CHECKSUM_UNNECESSARY;
 474
 475        switch (tun->flags & TUN_TYPE_MASK) {
 476        case TUN_TUN_DEV:
 477                if (tun->flags & TUN_NO_PI) {
 478                        switch (skb->data[0] & 0xf0) {
 479                        case 0x40:
 480                                pi.proto = htons(ETH_P_IP);
 481                                break;
 482                        case 0x60:
 483                                pi.proto = htons(ETH_P_IPV6);
 484                                break;
 485                        default:
 486                                tun->dev->stats.rx_dropped++;
 487                                kfree_skb(skb);
 488                                return -EINVAL;
 489                        }
 490                }
 491
 492                skb_reset_mac_header(skb);
 493                skb->protocol = pi.proto;
 494                skb->dev = tun->dev;
 495                break;
 496        case TUN_TAP_DEV:
 497                skb->protocol = eth_type_trans(skb, tun->dev);
 498                break;
 499        };
 500
 501        if (gso.gso_type != VIRTIO_NET_HDR_GSO_NONE) {
 502                pr_debug("GSO!\n");
 503                switch (gso.gso_type & ~VIRTIO_NET_HDR_GSO_ECN) {
 504                case VIRTIO_NET_HDR_GSO_TCPV4:
 505                        skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4;
 506                        break;
 507                case VIRTIO_NET_HDR_GSO_TCPV6:
Show full sources