Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 509db283 authored by Prashant Bhole's avatar Prashant Bhole Committed by Alexei Starovoitov
Browse files

bpf: error handling when map_lookup_elem isn't supported



The error value returned by map_lookup_elem doesn't differentiate
whether lookup was failed because of invalid key or lookup is not
supported.

Lets add handling for -EOPNOTSUPP return value of map_lookup_elem()
method of map, with expectation from map's implementation that it
should return -EOPNOTSUPP if lookup is not supported.

The errno for bpf syscall for BPF_MAP_LOOKUP_ELEM command will be set
to EOPNOTSUPP if map lookup is not supported.

Signed-off-by: default avatarPrashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarSong Liu <songliubraving@fb.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 8af03d1a
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -719,10 +719,15 @@ static int map_lookup_elem(union bpf_attr *attr)
	} else {
		rcu_read_lock();
		ptr = map->ops->map_lookup_elem(map, key);
		if (ptr)
		if (IS_ERR(ptr)) {
			err = PTR_ERR(ptr);
		} else if (!ptr) {
			err = -ENOENT;
		} else {
			err = 0;
			memcpy(value, ptr, value_size);
		}
		rcu_read_unlock();
		err = ptr ? 0 : -ENOENT;
	}

	if (err)