]> www.infradead.org Git - users/jedix/linux-maple.git/commit
qed: Fix interrupt flags on Rx LL2
authorRam Amrani <Ram.Amrani@cavium.com>
Tue, 14 Mar 2017 13:26:02 +0000 (15:26 +0200)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 26 Jul 2017 03:46:43 +0000 (20:46 -0700)
commita43f776e812e6e6fb0fb6181ecd45d1a41d5dbdf
tree229dc9d34d5e7747e6f908b8d6e5036f56fb1e87
parent2106ae6de47b8d980f67427f987961322a77e94a
qed: Fix interrupt flags on Rx LL2

Orabug: 2593305326439680

Before iterating over the the LL2 Rx ring, the ring's
spinlock is taken via spin_lock_irqsave().
The actual processing of the packet [including handling
by the protocol driver] is done without said lock,
so qed releases the spinlock and re-claims it afterwards.

Problem is that the final spin_lock_irqrestore() at the end
of the iteration uses the original flags saved from the
initial irqsave() instead of the flags from the most recent
irqsave(). So it's possible that the interrupt status would
be incorrect at the end of the processing.

Fixes: 0a7fb11c23c0 ("qed: Add Light L2 support");
CC: Ram Amrani <Ram.Amrani@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/qlogic/qed/qed_ll2.c