From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
syzbot+278893f3f7803871f7ce@syzkaller.appspotmail.com,
Cong Wang <xiyou.wangcong@gmail.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 4.4 03/22] llc: use refcount_inc_not_zero() for llc_sap_find()
Date: Tue, 21 Aug 2018 08:21:29 +0200 [thread overview]
Message-ID: <20180821055139.616061267@linuxfoundation.org> (raw)
In-Reply-To: <20180821055139.462620042@linuxfoundation.org>
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cong Wang <xiyou.wangcong@gmail.com>
[ Upstream commit 0dcb82254d65f72333aa50ad626d1e9665ad093b ]
llc_sap_put() decreases the refcnt before deleting sap
from the global list. Therefore, there is a chance
llc_sap_find() could find a sap with zero refcnt
in this global list.
Close this race condition by checking if refcnt is zero
or not in llc_sap_find(), if it is zero then it is being
removed so we can just treat it as gone.
Reported-by: <syzbot+278893f3f7803871f7ce@syzkaller.appspotmail.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/net/llc.h | 5 +++++
net/llc/llc_core.c | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
--- a/include/net/llc.h
+++ b/include/net/llc.h
@@ -116,6 +116,11 @@ static inline void llc_sap_hold(struct l
atomic_inc(&sap->refcnt);
}
+static inline bool llc_sap_hold_safe(struct llc_sap *sap)
+{
+ return atomic_inc_not_zero(&sap->refcnt);
+}
+
void llc_sap_close(struct llc_sap *sap);
static inline void llc_sap_put(struct llc_sap *sap)
--- a/net/llc/llc_core.c
+++ b/net/llc/llc_core.c
@@ -73,8 +73,8 @@ struct llc_sap *llc_sap_find(unsigned ch
rcu_read_lock_bh();
sap = __llc_sap_find(sap_value);
- if (sap)
- llc_sap_hold(sap);
+ if (!sap || !llc_sap_hold_safe(sap))
+ sap = NULL;
rcu_read_unlock_bh();
return sap;
}
next prev parent reply other threads:[~2018-08-21 6:34 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-21 6:21 [PATCH 4.4 00/22] 4.4.151-stable review Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 01/22] dccp: fix undefined behavior with cwnd shift in ccid2_cwnd_restart() Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 02/22] l2tp: use sk_dst_check() to avoid race on sk->sk_dst_cache Greg Kroah-Hartman
2018-08-21 6:21 ` Greg Kroah-Hartman [this message]
2018-08-21 6:21 ` [PATCH 4.4 04/22] net_sched: Fix missing res info when create new tc_index filter Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 05/22] vsock: split dwork to avoid reinitializations Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 06/22] net_sched: fix NULL pointer dereference when delete tcindex filter Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 07/22] ALSA: hda - Sleep for 10ms after entering D3 on Conexant codecs Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 08/22] ALSA: hda - Turn CX8200 into D3 as well upon reboot Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 09/22] ALSA: vx222: Fix invalid endian conversions Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 10/22] ALSA: virmidi: Fix too long output trigger loop Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 11/22] ALSA: cs5535audio: Fix invalid endian conversion Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 12/22] ALSA: hda: Correct Asrock B85M-ITX power_save blacklist entry Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 13/22] ALSA: memalloc: Dont exceed over the requested size Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 14/22] ALSA: vxpocket: Fix invalid endian conversions Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 15/22] USB: serial: sierra: fix potential deadlock at close Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 16/22] USB: option: add support for DW5821e Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 17/22] ACPI: save NVS memory for Lenovo G50-45 Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 18/22] ACPI / PM: save NVS memory for ASUS 1025C laptop Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 19/22] serial: 8250_dw: always set baud rate in dw8250_set_termios Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 20/22] x86/mm: Simplify p[g4um]d_page() macros Greg Kroah-Hartman
2018-08-21 6:21 ` Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 21/22] Bluetooth: avoid killing an already killed socket Greg Kroah-Hartman
2018-08-21 6:21 ` [PATCH 4.4 22/22] isdn: Disable IIOCDBGVAR Greg Kroah-Hartman
2018-08-21 14:55 ` [PATCH 4.4 00/22] 4.4.151-stable review Guenter Roeck
2018-08-21 16:58 ` Naresh Kamboju
2018-08-21 22:01 ` Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180821055139.616061267@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=syzbot+278893f3f7803871f7ce@syzkaller.appspotmail.com \
--cc=xiyou.wangcong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.