From mboxrd@z Thu Jan 1 00:00:00 1970 From: Prashant Bhole Subject: [PATCH bpf-next 0/6] Error handling when map lookup isn't supported Date: Tue, 9 Oct 2018 10:04:48 +0900 Message-ID: <20181009010454.6652-1-bhole_prashant_q7@lab.ntt.co.jp> Cc: Prashant Bhole , Jakub Kicinski , "David S . Miller" , Quentin Monnet , netdev@vger.kernel.org To: Alexei Starovoitov , Daniel Borkmann Return-path: Received: from tama50.ecl.ntt.co.jp ([129.60.39.147]:55805 "EHLO tama50.ecl.ntt.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725794AbeJIIUF (ORCPT ); Tue, 9 Oct 2018 04:20:05 -0400 Sender: netdev-owner@vger.kernel.org List-ID: Currently when map a lookup fails, user space API can not make any distinction whether given key was not found or lookup is not supported by particular map. In this series we modify return value of maps which do not support lookup. Lookup on such map implementation will return -EOPNOTSUPP. bpf() syscall with BPF_MAP_LOOKUP_ELEM command will set EOPNOTSUPP errno. We also handle this error in bpftool to print appropriate message. Patch 1: adds handling of BPF_MAP_LOOKUP ELEM command of bpf syscall such that errno will set to EOPNOTSUPP when map doesn't support lookup Patch 2: Modifies the return value of map_lookup_elem() to EOPNOTSUPP for maps which do not support lookup Patch 3: Splits do_dump() in bpftool/map.c. Element printing code is moved out into new function dump_map_elem(). This was done in order to reduce deep indentation and accomodate further changes. Patch 4: Changes in bpftool to print strerror() message when lookup error is occured. This will result in appropriate message like "Operation not supported" when map doesn't support lookup. Patch 5: test_verifier: change fixup map naming convention as suggested by Alexei Patch 6: Added verifier tests to check whether verifier rejects call to bpf_map_lookup_elem from bpf program. For all map types those do not support map lookup. Prashant Bhole (6): bpf: error handling when map_lookup_elem isn't supported bpf: return EOPNOTSUPP when map lookup isn't supported tools/bpf: bpftool, split the function do_dump() tools/bpf: bpftool, print strerror when map lookup error occurs selftests/bpf: test_verifier, change names of fixup maps selftests/bpf: test_verifier, check bpf_map_lookup_elem access in bpf prog kernel/bpf/arraymap.c | 2 +- kernel/bpf/sockmap.c | 2 +- kernel/bpf/stackmap.c | 2 +- kernel/bpf/syscall.c | 9 +- kernel/bpf/xskmap.c | 2 +- tools/bpf/bpftool/map.c | 102 ++-- tools/testing/selftests/bpf/test_verifier.c | 501 ++++++++++++-------- 7 files changed, 389 insertions(+), 231 deletions(-) -- 2.17.1