ANDROID: mm: page_pinner: use put_user_page at get_futex_key
get_futex_key uses get_user_pages_fast so close the false positive by using pin_user_page. Page pinned via pid 686, ts 20096178239 ns PFN 86760 Block 169 type Movable Flags 0xfffffc0080016(referenced|uptodate|lru|swapbacked) try_grab_compound_head+0x1e8/0x240 internal_get_user_pages_fast+0x66d/0xca0 get_futex_key+0x8e/0x440 futex_wake+0x67/0x180 do_futex+0x7c5/0xb20 mm_release+0xb6/0xc0 do_exit+0x1dc/0xa40 __x64_sys_exit+0x17/0x20 do_syscall_64+0x33/0x80 entry_SYSCALL_64_after_hwframe+0x44/0xae Bug: 183414571 Signed-off-by: Minchan Kim <minchan@kernel.org> Signed-off-by: Minchan Kim <minchan@google.com> Change-Id: I217b2712782eb571e68191d201e3781f57caf4d9
This commit is contained in:
@@ -588,7 +588,7 @@ again:
|
|||||||
lock_page(page);
|
lock_page(page);
|
||||||
shmem_swizzled = PageSwapCache(page) || page->mapping;
|
shmem_swizzled = PageSwapCache(page) || page->mapping;
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
put_page(page);
|
put_user_page(page);
|
||||||
|
|
||||||
if (shmem_swizzled)
|
if (shmem_swizzled)
|
||||||
goto again;
|
goto again;
|
||||||
@@ -638,7 +638,7 @@ again:
|
|||||||
|
|
||||||
if (READ_ONCE(page->mapping) != mapping) {
|
if (READ_ONCE(page->mapping) != mapping) {
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
put_page(page);
|
put_user_page(page);
|
||||||
|
|
||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
@@ -646,7 +646,7 @@ again:
|
|||||||
inode = READ_ONCE(mapping->host);
|
inode = READ_ONCE(mapping->host);
|
||||||
if (!inode) {
|
if (!inode) {
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
put_page(page);
|
put_user_page(page);
|
||||||
|
|
||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
@@ -658,7 +658,7 @@ again:
|
|||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
put_page(page);
|
put_user_page(page);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user