Files
Junrui LuoandGreg Kroah-Hartman 75a1621e4f staging: sm750fb: fix division by zero in ps_to_hz()
ps_to_hz() is called from hw_sm750_crtc_set_mode() without validating
that pixclock is non-zero. A zero pixclock passed via FBIOPUT_VSCREENINFO
causes a division by zero.

Fix by rejecting zero pixclock in lynxfb_ops_check_var(), consistent
with other framebuffer drivers.

Fixes: 81dee67e21 ("staging: sm750fb: add sm750 to staging")
Reported-by: Yuhao Jiang <danisjiang@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
Link: https://patch.msgid.link/SYBPR01MB7881AFBFCE28CCF528B35D0CAF4BA@SYBPR01MB7881.ausprd01.prod.outlook.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-03-31 10:33:21 +02:00
..
2025-04-25 16:08:00 +02:00
2025-04-25 16:08:00 +02:00

Introduction:
	SM750 of Silicon MOtion is pci express display controller device.
	The SM750 embedded graphics features include:
	- dual display
	- 2D acceleration
	- 16MB integrated video memory

About the kernel module parameter of driver:

	Use 1280,8bpp index color and 60 hz mode:
	insmod ./sm750fb.ko g_option="1280x1024-8@60"

	Disable MTRR,Disable 2d acceleration,Disable hardware cursor,
	and use a 800x600 mode :
	insmod ./sm750fb.ko g_option="noaccel:nomtrr:nohwc:800x600"

	dual frame buffer for driver with "dual" parameter
	insmod ./sm750fb.ko g_option="dual,800x600:1024x768"
	it will create fb0 and fb1 (or fb1,fb2 if fb0 already exist) under /dev
	and user can use con2fb to link fbX and ttyX

	Notes:
	1) if you build the driver with built-in method, the parameter
		you edited in the grub config file will be also the
		same format as above modular method,but additionally add
		"video=sm750fb:"
		ahead of parameters,so,it looks like:
		video=sm750fb:noaccel,1280x1024@60,otherparam,etc...
		it equal to modular method with below command:
		insmod ./sm750fb.ko g_option="noaccel:1280x1024@60:otherparm:etc..."

	2) if you put 800x600 into the parameter without bpp and
		refresh rate, kernel driver will defaulty use 16bpp and 60hz

Important:
	if you have vesafb enabled in your config then /dev/fb0 will be created by vesafb
	and this driver will use fb1, fb2. In that case, you need to configure your X-server
	to use fb1. Another simple althernative is to disable vesafb from your config.