• Sandipan Das's avatar
    bpf: fix multi-function JITed dump obtained via syscall · 4d56a76e
    Sandipan Das authored
    Currently, for multi-function programs, we cannot get the JITed
    instructions using the bpf system call's BPF_OBJ_GET_INFO_BY_FD
    command. Because of this, userspace tools such as bpftool fail
    to identify a multi-function program as being JITed or not.
    
    With the JIT enabled and the test program running, this can be
    verified as follows:
    
      # cat /proc/sys/net/core/bpf_jit_enable
      1
    
    Before applying this patch:
    
      # bpftool prog list
      1: kprobe  name foo  tag b811aab41a39ad3d  gpl
              loaded_at 2018-05-16T11:43:38+0530  uid 0
              xlated 216B  not jited  memlock 65536B
      ...
    
      # bpftool prog dump jited id 1
      no instructions returned
    
    After applying this patch:
    
      # bpftool prog list
      1: kprobe  name foo  tag b811aab41a39ad3d  gpl
              loaded_at 2018-05-16T12:13:01+0530  uid 0
              xlated 216B  jited 308B  memlock 65536B
      ...
    
      # bpftool prog dump jited id 1
         0:   nop
         4:   nop
         8:   mflr    r0
         c:   std     r0,16(r1)
        10:   stdu    r1,-112(r1)
        14:   std     r31,104(r1)
        18:   addi    r31,r1,48
        1c:   li      r3,10
      ...
    Signed-off-by: default avatarSandipan Das <sandipan@linux.vnet.ibm.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    4d56a76e
syscall.c 50.8 KB