Jason Gunthorpe 53b2d09bdd mm/gup: remove the restriction on locked with FOLL_LONGTERM
This restriction was created because FOLL_LONGTERM used to scan the vma
list, so it could not tolerate becoming unlocked.  That was fixed in
commit 52650c8b466b ("mm/gup: remove the vma allocation from
gup_longterm_locked()") and the restriction on !vma was removed.

However, the locked restriction remained, even though it isn't necessary
anymore.

Adjust __gup_longterm_locked() so it can handle the mmap_read_lock()
becoming unlocked while it is looping for migration.  Migration does not
require the mmap_read_sem because it is only handling struct pages.  If we
had to unlock then ensure the whole thing returns unlocked.

Remove __get_user_pages_remote() and __gup_longterm_unlocked().  These
cases can now just directly call other functions.

Link: https://lkml.kernel.org/r/0-v1-b9ae39aa8884+14dbb-gup_longterm_locked_jgg@nvidia.com
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2022-11-30 15:58:56 -08:00
..
2022-11-30 15:58:53 -08:00
2022-09-26 19:46:16 -07:00
2022-11-30 15:58:54 -08:00
2022-03-23 18:03:08 -07:00
2022-11-30 15:58:55 -08:00
2022-10-03 14:03:04 -07:00
2022-10-03 14:02:43 -07:00
2022-09-26 19:46:09 -07:00
2022-09-26 19:46:28 -07:00
2022-09-26 19:46:26 -07:00
2022-11-30 15:58:55 -08:00
2022-11-30 15:58:46 -08:00
2022-01-15 16:30:31 +02:00