Subject: CVE-2024-26778: fbdev: savage: Error out if pixclock equals zero

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

fbdev: savage: Error out if pixclock equals zero

The userspace program could pass any values to the driver through
ioctl() interface. If the driver doesn't check the value of pixclock,
it may cause divide-by-zero error.

Although pixclock is checked in savagefb_decode_var(), but it is not
checked properly in savagefb_probe(). Fix this by checking whether
pixclock is zero in the function savagefb_check_var() before
info->var.pixclock is used as the divisor.

This is similar to CVE-2022-3061 in i740fb which was fixed by
commit 15cf0b8.

The Linux kernel CVE team has assigned CVE-2024-26778 to this issue.

Affected and fixed versions
===========================

	Fixed in 4.19.308 with commit 224453de8505
	Fixed in 5.4.270 with commit 84dce0f6a4cc
	Fixed in 5.10.211 with commit 512ee6d6041e
	Fixed in 5.15.150 with commit 8c54acf33e5a
	Fixed in 6.1.80 with commit 070398d32c5f
	Fixed in 6.6.19 with commit bc3c2e58d73b
	Fixed in 6.7.7 with commit a9ca4e80d234
	Fixed in 6.8 with commit 04e5eac8f3ab

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-26778
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/video/fbdev/savage/savagefb_driver.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/224453de8505aede1890f007be973925a3edf6a1
	https://git.kernel.org/stable/c/84dce0f6a4cc5b7bfd7242ef9290db8ac1dd77ff
	https://git.kernel.org/stable/c/512ee6d6041e007ef5bf200c6e388e172a2c5b24
	https://git.kernel.org/stable/c/8c54acf33e5adaad6374bf3ec1e3aff0591cc8e1
	https://git.kernel.org/stable/c/070398d32c5f3ab0e890374904ad94551c76aec4
	https://git.kernel.org/stable/c/bc3c2e58d73b28b9a8789fca84778ee165a72d13
	https://git.kernel.org/stable/c/a9ca4e80d23474f90841251f4ac0d941fa337a01
	https://git.kernel.org/stable/c/04e5eac8f3ab2ff52fa191c187a46d4fdbc1e288