linux/drivers/video/fbdev
Mikulas Patocka 450c8ecd74 framebuffer: fix screen corruption when copying
commit 5b789da8a7 upstream.

The function bitcpy_rev has a bug that may result in screen corruption.
The bug happens under these conditions:
* the end of the destination area of a copy operation is aligned on a long
  word boundary
* the end of the source area is not aligned on a long word boundary
* we are copying more than one long word

In this case, the variable shift is non-zero and the variable first is
zero. The statements FB_WRITEL(comp(d0, FB_READL(dst), first), dst) reads
the last long word of the destination and writes it back unchanged
(because first is zero). Correctly, we should write the variable d0 to the
last word of the destination in this case.

This patch fixes the bug by introducing and extra test if first is zero.

The patch also removes the references to fb_memmove in the code that is
commented out because fb_memmove was removed from framebuffer subsystem.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2014-11-17 14:11:45 +00:00
..
aty fbdev: move fbdev core files to separate directory 2014-04-17 08:10:19 +03:00
core framebuffer: fix screen corruption when copying 2014-11-17 14:11:45 +00:00
exynos video: exynos: Add a dependency to the menu 2014-05-09 12:55:48 +03:00
geode video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
i810 video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
intelfb video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
kyro video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
matrox matroxfb: perform a dummy read of M_STATUS 2014-05-23 13:44:25 +03:00
mb862xx video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
mbx video/mbx: fix building debugfs support 2014-05-09 12:55:46 +03:00
mmp video: mmpfb: cleanup some static checker warnings in probe() 2014-04-30 13:57:29 +03:00
msm video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
nvidia video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
omap video: omap: delete support for early fbmem allocation 2014-05-16 11:56:12 +03:00
omap2 video: omapdss: Fix potential null pointer dereference 2014-06-26 14:40:15 +03:00
riva video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
savage video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sis video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
vermilion video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
via video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
68328fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
acornfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
acornfb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
amba-clcd.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
amifb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
arcfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
arkfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
asiliantfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
atafb.c m68k/atari - atafb: convert allocation of fb ram to new interface 2014-05-26 22:41:24 +02:00
atafb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
atafb_iplan2p2.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
atafb_iplan2p4.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
atafb_iplan2p8.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
atafb_mfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
atafb_utils.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
atmel_lcdfb.c drivers:video:fbdev atmel_lcdfb.c power GPIO registration bug 2014-06-23 14:45:49 +03:00
au1100fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
au1100fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
au1200fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
au1200fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
auo_k190x.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
auo_k190x.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
auo_k1900fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
auo_k1901fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
bf54x-lq043fb.c video: delete unneeded call to platform_get_drvdata 2014-05-19 16:03:57 +03:00
bf537-lq035.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
bfin-lq035q1-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
bfin-t350mcqb-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
bfin_adv7393fb.c fb: adv7393: add missing semicolon 2014-07-01 13:18:38 +03:00
bfin_adv7393fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
broadsheetfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
bt431.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
bt455.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
bw2.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
c2p.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
c2p_core.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
c2p_iplan2.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
c2p_planar.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
carminefb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
carminefb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
carminefb_regs.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
cg3.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
cg6.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
cg14.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
chipsfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
cirrusfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
clps711xfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
cobalt_lcdfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
controlfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
controlfb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
cyber2000fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
cyber2000fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
da8xx-fb.c video: da8xx-fb: Add support for Densitron 84-0023-001T 2014-04-22 08:51:27 +03:00
dnfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
edid.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
efifb.c x86, ia64: Move EFI_FB vga_default_device() initialization to pci_vga_fixup() 2014-10-09 12:23:49 -07:00
ep93xx-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
fb-puv3.c drivers/video/fbdev/fb-puv3.c: Add header files for function unifb_mmap 2014-05-23 13:51:10 +03:00
ffb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
fm2fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
fsl-diu-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
g364fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
gbefb.c video: fbdev: Fix format string mismatch in gbefb.c 2014-04-30 11:24:40 +03:00
goldfishfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
grvga.c video: fbdev: grvga.c: Fix for possible null pointer dereference 2014-05-23 13:47:31 +03:00
gxt4500.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
hecubafb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
hgafb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
hitfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
hpfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
hyperv_fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
i740_reg.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
i740fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
igafb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
imsttfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
imxfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
jz4740_fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
Kconfig video: mx3fb: Add backlight control support 2014-05-16 11:58:39 +03:00
leo.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
macfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
macmodes.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
macmodes.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
Makefile fbdev: move fbdev core files to separate directory 2014-04-17 08:10:19 +03:00
maxinefb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
metronomefb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
mx3fb.c video: mx3fb: Add backlight control support 2014-05-16 11:58:39 +03:00
mxsfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
n411.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
neofb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
nuc900fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
nuc900fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
ocfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
offb.c Revert "offb: Add palette hack for little endian" 2014-06-16 19:45:45 +10:00
p9100.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
platinumfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
platinumfb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pm2fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pm3fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pmag-aa-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pmag-ba-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pmagb-b-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
ps3fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pvr2fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pxa3xx-gcu.c video: pxa3xx-gcu: use devm_ioremap_resource() 2014-04-30 14:02:15 +03:00
pxa3xx-gcu.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pxa168fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pxa168fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pxafb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pxafb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
q40fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
s1d13xxxfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
s3c-fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
s3c2410fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
s3c2410fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
s3fb.c video: fbdev: s3fb.c: Fix for possible null pointer dereference 2014-05-23 13:47:31 +03:00
sa1100fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sa1100fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sbuslib.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sbuslib.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sh7760fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sh_mipi_dsi.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sh_mobile_hdmi.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sh_mobile_lcdcfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sh_mobile_lcdcfb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sh_mobile_meram.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
simplefb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
skeletonfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sm501fb.c drivers/video/fbdev/sm501fb.c: avoid world-writable sysfs files. 2014-05-14 10:53:54 +09:30
smscufx.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
ssd1307fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sstfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sticore.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
stifb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sunxvr500.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sunxvr1000.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
sunxvr2500.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
tcx.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
tdfxfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
tgafb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
tmiofb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
tridentfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
udlfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
uvesafb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
valkyriefb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
valkyriefb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
vesafb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
vfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
vga16fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
vt8500lcdfb.c video: vt8500lcdfb: Remove kfree call since devm_kzalloc() is used 2014-06-26 14:40:07 +03:00
vt8500lcdfb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
vt8623fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
w100fb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
w100fb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
wm8505fb.c video: fbdev: Fix format string mismatch in wm8505fb.c 2014-04-30 11:24:40 +03:00
wm8505fb_regs.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
wmt_ge_rops.c fbdev: move fbdev core files to separate directory 2014-04-17 08:10:19 +03:00
wmt_ge_rops.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
xen-fbfront.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
xilinxfb.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00