llc: properly handle dev_queue_xmit() return value
authorCong Wang <xiyou.wangcong@gmail.com>
Mon, 26 Mar 2018 22:08:33 +0000 (15:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:52:20 +0000 (07:52 +0200)
commit5b5f4fd97d8fdc5d41ad632ed5154989b38b613f
tree5d689e5c2f0f566ce60afcada965d2a821426757
parent25801736ca4818040b184c5547e6f5a14eaf4847
llc: properly handle dev_queue_xmit() return value

[ Upstream commit b85ab56c3f81c5a24b5a5213374f549df06430da ]

llc_conn_send_pdu() pushes the skb into write queue and
calls llc_conn_send_pdus() to flush them out. However, the
status of dev_queue_xmit() is not returned to caller,
in this case, llc_conn_state_process().

llc_conn_state_process() needs hold the skb no matter
success or failure, because it still uses it after that,
therefore we should hold skb before dev_queue_xmit() when
that skb is the one being processed by llc_conn_state_process().

For other callers, they can just pass NULL and ignore
the return value as they are.

Reported-by: Noam Rathaus <noamr@beyondsecurity.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/net/llc_conn.h
net/llc/llc_c_ac.c
net/llc/llc_conn.c