Thread (4 messages) flat view 4 messages, 2 authors, 2016-11-04

Re: bpf: kernel BUG in htab_elem_free

From: Dmitry Vyukov <dvyukov@google.com>
Date: 2016-11-04 00:43:59
Also in: lkml

On Thu, Nov 3, 2016 at 10:36 AM, Daniel Borkmann [off-list ref] wrote:
On 11/03/2016 03:15 PM, Dmitry Vyukov wrote:
quoted
On Wed, Nov 2, 2016 at 11:14 PM, Dmitry Vyukov [off-list ref] wrote:
quoted
Here we go.

The following program triggers kernel BUG in htab_elem_free.
On commit 0c183d92b20b5c84ca655b45ef57b3318b83eb9e (Oct 31).
Run as "while true; do ./a.out; done".

This one fixes it for me. Could you check it from your side as well?
I'll submit an official fix then.
I've seen you mailed the fix already.
If you were able to reproduce it and test the fix, then there is
nothing else I can do.
quoted hunk ↗ jump to hunk
Thanks a lot for the catch!
Daniel
diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c
index 570eeca..ad1bc67 100644
--- a/kernel/bpf/hashtab.c
+++ b/kernel/bpf/hashtab.c
@@ -687,7 +687,8 @@ static void delete_all_elements(struct bpf_htab *htab)

                hlist_for_each_entry_safe(l, n, head, hash_node) {
                        hlist_del_rcu(&l->hash_node);
-                       htab_elem_free(htab, l);
+                       if (l->state != HTAB_EXTRA_ELEM_USED)
+                               htab_elem_free(htab, l);
                }
        }
 }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help