mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
net: mm_account_pinned_pages() optimization
Adopt atomic_long_try_cmpxchg() in mm_account_pinned_pages() as it is slightly more efficient. Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
8c55facecd
commit
57fc05e8e8
@@ -1267,13 +1267,12 @@ int mm_account_pinned_pages(struct mmpin *mmp, size_t size)
|
||||
max_pg = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
|
||||
user = mmp->user ? : current_user();
|
||||
|
||||
old_pg = atomic_long_read(&user->locked_vm);
|
||||
do {
|
||||
old_pg = atomic_long_read(&user->locked_vm);
|
||||
new_pg = old_pg + num_pg;
|
||||
if (new_pg > max_pg)
|
||||
return -ENOBUFS;
|
||||
} while (atomic_long_cmpxchg(&user->locked_vm, old_pg, new_pg) !=
|
||||
old_pg);
|
||||
} while (!atomic_long_try_cmpxchg(&user->locked_vm, &old_pg, new_pg));
|
||||
|
||||
if (!mmp->user) {
|
||||
mmp->user = get_uid(user);
|
||||
|
||||
Reference in New Issue
Block a user