diff options
author | Tejun Heo <tj@kernel.org> | 2012-12-21 17:57:10 -0800 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-02-09 11:34:19 -0800 |
commit | 23663c873154f01220ef679558e1ca110c4c4ca4 (patch) | |
tree | 5d142c7485c667e4ff7553267f38893a65b482ef /drivers/net/wimax/i2400m/usb.c | |
parent | ad72b3bea744b4db01c89af0f86f3e8920d354df (diff) | |
download | linux-23663c873154f01220ef679558e1ca110c4c4ca4.tar.bz2 |
wimax/i2400m: fix i2400m->wake_tx_skb handling
i2400m_net_wake_tx() sets ->wake_tx_skb with the given skb if
->wake_tx_ws is not pending; however, i2400m_wake_tx_work() could have
just started execution and haven't fetched -><wake_tx_skb yet. The
previous packet will be leaked.
Update ->wake_tx_skb handling.
* i2400m_net_wake_tx() now tests whether the previous ->wake_tx_skb
has been consumed by ->wake_tx_ws instead of testing work_pending().
* i2400m_net_wake_stop() is simplified similarly. It always puts
->wake_tx_skb if non-NULL.
* Spurious ->wake_tx_skb dereference outside critical section dropped
from i2400m_wake_tx_work().
Only compile tested.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Cc: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Cc: linux-wimax@intel.com
Cc: wimax@linuxwimax.org
Diffstat (limited to 'drivers/net/wimax/i2400m/usb.c')
0 files changed, 0 insertions, 0 deletions