fbdev fixes for kernel 6.4-rc5:
- Fix null-ptr-deref in soft_cursor - various remove callback conversions - error path fixes in imsttfb -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCZHjvfAAKCRD3ErUQojoP X4JlAP49ZIcuvWmToI37vaDdMrkatfLRfZqzMunNIOs1wapYTQD+POy9HnqmPhVP rNxGNkgrqWciMxdidJ1yKdZ2NQlOegM= =QD77 -----END PGP SIGNATURE----- Merge tag 'fbdev-for-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev Pull fbdev fixes from Helge Deller: "Most notable is a fix for a null-ptr-deref in fbcon's soft_cursor function which was found by syzbot. - Fix null-ptr-deref in soft_cursor - various remove callback conversions - error path fixes in imsttfb" * tag 'fbdev-for-6.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev: fbdev: bw2: Convert to platform remove callback returning void fbdev: broadsheetfb: Convert to platform remove callback returning void fbdev: au1200fb: Convert to platform remove callback returning void fbdev: au1100fb: Convert to platform remove callback returning void fbdev: arcfb: Convert to platform remove callback returning void fbdev: au1100fb: Drop if with an always false condition fbcon: Fix null-ptr-deref in soft_cursor fbdev: imsttfb: Fix error path of imsttfb_probe() fbdev: imsttfb: Release framebuffer and dealloc cmap on error path fbdev: matroxfb ssd1307fb: Switch i2c drivers back to use .probe()
This commit is contained in:
commit
9e87b63ed3
|
@ -590,7 +590,7 @@ err_fb_alloc:
|
|||
return retval;
|
||||
}
|
||||
|
||||
static int arcfb_remove(struct platform_device *dev)
|
||||
static void arcfb_remove(struct platform_device *dev)
|
||||
{
|
||||
struct fb_info *info = platform_get_drvdata(dev);
|
||||
|
||||
|
@ -601,12 +601,11 @@ static int arcfb_remove(struct platform_device *dev)
|
|||
vfree((void __force *)info->screen_base);
|
||||
framebuffer_release(info);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver arcfb_driver = {
|
||||
.probe = arcfb_probe,
|
||||
.remove = arcfb_remove,
|
||||
.remove_new = arcfb_remove,
|
||||
.driver = {
|
||||
.name = "arcfb",
|
||||
},
|
||||
|
|
|
@ -520,13 +520,10 @@ failed:
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
int au1100fb_drv_remove(struct platform_device *dev)
|
||||
void au1100fb_drv_remove(struct platform_device *dev)
|
||||
{
|
||||
struct au1100fb_device *fbdev = NULL;
|
||||
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
||||
fbdev = platform_get_drvdata(dev);
|
||||
|
||||
#if !defined(CONFIG_FRAMEBUFFER_CONSOLE) && defined(CONFIG_LOGO)
|
||||
|
@ -543,8 +540,6 @@ int au1100fb_drv_remove(struct platform_device *dev)
|
|||
clk_disable_unprepare(fbdev->lcdclk);
|
||||
clk_put(fbdev->lcdclk);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
@ -593,9 +588,9 @@ static struct platform_driver au1100fb_driver = {
|
|||
.name = "au1100-lcd",
|
||||
},
|
||||
.probe = au1100fb_drv_probe,
|
||||
.remove = au1100fb_drv_remove,
|
||||
.remove_new = au1100fb_drv_remove,
|
||||
.suspend = au1100fb_drv_suspend,
|
||||
.resume = au1100fb_drv_resume,
|
||||
.resume = au1100fb_drv_resume,
|
||||
};
|
||||
module_platform_driver(au1100fb_driver);
|
||||
|
||||
|
|
|
@ -1765,7 +1765,7 @@ failed:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int au1200fb_drv_remove(struct platform_device *dev)
|
||||
static void au1200fb_drv_remove(struct platform_device *dev)
|
||||
{
|
||||
struct au1200fb_platdata *pd = platform_get_drvdata(dev);
|
||||
struct fb_info *fbi;
|
||||
|
@ -1788,8 +1788,6 @@ static int au1200fb_drv_remove(struct platform_device *dev)
|
|||
}
|
||||
|
||||
free_irq(platform_get_irq(dev, 0), (void *)dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
@ -1840,7 +1838,7 @@ static struct platform_driver au1200fb_driver = {
|
|||
.pm = AU1200FB_PMOPS,
|
||||
},
|
||||
.probe = au1200fb_drv_probe,
|
||||
.remove = au1200fb_drv_remove,
|
||||
.remove_new = au1200fb_drv_remove,
|
||||
};
|
||||
module_platform_driver(au1200fb_driver);
|
||||
|
||||
|
|
|
@ -1193,7 +1193,7 @@ err:
|
|||
|
||||
}
|
||||
|
||||
static int broadsheetfb_remove(struct platform_device *dev)
|
||||
static void broadsheetfb_remove(struct platform_device *dev)
|
||||
{
|
||||
struct fb_info *info = platform_get_drvdata(dev);
|
||||
|
||||
|
@ -1209,12 +1209,11 @@ static int broadsheetfb_remove(struct platform_device *dev)
|
|||
module_put(par->board->owner);
|
||||
framebuffer_release(info);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver broadsheetfb_driver = {
|
||||
.probe = broadsheetfb_probe,
|
||||
.remove = broadsheetfb_remove,
|
||||
.remove_new = broadsheetfb_remove,
|
||||
.driver = {
|
||||
.name = "broadsheetfb",
|
||||
},
|
||||
|
|
|
@ -352,7 +352,7 @@ out_err:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int bw2_remove(struct platform_device *op)
|
||||
static void bw2_remove(struct platform_device *op)
|
||||
{
|
||||
struct fb_info *info = dev_get_drvdata(&op->dev);
|
||||
struct bw2_par *par = info->par;
|
||||
|
@ -363,8 +363,6 @@ static int bw2_remove(struct platform_device *op)
|
|||
of_iounmap(&op->resource[0], info->screen_base, info->fix.smem_len);
|
||||
|
||||
framebuffer_release(info);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id bw2_match[] = {
|
||||
|
@ -381,7 +379,7 @@ static struct platform_driver bw2_driver = {
|
|||
.of_match_table = bw2_match,
|
||||
},
|
||||
.probe = bw2_probe,
|
||||
.remove = bw2_remove,
|
||||
.remove_new = bw2_remove,
|
||||
};
|
||||
|
||||
static int __init bw2_init(void)
|
||||
|
|
|
@ -247,6 +247,9 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
|
||||
cursor.set = 0;
|
||||
|
||||
if (!vc->vc_font.data)
|
||||
return;
|
||||
|
||||
c = scr_readw((u16 *) vc->vc_pos);
|
||||
attribute = get_attribute(info, c);
|
||||
src = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height));
|
||||
|
|
|
@ -1452,9 +1452,13 @@ static int init_imstt(struct fb_info *info)
|
|||
FBINFO_HWACCEL_FILLRECT |
|
||||
FBINFO_HWACCEL_YPAN;
|
||||
|
||||
fb_alloc_cmap(&info->cmap, 0, 0);
|
||||
if (fb_alloc_cmap(&info->cmap, 0, 0)) {
|
||||
framebuffer_release(info);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (register_framebuffer(info) < 0) {
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
framebuffer_release(info);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -1531,8 +1535,10 @@ static int imsttfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
goto error;
|
||||
info->pseudo_palette = par->palette;
|
||||
ret = init_imstt(info);
|
||||
if (!ret)
|
||||
pci_set_drvdata(pdev, info);
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
pci_set_drvdata(pdev, info);
|
||||
return ret;
|
||||
|
||||
error:
|
||||
|
|
|
@ -1291,7 +1291,7 @@ static struct i2c_driver maven_driver={
|
|||
.driver = {
|
||||
.name = "maven",
|
||||
},
|
||||
.probe_new = maven_probe,
|
||||
.probe = maven_probe,
|
||||
.remove = maven_remove,
|
||||
.id_table = maven_id,
|
||||
};
|
||||
|
|
|
@ -844,7 +844,7 @@ static const struct i2c_device_id ssd1307fb_i2c_id[] = {
|
|||
MODULE_DEVICE_TABLE(i2c, ssd1307fb_i2c_id);
|
||||
|
||||
static struct i2c_driver ssd1307fb_driver = {
|
||||
.probe_new = ssd1307fb_probe,
|
||||
.probe = ssd1307fb_probe,
|
||||
.remove = ssd1307fb_remove,
|
||||
.id_table = ssd1307fb_i2c_id,
|
||||
.driver = {
|
||||
|
|
Loading…
Reference in New Issue