Skip to content
  • David Howells's avatar
    [PATCH] NOMMU: make SYSV SHM nattch work correctly · 165b2392
    David Howells authored
    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: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    165b2392