https://github.com/torvalds/linux
Revision d3cb8bf6081b8b7a2dabb1264fe968fd870fa595 authored by Mel Gorman on 02 October 2014, 18:47:41 UTC, committed by Linus Torvalds on 02 October 2014, 18:57:18 UTC
A migration entry is marked as write if pte_write was true at the time the
entry was created. The VMA protections are not double checked when migration
entries are being removed as mprotect marks write-migration-entries as
read. It means that potentially we take a spurious fault to mark PTEs write
again but it's straight-forward. However, there is a race between write
migrations being marked read and migrations finishing. This potentially
allows a PTE to be write that should have been read. Close this race by
double checking the VMA permissions using maybe_mkwrite when migration
completes.

[torvalds@linux-foundation.org: use maybe_mkwrite]
Cc: stable@vger.kernel.org
Signed-off-by: Mel Gorman <mgorman@suse.de>
Acked-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 50dddff
Raw File
Tip revision: d3cb8bf6081b8b7a2dabb1264fe968fd870fa595 authored by Mel Gorman on 02 October 2014, 18:47:41 UTC
mm: migrate: Close race between migration completion and mprotect
Tip revision: d3cb8bf
compatibility-list.txt
	Namespaces compatibility list

This document contains the information about the problems user
may have when creating tasks living in different namespaces.

Here's the summary. This matrix shows the known problems, that
occur when tasks share some namespace (the columns) while living
in different other namespaces (the rows):

	UTS	IPC	VFS	PID	User	Net
UTS	 X
IPC		 X	 1
VFS			 X
PID		 1	 1	 X
User		 2	 2		 X
Net						 X

1. Both the IPC and the PID namespaces provide IDs to address
   object inside the kernel. E.g. semaphore with IPCID or
   process group with pid.

   In both cases, tasks shouldn't try exposing this ID to some
   other task living in a different namespace via a shared filesystem
   or IPC shmem/message. The fact is that this ID is only valid
   within the namespace it was obtained in and may refer to some
   other object in another namespace.

2. Intentionally, two equal user IDs in different user namespaces
   should not be equal from the VFS point of view. In other
   words, user 10 in one user namespace shouldn't have the same
   access permissions to files, belonging to user 10 in another
   namespace.

   The same is true for the IPC namespaces being shared - two users
   from different user namespaces should not access the same IPC objects
   even having equal UIDs.

   But currently this is not so.

back to top