From: John Hubbard <jhubbard@nvidia.com>
To: Alistair Popple <apopple@nvidia.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
Shigeru Yoshida <syoshida@redhat.com>,
David Hildenbrand <david@redhat.com>,
Jason Gunthorpe <jgg@nvidia.com>,
Minchan Kim <minchan@kernel.org>,
Pasha Tatashin <pasha.tatashin@soleen.com>
Subject: Re: [PATCH] mm/gup: stop leaking pinned pages in low memory conditions
Date: Wed, 16 Oct 2024 15:22:52 -0700 [thread overview]
Message-ID: <f90a2900-74a6-4264-9bf6-2f8d51d21980@nvidia.com> (raw)
In-Reply-To: <87ttdbofpw.fsf@nvdebian.thelocal>
On 10/16/24 3:13 PM, Alistair Popple wrote:
> John Hubbard <jhubbard@nvidia.com> writes:
...
>> diff --git a/mm/gup.c b/mm/gup.c
>> index a82890b46a36..24acf53c8294 100644
>> --- a/mm/gup.c
>> +++ b/mm/gup.c
>> @@ -2492,6 +2492,17 @@ static long __gup_longterm_locked(struct mm_struct *mm,
>>
>> /* FOLL_LONGTERM implies FOLL_PIN */
>> rc = check_and_migrate_movable_pages(nr_pinned_pages, pages);
>> +
>> + /*
>> + * The __get_user_pages_locked() call happens before we know
>> + * that whether it's possible to successfully complete the whole
>> + * operation. To compensate for this, if we get an unexpected
>> + * error (such as -ENOMEM) then we must unpin everything, before
>> + * erroring out.
>> + */
>> + if (rc != -EAGAIN && rc != 0)
>> + unpin_user_pages(pages, nr_pinned_pages);
>
> I know this is going to fall out of the loop in the next line but given
> this is an error handling case it would be nice if this was made
> explicit here with a break statement. It looks correct to me though so:
Yes, I'm not sure that adding another line of code for cosmetics really
makes this better. At this point, smaller is better IMHO, and then the
next step should be something bigger, such as refactoring to avoid the
tri-state return codes.
>
> Reviewed-by: Alistair Popple <apopple@nvidia.com>
Thanks for the super fast response and the review!
thanks,
--
John Hubbard
next prev parent reply other threads:[~2024-10-16 22:23 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 20:22 John Hubbard
2024-10-16 21:57 ` Andrew Morton
2024-10-16 22:05 ` John Hubbard
2024-10-16 22:41 ` Andrew Morton
2024-10-16 22:13 ` Alistair Popple
2024-10-16 22:22 ` John Hubbard [this message]
2024-10-17 8:51 ` David Hildenbrand
2024-10-17 8:53 ` David Hildenbrand
2024-10-17 17:06 ` John Hubbard
2024-10-17 17:10 ` David Hildenbrand
2024-10-17 16:54 ` John Hubbard
2024-10-17 21:28 ` Alistair Popple
2024-10-17 21:47 ` David Hildenbrand
2024-10-17 21:57 ` John Hubbard
2024-10-17 22:03 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f90a2900-74a6-4264-9bf6-2f8d51d21980@nvidia.com \
--to=jhubbard@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=david@redhat.com \
--cc=jgg@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan@kernel.org \
--cc=pasha.tatashin@soleen.com \
--cc=syoshida@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox