Commit adfbf653 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull fbdev fixes from Helge Deller:

 - use after free fix in imsttfb (Zheng Wang)

 - fix error handling in arcfb (Zongjie Li)

 - lots of whitespace cleanups (Thomas Zimmermann)

 - add 1920x1080 modedb entry (me)

* tag 'fbdev-for-6.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev:
  fbdev: stifb: Fix info entry in sti_struct on error path
  fbdev: modedb: Add 1920x1080 at 60 Hz video mode
  fbdev: imsttfb: Fix use after free bug in imsttfb_probe
  fbdev: vfb: Remove trailing whitespaces
  fbdev: valkyriefb: Remove trailing whitespaces
  fbdev: stifb: Remove trailing whitespaces
  fbdev: sa1100fb: Remove trailing whitespaces
  fbdev: platinumfb: Remove trailing whitespaces
  fbdev: p9100: Remove trailing whitespaces
  fbdev: maxinefb: Remove trailing whitespaces
  fbdev: macfb: Remove trailing whitespaces
  fbdev: hpfb: Remove trailing whitespaces
  fbdev: hgafb: Remove trailing whitespaces
  fbdev: g364fb: Remove trailing whitespaces
  fbdev: controlfb: Remove trailing whitespaces
  fbdev: cg14: Remove trailing whitespaces
  fbdev: atmel_lcdfb: Remove trailing whitespaces
  fbdev: 68328fb: Remove trailing whitespaces
  fbdev: arcfb: Fix error handling in arcfb_probe()
parents 046206ba 0bdf1ad8
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -523,7 +523,7 @@ static int arcfb_probe(struct platform_device *dev)

	info = framebuffer_alloc(sizeof(struct arcfb_par), &dev->dev);
	if (!info)
		goto err;
		goto err_fb_alloc;

	info->screen_base = (char __iomem *)videomemory;
	info->fbops = &arcfb_ops;
@@ -535,7 +535,7 @@ static int arcfb_probe(struct platform_device *dev)

	if (!dio_addr || !cio_addr || !c2io_addr) {
		printk(KERN_WARNING "no IO addresses supplied\n");
		goto err1;
		goto err_addr;
	}
	par->dio_addr = dio_addr;
	par->cio_addr = cio_addr;
@@ -551,12 +551,12 @@ static int arcfb_probe(struct platform_device *dev)
			printk(KERN_INFO
				"arcfb: Failed req IRQ %d\n", par->irq);
			retval = -EBUSY;
			goto err1;
			goto err_addr;
		}
	}
	retval = register_framebuffer(info);
	if (retval < 0)
		goto err1;
		goto err_register_fb;
	platform_set_drvdata(dev, info);
	fb_info(info, "Arc frame buffer device, using %dK of video memory\n",
		videomemorysize >> 10);
@@ -580,9 +580,12 @@ static int arcfb_probe(struct platform_device *dev)
	}

	return 0;
err1:

err_register_fb:
	free_irq(par->irq, info);
err_addr:
	framebuffer_release(info);
err:
err_fb_alloc:
	vfree(videomemory);
	return retval;
}
+5 −0
Original line number Diff line number Diff line
@@ -257,6 +257,11 @@ static const struct fb_videomode modedb[] = {
	{ NULL, 72, 480, 300, 33386, 40, 24, 11, 19, 80, 3, 0,
		FB_VMODE_DOUBLE },

	/* 1920x1080 @ 60 Hz, 67.3 kHz hsync */
	{ NULL, 60, 1920, 1080, 6734, 148, 88, 36, 4, 44, 5, 0,
		FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
		FB_VMODE_NONINTERLACED },

	/* 1920x1200 @ 60 Hz, 74.5 Khz hsync */
	{ NULL, 60, 1920, 1200, 5177, 128, 336, 1, 38, 208, 3,
		FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+8 −7
Original line number Diff line number Diff line
@@ -1347,7 +1347,7 @@ static const struct fb_ops imsttfb_ops = {
	.fb_ioctl 	= imsttfb_ioctl,
};

static void init_imstt(struct fb_info *info)
static int init_imstt(struct fb_info *info)
{
	struct imstt_par *par = info->par;
	__u32 i, tmp, *ip, *end;
@@ -1420,7 +1420,7 @@ static void init_imstt(struct fb_info *info)
	    || !(compute_imstt_regvals(par, info->var.xres, info->var.yres))) {
		printk("imsttfb: %ux%ux%u not supported\n", info->var.xres, info->var.yres, info->var.bits_per_pixel);
		framebuffer_release(info);
		return;
		return -ENODEV;
	}

	sprintf(info->fix.id, "IMS TT (%s)", par->ramdac == IBM ? "IBM" : "TVP");
@@ -1456,12 +1456,13 @@ static void init_imstt(struct fb_info *info)

	if (register_framebuffer(info) < 0) {
		framebuffer_release(info);
		return;
		return -ENODEV;
	}

	tmp = (read_reg_le32(par->dc_regs, SSTATUS) & 0x0f00) >> 8;
	fb_info(info, "%s frame buffer; %uMB vram; chip version %u\n",
		info->fix.id, info->fix.smem_len >> 20, tmp);
	return 0;
}

static int imsttfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
@@ -1529,10 +1530,10 @@ static int imsttfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
	if (!par->cmap_regs)
		goto error;
	info->pseudo_palette = par->palette;
	init_imstt(info);

	ret = init_imstt(info);
	if (!ret)
		pci_set_drvdata(pdev, info);
	return 0;
	return ret;

error:
	if (par->dc_regs)
+79 −78
Original line number Diff line number Diff line
@@ -1413,6 +1413,7 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)
	iounmap(info->screen_base);
out_err0:
	kfree(fb);
	sti->info = NULL;
	return -ENXIO;
}

+1 −1

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

+17 −17

File changed.

Contains only whitespace changes.

+16 −16

File changed.

Contains only whitespace changes.

+4 −4

File changed.

Contains only whitespace changes.

+7 −7

File changed.

Contains only whitespace changes.

+5 −5

File changed.

Contains only whitespace changes.

+15 −15

File changed.

Contains only whitespace changes.

+6 −6

File changed.

Contains only whitespace changes.

+3 −3

File changed.

Contains only whitespace changes.

+18 −18

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

+5 −5

File changed.

Contains only whitespace changes.

+2 −2

File changed.

Contains only whitespace changes.

Loading