• Lukas Bulwahn's avatar
    bpf: Propagate __user annotations properly · 2f4b0319
    Lukas Bulwahn authored
    __htab_map_lookup_and_delete_batch() stores a user pointer in the local
    variable ubatch and uses that in copy_{from,to}_user(), but ubatch misses a
    __user annotation.
    
    So, sparse warns in the various assignments and uses of ubatch:
    
      kernel/bpf/hashtab.c:1415:24: warning: incorrect type in initializer
        (different address spaces)
      kernel/bpf/hashtab.c:1415:24:    expected void *ubatch
      kernel/bpf/hashtab.c:1415:24:    got void [noderef] __user *
    
      kernel/bpf/hashtab.c:1444:46: warning: incorrect type in argument 2
        (different address spaces)
      kernel/bpf/hashtab.c:1444:46:    expected void const [noderef] __user *from
      kernel/bpf/hashtab.c:1444:46:    got void *ubatch
    
      kernel/bpf/hashtab.c:1608:16: warning: incorrect type in assignment
        (different address spaces)
      kernel/bpf/hashtab.c:1608:16:    expected void *ubatch
      kernel/bpf/hashtab.c:1608:16:    got void [noderef] __user *
    
      kernel/bpf/hashtab.c:1609:26: warning: incorrect type in argument 1
        (different address spaces)
      kernel/bpf/hashtab.c:1609:26:    expected void [noderef] __user *to
      kernel/bpf/hashtab.c:1609:26:    got void *ubatch
    
    Add the __user annotation to repair this chain of propagating __user
    annotations in __htab_map_lookup_and_delete_batch().
    Signed-off-by: default avatarLukas Bulwahn <lukas.bulwahn@gmail.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Acked-by: default avatarYonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20201207123720.19111-1-lukas.bulwahn@gmail.com
    2f4b0319
hashtab.c 56.1 KB