• Julian Wiedmann's avatar
    s390/qeth: check dst entry before use · 0cd6783d
    Julian Wiedmann authored
    While qeth_l3 uses netif_keep_dst() to hold onto the dst, a skb's dst
    may still have been obsoleted (via dst_dev_put()) by the time that we
    end up using it. The dst then points to the loopback interface, which
    means the neighbour lookup in qeth_l3_get_cast_type() determines a bogus
    cast type of RTN_BROADCAST.
    For IQD interfaces this causes us to place such skbs on the wrong
    HW queue, resulting in TX errors.
    
    Fix-up the various call sites to first validate the dst entry with
    dst_check(), and fall back accordingly.
    Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0cd6783d
qeth_l3_main.c 68.3 KB