hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/video/fbdev/pm2fb.c
....@@ -54,7 +54,7 @@
5454 #define DPRINTK(a, b...) \
5555 printk(KERN_DEBUG "pm2fb: %s: " a, __func__ , ## b)
5656 #else
57
-#define DPRINTK(a, b...)
57
+#define DPRINTK(a, b...) no_printk(a, ##b)
5858 #endif
5959
6060 #define PM2_PIXMAP_SIZE (1600 * 4)
....@@ -233,10 +233,10 @@
233233 switch (bpp) {
234234 case 24:
235235 timing *= 3;
236
- /* fall through */
236
+ fallthrough;
237237 case 8:
238238 timing >>= 1;
239
- /* fall through */
239
+ fallthrough;
240240 case 16:
241241 timing >>= 1;
242242 case 32:
....@@ -613,6 +613,11 @@
613613 if (lpitch * var->yres_virtual > info->fix.smem_len) {
614614 DPRINTK("no memory for screen (%ux%ux%u)\n",
615615 var->xres, var->yres_virtual, var->bits_per_pixel);
616
+ return -EINVAL;
617
+ }
618
+
619
+ if (!var->pixclock) {
620
+ DPRINTK("pixclock is zero\n");
616621 return -EINVAL;
617622 }
618623
....@@ -1483,7 +1488,7 @@
14831488 * Frame buffer operations
14841489 */
14851490
1486
-static struct fb_ops pm2fb_ops = {
1491
+static const struct fb_ops pm2fb_ops = {
14871492 .owner = THIS_MODULE,
14881493 .fb_check_var = pm2fb_check_var,
14891494 .fb_set_par = pm2fb_set_par,
....@@ -1524,8 +1529,10 @@
15241529 }
15251530
15261531 info = framebuffer_alloc(sizeof(struct pm2fb_par), &pdev->dev);
1527
- if (!info)
1528
- return -ENOMEM;
1532
+ if (!info) {
1533
+ err = -ENOMEM;
1534
+ goto err_exit_disable;
1535
+ }
15291536 default_par = info->par;
15301537
15311538 switch (pdev->device) {
....@@ -1563,7 +1570,7 @@
15631570 goto err_exit_neither;
15641571 }
15651572 default_par->v_regs =
1566
- ioremap_nocache(pm2fb_fix.mmio_start, pm2fb_fix.mmio_len);
1573
+ ioremap(pm2fb_fix.mmio_start, pm2fb_fix.mmio_len);
15671574 if (!default_par->v_regs) {
15681575 printk(KERN_WARNING "pm2fb: Can't remap %s register area.\n",
15691576 pm2fb_fix.id);
....@@ -1706,6 +1713,8 @@
17061713 release_mem_region(pm2fb_fix.mmio_start, pm2fb_fix.mmio_len);
17071714 err_exit_neither:
17081715 framebuffer_release(info);
1716
+ err_exit_disable:
1717
+ pci_disable_device(pdev);
17091718 return retval;
17101719 }
17111720
....@@ -1732,6 +1741,7 @@
17321741 fb_dealloc_cmap(&info->cmap);
17331742 kfree(info->pixmap.addr);
17341743 framebuffer_release(info);
1744
+ pci_disable_device(pdev);
17351745 }
17361746
17371747 static const struct pci_device_id pm2fb_id_table[] = {