Skip to content

Commit

Permalink
Merge tag 'fbdev-fixes-for-3.6-1' of git://github.com/schandinat/linu…
Browse files Browse the repository at this point in the history
…x-2.6

Pull fbdev fixes from Florian Tobias Schandinat:
 - a fix by Paul Cercueil to prevent a possible buffer overflow
 - a fix by Bruno Prémont to prevent a rare sleep in invalid context
 - a fix by Julia Lawall for a double free in auo_k190x
 - a fix by Dan Carpenter to prevent a division by zero in mb862xxfb
 - a regression fix by Tomi Valkeinen for the SDI output in OMAP
 - a fix by Grazvydas Ignotas to fix the console colors in OMAP

* tag 'fbdev-fixes-for-3.6-1' of git://github.com/schandinat/linux-2.6:
  OMAPFB: fix framebuffer console colors
  OMAPDSS: Fix SDI PLL locking
  video: mb862xxfb: prevent divide by zero bug
  drivers/video/auo_k190x.c: drop kfree of devm_kzalloc's data
  fbcon: Fix bit_putcs() call to kmalloc(s, GFP_KERNEL)
  fbcon: prevent possible buffer overflow.
  • Loading branch information
torvalds committed Sep 6, 2012
2 parents 50234c5 + c1c5284 commit 6d1a050
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 5 deletions.
2 changes: 0 additions & 2 deletions drivers/video/auo_k190x.c
Original file line number Diff line number Diff line change
Expand Up @@ -987,7 +987,6 @@ int __devinit auok190x_common_probe(struct platform_device *pdev,
fb_dealloc_cmap(&info->cmap);
err_cmap:
fb_deferred_io_cleanup(info);
kfree(info->fbdefio);
err_defio:
vfree((void *)info->screen_base);
err_irq:
Expand Down Expand Up @@ -1022,7 +1021,6 @@ int __devexit auok190x_common_remove(struct platform_device *pdev)
fb_dealloc_cmap(&info->cmap);

fb_deferred_io_cleanup(info);
kfree(info->fbdefio);

vfree((void *)info->screen_base);

Expand Down
2 changes: 1 addition & 1 deletion drivers/video/console/bitblit.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info,
image.depth = 1;

if (attribute) {
buf = kmalloc(cellsize, GFP_KERNEL);
buf = kmalloc(cellsize, GFP_ATOMIC);
if (!buf)
return;
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/console/fbcon.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ static int __init fb_console_setup(char *this_opt)

while ((options = strsep(&this_opt, ",")) != NULL) {
if (!strncmp(options, "font:", 5))
strcpy(fontname, options + 5);
strlcpy(fontname, options + 5, sizeof(fontname));

if (!strncmp(options, "scrollback:", 11)) {
options += 11;
Expand Down
2 changes: 2 additions & 0 deletions drivers/video/mb862xx/mb862xxfbdrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,8 @@ static int mb862xxfb_ioctl(struct fb_info *fbi, unsigned int cmd,
case MB862XX_L1_SET_CFG:
if (copy_from_user(l1_cfg, argp, sizeof(*l1_cfg)))
return -EFAULT;
if (l1_cfg->dh == 0 || l1_cfg->dw == 0)
return -EINVAL;
if ((l1_cfg->sw >= l1_cfg->dw) && (l1_cfg->sh >= l1_cfg->dh)) {
/* downscaling */
outreg(cap, GC_CAP_CSC,
Expand Down
14 changes: 14 additions & 0 deletions drivers/video/omap2/dss/sdi.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,20 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev)

sdi_config_lcd_manager(dssdev);

/*
* LCLK and PCLK divisors are located in shadow registers, and we
* normally write them to DISPC registers when enabling the output.
* However, SDI uses pck-free as source clock for its PLL, and pck-free
* is affected by the divisors. And as we need the PLL before enabling
* the output, we need to write the divisors early.
*
* It seems just writing to the DISPC register is enough, and we don't
* need to care about the shadow register mechanism for pck-free. The
* exact reason for this is unknown.
*/
dispc_mgr_set_clock_div(dssdev->manager->id,
&sdi.mgr_config.clock_info);

dss_sdi_init(dssdev->phy.sdi.datapairs);
r = dss_sdi_enable();
if (r)
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/omap2/omapfb/omapfb-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1192,7 +1192,7 @@ static int _setcolreg(struct fb_info *fbi, u_int regno, u_int red, u_int green,
break;

if (regno < 16) {
u16 pal;
u32 pal;
pal = ((red >> (16 - var->red.length)) <<
var->red.offset) |
((green >> (16 - var->green.length)) <<
Expand Down

0 comments on commit 6d1a050

Please sign in to comment.