lkml.org 
[lkml]   [2022]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH bpf-next v6 07/23] bpf: prepare for more bpf syscall to be used from kernel and user space.
    Date
    Add BPF_MAP_GET_FD_BY_ID and BPF_MAP_DELETE_PROG.

    Only BPF_MAP_GET_FD_BY_ID needs to be amended to be able
    to access the bpf pointer either from the userspace or the kernel.

    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>

    ---

    changes in v6:
    - commit description change

    new in v5
    ---
    kernel/bpf/syscall.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
    index ab688d85b2c6..637765390c30 100644
    --- a/kernel/bpf/syscall.c
    +++ b/kernel/bpf/syscall.c
    @@ -1417,9 +1417,9 @@ static int map_update_elem(union bpf_attr *attr, bpfptr_t uattr)

    #define BPF_MAP_DELETE_ELEM_LAST_FIELD key

    -static int map_delete_elem(union bpf_attr *attr)
    +static int map_delete_elem(union bpf_attr *attr, bpfptr_t uattr)
    {
    - void __user *ukey = u64_to_user_ptr(attr->key);
    + bpfptr_t ukey = make_bpfptr(attr->key, uattr.is_kernel);
    int ufd = attr->map_fd;
    struct bpf_map *map;
    struct fd f;
    @@ -1439,7 +1439,7 @@ static int map_delete_elem(union bpf_attr *attr)
    goto err_put;
    }

    - key = __bpf_copy_key(ukey, map->key_size);
    + key = ___bpf_copy_key(ukey, map->key_size);
    if (IS_ERR(key)) {
    err = PTR_ERR(key);
    goto err_put;
    @@ -4922,7 +4922,7 @@ static int __sys_bpf(int cmd, bpfptr_t uattr, unsigned int size)
    err = map_update_elem(&attr, uattr);
    break;
    case BPF_MAP_DELETE_ELEM:
    - err = map_delete_elem(&attr);
    + err = map_delete_elem(&attr, uattr);
    break;
    case BPF_MAP_GET_NEXT_KEY:
    err = map_get_next_key(&attr);
    @@ -5057,8 +5057,10 @@ BPF_CALL_3(bpf_sys_bpf, int, cmd, union bpf_attr *, attr, u32, attr_size)

    switch (cmd) {
    case BPF_MAP_CREATE:
    + case BPF_MAP_DELETE_ELEM:
    case BPF_MAP_UPDATE_ELEM:
    case BPF_MAP_FREEZE:
    + case BPF_MAP_GET_FD_BY_ID:
    case BPF_PROG_LOAD:
    case BPF_BTF_LOAD:
    case BPF_LINK_CREATE:
    --
    2.36.1
    \
     
     \ /
      Last update: 2022-07-12 17:04    [W:3.759 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site