Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* [PATCH 09/12] backlight: da9052_bl: Include <linux/mod_devicetable.h>
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Include <linux/mod_devicetable.h> to declare struct platform_device_id.
Avoids dependency on backlight header to include it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/backlight/da9052_bl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/backlight/da9052_bl.c b/drivers/video/backlight/da9052_bl.c
index f41523d78121..2493138febfa 100644
--- a/drivers/video/backlight/da9052_bl.c
+++ b/drivers/video/backlight/da9052_bl.c
@@ -9,6 +9,7 @@
 
 #include <linux/backlight.h>
 #include <linux/delay.h>
+#include <linux/mod_devicetable.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
 
-- 
2.49.0


^ permalink raw reply related

* [PATCH 06/12] backlight: Include <linux/of.h>
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Include <linux/of.h> to avoid dependency on backlight header to
include it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/backlight/backlight.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
index 9dc93c5e480b..1e9b7e85d99a 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -16,6 +16,7 @@
 #include <linux/ctype.h>
 #include <linux/err.h>
 #include <linux/slab.h>
+#include <linux/of.h>
 
 #ifdef CONFIG_PMAC_BACKLIGHT
 #include <asm/backlight.h>
-- 
2.49.0


^ permalink raw reply related

* [PATCH 08/12] backlight: as3711_bl: Include <linux/of.h>
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Include <linux/of.h> to declare various OF helpers. Avoids dependency
on backlight header to include it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/backlight/as3711_bl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/backlight/as3711_bl.c b/drivers/video/backlight/as3711_bl.c
index 9f89eb19894e..753160bbc3e7 100644
--- a/drivers/video/backlight/as3711_bl.c
+++ b/drivers/video/backlight/as3711_bl.c
@@ -13,6 +13,7 @@
 #include <linux/kernel.h>
 #include <linux/mfd/as3711.h>
 #include <linux/module.h>
+#include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 #include <linux/slab.h>
-- 
2.49.0


^ permalink raw reply related

* [PATCH 05/12] fbcon: Add necessary include statements and forward declarations
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Make the header self contained for including.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 include/linux/fbcon.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h
index 2382dec6d6ab..81f0e698acbf 100644
--- a/include/linux/fbcon.h
+++ b/include/linux/fbcon.h
@@ -1,6 +1,13 @@
 #ifndef _LINUX_FBCON_H
 #define _LINUX_FBCON_H
 
+#include <linux/compiler_types.h>
+
+struct fb_blit_caps;
+struct fb_info;
+struct fb_var_screeninfo;
+struct fb_videomode;
+
 #ifdef CONFIG_FRAMEBUFFER_CONSOLE
 void __init fb_console_init(void);
 void __exit fb_console_exit(void);
-- 
2.49.0


^ permalink raw reply related

* [PATCH 07/12] backlight: apple_dwi_bl: Include <linux/mod_devicetable.h>
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Include <linux/mod_devicetable.h> to declare struct of_device_id.
Avoids dependency on backlight header to include it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/video/backlight/apple_dwi_bl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/backlight/apple_dwi_bl.c b/drivers/video/backlight/apple_dwi_bl.c
index 93bd744972d6..ed8bf13d3f51 100644
--- a/drivers/video/backlight/apple_dwi_bl.c
+++ b/drivers/video/backlight/apple_dwi_bl.c
@@ -9,6 +9,7 @@
 #include <linux/bitfield.h>
 #include <linux/device.h>
 #include <linux/io.h>
+#include <linux/mod_devicetable.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
 
-- 
2.49.0


^ permalink raw reply related

* [PATCH 03/12] drm/panel: panel-samsung-s6e88a0-ams427ap24: Include <linux/of.h>
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Include <linux/of.h> to declare device_property_read_bool(). Avoids
dependency on backlight header to include it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/panel/panel-samsung-s6e88a0-ams427ap24.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e88a0-ams427ap24.c b/drivers/gpu/drm/panel/panel-samsung-s6e88a0-ams427ap24.c
index e91f50662997..b6d04f8ad561 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e88a0-ams427ap24.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e88a0-ams427ap24.c
@@ -8,6 +8,7 @@
 #include <linux/delay.h>
 #include <linux/gpio/consumer.h>
 #include <linux/module.h>
+#include <linux/of.h>
 #include <linux/regulator/consumer.h>
 
 #include <video/mipi_display.h>
-- 
2.49.0


^ permalink raw reply related

* [PATCH 04/12] drm/panel: panel-summit: Include <linux/of.h>
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Include <linux/of.h> to declare device_property_read_u32() and
struct of_device_id. Avoids dependency on backlight header to include
it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/panel/panel-summit.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/panel/panel-summit.c b/drivers/gpu/drm/panel/panel-summit.c
index 4854437e2899..02aa1ec287d6 100644
--- a/drivers/gpu/drm/panel/panel-summit.c
+++ b/drivers/gpu/drm/panel/panel-summit.c
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-only
 
 #include <linux/backlight.h>
+#include <linux/of.h>
 #include <drm/drm_device.h>
 #include <drm/drm_mipi_dsi.h>
 #include <drm/drm_mode.h>
-- 
2.49.0


^ permalink raw reply related

* [PATCH 01/12] platform/x86: dell-uart-backlight: Use blacklight power constant
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

The backlight subsystem has gotten its own power constants. Replace
FB_BLANK_UNBLANK with BACKLIGHT_POWER_ON.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/platform/x86/dell/dell-uart-backlight.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/x86/dell/dell-uart-backlight.c b/drivers/platform/x86/dell/dell-uart-backlight.c
index 8f868f845350..f323a667dc2d 100644
--- a/drivers/platform/x86/dell/dell-uart-backlight.c
+++ b/drivers/platform/x86/dell/dell-uart-backlight.c
@@ -305,7 +305,7 @@ static int dell_uart_bl_serdev_probe(struct serdev_device *serdev)
 	dev_dbg(dev, "Firmware version: %.*s\n", resp[RESP_LEN] - 3, resp + RESP_DATA);
 
 	/* Initialize bl_power to a known value */
-	ret = dell_uart_set_bl_power(dell_bl, FB_BLANK_UNBLANK);
+	ret = dell_uart_set_bl_power(dell_bl, BACKLIGHT_POWER_ON);
 	if (ret)
 		return ret;
 
-- 
2.49.0


^ permalink raw reply related

* [PATCH 02/12] drm/panel: panel-samsung-s6e63m0: Include <linux/of.h>
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann
In-Reply-To: <20250618122436.379013-1-tzimmermann@suse.de>

Include <linux/of.h> to declare device_property_read_u32(). Avoids
dependency on backlight header to include it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/panel/panel-samsung-s6e63m0.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
index ea241c89593b..930948cb615f 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
@@ -16,6 +16,7 @@
 #include <linux/export.h>
 #include <linux/gpio/consumer.h>
 #include <linux/module.h>
+#include <linux/of.h>
 #include <linux/property.h>
 #include <linux/regulator/consumer.h>
 #include <linux/media-bus-format.h>
-- 
2.49.0


^ permalink raw reply related

* [PATCH 00/12] backlight: Do not include <linux/fb.h> in header file
From: Thomas Zimmermann @ 2025-06-18 12:16 UTC (permalink / raw)
  To: lee, danielt, jingoohan1, neil.armstrong, jessica.zhang,
	maarten.lankhorst, mripard, airlied, simona, fnkl.kernel, j,
	hdegoede, ilpo.jarvinen, sven, alyssa, neal, deller,
	support.opensource, duje.mihanovic
  Cc: dri-devel, asahi, platform-driver-x86, linux-arm-kernel,
	linux-fbdev, Thomas Zimmermann

Remove the final dependencies on fbdev from the backlight subsystem.
This is really just the include of <linux/fb.h> in backlight, but it
has some fallout in other code.

Patches 1 to 11 fix all the implicit includes that come from fb.h
throughout the kernel. It's all trivial, but touches various drivers.
Maintainers are in CC. Patch 12 fixes the backlight header.

With the series applied the backlight subsystem should be free from
fbdev dependencies.

Thomas Zimmermann (12):
  platform/x86: dell-uart-backlight: Use blacklight power constant
  drm/panel: panel-samsung-s6e63m0: Include <linux/of.h>
  drm/panel: panel-samsung-s6e88a0-ams427ap24: Include <linux/of.h>
  drm/panel: panel-summit: Include <linux/of.h>
  fbcon: Add necessary include statements and forward declarations
  backlight: Include <linux/of.h>
  backlight: apple_dwi_bl: Include <linux/mod_devicetable.h>
  backlight: as3711_bl: Include <linux/of.h>
  backlight: da9052_bl: Include <linux/mod_devicetable.h>
  backlight: ktd2801: Include <linux/mod_devicetable.h>
  backlight: led_bl: Include <linux/of.h>
  backlight: Do not include <linux/fb.h> in header file

 drivers/gpu/drm/panel/panel-samsung-s6e63m0.c            | 1 +
 drivers/gpu/drm/panel/panel-samsung-s6e88a0-ams427ap24.c | 1 +
 drivers/gpu/drm/panel/panel-summit.c                     | 1 +
 drivers/platform/x86/dell/dell-uart-backlight.c          | 2 +-
 drivers/video/backlight/apple_dwi_bl.c                   | 1 +
 drivers/video/backlight/as3711_bl.c                      | 1 +
 drivers/video/backlight/backlight.c                      | 1 +
 drivers/video/backlight/da9052_bl.c                      | 1 +
 drivers/video/backlight/ktd2801-backlight.c              | 1 +
 drivers/video/backlight/led_bl.c                         | 1 +
 include/linux/backlight.h                                | 1 -
 include/linux/fbcon.h                                    | 7 +++++++
 12 files changed, 17 insertions(+), 2 deletions(-)

-- 
2.49.0


^ permalink raw reply

* Re: [PATCH] fbdev: i740: Fix potential divide by zero
From: David Laight @ 2025-06-15 20:57 UTC (permalink / raw)
  To: Jin D; +Cc: deller, linux-fbdev, dri-devel, linux-kernel
In-Reply-To: <CAAi4Z-fDFw1gD2MbqucWRMN0DvKf5mk6B+GDD95x9o23G8iK6w@mail.gmail.com>

On Sun, 15 Jun 2025 16:43:58 -0400
Jin D <alexguo1023@gmail.com> wrote:

> >       bpp = var->bits_per_pixel;
> > +     if (!var->pixclock){
> > +             dev_err(info->device, "pixclock must not be zero\n");
> > +             return -EINVAL;
> > +     }
> >       switch (bpp) {
> >       case 1 ... 8:
> >               bpp = 8;  
> 
> The value used in the switch condition is var->bits_per_pixel. I can not
> find a deterministic relationship between var->bits_per_pixel and
> var->pixclock.

Brain-fade ...

> 
> On Sun, Jun 15, 2025 at 4:30 AM David Laight <david.laight.linux@gmail.com>
> wrote:
> 
> > On Sat, 14 Jun 2025 01:18:37 -0400
> > Alex Guo <alexguo1023@gmail.com> wrote:
> >  
> > > Variable var->pixclock can be set by user. In case it equals to
> > > zero, divide by zero would occur in 4 switch branches in
> > > i740fb_decode_var.
> > > Similar crashes have happened in other fbdev drivers. We fix this
> > > by checking whether 'pixclock' is zero.  
> >
> > Doesn't it already hit the 'default' clause of the switch statement?
> >
> >         David
> >  
> > >
> > > Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
> > > Error out if 'pixclock' equals zero")
> > >
> > > Signed-off-by: Alex Guo <alexguo1023@gmail.com>
> > > ---
> > >  drivers/video/fbdev/i740fb.c | 4 ++++
> > >  1 file changed, 4 insertions(+)
> > >
> > > diff --git a/drivers/video/fbdev/i740fb.c b/drivers/video/fbdev/i740fb.c
> > > index 9b74dae71472..861e9e397b4e 100644
> > > --- a/drivers/video/fbdev/i740fb.c
> > > +++ b/drivers/video/fbdev/i740fb.c
> > > @@ -419,6 +419,10 @@ static int i740fb_decode_var(const struct  
> > fb_var_screeninfo *var,  
> > >
> > >
> > >       bpp = var->bits_per_pixel;
> > > +     if (!var->pixclock){
> > > +             dev_err(info->device, "pixclock must not be zero\n");
> > > +             return -EINVAL;
> > > +     }
> > >       switch (bpp) {
> > >       case 1 ... 8:
> > >               bpp = 8;  
> >
> >  


^ permalink raw reply

* [PATCH] fbdev: nvidiafb: add depends on HAS_IOPORT
From: Randy Dunlap @ 2025-06-15 18:36 UTC (permalink / raw)
  To: linux-kernel
  Cc: Randy Dunlap, Arnd Bergmann, Niklas Schnelle, Antonino Daplas,
	Helge Deller, linux-fbdev, dri-devel

The nvidiafb driver uses inb()/outb() without depending on HAS_IOPORT,
which leads to build errors since kernel v6.13-rc1:
commit 6f043e757445 ("asm-generic/io.h: Remove I/O port accessors
for HAS_IOPORT=n")

Add the HAS_IOPORT dependency to prevent the build errors.

(Found in ARCH=um allmodconfig builds)

drivers/video/fbdev/nvidia/nv_accel.c: In function ‘NVDmaWait’:
include/asm-generic/io.h:596:15: error: call to ‘_outb’ declared with attribute error: outb() requires CONFIG_HAS_IOPORT
  596 | #define _outb _outb

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Niklas Schnelle <schnelle@linux.ibm.com>
Cc: Antonino Daplas <adaplas@gmail.com>
Cc: Helge Deller <deller@gmx.de>
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
---
 drivers/video/fbdev/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- lnx-616-rc1.orig/drivers/video/fbdev/Kconfig
+++ lnx-616-rc1/drivers/video/fbdev/Kconfig
@@ -660,7 +660,7 @@ config FB_ATMEL
 
 config FB_NVIDIA
 	tristate "nVidia Framebuffer Support"
-	depends on FB && PCI
+	depends on FB && PCI && HAS_IOPORT
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
---
base-commit: 19272b37aa4f83ca52bdf9c16d5d81bdd1354494 # v6.16-rc1

^ permalink raw reply

* Re: [PATCH] fbdev: i740: Fix potential divide by zero
From: David Laight @ 2025-06-15  8:30 UTC (permalink / raw)
  To: Alex Guo; +Cc: deller, linux-fbdev, dri-devel, linux-kernel
In-Reply-To: <20250614051837.3544959-1-alexguo1023@gmail.com>

On Sat, 14 Jun 2025 01:18:37 -0400
Alex Guo <alexguo1023@gmail.com> wrote:

> Variable var->pixclock can be set by user. In case it equals to
> zero, divide by zero would occur in 4 switch branches in
> i740fb_decode_var.
> Similar crashes have happened in other fbdev drivers. We fix this
> by checking whether 'pixclock' is zero.

Doesn't it already hit the 'default' clause of the switch statement?

	David

> 
> Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
> Error out if 'pixclock' equals zero")
> 
> Signed-off-by: Alex Guo <alexguo1023@gmail.com>
> ---
>  drivers/video/fbdev/i740fb.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/video/fbdev/i740fb.c b/drivers/video/fbdev/i740fb.c
> index 9b74dae71472..861e9e397b4e 100644
> --- a/drivers/video/fbdev/i740fb.c
> +++ b/drivers/video/fbdev/i740fb.c
> @@ -419,6 +419,10 @@ static int i740fb_decode_var(const struct fb_var_screeninfo *var,
>  
>  
>  	bpp = var->bits_per_pixel;
> +	if (!var->pixclock){
> +		dev_err(info->device, "pixclock must not be zero\n");
> +		return -EINVAL;
> +	}
>  	switch (bpp) {
>  	case 1 ... 8:
>  		bpp = 8;


^ permalink raw reply

* [PATCH] fbdev: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  5:29 UTC (permalink / raw)
  To: deller; +Cc: alexguo1023, linux-fbdev, dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in acornfb_validate_timing.
Similar crashes have happened in other fbdev drivers. We fix this
by checking whether 'pixclock' is zero.

Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
Error out if 'pixclock' equals zero")

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/acornfb.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/video/fbdev/acornfb.c b/drivers/video/fbdev/acornfb.c
index f0600f6ca254..2dc0e64137e5 100644
--- a/drivers/video/fbdev/acornfb.c
+++ b/drivers/video/fbdev/acornfb.c
@@ -421,6 +421,8 @@ acornfb_validate_timing(struct fb_var_screeninfo *var,
 	 * No need to do long long divisions or anything
 	 * like that if you factor it correctly
 	 */
+	if (!var->pixclock)
+		return -EINVAL;
 	hs = 1953125000 / var->pixclock;
 	hs = hs * 512 /
 	     (var->xres + var->left_margin + var->right_margin + var->hsync_len);
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: i810 Fix potential divide by zero
From: Alex Guo @ 2025-06-14  5:26 UTC (permalink / raw)
  To: deller; +Cc: alexguo1023, linux-fbdev, dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in i810fb_fill_var_timings and
i810_get_watermark.
We cannot find the default valid value of pixclock for driver
i810, so we fix this by returning directly if 'pixclock' is
zero.

Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
Error out if 'pixclock' equals zero")

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/i810/i810_dvt.c | 2 ++
 drivers/video/fbdev/i810/i810_gtf.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/drivers/video/fbdev/i810/i810_dvt.c b/drivers/video/fbdev/i810/i810_dvt.c
index 2082b5c92e8f..1db4a63a2631 100644
--- a/drivers/video/fbdev/i810/i810_dvt.c
+++ b/drivers/video/fbdev/i810/i810_dvt.c
@@ -251,6 +251,8 @@ void i810fb_fill_var_timings(struct fb_var_screeninfo *var)
 	xres = var->xres;
 	yres = var->yres;
 	
+	if (!var->pixclock)
+		return;
 	pixclock = 1000000000 / var->pixclock;
 	mode = i810fb_find_best_mode(xres, yres, pixclock);
 	
diff --git a/drivers/video/fbdev/i810/i810_gtf.c b/drivers/video/fbdev/i810/i810_gtf.c
index 9743d51e7f8c..ae001b256ace 100644
--- a/drivers/video/fbdev/i810/i810_gtf.c
+++ b/drivers/video/fbdev/i810/i810_gtf.c
@@ -259,6 +259,8 @@ u32 i810_get_watermark(const struct fb_var_screeninfo *var,
 		}
 	}
 
+	if (!var->pixclock)
+		return -EINVAL;
 	pixclock = 1000000/var->pixclock;
 	min = ~0;
 	for (i = 0; i < size; i++) {
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: i740: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  5:18 UTC (permalink / raw)
  To: deller; +Cc: alexguo1023, linux-fbdev, dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in 4 switch branches in
i740fb_decode_var.
Similar crashes have happened in other fbdev drivers. We fix this
by checking whether 'pixclock' is zero.

Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
Error out if 'pixclock' equals zero")

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/i740fb.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/video/fbdev/i740fb.c b/drivers/video/fbdev/i740fb.c
index 9b74dae71472..861e9e397b4e 100644
--- a/drivers/video/fbdev/i740fb.c
+++ b/drivers/video/fbdev/i740fb.c
@@ -419,6 +419,10 @@ static int i740fb_decode_var(const struct fb_var_screeninfo *var,
 
 
 	bpp = var->bits_per_pixel;
+	if (!var->pixclock){
+		dev_err(info->device, "pixclock must not be zero\n");
+		return -EINVAL;
+	}
 	switch (bpp) {
 	case 1 ... 8:
 		bpp = 8;
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: sm501: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  5:11 UTC (permalink / raw)
  To: deller; +Cc: alexguo1023, linux-fbdev, dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in sm501fb_set_par_common.
Similar crashes have happened in other fbdev drivers.
We cannot find the default vaild value for pixclock for driver
sm501, so we fix this by checking whether 'pixclock' is zero.

Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
Error out if 'pixclock' equals zero")

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/sm501fb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/sm501fb.c b/drivers/video/fbdev/sm501fb.c
index ed6f4f43e2d5..a294b4e1c4aa 100644
--- a/drivers/video/fbdev/sm501fb.c
+++ b/drivers/video/fbdev/sm501fb.c
@@ -506,7 +506,9 @@ static int sm501fb_set_par_common(struct fb_info *info,
 			fbi->regs + head_addr);
 
 	/* program CRT clock  */
-
+	
+	if (!var->pixclock)
+		return -EINVAL;
 	pixclock = sm501fb_ps_to_hz(var->pixclock);
 
 	sm501pixclock = sm501_set_clock(fbi->dev->parent, clock_type,
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: via: Fix potential divide by zero in get_var_refresh
From: Alex Guo @ 2025-06-14  4:57 UTC (permalink / raw)
  To: deller; +Cc: FlorianSchandinat, alexguo1023, linux-fbdev, dri-devel,
	linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in get_var_refresh.
Similar crashes have happened in other fbdev drivers. We fix this
by checking whether 'pixclock' is zero.

Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
Error out if 'pixclock' equals zero")

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/via/viafbdev.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/video/fbdev/via/viafbdev.c b/drivers/video/fbdev/via/viafbdev.c
index 6da5ae7d229a..5b58e93f8c28 100644
--- a/drivers/video/fbdev/via/viafbdev.c
+++ b/drivers/video/fbdev/via/viafbdev.c
@@ -179,6 +179,8 @@ static inline int get_var_refresh(struct fb_var_screeninfo *var)
 		+ var->hsync_len;
 	vtotal = var->upper_margin + var->yres + var->lower_margin
 		+ var->vsync_len;
+	if (!var->pixclock)
+		return -EINVAL;
 	return PICOS2KHZ(var->pixclock) * 1000 / (htotal * vtotal);
 }
 
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: via: hw: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  1:03 UTC (permalink / raw)
  To: deller; +Cc: FlorianSchandinat, alexguo1023, linux-fbdev, dri-devel,
	linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in viafb_fill_crtc_timing.
Similar crashes have happened in other fbdev drivers. We fix this
by checking whether 'pixclock' is zero.

Similar commit: commit 16844e58704 ("video: fbdev: tridentfb:
Error out if 'pixclock' equals zero")

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/via/hw.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/video/fbdev/via/hw.c b/drivers/video/fbdev/via/hw.c
index 66afd7be00cc..31e0cac91889 100644
--- a/drivers/video/fbdev/via/hw.c
+++ b/drivers/video/fbdev/via/hw.c
@@ -1488,8 +1488,9 @@ void viafb_fill_crtc_timing(const struct fb_var_screeninfo *var,
 	if (viaparinfo->chip_info->gfx_chip_name != UNICHROME_CLE266
 		&& viaparinfo->chip_info->gfx_chip_name != UNICHROME_K400)
 		viafb_load_FIFO_reg(iga, var->xres, var->yres);
-
-	viafb_set_vclock(PICOS2KHZ(var->pixclock) * 1000, iga);
+	
+	if (var->pixclock)
+		viafb_set_vclock(PICOS2KHZ(var->pixclock) * 1000, iga);
 }
 
 void viafb_init_chip_info(int chip_type)
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: tdfxfb: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  0:56 UTC (permalink / raw)
  To: deller; +Cc: alexguo1023, linux-fbdev, dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in tdfxfb_check_var. Similar
crashes have happened in other fbdev drivers. We fix this by
checking whether 'pixclock' is zero.

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/tdfxfb.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/video/fbdev/tdfxfb.c b/drivers/video/fbdev/tdfxfb.c
index 51ebe78359ec..2100857fa7b3 100644
--- a/drivers/video/fbdev/tdfxfb.c
+++ b/drivers/video/fbdev/tdfxfb.c
@@ -495,6 +495,9 @@ static int tdfxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 			return -EINVAL;
 		}
 	}
+	
+	if (var->pixclock <= KHZ2PICOS(par->max_pixclock))
+		var->pixclock = KHZ2PICOS(par->max_pixclock) + 1;
 
 	if (PICOS2KHZ(var->pixclock) > par->max_pixclock) {
 		DPRINTK("pixclock too high (%ldKHz)\n",
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: via: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  0:54 UTC (permalink / raw)
  To: deller, FlorianSchandinat
  Cc: alexguo1023, linux-fbdev, dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
zero, divide by zero would occur in viafb_dvi_set_mode. Similar
crashes have happened in other fbdev drivers. We fix this by
checking whether 'pixclock' is zero.

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/via/dvi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/via/dvi.c b/drivers/video/fbdev/via/dvi.c
index 27990a73bfa3..0ba248b7b360 100644
--- a/drivers/video/fbdev/via/dvi.c
+++ b/drivers/video/fbdev/via/dvi.c
@@ -166,7 +166,7 @@ void viafb_dvi_set_mode(const struct fb_var_screeninfo *var,
 	int maxPixelClock;
 
 	maxPixelClock = viaparinfo->shared->tmds_setting_info.max_pixel_clock;
-	if (maxPixelClock && PICOS2KHZ(var->pixclock) / 1000 > maxPixelClock) {
+	if (maxPixelClock && var->pixclock && PICOS2KHZ(var->pixclock) / 1000 > maxPixelClock) {
 		rb_mode = viafb_get_best_rb_mode(var->xres, var->yres, 60);
 		if (rb_mode)
 			viafb_fill_var_timing_info(&dvi_var, rb_mode);
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: sstfb: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  0:50 UTC (permalink / raw)
  To: deller; +Cc: alexguo1023, linux-fbdev, dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
 zero, divide by zero would occur in sstfb_check_var. Similar
crashes have happened in other fbdev drivers. We fix this by
checking whether 'pixclock' is zero.

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/sstfb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/sstfb.c b/drivers/video/fbdev/sstfb.c
index 2ea947f57efb..fd387ca8401b 100644
--- a/drivers/video/fbdev/sstfb.c
+++ b/drivers/video/fbdev/sstfb.c
@@ -359,7 +359,7 @@ static int sstfb_check_var(struct fb_var_screeninfo *var,
 	int tiles_in_X, real_length;
 	unsigned int freq;
 
-	if (sst_calc_pll(PICOS2KHZ(var->pixclock), &freq, &par->pll)) {
+	if (var->pixclock && sst_calc_pll(PICOS2KHZ(var->pixclock), &freq, &par->pll)) {
 		printk(KERN_ERR "sstfb: Pixclock at %ld KHZ out of range\n",
 				PICOS2KHZ(var->pixclock));
 		return -EINVAL;
-- 
2.34.1


^ permalink raw reply related

* [PATCH] fbdev: sstfb: Fix potential divide by zero
From: Alex Guo @ 2025-06-14  0:44 UTC (permalink / raw)
  To: deller
  Cc: tzimmermann, alexguo1023, gonzalo.silvalde, linux-fbdev,
	dri-devel, linux-kernel

Variable var->pixclock can be set by user. In case it equals to
 zero, divide by zero would occur in sstfb_check_var. Similar
crashes have happened in other fbdev drivers. We fix this by
checking whether 'pixclock' is zero.

Signed-off-by: Alex Guo <alexguo1023@gmail.com>
---
 drivers/video/fbdev/sstfb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/sstfb.c b/drivers/video/fbdev/sstfb.c
index 2ea947f57efb..fd387ca8401b 100644
--- a/drivers/video/fbdev/sstfb.c
+++ b/drivers/video/fbdev/sstfb.c
@@ -359,7 +359,7 @@ static int sstfb_check_var(struct fb_var_screeninfo *var,
 	int tiles_in_X, real_length;
 	unsigned int freq;
 
-	if (sst_calc_pll(PICOS2KHZ(var->pixclock), &freq, &par->pll)) {
+	if (var->pixclock && sst_calc_pll(PICOS2KHZ(var->pixclock), &freq, &par->pll)) {
 		printk(KERN_ERR "sstfb: Pixclock at %ld KHZ out of range\n",
 				PICOS2KHZ(var->pixclock));
 		return -EINVAL;
-- 
2.34.1


^ permalink raw reply related

* Re: [PATCH v2 14/14] fbdev/viafb: Do not include <linux/export.h>
From: Helge Deller @ 2025-06-12 21:29 UTC (permalink / raw)
  To: Thomas Zimmermann; +Cc: linux-fbdev, dri-devel
In-Reply-To: <20250612081738.197826-15-tzimmermann@suse.de>

On 6/12/25 10:16, Thomas Zimmermann wrote:
> Fix the compile-time warning
> 
>    drivers/video/fbdev/via/via-gpio.c: warning: EXPORT_SYMBOL() is not used, but #include <linux/export.h> is present
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>   drivers/video/fbdev/via/via-gpio.c | 1 -
>   1 file changed, 1 deletion(-)

Reviewed-by: Helge Deller <deller@gmx.de>

^ permalink raw reply

* Re: [PATCH v2 13/14] fbdev/viafb: Include <linux/export.h>
From: Helge Deller @ 2025-06-12 21:26 UTC (permalink / raw)
  To: Thomas Zimmermann; +Cc: linux-fbdev, dri-devel
In-Reply-To: <20250612081738.197826-14-tzimmermann@suse.de>

On 6/12/25 10:16, Thomas Zimmermann wrote:
> Fix the compile-time warnings
> 
>    drivers/video/fbdev/via/via-core.c: warning: EXPORT_SYMBOL() is used, but #include <linux/export.h> is missing
>    drivers/video/fbdev/via/via_i2c.c: warning: EXPORT_SYMBOL() is used, but #include <linux/export.h> is missing
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>   drivers/video/fbdev/via/via-core.c | 1 +
>   drivers/video/fbdev/via/via_i2c.c  | 1 +
>   2 files changed, 2 insertions(+)

Reviewed-by: Helge Deller <deller@gmx.de>

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox