• Feng Tang's avatar
    ipmi: use vzalloc instead of kmalloc for user creation · 7c47a219
    Feng Tang authored
    We met mulitple times of failure of staring bmc-watchdog,
    due to the runtime memory allocation failure of order 4.
    
         bmc-watchdog: page allocation failure: order:4, mode:0x40cc0(GFP_KERNEL|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0-1
         CPU: 1 PID: 2571 Comm: bmc-watchdog Not tainted 5.5.0-00045-g7d6bb61d6188c #1
         Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.00.01.0015.110720180833 11/07/2018
         Call Trace:
          dump_stack+0x66/0x8b
          warn_alloc+0xfe/0x160
          __alloc_pages_slowpath+0xd3e/0xd80
          __alloc_pages_nodemask+0x2f0/0x340
          kmalloc_order+0x18/0x70
          kmalloc_order_trace+0x1d/0xb0
          ipmi_create_user+0x55/0x2c0 [ipmi_msghandler]
          ipmi_open+0x72/0x110 [ipmi_devintf]
          chrdev_open+0xcb/0x1e0
          do_dentry_open+0x1ce/0x380
          path_openat+0x305/0x14f0
          do_filp_open+0x9b/0x110
          do_sys_open+0x1bd/0x250
          do_syscall_64+0x5b/0x1f0
          entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Using vzalloc/vfree for creating ipmi_user heals the
    problem
    
    Thanks to Stephen Rothwell for finding the vmalloc.h
    inclusion issue.
    Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
    Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
    7c47a219
ipmi_msghandler.c 131 KB