1
linux/drivers/video
Jaya Kumar f31ad92f34 fbdev: bugfix for multiprocess defio
This patch is a bugfix for how defio handles multiple processes manipulating
the same framebuffer.

Thanks to Bernard Blackham for identifying this bug.

It occurs when two applications mmap the same framebuffer and concurrently
write to the same page.  Normally, this doesn't occur since only a single
process mmaps the framebuffer.  The symptom of the bug is that the mapping
applications will hang.  The cause is that defio incorrectly tries to add the
same page twice to the pagelist.  The solution I have is to walk the pagelist
and check for a duplicate before adding.  Since I needed to walk the pagelist,
I now also keep the pagelist in sorted order.

Signed-off-by: Jaya Kumar <jayakumar.lkml@gmail.com>
Cc: Bernard Blackham <bernard@largestprime.net>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-12 14:33:41 -07:00
..
aty fbdev: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
backlight backlight: Add OMAP1 PWL backlight driver 2008-02-07 09:31:52 +00:00
console fbcon: fix wrong vmode bits copied on console switch 2008-06-06 11:29:11 -07:00
display fbdev: fix race in device_create 2008-05-20 13:31:53 -07:00
geode fix "lxfb: extend PLL table to support dotclocks below 25 MHz" 2008-05-14 19:11:13 -07:00
i810 i810fb: fix console switch regression 2008-03-19 18:53:36 -07:00
intelfb fbdev: intelfb: add support for the Intel Integrated Graphics Controller 965G/965GM 2008-04-28 08:58:41 -07:00
kyro
logo video/logo: add support for Blackfin/Linux logo for framebuffer console 2008-05-14 19:11:14 -07:00
matrox fbdev: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
mbx mbxfb: fix incorrect argument type 2008-03-10 18:01:20 -07:00
nvidia video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
omap
pnx4008 drivers/video/pnx4008: eliminate double free 2008-05-13 08:02:24 -07:00
riva video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
savage savagefb: speed up the I2C bus 2008-04-28 08:58:38 -07:00
sis fbdev: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
vermilion mm: remove nopage 2008-04-28 08:58:18 -07:00
68328fb.c
acornfb.c
acornfb.h
am200epd.c fbdev: platforming metronomefb and am200epd 2008-04-28 08:58:41 -07:00
amba-clcd.c
amifb.c m68k: Return -ENODEV if no device is found 2008-05-18 13:28:50 -07:00
arcfb.c
arkfb.c fbdev: framebuffer_alloc() fixes 2008-04-28 08:58:38 -07:00
asiliantfb.c
atafb_iplan2p2.c
atafb_iplan2p4.c
atafb_iplan2p8.c
atafb_mfb.c
atafb_utils.h
atafb.c fbdev: use DIV_ROUND_UP or roundup 2008-04-28 08:58:35 -07:00
atafb.h
atmel_lcdfb.c atmel_lcdfb: fix pixclock divider calculation 2008-05-13 08:02:25 -07:00
au1100fb.c
au1100fb.h
au1200fb.c
au1200fb.h
bf54x-lq043fb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
bfin-t350mcqb-fb.c blackfin video driver: fix bug when opening/reading/mmaping BF54x and BF52x framebuffer simultaneously 2008-03-28 14:45:22 -07:00
bt431.h
bt455.h
bw2.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
c2p.c
c2p.h
cfbcopyarea.c fb: add support for foreign endianness 2008-04-28 08:58:35 -07:00
cfbfillrect.c fb: add support for foreign endianness 2008-04-28 08:58:35 -07:00
cfbimgblt.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
cg3.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
cg6.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
cg14.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
chipsfb.c PM: Introduce PM_EVENT_HIBERNATE callback state 2008-02-23 10:40:04 -08:00
cirrusfb.c drivers/video/cirrusfb: fix RAM address printk 2008-06-12 18:05:41 -07:00
clps711xfb.c proc: remove proc_root from drivers 2008-04-29 08:06:18 -07:00
controlfb.c
controlfb.h
cyber2000fb.c
cyber2000fb.h
cyblafb.c
dnfb.c m68k: dnfb doesnt check for Apollo 2008-05-18 13:28:49 -07:00
edid.h
efifb.c
epson1355fb.c
fb_ddc.c
fb_defio.c fbdev: bugfix for multiprocess defio 2008-07-12 14:33:41 -07:00
fb_draw.h fb: add support for foreign endianness 2008-04-28 08:58:35 -07:00
fb_notify.c
fb_sys_fops.c
fbcmap.c
fbcvt.c
fbmem.c fb: convert /proc/fb to seq_file interface 2008-04-28 08:58:41 -07:00
fbmon.c
fbsysfs.c
ffb.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
fm2fb.c
fsl-diu-fb.c Fix broken fix for fsl-diu-db 2008-07-08 12:51:08 -07:00
fsl-diu-fb.h fbdev: powerpc: driver for Freescale 8610 and 5121 DIU 2008-04-28 08:58:40 -07:00
g364fb.c
gbefb.c
gxt4500.c fbdev: use DIV_ROUND_UP or roundup 2008-04-28 08:58:35 -07:00
hecubafb.c fbdev: platforming hecubafb and n411 2008-04-28 08:58:41 -07:00
hgafb.c hgafb: resource management fix 2008-06-12 18:05:40 -07:00
hitfb.c fb: hitfb: Balance probe/remove section annotations. 2008-03-06 13:56:33 +09:00
hpfb.c m68k: Return -ENODEV if no device is found 2008-05-18 13:28:50 -07:00
igafb.c
imacfb.c
imsttfb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
imxfb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
imxfb.h
Kconfig w100fb: do not depend on SHARPSL 2008-07-04 10:40:08 -07:00
leo.c sparc: get leo framebuffer working 2008-06-10 14:13:09 -07:00
macfb.c
macmodes.c
macmodes.h
Makefile fbdev: platforming metronomefb and am200epd 2008-04-28 08:58:41 -07:00
maxinefb.c
metronomefb.c video: use get/put_unaligned_* helpers 2008-04-29 08:06:28 -07:00
modedb.c fbdev: export symbol fb_mode_option 2008-06-06 11:29:12 -07:00
n411.c fbdev: platforming hecubafb and n411 2008-04-28 08:58:41 -07:00
neofb.c
offb.c powerpc: offb: add support for foreign endianness 2008-04-28 08:58:35 -07:00
output.c
p9100.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
platinumfb.c
platinumfb.h
pm2fb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
pm3fb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
pmag-aa-fb.c fbcon: fix color generation for monochrome framebuffer 2008-02-06 10:41:18 -08:00
pmag-ba-fb.c
pmagb-b-fb.c
ps3fb.c ps3fb: fix modedb typos 2008-02-06 10:41:17 -08:00
pvr2fb.c fb: pvr2fb: Fix up remaining section mismatch. 2008-03-06 13:39:18 +09:00
pxafb.c [ARM] 5117/1: pxafb: fix __devinit/exit annotations 2008-06-25 18:50:14 +01:00
pxafb.h pxafb: preliminary smart panel interface support 2008-04-30 08:29:32 -07:00
q40fb.c
s1d13xxxfb.c
s3c2410fb.c S3C2410: fix driver MODULE_ALIAS() 2008-05-24 09:56:13 -07:00
s3c2410fb.h S3C2410: clean out changelog header and tidy 2008-05-24 09:56:13 -07:00
s3fb.c fbdev: framebuffer_alloc() fixes 2008-04-28 08:58:38 -07:00
sa1100fb.c
sa1100fb.h video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
sbuslib.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
sbuslib.h sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
sgivwfb.c
skeletonfb.c
sm501fb.c SM501: reverse FPEN/VBIASEN flags behaviour 2008-05-24 09:56:12 -07:00
sstfb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
sticore.h
stifb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
sunxvr500.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
sunxvr2500.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
svgalib.c
syscopyarea.c fb: add support for foreign endianness 2008-04-28 08:58:35 -07:00
sysfillrect.c fb: add support for foreign endianness 2008-04-28 08:58:35 -07:00
sysimgblt.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
tcx.c sparc video: remove open boot prom code 2008-05-08 21:37:30 -07:00
tdfxfb.c video: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:42 -07:00
tgafb.c
tridentfb.c tridentfb: improve clock setting accuracy 2008-05-13 08:02:24 -07:00
uvesafb.c drivers/video/uvesafb.c: fix error-path memory leak 2008-04-28 08:58:41 -07:00
valkyriefb.c
valkyriefb.h
vesafb.c
vfb.c
vga16fb.c
vgastate.c
vt8623fb.c fbdev: framebuffer_alloc() fixes 2008-04-28 08:58:38 -07:00
w100fb.c w100fb: add 80 MHz modeline 2008-07-04 10:40:08 -07:00
w100fb.h
xen-fbfront.c xen pvfb: Para-virtual framebuffer, keyboard and pointer driver 2008-04-24 23:57:33 +02:00
xilinxfb.c