On Mon, Jun 30, 2014 at 03:48:39PM -0700, Hugh Dickins wrote: > Under shmem swapping and swapoff load, I sometimes hit the > VM_BUG_ON_PAGE(!page->mapping) in mem_cgroup_commit_charge() at > mm/memcontrol.c:6502! Each time it has been a call from shmem_unuse(). > > Yes, there are some cases (most commonly when the page being unswapped > is in a file being unlinked and evicted at that time) when the charge > should not be committed. In the old scheme, the page got uncharged > again on release; but in the new scheme, it hits that BUG beforehand. > > It's a useful BUG, so adapt shmem_unuse() to allow for it. Which needs > more info from shmem_unuse_inode(): so abuse -EAGAIN internally to > replace the previous !found state (-ENOENT would be a more natural > code, but that's exactly what you get when the swap has been evicted). > > Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx> Thanks, Hugh! -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>