Skip to content
  • Huang Ying's avatar
    mm, swap: Remove WARN_ON_ONCE() in free_swap_slot() · 093b995e
    Huang Ying authored
    Before commit 452b94b8 ("mm/swap: don't BUG_ON() due to
    uninitialized swap slot cache"), the following bug is reported,
    
      ------------[ cut here ]------------
      kernel BUG at mm/swap_slots.c:270!
      invalid opcode: 0000 [#1] SMP
      CPU: 5 PID: 1745 Comm: (sd-pam) Not tainted 4.11.0-rc1-00243-g24c534bb #1
      Hardware name: System manufacturer System Product Name/Z170-K, BIOS 1803 05/06/2016
      RIP: 0010:free_swap_slot+0xba/0xd0
      Call Trace:
       swap_free+0x36/0x40
       do_swap_page+0x360/0x6d0
       __handle_mm_fault+0x880/0x1080
       handle_mm_fault+0xd0/0x240
       __do_page_fault+0x232/0x4d0
       do_page_fault+0x20/0x70
       page_fault+0x22/0x30
      ---[ end trace aefc9ede53e0ab21 ]---
    
    This is raised by the BUG_ON(!swap_slot_cache_initialized) in
    free_swap_slot().  This is incorrect, because even if the swap slots
    cache fails to be initialized, the swap should operate properly without
    the swap slots cache.  And the use_swap_slot_cache check later in the
    function will protect the uninitialized swap slots cache case.
    
    In commit 452b94b8
    
    , the BUG_ON() is replaced by WARN_ON_ONCE().  In
    the patch, the WARN_ON_ONCE() is removed too.
    
    Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Acked-by: default avatarTim Chen <tim.c.chen@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Signed-off-by: default avatar"Huang, Ying" <ying.huang@intel.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    093b995e