• Daniel Borkmann's avatar
    bpf: fix mlock precharge on arraymaps · 9c2d63b8
    Daniel Borkmann authored
    syzkaller recently triggered OOM during percpu map allocation;
    while there is work in progress by Dennis Zhou to add __GFP_NORETRY
    semantics for percpu allocator under pressure, there seems also a
    missing bpf_map_precharge_memlock() check in array map allocation.
    
    Given today the actual bpf_map_charge_memlock() happens after the
    find_and_alloc_map() in syscall path, the bpf_map_precharge_memlock()
    is there to bail out early before we go and do the map setup work
    when we find that we hit the limits anyway. Therefore add this for
    array map as well.
    
    Fixes: 6c905981 ("bpf: pre-allocate hash map elements")
    Fixes: a10423b8 ("bpf: introduce BPF_MAP_TYPE_PERCPU_ARRAY map")
    Reported-by: syzbot+adb03f3f0bb57ce3acda@syzkaller.appspotmail.com
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Cc: Dennis Zhou <dennisszhou@gmail.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    9c2d63b8
arraymap.c 18.2 KB