Showing error 1823

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/net/bnx2x_main.c
Line in file: 9644
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-11 08:47:26 UTC


Source:

 9614        }
 9615
 9616        mapping = pci_map_single(bp->pdev, skb->data,
 9617                                 skb_headlen(skb), PCI_DMA_TODEVICE);
 9618
 9619        tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
 9620        tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
 9621        nbd = skb_shinfo(skb)->nr_frags + ((pbd == NULL) ? 1 : 2);
 9622        tx_bd->nbd = cpu_to_le16(nbd);
 9623        tx_bd->nbytes = cpu_to_le16(skb_headlen(skb));
 9624
 9625        DP(NETIF_MSG_TX_QUEUED, "first bd @%p  addr (%x:%x)  nbd %d"
 9626           "  nbytes %d  flags %x  vlan %x\n",
 9627           tx_bd, tx_bd->addr_hi, tx_bd->addr_lo, le16_to_cpu(tx_bd->nbd),
 9628           le16_to_cpu(tx_bd->nbytes), tx_bd->bd_flags.as_bitfield,
 9629           le16_to_cpu(tx_bd->vlan));
 9630
 9631        if (xmit_type & XMIT_GSO) {
 9632
 9633                DP(NETIF_MSG_TX_QUEUED,
 9634                   "TSO packet len %d  hlen %d  total len %d  tso size %d\n",
 9635                   skb->len, hlen, skb_headlen(skb),
 9636                   skb_shinfo(skb)->gso_size);
 9637
 9638                tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_SW_LSO;
 9639
 9640                if (unlikely(skb_headlen(skb) > hlen))
 9641                        bd_prod = bnx2x_tx_split(bp, fp, &tx_bd, hlen,
 9642                                                 bd_prod, ++nbd);
 9643
 9644                pbd->lso_mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
 9645                pbd->tcp_send_seq = swab32(tcp_hdr(skb)->seq);
 9646                pbd->tcp_flags = pbd_tcp_flags(skb);
 9647
 9648                if (xmit_type & XMIT_GSO_V4) {
 9649                        pbd->ip_id = swab16(ip_hdr(skb)->id);
 9650                        pbd->tcp_pseudo_csum =
 9651                                swab16(~csum_tcpudp_magic(ip_hdr(skb)->saddr,
 9652                                                          ip_hdr(skb)->daddr,
 9653                                                          0, IPPROTO_TCP, 0));
 9654
Show full sources