[PATCH] NOMMU: make SYSV SHM nattch work correctly
Make the SYSV SHM nattch counter work correctly by forcing multiple VMAs to
be produced to represent MAP_SHARED segments, even if they overlap exactly.
Using this test program:
	http://people.redhat.com/~dhowells/doshm.c
Run as:
	doshm sysv
I can see nattch going from one before the patch:
	# /doshm sysv
	Command: sysv
	shmid: 65536
	memory: 0xc3700000
	
c0b00000-
c0b04000 rw-p 
00000000 00:00 0
	
c0bb0000-
c0bba788 r-xs 
00000000 00:0b 
14582157  /lib/ld-uClibc-0.9.28.so
	
c3180000-
c31dede4 r-xs 
00000000 00:0b 
14582179  /lib/libuClibc-0.9.28.so
	
c3520000-
c352278c rw-p 
00000000 00:0b 
13763417  /doshm
	
c3584000-
c35865e8 r-xs 
00000000 00:0b 
13763417  /doshm
	
c3588000-
c358aa00 rw-p 
00008000 00:0b 
14582157  /lib/ld-uClibc-0.9.28.so
	
c3590000-
c359b6c0 rw-p 
00000000 00:00 0
	
c3620000-
c3640000 rwxp 
00000000 00:00 0
	
c3700000-
c37fa000 rw-S 
00000000 00:06 1411      /SYSV00000000 (deleted)
	
c3700000-
c37fa000 rw-S 
00000000 00:06 1411      /SYSV00000000 (deleted)
	nattch 1
To two after the patch:
	# /doshm sysv
	Command: sysv
	shmid: 0
	memory: 0xc3700000
	
c0bb0000-
c0bba788 r-xs 
00000000 00:0b 
14582157  /lib/ld-uClibc-0.9.28.so
	
c3180000-
c31dede4 r-xs 
00000000 00:0b 
14582179  /lib/libuClibc-0.9.28.so
	
c3320000-
c3340000 rwxp 
00000000 00:00 0
	
c3530000-
c35325e8 r-xs 
00000000 00:0b 
13763417  /doshm
	
c3534000-
c353678c rw-p 
00000000 00:0b 
13763417  /doshm
	
c3538000-
c353aa00 rw-p 
00008000 00:0b 
14582157  /lib/ld-uClibc-0.9.28.so
	
c3590000-
c359b6c0 rw-p 
00000000 00:00 0
	
c35a4000-
c35a8000 rw-p 
00000000 00:00 0
	
c3700000-
c37fa000 rw-S 
00000000 00:06 1369      /SYSV00000000 (deleted)
	
c3700000-
c37fa000 rw-S 
00000000 00:06 1369      /SYSV00000000 (deleted)
	nattch 2
That's +1 to nattch for each shmat() made.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>