xserver-multidpi/Xext
Keith Packard 41da295eb5 Trap SIGBUS to handle truncated shared memory segments
If a client passes a section of memory via file descriptor and then
subsequently truncates that file, the underlying pages will be freed
and the addresses invalidated. Subsequent accesses to the page will
fail with a SIGBUS error.

Trap that SIGBUS, figure out which segment was causing the error and
then allocate new pages to fill in for that region. Mark the offending
shared segment as invalid and free the resource ID so that the client
will be able to tell when subsequently attempting to use the segment.

Signed-off-by: Keith Packard <keithp@keithp.com>

v2: Use MAP_FIXED to simplify the recovery logic (Mark Kettenis)
v3: Also catch errors in ShmCreateSegment

Conflicts:
	include/dix-config.h.in
	include/xorg-config.h.in
2013-11-11 15:16:07 -08:00
..
bigreq.c Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
dpms.c Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
dpmsproc.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
dpmsstubs.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
geext.c GE: Remove unused RT_GECLIENT 2012-07-10 00:42:10 -07:00
geext.h Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
geint.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
hashtable.c Xext: include dix-config.h 2012-05-24 15:52:38 +10:00
hashtable.h Xext: add a generic hashtable implementation 2012-04-18 12:49:06 +03:00
Makefile.am Xext: Only build one library 2012-07-10 00:01:49 -07:00
panoramiX.c dix: FIXES is not optional 2013-09-10 13:28:24 -04:00
panoramiX.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
panoramiXh.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
panoramiXprocs.c Use C99 designated initializers in Xext Replies 2012-07-09 19:58:30 -07:00
panoramiXsrv.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
panoramiXSwap.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
saver.c dix: provide accessor methods for the last device event time 2013-10-18 16:44:32 +10:00
security.c security: Don't count RetainPermanent clients twice 2013-09-10 13:26:25 -04:00
securitysrv.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
shape.c Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
shm.c Trap SIGBUS to handle truncated shared memory segments 2013-11-11 15:16:07 -08:00
shmint.h Trap SIGBUS to handle truncated shared memory segments 2013-11-11 15:16:07 -08:00
sleepuntil.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
sleepuntil.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
sync.c Disable DRI3 and sync fence FD functions if xshmfence isn't available 2013-11-04 18:53:36 -08:00
syncsdk.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
syncsrv.h dri3: Add DRI3 extension 2013-10-31 16:58:30 -07:00
xace.c Xext: fix shadow warnings 2012-11-05 13:25:08 -06:00
xace.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xacestr.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xcmisc.c Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
xf86bigfont.c Xext: fix unused variable warnings in xf86bigfont.c 2012-11-05 13:25:06 -06:00
xf86bigfontsrv.h Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
xres.c Xext: fix redundant redeclaration warnings 2012-11-05 13:25:07 -06:00
xselinux_ext.c Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
xselinux_hooks.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xselinux_label.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xselinux.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xselinuxint.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
xtest.c Xext: if a root window is given in XTestFakeInput, move to that 2013-02-08 13:49:49 +10:00
xvdisp.c Xext: Move MIT-SHM 'ShmDesc' to shmint.h 2013-10-31 16:57:57 -07:00
xvdisp.h Fix swapped Xv dispatch under Xinerama. 2007-12-02 14:15:36 -05:00
xvdix.h Xv: Remove excessive module-induced indirection 2012-07-09 23:28:37 -07:00
xvmain.c Stop the shouting 2013-04-16 13:54:59 +10:00
xvmc.c Fix two more C99 initialization mistakes using members of same struct 2012-07-16 21:24:49 -07:00
xvmcext.h Move Xv and XvMC from extmod to built-in 2012-07-09 23:28:37 -07:00