• Jane Chu's avatar
    mm/memory-failure: poison read receives SIGKILL instead of SIGBUS if mmaped more than once · 3d7fed4a
    Jane Chu authored
    Mmap /dev/dax more than once, then read the poison location using
    address from one of the mappings.  The other mappings due to not having
    the page mapped in will cause SIGKILLs delivered to the process.
    SIGKILL succeeds over SIGBUS, so user process loses the opportunity to
    handle the UE.
    
    Although one may add MAP_POPULATE to mmap(2) to work around the issue,
    MAP_POPULATE makes mapping 128GB of pmem several magnitudes slower, so
    isn't always an option.
    
    Details -
    
      ndctl inject-error --block=10 --count=1 namespace6.0
    
      ./read_poison -x dax6.0 -o 5120 -m 2
      mmaped address 0x7f5bb6600000
      mmaped address 0x7f3cf3600000
      doing local read at address 0x7f3cf3601400
      Killed
    
    Console messages in instrumented kernel -
    
      mce: Uncorrected hardware memory error in user-access at edbe201400
      Memory failure: tk->addr = 7f5bb6601000
      Memory failure: address edbe201: call dev_pagemap_mapping_shift
      dev_pagemap_mapping_shift: page edbe201: no PUD
      Memory failure: tk->size_shift == 0
      Memory failure: Unable to find user space address edbe201 in read_poison
      Memory failure: tk->addr = 7f3cf3601000
      Memory failure: address edbe201: call dev_pagemap_mapping_shift
      Memory failure: tk->size_shift = 21
      Memory failure: 0xedbe201: forcibly killing read_poison:22434 because of failure to unmap corrupted page
        => to deliver SIGKILL
      Memory failure: 0xedbe201: Killing read_poison:22434 due to hardware memory corruption
        => to deliver SIGBUS
    
    Link: http://lkml.kernel.org/r/1565112345-28754-3-git-send-email-jane.chu@oracle.comSigned-off-by: default avatarJane Chu <jane.chu@oracle.com>
    Suggested-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
    Acked-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    3d7fed4a
memory-failure.c 52 KB