mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
xsk: share the mmap_sem for page pinning
Holding mmap_sem exclusively for a gup() is an overkill. Lets
share the lock and replace the gup call for gup_longterm(), as
it is better suited for the lifetime of the pinning.
Fixes: c0c77d8fb7 ("xsk: add user memory registration support sockopt")
Signed-off-by: Davidlohr Bueso <[email protected]>
Cc: David S. Miller <[email protected]>
Cc: Bjorn Topel <[email protected]>
Cc: Magnus Karlsson <[email protected]>
CC: [email protected]
Acked-by: Björn Töpel <[email protected]>
Signed-off-by: Daniel Borkmann <[email protected]>
This commit is contained in:
1 parent
3defaf2f15
commit
e451eb5106
1 file changed
+4
-4
+4
-4
@@ -259,10 +259,10 @@ static int xdp_umem_pin_pages(struct xdp_umem *umem)
|
||||
if (!umem->pgs)
|
||||
return -ENOMEM;
|
||||
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
npgs = get_user_pages(umem->address, umem->npgs,
|
||||
gup_flags, &umem->pgs[0], NULL);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
down_read(¤t->mm->mmap_sem);
|
||||
npgs = get_user_pages_longterm(umem->address, umem->npgs,
|
||||
gup_flags, &umem->pgs[0], NULL);
|
||||
up_read(¤t->mm->mmap_sem);
|
||||
|
||||
if (npgs != umem->npgs) {
|
||||
if (npgs >= 0) {
|
||||
|
||||
Reference in new issue
Block a user