Thread (4 messages) 4 messages, 3 authors, 2021-01-08

Re: [PATCH] neighbour: Disregard DEAD dst in neigh_update

From: Greg KH <gregkh@linuxfoundation.org>
Date: 2021-01-08 07:35:17
Also in: lkml, netdev

On Thu, Jan 07, 2021 at 09:36:37PM -0500, Your Real Name wrote:
On Tue, Jan 05, 2021 at 04:05:21PM -0800, David Miller wrote: 
quoted

From: Tong Zhu <redacted>
Date: Wed, 30 Dec 2020 17:54:23 -0500
quoted
In 4.x kernel a dst in DST_OBSOLETE_DEAD state is associated
with loopback net_device and leads to loopback neighbour. It
leads to an ethernet header with all zero addresses.

A very troubling case is working with mac80211 and ath9k.
A packet with all zero source MAC address to mac80211 will
eventually fail ieee80211_find_sta_by_ifaddr in ath9k (xmit.c).
As result, ath9k flushes tx queue (ath_tx_complete_aggr) without
updating baw (block ack window), damages baw logic and disables
transmission.

Signed-off-by: Tong Zhu <redacted>
Please repost with an appropriate Fixes: tag.

Thanks.
I had a second thought on this. This fix should go mainline too. This is a 
case we are sending out queued packets when arp reply from the neighbour 
comes in. With 5.x kernel, a dst in DST_OBSOLETE_DEAD state leads to dropping
of this packet. It is not as bad as with 4.x kernel that may end up with an
all-zero mac address packet out to ethernet or choking up ath9k when using 
block ack. Dropping the packet is still wrong. I’ll repost as a fix to
mainline and target backport to 4.x LTS releases.
That's how kernel development works, please read
    https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how stable kernels are allowed to accept patches.

good luck!

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help