]> git.baikalelectronics.ru Git - kernel.git/commit
s390/qeth: check dst entry before use
authorJulian Wiedmann <jwi@linux.ibm.com>
Wed, 5 Jun 2019 11:48:49 +0000 (13:48 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 5 Jun 2019 18:48:57 +0000 (11:48 -0700)
commit2a6055be1af6b42aa4e00b00ef1c65c99bd1f456
tree5ae38c5aec257f6b5430f167e8a5d8b22cad82b4
parentf346cfeea163ba58214a4e3251b4185bdf6cc434
s390/qeth: check dst entry before use

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: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_l3_main.c