Re: [PATCH v3 2/3] mm/gup: remove unneeded checking in follow_page_pte()

From: Oscar Salvador
Date: Tue Apr 08 2025 - 05:04:39 EST


On Mon, Apr 07, 2025 at 11:03:05AM +0800, Baoquan He wrote:
> In __get_user_pages(), it will traverse page table and take a reference
> to the page the given user address corresponds to if GUP_GET or GUP_PIN
> is set. However, it's not supported both GUP_GET and GUP_PIN are set.
> Even though this check need be done, it should be done earlier, but not
> doing it till entering into follow_page_pte() and failed.
>
> Furthermore, this checking has been done in is_valid_gup_args() and all
> external users of __get_user_pages() will call is_valid_gup_args() to
> catch the illegal setting. We don't need to worry about internal users
> of __get_user_pages() because the gup_flags are set by MM code correctly.
>
> Here remove the checking in follow_page_pte(), and add VM_WARN_ON_ONCE()
> to catch the possible exceptional setting just in case.
>
> And also change the VM_BUG_ON to VM_WARN_ON_ONCE() for checking
> (!!pages != !!(gup_flags & (FOLL_GET | FOLL_PIN))) because the checking
> has been done in is_valid_gup_args() for external users of __get_user_pages().

I will also note that you changed the flags check to VM_WARN_ON_ONCE.
I guess this is fine as we have the WARN_ON_ONCE version in
is_valid_gup_args().

> Signed-off-by: Baoquan He <bhe@xxxxxxxxxx>

LGTM,

Reviewed-by: Oscar Salvador <osalvador@xxxxxxx>


--
Oscar Salvador
SUSE Labs