linux/drivers/video
Geert Uytterhoeven a684e7d330 fbdev: fix fb_compat_ioctl() deadlocks
commit 3e680aae4e ("fb: convert
lock/unlock_kernel() into local fb mutex") introduced several deadlocks
in the fb_compat_ioctl() path, as mutex_lock() doesn't allow recursion,
unlike lock_kernel().  This broke frame buffer applications on 64-bit
systems with a 32-bit userland.

commit 120a37470c ("framebuffer compat_ioctl
deadlock") fixed one of the deadlocks.

This patch fixes the remaining deadlocks:
  - Revert commit 120a37470c,
  - Extract the core logic of fb_ioctl() into a new function do_fb_ioctl(),
  - Change all callsites of fb_ioctl() where info->lock is already held to
    call do_fb_ioctl() instead,
  - Add sparse annotations to all routines that take info->lock.

Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Cc: Mikulas Patocka <mpatocka@redhat.com>
Cc: Krzysztof Helt <krzysztof.h1@wp.pl>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-11-06 15:41:19 -08:00
..
aty radeonfb: accelerate imageblit and other improvements 2008-10-16 11:21:44 -07:00
backlight [ARM] corgi_lcd: fix simultaneous compilation with corgi_bl 2008-10-29 11:45:37 +08:00
console fbcon: don't inline updatescrollmode 2008-10-30 11:38:46 -07:00
display
geode
i810
intelfb
kyro
logo
matrox matroxfb: support G200eV chip 2008-10-16 11:21:45 -07:00
mb862xx fbdev: add new framebuffer driver for Fujitsu MB862xx GDCs 2008-11-06 15:41:18 -08:00
mbx
nvidia
omap Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-10-16 11:25:32 -07:00
pnx4008
riva
savage
sis
vermilion
via viafb: removed duplicated #include's 2008-10-30 11:38:45 -07:00
68328fb.c
acornfb.c
acornfb.h
amba-clcd.c
amifb.c
arcfb.c
arkfb.c
asiliantfb.c
atafb.c
atafb.h
atafb_iplan2p2.c
atafb_iplan2p4.c
atafb_iplan2p8.c
atafb_mfb.c
atafb_utils.h
atmel_lcdfb.c atmel_lcdfb: disallow setting larger resolution than the framebuffer memory can handle 2008-10-16 11:21:44 -07:00
au1100fb.c
au1100fb.h
au1200fb.c
au1200fb.h
bf54x-lq043fb.c
bfin-t350mcqb-fb.c
bt431.h
bt455.h
bw2.c
c2p.c
c2p.h
carminefb.c framebuffer: fix carminefb section mismatch 2008-10-16 11:21:45 -07:00
carminefb.h
carminefb_regs.h
cfbcopyarea.c
cfbfillrect.c
cfbimgblt.c
cg3.c
cg6.c
cg14.c
chipsfb.c
cirrusfb.c section fixes for cirrusfb 2008-11-01 12:40:38 -07:00
clps711xfb.c
cobalt_lcdfb.c
controlfb.c
controlfb.h
cyber2000fb.c
cyber2000fb.h
cyblafb.c
dnfb.c
edid.h
efifb.c efifb/imacfb consolidation + hardware support 2008-10-16 11:21:44 -07:00
epson1355fb.c
fb_ddc.c
fb_defio.c
fb_draw.h
fb_notify.c
fb_sys_fops.c
fbcmap.c
fbcvt.c
fbmem.c fbdev: fix fb_compat_ioctl() deadlocks 2008-11-06 15:41:19 -08:00
fbmon.c fbmon: fix EDID parser to detect interlace modes 2008-10-16 11:21:44 -07:00
fbsysfs.c
ffb.c
fm2fb.c
fsl-diu-fb.c
fsl-diu-fb.h
g364fb.c
gbefb.c
gxt4500.c
hecubafb.c
hgafb.c
hitfb.c
hpfb.c
igafb.c
imsttfb.c
imxfb.c
imxfb.h
Kconfig fbdev: add new framebuffer driver for Fujitsu MB862xx GDCs 2008-11-06 15:41:18 -08:00
leo.c
macfb.c
macmodes.c
macmodes.h
Makefile fbdev: add new framebuffer driver for Fujitsu MB862xx GDCs 2008-11-06 15:41:18 -08:00
maxinefb.c
metronomefb.c
modedb.c
n411.c
neofb.c
offb.c
output.c
p9100.c
platinumfb.c
platinumfb.h
pm2fb.c
pm3fb.c
pmag-aa-fb.c
pmag-ba-fb.c
pmagb-b-fb.c
ps3fb.c
pvr2fb.c
pxafb.c
pxafb.h
q40fb.c
s1d13xxxfb.c fbdev: allow more chip revisions in Epson s1d13... video driver 2008-10-16 11:21:45 -07:00
s3c2410fb.c
s3c2410fb.h
s3fb.c
sa1100fb.c
sa1100fb.h
sbuslib.c
sbuslib.h
sgivwfb.c
sh7760fb.c
sh_mobile_lcdcfb.c video: add sh_mobile_lcdc platform flags 2008-10-20 11:38:50 +09:00
skeletonfb.c
sm501fb.c
sstfb.c
sticore.h
stifb.c
sunxvr500.c
sunxvr2500.c
svgalib.c
syscopyarea.c
sysfillrect.c
sysimgblt.c
tcx.c
tdfxfb.c
tgafb.c
tmiofb.c fbdev: add new TMIO framebuffer driver 2008-10-16 11:21:45 -07:00
tridentfb.c
uvesafb.c uvesafb: don't treat mode info retrieval failures as errors 2008-10-16 11:21:44 -07:00
valkyriefb.c
valkyriefb.h
vesafb.c
vfb.c
vga16fb.c
vgastate.c
vt8623fb.c
w100fb.c
w100fb.h
xen-fbfront.c
xilinxfb.c