Re: [PATCH v2 1/3] mm: change huge_ptep_clear_flush() to return the original pte
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>, Muchun Song <songmuchun@xxxxxxxxxxxxx>
- Subject: Re: [PATCH v2 1/3] mm: change huge_ptep_clear_flush() to return the original pte
- From: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
- Date: Mon, 9 May 2022 05:46:03 +0000
- Accept-language: fr-FR, en-US
- Cc: "dalias@xxxxxxxx" <dalias@xxxxxxxx>, "linux-ia64@xxxxxxxxxxxxxxx" <linux-ia64@xxxxxxxxxxxxxxx>, "linux-sh@xxxxxxxxxxxxxxx" <linux-sh@xxxxxxxxxxxxxxx>, "linux-mips@xxxxxxxxxxxxxxx" <linux-mips@xxxxxxxxxxxxxxx>, "James.Bottomley@xxxxxxxxxxxxxxxxxxxxx" <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>, "linux-mm@xxxxxxxxx" <linux-mm@xxxxxxxxx>, "paulus@xxxxxxxxx" <paulus@xxxxxxxxx>, "sparclinux@xxxxxxxxxxxxxxx" <sparclinux@xxxxxxxxxxxxxxx>, "agordeev@xxxxxxxxxxxxx" <agordeev@xxxxxxxxxxxxx>, "will@xxxxxxxxxx" <will@xxxxxxxxxx>, "linux-arch@xxxxxxxxxxxxxxx" <linux-arch@xxxxxxxxxxxxxxx>, "linux-s390@xxxxxxxxxxxxxxx" <linux-s390@xxxxxxxxxxxxxxx>, "arnd@xxxxxxxx" <arnd@xxxxxxxx>, "ysato@xxxxxxxxxxxxxxxxxxxx" <ysato@xxxxxxxxxxxxx>, "deller@xxxxxx" <deller@xxxxxx>, "catalin.marinas@xxxxxxx" <catalin.marinas@xxxxxxx>, "borntraeger@xxxxxxxxxxxxx" <borntraeger@xxxxxxxxxxxxx>, "gor@xxxxxxxxxxxxx" <gor@xxxxxxxxxxxxx>, "hca@xxxxxxxxxxxxx" <hca@xxxxxxxxxxxxx>, "linux-arm-kernel@xxxxxxxxxxxxxxxxxxx" <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>, "tsbogend@xxxxxxxxxxxxxxxx" <tsbogend@xxxxxxxxxxxxxxxx>, "linux-parisc@xxxxxxxxxxxxxxx" <linux-parisc@xxxxxxxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, "svens@xxxxxxxxxxxxx" <svens@xxxxxxxxxxxxx>, "akpm@xxxxxxxxxxxxxxxxxxxx" <akpm@xxxxxxxxxxxxxxxxxxxx>, "linuxppc-dev@xxxxxxxxxxxxxxxx" <linuxppc-dev@xxxxxxxxxxxxxxxx>, "davem@xxxxxxxxxxxxx" <davem@xxxxxxxxxxxxx>, "mike.kravetz@xxxxxxxxxx" <mike.kravetz@xxxxxxxxxx>
- In-reply-to: <bf627d1a-42f8-77f3-6ac2-67edde2feb8a@linux.alibaba.com>
- References: <cover.1652002221.git.baolin.wang@linux.alibaba.com> <012a484019e7ad77c39deab0af52a6755d8438c8.1652002221.git.baolin.wang@linux.alibaba.com> <Ynek+b3k6PVN3x7J@FVFYT0MHHV2J.usts.net> <bf627d1a-42f8-77f3-6ac2-67edde2feb8a@linux.alibaba.com>
- User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0
Le 08/05/2022 à 15:09, Baolin Wang a écrit :
>
>
> On 5/8/2022 7:09 PM, Muchun Song wrote:
>> On Sun, May 08, 2022 at 05:36:39PM +0800, Baolin Wang wrote:
>>> It is incorrect to use ptep_clear_flush() to nuke a hugetlb page
>>> table when unmapping or migrating a hugetlb page, and will change
>>> to use huge_ptep_clear_flush() instead in the following patches.
>>>
>>> So this is a preparation patch, which changes the
>>> huge_ptep_clear_flush()
>>> to return the original pte to help to nuke a hugetlb page table.
>>>
>>> Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
>>> Acked-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
>>
>> Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
>
> Thanks for reviewing.
>
>>
>> But one nit below:
>>
>> [...]
>>> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
>>> index 8605d7e..61a21af 100644
>>> --- a/mm/hugetlb.c
>>> +++ b/mm/hugetlb.c
>>> @@ -5342,7 +5342,7 @@ static vm_fault_t hugetlb_wp(struct mm_struct
>>> *mm, struct vm_area_struct *vma,
>>> ClearHPageRestoreReserve(new_page);
>>> /* Break COW or unshare */
>>> - huge_ptep_clear_flush(vma, haddr, ptep);
>>> + (void)huge_ptep_clear_flush(vma, haddr, ptep);
>>
>> Why add a "(void)" here? Is there any warning if no "(void)"?
>> IIUC, I think we can remove this, right?
>
> I did not meet any warning without the casting, but this is per Mike's
> comment[1] to make the code consistent with other functions casting to
> void type explicitly in hugetlb.c file.
>
> [1]
> https://lore.kernel.org/all/495c4ebe-a5b4-afb6-4cb0-956c1b18d0cc@xxxxxxxxxx/
>
As far as I understand, Mike said that you should be accompagnied with a
big fat comment explaining why we ignore the returned value from
huge_ptep_clear_flush().
By the way huge_ptep_clear_flush() is not declared 'must_check' so this
cast is just visual polution and should be removed.
In the meantime the comment suggested by Mike should be added instead.
Christophe
[Index of Archives]
[Linux Kernel]
[Sparc Linux]
[DCCP]
[Linux ARM]
[Yosemite News]
[Linux SCSI]
[Linux x86_64]
[Linux for Ham Radio]