lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <57154871-e99c-cdb3-08b0-e8df3c8eb630@huawei.com>
Date:   Tue, 2 Aug 2022 10:30:52 +0800
From:   Kefeng Wang <wangkefeng.wang@...wei.com>
To:     Naoya Horiguchi <naoya.horiguchi@....com>,
        Miaohe Lin <linmiaohe@...wei.com>,
        Andrew Morton <akpm@...ux-foundation.org>, <linux-mm@...ck.org>
CC:     <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] mm: memory-failure: cleanup try_to_split_thp_page()


On 2022/8/2 10:12, Kefeng Wang wrote:
> Since commit 5d1fd5dc877b ("mm,hwpoison: introduce MF_MSG_UNSPLIT_THP"),
> the action_result() called to show memory error event in memory_failure(),
action_result(,MF_MSG_UNSPLIT_THP,)
> so the pr_info() in try_to_split_thp_page() is only needed in
> soft_offline_in_use_page().
>
> Signed-off-by: Kefeng Wang <wangkefeng.wang@...wei.com>
> ---
>   mm/memory-failure.c | 23 ++++++++++++-----------
>   1 file changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/mm/memory-failure.c b/mm/memory-failure.c
> index f0e1961d4482..59633a617a0a 100644
> --- a/mm/memory-failure.c
> +++ b/mm/memory-failure.c
> @@ -1524,20 +1524,18 @@ static int identify_page_state(unsigned long pfn, struct page *p,
>   	return page_action(ps, p, pfn);
>   }
>   
> -static int try_to_split_thp_page(struct page *page, const char *msg)
> +static int try_to_split_thp_page(struct page *page)
>   {
> +	int ret;
> +
>   	lock_page(page);
> -	if (unlikely(split_huge_page(page))) {
> -		unsigned long pfn = page_to_pfn(page);
> +	ret = split_huge_page(page);
> +	unlock_page(page);
>   
> -		unlock_page(page);
> -		pr_info("%s: %#lx: thp split failed\n", msg, pfn);
> +	if (unlikely(ret))
>   		put_page(page);
> -		return -EBUSY;
> -	}
> -	unlock_page(page);
>   
> -	return 0;
> +	return ret;
>   }
>   
>   static void unmap_and_kill(struct list_head *to_kill, unsigned long pfn,
> @@ -2079,7 +2077,7 @@ int memory_failure(unsigned long pfn, int flags)
>   		 * page is a valid handlable page.
>   		 */
>   		SetPageHasHWPoisoned(hpage);
> -		if (try_to_split_thp_page(p, "Memory Failure") < 0) {
> +		if (try_to_split_thp_page(p) < 0) {
>   			action_result(pfn, MF_MSG_UNSPLIT_THP, MF_IGNORED);
>   			res = -EBUSY;
>   			goto unlock_mutex;
> @@ -2503,8 +2501,11 @@ static int soft_offline_in_use_page(struct page *page)
>   	struct page *hpage = compound_head(page);
>   
>   	if (!PageHuge(page) && PageTransHuge(hpage))
> -		if (try_to_split_thp_page(page, "soft offline") < 0)
> +		if (try_to_split_thp_page(page) < 0) {
> +			pr_info("soft offline: %#lx: thp split failed\n",
> +				page_to_pfn(page));
>   			return -EBUSY;
> +		}
>   	return __soft_offline_page(page);
>   }
>   

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ