• A
    exec: move struct linux_binprm::buf · a6231d19
    Alexey Dobriyan 提交于
    struct linux_binprm::buf is the first field and it is exactly 128 bytes
    in size.  It means that on x86_64 all accesses to other fields will go
    though [r64 + disp32] addressing mode which is 3 bytes bloatier than
    [r64 + disp8] addressing mode.  Given that accesses to other fields
    outnumber accesses to ->buf, move it down.
    
    Space savings (x86_64 defconfig):
    more on distro configs because LSMs actively dereference "bprm"
    but do not care about first 128 bytes of the executable itself.
    
    add/remove: 0/0 grow/shrink: 0/24 up/down: 0/-492 (-492)
    Function                                     old     new   delta
    selinux_bprm_committing_creds                552     549      -3
    finalize_exec                                 94      91      -3
    __audit_log_bprm_fcaps                       283     280      -3
    __audit_bprm                                  39      36      -3
    perf_trace_sched_process_exec                347     341      -6
    install_exec_creds                           105      99      -6
    cap_bprm_set_creds.cold                       60      54      -6
    would_dump                                   137     128      -9
    load_script                                  637     628      -9
    bprm_change_interp                            61      52      -9
    trace_event_raw_event_sched_process_exec     260     250     -10
    search_binary_handler                        255     240     -15
    remove_arg_zero                              295     277     -18
    free_bprm                                    119     101     -18
    prepare_binprm                               379     360     -19
    setup_new_exec                               336     315     -21
    flush_old_exec                              1638    1617     -21
    copy_strings.isra                            746     724     -22
    setup_arg_pages                              559     530     -29
    load_misc_binary                            1151    1118     -33
    selinux_bprm_set_creds                       792     753     -39
    load_elf_binary                            11111   11072     -39
    cap_bprm_set_creds                          1496    1454     -42
    __do_execve_file.isra                       2395    2286    -109
    
    Link: http://lkml.kernel.org/r/20190421165025.GA26843@avx2Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    a6231d19
binfmts.h 5.0 KB
新手
引导
客服 返回
顶部