diff mbox

[net] bpf: add get_next_key callback to LPM map

Message ID 1488735668-2296008-1-git-send-email-ast@fb.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Alexei Starovoitov March 5, 2017, 5:41 p.m. UTC
map_get_next_key callback is mandatory. Supply dummy handler.

Fixes: b95a5c4db09b ("bpf: add a longest prefix match trie map implementation")
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
---
 kernel/bpf/lpm_trie.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

David Miller March 5, 2017, 6:44 p.m. UTC | #1
From: Alexei Starovoitov <ast@fb.com>
Date: Sun, 5 Mar 2017 09:41:08 -0800

> map_get_next_key callback is mandatory. Supply dummy handler.
> 
> Fixes: b95a5c4db09b ("bpf: add a longest prefix match trie map implementation")
> Reported-by: Dmitry Vyukov <dvyukov@google.com>
> Signed-off-by: Alexei Starovoitov <ast@kernel.org>

Wouldn't it be more appropriate to provide a proper DFS ordered
traversal rather than return an error code?
Alexei Starovoitov March 5, 2017, 6:58 p.m. UTC | #2
On 3/5/17 10:44 AM, David Miller wrote:
> From: Alexei Starovoitov <ast@fb.com>
> Date: Sun, 5 Mar 2017 09:41:08 -0800
>
>> map_get_next_key callback is mandatory. Supply dummy handler.
>>
>> Fixes: b95a5c4db09b ("bpf: add a longest prefix match trie map implementation")
>> Reported-by: Dmitry Vyukov <dvyukov@google.com>
>> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
>
> Wouldn't it be more appropriate to provide a proper DFS ordered
> traversal rather than return an error code?

yes. of course. This is quick fix for 'net'.
That's why the error code is ENOTSUPP with meaning that
it's not supported right now and will be supported in the future.
David Miller March 6, 2017, 1:55 a.m. UTC | #3
From: Alexei Starovoitov <ast@fb.com>
Date: Sun, 5 Mar 2017 10:58:00 -0800

> On 3/5/17 10:44 AM, David Miller wrote:
>> From: Alexei Starovoitov <ast@fb.com>
>> Date: Sun, 5 Mar 2017 09:41:08 -0800
>>
>>> map_get_next_key callback is mandatory. Supply dummy handler.
>>>
>>> Fixes: b95a5c4db09b ("bpf: add a longest prefix match trie map
>>> implementation")
>>> Reported-by: Dmitry Vyukov <dvyukov@google.com>
>>> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
>>
>> Wouldn't it be more appropriate to provide a proper DFS ordered
>> traversal rather than return an error code?
> 
> yes. of course. This is quick fix for 'net'.
> That's why the error code is ENOTSUPP with meaning that
> it's not supported right now and will be supported in the future.

Ok, fair enough, applied.

Thanks.
Daniel Borkmann March 6, 2017, 9:30 a.m. UTC | #4
On 03/05/2017 06:41 PM, Alexei Starovoitov wrote:
> map_get_next_key callback is mandatory. Supply dummy handler.
>
> Fixes: b95a5c4db09b ("bpf: add a longest prefix match trie map implementation")
> Reported-by: Dmitry Vyukov <dvyukov@google.com>
> Signed-off-by: Alexei Starovoitov <ast@kernel.org>

Acked-by: Daniel Borkmann <daniel@iogearbox.net>
diff mbox

Patch

diff --git a/kernel/bpf/lpm_trie.c b/kernel/bpf/lpm_trie.c
index 8bfe0afaee10..b37bd9ab7f57 100644
--- a/kernel/bpf/lpm_trie.c
+++ b/kernel/bpf/lpm_trie.c
@@ -500,9 +500,15 @@  static void trie_free(struct bpf_map *map)
 	raw_spin_unlock(&trie->lock);
 }
 
+static int trie_get_next_key(struct bpf_map *map, void *key, void *next_key)
+{
+	return -ENOTSUPP;
+}
+
 static const struct bpf_map_ops trie_ops = {
 	.map_alloc = trie_alloc,
 	.map_free = trie_free,
+	.map_get_next_key = trie_get_next_key,
 	.map_lookup_elem = trie_lookup_elem,
 	.map_update_elem = trie_update_elem,
 	.map_delete_elem = trie_delete_elem,