• Oscar Salvador's avatar
    mm,hwpoison: return 0 if the page is already poisoned in soft-offline · 5a2ffca3
    Oscar Salvador authored
    Currently, there is an inconsistency when calling soft-offline from
    different paths on a page that is already poisoned.
    
    1) madvise:
    
            madvise_inject_error skips any poisoned page and continues
            the loop.
            If that was the only page to madvise, it returns 0.
    
    2) /sys/devices/system/memory/:
    
            When calling soft_offline_page_store()->soft_offline_page(),
            we return -EBUSY in case the page is already poisoned.
            This is inconsistent with a) the above example and b)
            memory_failure, where we return 0 if the page was poisoned.
    
    Fix this by dropping the PageHWPoison() check in madvise_inject_error, and
    let soft_offline_page return 0 if it finds the page already poisoned.
    
    Please, note that this represents a user-api change, since now the return
    error when calling soft_offline_page_store()->soft_offline_page() will be
    different.
    Signed-off-by: default avatarOscar Salvador <osalvador@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarNaoya Horiguchi <naoya.horiguchi@nec.com>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Aristeu Rozanski <aris@ruivo.org>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Dmitry Yakunin <zeil@yandex-team.ru>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Oscar Salvador <osalvador@suse.com>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Tony Luck <tony.luck@intel.com>
    Link: https://lkml.kernel.org/r/20200922135650.1634-12-osalvador@suse.deSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5a2ffca3
memory-failure.c 51.7 KB