diff options
author | Dave Hansen <dave.hansen@linux.intel.com> | 2014-12-13 01:58:19 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-13 21:42:52 +0100 |
commit | d3c97900b427b8d5a476fdfe484267f09df418d6 (patch) | |
tree | 0169510392ae190dcec4376a7341efe955fa27fd /ipc/util.h | |
parent | ipc/msg: increase MSGMNI, remove scaling (diff) | |
download | linux-d3c97900b427b8d5a476fdfe484267f09df418d6.tar.xz linux-d3c97900b427b8d5a476fdfe484267f09df418d6.zip |
ipc/shm.c: fix overly aggressive shmdt() when calls span multiple segments
This is a highly-contrived scenario. But, a single shmdt() call can be
induced in to unmapping memory from mulitple shm segments. Example code
is here:
http://www.sr71.net/~dave/intel/shmfun.c
The fix is pretty simple: Record the 'struct file' for the first VMA we
encounter and then stick to it. Decline to unmap anything not from the
same file and thus the same segment.
I found this by inspection and the odds of anyone hitting this in practice
are pretty darn small.
Lightly tested, but it's a pretty small patch.
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Manfred Spraul <manfred@colorfullife.com>
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'ipc/util.h')
0 files changed, 0 insertions, 0 deletions