https://github.com/torvalds/linux
Revision 7e09e738afd21ef99f047425fc0b0c9be8b03254 authored by Hugh Dickins on 21 March 2014, 04:52:17 UTC, committed by Linus Torvalds on 21 March 2014, 05:09:09 UTC
Add remove_linear_migration_ptes_from_nonlinear(), to fix an interesting little include/linux/swapops.h:131 BUG_ON(!PageLocked) found by trinity: indicating that remove_migration_ptes() failed to find one of the migration entries that was temporarily inserted. The problem comes from remap_file_pages()'s switch from vma_interval_tree (good for inserting the migration entry) to i_mmap_nonlinear list (no good for locating it again); but can only be a problem if the remap_file_pages() range does not cover the whole of the vma (zap_pte() clears the range). remove_migration_ptes() needs a file_nonlinear method to go down the i_mmap_nonlinear list, applying linear location to look for migration entries in those vmas too, just in case there was this race. The file_nonlinear method does need rmap_walk_control.arg to do this; but it never needed vma passed in - vma comes from its own iteration. Reported-and-tested-by: Dave Jones <davej@redhat.com> Reported-and-tested-by: Sasha Levin <sasha.levin@oracle.com> Signed-off-by: Hugh Dickins <hughd@google.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 3fb725c
Tip revision: 7e09e738afd21ef99f047425fc0b0c9be8b03254 authored by Hugh Dickins on 21 March 2014, 04:52:17 UTC
mm: fix swapops.h:131 bug if remap_file_pages raced migration
mm: fix swapops.h:131 bug if remap_file_pages raced migration
Tip revision: 7e09e73
File | Mode | Size |
---|---|---|
802 | ||
8021q | ||
9p | ||
appletalk | ||
atm | ||
ax25 | ||
batman-adv | ||
bluetooth | ||
bridge | ||
caif | ||
can | ||
ceph | ||
core | ||
dcb | ||
dccp | ||
decnet | ||
dns_resolver | ||
dsa | ||
ethernet | ||
hsr | ||
ieee802154 | ||
ipv4 | ||
ipv6 | ||
ipx | ||
irda | ||
iucv | ||
key | ||
l2tp | ||
lapb | ||
llc | ||
mac80211 | ||
mac802154 | ||
mpls | ||
netfilter | ||
netlabel | ||
netlink | ||
netrom | ||
nfc | ||
openvswitch | ||
packet | ||
phonet | ||
rds | ||
rfkill | ||
rose | ||
rxrpc | ||
sched | ||
sctp | ||
sunrpc | ||
tipc | ||
unix | ||
vmw_vsock | ||
wimax | ||
wireless | ||
x25 | ||
xfrm | ||
Kconfig | -rw-r--r-- | 11.6 KB |
Makefile | -rw-r--r-- | 2.0 KB |
compat.c | -rw-r--r-- | 24.8 KB |
nonet.c | -rw-r--r-- | 552 bytes |
socket.c | -rw-r--r-- | 83.5 KB |
sysctl_net.c | -rw-r--r-- | 2.8 KB |
Computing file changes ...