netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* user-controllable kmalloc size in bpf syscall
@ 2015-11-29 13:18 Dmitry Vyukov
  2015-11-29 18:21 ` Alexei Starovoitov
  2015-11-30  0:59 ` [PATCH net] bpf: fix allocation warnings in bpf maps and integer overflow Alexei Starovoitov
  0 siblings, 2 replies; 12+ messages in thread
From: Dmitry Vyukov @ 2015-11-29 13:18 UTC (permalink / raw)
  To: Alexei Starovoitov, netdev, LKML
  Cc: syzkaller, Kostya Serebryany, Alexander Potapenko, Eric Dumazet,
	Sasha Levin, daniel

Hello,

The following program triggers a WARNING in kmalloc:

// autogenerated by syzkaller (http://github.com/google/syzkaller)
#include <syscall.h>
#include <string.h>
#include <stdint.h>

#define SYS_bpf 321
#define BPF_MAP_CREATE                        0
#define BPF_MAP_UPDATE_ELEM                2

union bpf_attr {
        struct {
                uint32_t        map_type;        /* one of enum bpf_map_type */
                uint32_t        key_size;        /* size of key in bytes */
                uint32_t        value_size;        /* size of value in bytes */
                uint32_t        max_entries;        /* max number of
entries in a map */
        };

        struct {
                uint32_t        map_fd;
                uint64_t        key;
                uint64_t        val;
                uint64_t        flags;
        };
};

int main()
{
        union bpf_attr ca;
        memset(&ca, 0, sizeof(ca));
        ca.map_type = 1;
        ca.key_size = 1;
        ca.value_size = 0xfffffff9;
        ca.max_entries = 10;
        int fd = syscall(SYS_bpf, BPF_MAP_CREATE, &ca, sizeof(ca));
        memset(&ca, 0, sizeof(ca));
        ca.map_fd = fd;
        ca.key = &ca;
        ca.val = &ca;
        ca.flags = 0;
        syscall(SYS_bpf, BPF_MAP_UPDATE_ELEM, &ca, sizeof(ca));
        return 0;
}


------------[ cut here ]------------
WARNING: CPU: 2 PID: 11122 at mm/page_alloc.c:2989
__alloc_pages_nodemask+0x695/0x14e0()
Modules linked in:
CPU: 2 PID: 11122 Comm: syzkaller_execu Tainted: G    B           4.4.0-rc2+ #5
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
 00000000ffffffff ffff880039aefa30 ffffffff82743b56 0000000000000000
 ffff88003b2a0000 ffffffff85a8d0e0 ffff880039aefa70 ffffffff81244ec9
 ffffffff81554e95 ffffffff85a8d0e0 0000000000000bad 0000000000000000
Call Trace:
 [<     inline     >] __dump_stack lib/dump_stack.c:15
 [<ffffffff82743b56>] dump_stack+0x68/0x92 lib/dump_stack.c:50
 [<ffffffff81244ec9>] warn_slowpath_common+0xd9/0x140 kernel/panic.c:460
 [<ffffffff812450f9>] warn_slowpath_null+0x29/0x30 kernel/panic.c:493
 [<     inline     >] __alloc_pages_slowpath mm/page_alloc.c:2989
 [<ffffffff81554e95>] __alloc_pages_nodemask+0x695/0x14e0 mm/page_alloc.c:3235
 [<ffffffff816188fe>] alloc_pages_current+0xee/0x340 mm/mempolicy.c:2055
 [<     inline     >] alloc_pages include/linux/gfp.h:451
 [<ffffffff81550706>] alloc_kmem_pages+0x16/0xf0 mm/page_alloc.c:3414
 [<ffffffff815a1c89>] kmalloc_order+0x19/0x60 mm/slab_common.c:1007
 [<ffffffff815a1cef>] kmalloc_order_trace+0x1f/0xa0 mm/slab_common.c:1018
 [<     inline     >] kmalloc_large include/linux/slab.h:390
 [<ffffffff81627784>] __kmalloc+0x234/0x250 mm/slub.c:3525
 [<     inline     >] kmalloc include/linux/slab.h:463
 [<     inline     >] map_update_elem kernel/bpf/syscall.c:288
 [<     inline     >] SYSC_bpf kernel/bpf/syscall.c:744
 [<ffffffff814f07c4>] SyS_bpf+0xfd4/0x1a20 kernel/bpf/syscall.c:695
 [<ffffffff8597eeb6>] entry_SYSCALL_64_fastpath+0x16/0x7a
arch/x86/entry/entry_64.S:185
---[ end trace f00640b4d448df95 ]---


On commit 78c4a49a69e910a162b05e4e8727b9bdbf948f13 (Now 25).

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-12-03  4:36 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-29 13:18 user-controllable kmalloc size in bpf syscall Dmitry Vyukov
2015-11-29 18:21 ` Alexei Starovoitov
2015-11-30  0:59 ` [PATCH net] bpf: fix allocation warnings in bpf maps and integer overflow Alexei Starovoitov
2015-11-30 13:52   ` Daniel Borkmann
2015-11-30 13:57     ` Dmitry Vyukov
2015-11-30 14:13       ` Daniel Borkmann
2015-11-30 14:16         ` Dmitry Vyukov
2015-11-30 14:34     ` Daniel Borkmann
2015-11-30 18:13       ` Alexei Starovoitov
2015-11-30 22:16         ` Daniel Borkmann
2015-11-30 23:30           ` Alexei Starovoitov
2015-12-03  4:36   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).