Subject: CVE-2023-52589: media: rkisp1: Fix IRQ disable race issue

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

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

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

media: rkisp1: Fix IRQ disable race issue

In rkisp1_isp_stop() and rkisp1_csi_disable() the driver masks the
interrupts and then apparently assumes that the interrupt handler won't
be running, and proceeds in the stop procedure. This is not the case, as
the interrupt handler can already be running, which would lead to the
ISP being disabled while the interrupt handler handling a captured
frame.

This brings up two issues: 1) the ISP could be powered off while the
interrupt handler is still running and accessing registers, leading to
board lockup, and 2) the interrupt handler code and the code that
disables the streaming might do things that conflict.

It is not clear to me if 2) causes a real issue, but 1) can be seen with
a suitable delay (or printk in my case) in the interrupt handler,
leading to board lockup.

The Linux kernel CVE team has assigned CVE-2023-52589 to this issue.

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

	Fixed in 6.1.77 with commit bf808f58681c
	Fixed in 6.6.16 with commit fab483438342
	Fixed in 6.7.4 with commit 7bb1a2822aa2
	Fixed in 6.8 with commit 870565f063a5

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-2023-52589
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/media/platform/rockchip/rkisp1/rkisp1-csi.c
	drivers/media/platform/rockchip/rkisp1/rkisp1-isp.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/bf808f58681cab64c81cd814551814fd34e540fe
	https://git.kernel.org/stable/c/fab483438342984f2a315fe13c882a80f0f7e545
	https://git.kernel.org/stable/c/7bb1a2822aa2c2de4e09bf7c56dd93bd532f1fa7
	https://git.kernel.org/stable/c/870565f063a58576e8a4529f122cac4325c6b395