All of lore.kernel.org
 help / color / mirror / Atom feed
From: <gregkh@linuxfoundation.org>
To: daniel@iogearbox.net, davem@davemloft.net, edumazet@google.com,
	gregkh@linuxfoundation.org, yhs@fb.com
Cc: <stable@vger.kernel.org>, <stable-commits@vger.kernel.org>
Subject: Patch "bpf: fix rcu lockdep warning for lpm_trie map_free callback" has been added to the 4.15-stable tree
Date: Fri, 09 Mar 2018 14:17:08 -0800	[thread overview]
Message-ID: <15206338282085@kroah.com> (raw)
In-Reply-To: <3181ff4299652cbcfec7f1f2632ce1e486a3a25a.1520507630.git.daniel@iogearbox.net>


This is a note to let you know that I've just added the patch titled

    bpf: fix rcu lockdep warning for lpm_trie map_free callback

to the 4.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     bpf-fix-rcu-lockdep-warning-for-lpm_trie-map_free-callback.patch
and it can be found in the queue-4.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


>From foo@baz Fri Mar  9 14:15:30 PST 2018
From: Daniel Borkmann <daniel@iogearbox.net>
Date: Thu,  8 Mar 2018 13:16:44 +0100
Subject: bpf: fix rcu lockdep warning for lpm_trie map_free callback
To: gregkh@linuxfoundation.org
Cc: ast@kernel.org, daniel@iogearbox.net, stable@vger.kernel.org, Yonghong Song <yhs@fb.com>
Message-ID: <3181ff4299652cbcfec7f1f2632ce1e486a3a25a.1520507630.git.daniel@iogearbox.net>

From: Yonghong Song <yhs@fb.com>

[ upstream commit 6c5f61023c5b0edb0c8a64c902fe97c6453b1852 ]

Commit 9a3efb6b661f ("bpf: fix memory leak in lpm_trie map_free callback function")
fixed a memory leak and removed unnecessary locks in map_free callback function.
Unfortrunately, it introduced a lockdep warning. When lockdep checking is turned on,
running tools/testing/selftests/bpf/test_lpm_map will have:

  [   98.294321] =============================
  [   98.294807] WARNING: suspicious RCU usage
  [   98.295359] 4.16.0-rc2+ #193 Not tainted
  [   98.295907] -----------------------------
  [   98.296486] /home/yhs/work/bpf/kernel/bpf/lpm_trie.c:572 suspicious rcu_dereference_check() usage!
  [   98.297657]
  [   98.297657] other info that might help us debug this:
  [   98.297657]
  [   98.298663]
  [   98.298663] rcu_scheduler_active = 2, debug_locks = 1
  [   98.299536] 2 locks held by kworker/2:1/54:
  [   98.300152]  #0:  ((wq_completion)"events"){+.+.}, at: [<00000000196bc1f0>] process_one_work+0x157/0x5c0
  [   98.301381]  #1:  ((work_completion)(&map->work)){+.+.}, at: [<00000000196bc1f0>] process_one_work+0x157/0x5c0

Since actual trie tree removal happens only after no other
accesses to the tree are possible, replacing
  rcu_dereference_protected(*slot, lockdep_is_held(&trie->lock))
with
  rcu_dereference_protected(*slot, 1)
fixed the issue.

Fixes: 9a3efb6b661f ("bpf: fix memory leak in lpm_trie map_free callback function")
Reported-by: Eric Dumazet <edumazet@google.com>
Suggested-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Yonghong Song <yhs@fb.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 kernel/bpf/lpm_trie.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- a/kernel/bpf/lpm_trie.c
+++ b/kernel/bpf/lpm_trie.c
@@ -574,8 +574,7 @@ static void trie_free(struct bpf_map *ma
 		slot = &trie->root;
 
 		for (;;) {
-			node = rcu_dereference_protected(*slot,
-					lockdep_is_held(&trie->lock));
+			node = rcu_dereference_protected(*slot, 1);
 			if (!node)
 				goto out;
 


Patches currently in stable-queue which might be from daniel@iogearbox.net are

queue-4.15/bpf-fix-mlock-precharge-on-arraymaps.patch
queue-4.15/bpf-x64-implement-retpoline-for-tail-call.patch
queue-4.15/bpf-arm64-fix-out-of-bounds-access-in-tail-call.patch
queue-4.15/bpf-fix-memory-leak-in-lpm_trie-map_free-callback-function.patch
queue-4.15/bpf-ppc64-fix-out-of-bounds-access-in-tail-call.patch
queue-4.15/bpf-add-schedule-points-in-percpu-arrays-management.patch
queue-4.15/bpf-allow-xadd-only-on-aligned-memory.patch
queue-4.15/bpf-fix-rcu-lockdep-warning-for-lpm_trie-map_free-callback.patch

  reply	other threads:[~2018-03-09 22:17 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-08 12:16 [PATCH stable 4.15 0/8] BPF stable patches Daniel Borkmann
2018-03-08 12:16 ` [PATCH stable 4.15 1/8] bpf: fix mlock precharge on arraymaps Daniel Borkmann
2018-03-09 22:17   ` Patch "bpf: fix mlock precharge on arraymaps" has been added to the 4.15-stable tree gregkh
2018-03-08 12:16 ` [PATCH stable 4.15 2/8] bpf: fix memory leak in lpm_trie map_free callback function Daniel Borkmann
2018-03-09 22:17   ` Patch "bpf: fix memory leak in lpm_trie map_free callback function" has been added to the 4.15-stable tree gregkh
2018-03-08 12:16 ` [PATCH stable 4.15 3/8] bpf: fix rcu lockdep warning for lpm_trie map_free callback Daniel Borkmann
2018-03-09 22:17   ` gregkh [this message]
2018-03-08 12:16 ` [PATCH stable 4.15 4/8] bpf, x64: implement retpoline for tail call Daniel Borkmann
2018-03-09 22:17   ` Patch "bpf, x64: implement retpoline for tail call" has been added to the 4.15-stable tree gregkh
2018-03-08 12:16 ` [PATCH stable 4.15 5/8] bpf, arm64: fix out of bounds access in tail call Daniel Borkmann
2018-03-09 22:17   ` Patch "bpf, arm64: fix out of bounds access in tail call" has been added to the 4.15-stable tree gregkh
2018-03-08 12:16 ` [PATCH stable 4.15 6/8] bpf: add schedule points in percpu arrays management Daniel Borkmann
2018-03-09 22:17   ` Patch "bpf: add schedule points in percpu arrays management" has been added to the 4.15-stable tree gregkh
2018-03-08 12:16 ` [PATCH stable 4.15 7/8] bpf: allow xadd only on aligned memory Daniel Borkmann
2018-03-09 22:17   ` Patch "bpf: allow xadd only on aligned memory" has been added to the 4.15-stable tree gregkh
2018-03-08 12:16 ` [PATCH stable 4.15 8/8] bpf, ppc64: fix out of bounds access in tail call Daniel Borkmann
2018-03-09 22:17   ` Patch "bpf, ppc64: fix out of bounds access in tail call" has been added to the 4.15-stable tree gregkh
2018-03-09 22:17 ` [PATCH stable 4.15 0/8] BPF stable patches Greg KH

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=15206338282085@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=stable-commits@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=yhs@fb.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.