1. 04 Sep, 2014 2 commits
    • Jesper Dangaard Brouer's avatar
      qdisc: validate frames going through the direct_xmit path · 1f59533f
      Jesper Dangaard Brouer authored
      In commit 50cbe9ab ("net: Validate xmit SKBs right when we
      pull them out of the qdisc") the validation code was moved out of
      dev_hard_start_xmit and into dequeue_skb.
      
      However this overlooked the fact that we do not always enqueue
      the skb onto a qdisc. First situation is if qdisc have flag
      TCQ_F_CAN_BYPASS and qdisc is empty.  Second situation is if
      there is no qdisc on the device, which is a common case for
      software devices.
      
      Originally spotted and inital patch by Alexander Duyck.
      As a result Alex was seeing issues trying to connect to a
      vhost_net interface after commit 50cbe9ab was applied.
      
      Added a call to validate_xmit_skb() in __dev_xmit_skb(), in the
      code path for qdiscs with TCQ_F_CAN_BYPASS flag, and in
      __dev_queue_xmit() when no qdisc.
      
      Also handle the error situation where dev_hard_start_xmit() could
      return a skb list, and does not return dev_xmit_complete(rc) and
      falls through to the kfree_skb(), in that situation it should
      call kfree_skb_list().
      
      Fixes:  50cbe9ab ("net: Validate xmit SKBs right when we pull them out of the qdisc")
      Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f59533f
    • Jesper Dangaard Brouer's avatar
      qdisc: exit case fixes for skb list handling in qdisc layer · 3f3c7eec
      Jesper Dangaard Brouer authored
      More minor fixes to merge commit 53fda7f7 (Merge branch 'xmit_list')
      that allows us to work with a list of SKBs.
      
      Fixing exit cases in qdisc_reset() and qdisc_destroy(), where a
      leftover requeued SKB (qdisc->gso_skb) can have the potential of
      being a skb list, thus use kfree_skb_list().
      
      This is a followup to commit 10770bc2 ("qdisc: adjustments for
      API allowing skb list xmits").
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3f3c7eec
  2. 02 Sep, 2014 38 commits