Subject: CVE-2024-27412: power: supply: bq27xxx-i2c: Do not free non existing IRQ

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

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

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

power: supply: bq27xxx-i2c: Do not free non existing IRQ

The bq27xxx i2c-client may not have an IRQ, in which case
client->irq will be 0. bq27xxx_battery_i2c_probe() already has
an if (client->irq) check wrapping the request_threaded_irq().

But bq27xxx_battery_i2c_remove() unconditionally calls
free_irq(client->irq) leading to:

[  190.310742] ------------[ cut here ]------------
[  190.310843] Trying to free already-free IRQ 0
[  190.310861] WARNING: CPU: 2 PID: 1304 at kernel/irq/manage.c:1893 free_irq+0x1b8/0x310

Followed by a backtrace when unbinding the driver. Add
an if (client->irq) to bq27xxx_battery_i2c_remove() mirroring
probe() to fix this.

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

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

	Issue introduced in 4.19.284 with commit 76d2ed844def and fixed in 4.19.309 with commit d4d813c0a14d
	Issue introduced in 5.4.244 with commit dafe9136be7b and fixed in 5.4.271 with commit 7394abc8926a
	Issue introduced in 5.10.181 with commit 1da9a4b55a66 and fixed in 5.10.212 with commit d7acc4a569f5
	Issue introduced in 5.15.114 with commit e01820a94aea and fixed in 5.15.151 with commit e601ae81910c
	Issue introduced in 6.1.31 with commit e65fee45687f and fixed in 6.1.81 with commit cefe18e9ec84
	Issue introduced in 6.4 with commit 444ff00734f3 and fixed in 6.6.21 with commit fbca8bae1ba7
	Issue introduced in 6.4 with commit 444ff00734f3 and fixed in 6.7.9 with commit 083686474e7c
	Issue introduced in 6.4 with commit 444ff00734f3 and fixed in 6.8 with commit 2df70149e73e
	Issue introduced in 4.14.316 with commit ca4a2ddd2e69
	Issue introduced in 6.3.5 with commit 28960625adaa

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-27412
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/power/supply/bq27xxx_battery_i2c.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/d4d813c0a14d6bf52d810a55db06a2e7e3d98eaa
	https://git.kernel.org/stable/c/7394abc8926adee6a817bab10797e0adc898af77
	https://git.kernel.org/stable/c/d7acc4a569f5f4513120c85ea2b9f04909b7490f
	https://git.kernel.org/stable/c/e601ae81910ce6a3797876e190a2d8ef6cf828bc
	https://git.kernel.org/stable/c/cefe18e9ec84f8fe3e198ccebb815cc996eb9797
	https://git.kernel.org/stable/c/fbca8bae1ba79d443a58781b45e92a73a24ac8f8
	https://git.kernel.org/stable/c/083686474e7c97b0f8b66df37fcb64e432e8b771
	https://git.kernel.org/stable/c/2df70149e73e79783bcbc7db4fa51ecef0e2022c