Hugh Dickins 05bf86b4cc tmpfs: fix race between swapoff and writepage
Shame on me!  Commit b1dea800ac39 "tmpfs: fix race between umount and
writepage" fixed the advertized race, but introduced another: as even
its comment makes clear, we cannot safely rely on a peek at list_empty()
while holding no lock - until info->swapped is set, shmem_unuse_inode()
may delete any formerly-swapped inode from the shmem_swaplist, which
in this case would leave a swap area impossible to swapoff.

Although I don't relish taking the mutex every time, I don't care much
for the alternatives either; and at least the peek at list_empty() in
shmem_evict_inode() (a hotter path since most inodes would never have
been swapped) remains safe, because we already truncated the whole file.

Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-05-14 12:18:55 -07:00
..
2011-03-31 11:26:23 -03:00
2009-04-01 08:59:13 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2009-09-22 07:17:35 -07:00
2011-03-31 11:26:23 -03:00
2010-03-24 16:31:21 -07:00
2011-01-13 17:32:46 -08:00
2010-05-21 18:31:21 -04:00
2011-03-31 11:26:23 -03:00
2011-03-29 14:05:12 +01:00
2011-04-28 11:28:21 -07:00
2011-05-11 18:50:45 -07:00
2011-03-10 08:52:27 +01:00
2011-03-31 11:26:23 -03:00
2007-10-20 01:27:18 +02:00
2011-03-10 08:52:26 +01:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-10 08:52:07 +01:00
2009-06-23 12:50:05 -07:00
2011-03-22 17:44:03 -07:00
2011-03-31 11:26:23 -03:00