Ignore:
Timestamp:
Apr 16, 2017, 3:07:01 PM (2 months ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-3.18/net/packet/af_packet.c

    r31110 r31869  
    241241{
    242242        struct net_device *dev = skb->dev;
    243         netdev_features_t features;
     243        struct sk_buff *orig_skb = skb;
    244244        struct netdev_queue *txq;
    245245        int ret = NETDEV_TX_BUSY;
     
    249249                goto drop;
    250250
    251         features = netif_skb_features(skb);
    252         if (skb_needs_linearize(skb, features) &&
    253             __skb_linearize(skb))
     251        skb = validate_xmit_skb_list(skb, dev);
     252        if (skb != orig_skb)
    254253                goto drop;
    255254
     
    271270drop:
    272271        atomic_long_inc(&dev->tx_dropped);
    273         kfree_skb(skb);
     272        kfree_skb_list(skb);
    274273        return NET_XMIT_DROP;
    275274}
     
    27422741{
    27432742        struct sock *sk = sock->sk;
    2744         char name[15];
     2743        char name[sizeof(uaddr->sa_data) + 1];
    27452744
    27462745        /*
     
    27502749        if (addr_len != sizeof(struct sockaddr))
    27512750                return -EINVAL;
    2752         strlcpy(name, uaddr->sa_data, sizeof(name));
     2751        /* uaddr->sa_data comes from the userspace, it's not guaranteed to be
     2752         * zero-terminated.
     2753         */
     2754        memcpy(name, uaddr->sa_data, sizeof(uaddr->sa_data));
     2755        name[sizeof(uaddr->sa_data)] = 0;
    27532756
    27542757        return packet_do_bind(sk, name, 0, pkt_sk(sk)->num);
     
    35763579                                if (msg == NETDEV_UNREGISTER) {
    35773580                                        packet_cached_dev_reset(po);
     3581                                        fanout_release(sk);
    35783582                                        po->ifindex = -1;
    35793583                                        if (po->prot_hook.dev)
     
    38283832                        goto out;
    38293833                if (po->tp_version >= TPACKET_V3 &&
    3830                     (int)(req->tp_block_size -
    3831                           BLK_PLUS_PRIV(req_u->req3.tp_sizeof_priv)) <= 0)
     3834                    req->tp_block_size <=
     3835                          BLK_PLUS_PRIV((u64)req_u->req3.tp_sizeof_priv))
    38323836                        goto out;
    38333837                if (unlikely(req->tp_frame_size < po->tp_hdrlen +
Note: See TracChangeset for help on using the changeset viewer.