Description
In the Linux kernel, the following vulnerability has been resolved: Revert "hwmon: (ibmpex) fix use-after-free in high/low store" This reverts commit 6946c726c3f4c36f0f049e6f97e88c510b15f65d. Jean Delvare points out that the patch does not completely fix the reported problem, that it in fact introduces a (new) race condition, and that it may actually not be needed in the first place. Various AI reviews agree. Specific and relevant AI feedback: " This reordering sets the driver data to NULL before removing the sensor attributes in the loop below. ibmpex_show_sensor() retrieves this driver data via dev_get_drvdata() but does not check if it is NULL before dereferencing it to access data->sensors[]. If a userspace process reads a sensor file (like temp1_input) while this delete function is running, could it race with the dev_set_drvdata(..., NULL) call here and crash in ibmpex_show_sensor()? Would it be safer to keep the original order where device_remove_file() is called before clearing the driver data? device_remove_file() should wait for any active sysfs callbacks to complete, which might already prevent the use-after-free this patch intends to fix. " Revert the offending patch. If it can be shown that the originally reported alleged race condition does indeed exist, it can always be re-introduced with a complete fix.
Product status
3ce9b7ae9d4d148672b35147aaf7987a4f82bb94 (git) before 05112ba67c824ab416cd54307c0b50aba9f0047a
533ead425f8109b02fecc7e72d612b8898ec347a (git) before efd68429f23fb4015b0ebc2392334059e06fad18
fa37adcf1d564ef58b9dfb01b6c36d35c5294bad (git) before f448acd86835a650f9ea83460b9ca347d3aafba5
68d62e5bebbd118b763e8bb210d5cf2198ef450c (git) before 914b47c9b824d3d74f31c764163edf93302100b1
5aa2139201667c1f644601e4529c4acd6bf8db5a (git) before 14a38784e09aebc21207dc32fffa05247fc3dd64
6946c726c3f4c36f0f049e6f97e88c510b15f65d (git) before 894d9c7aab68fd0c70c78b1d03c8fa589fb0f67d
6946c726c3f4c36f0f049e6f97e88c510b15f65d (git) before 8bde3e395a85017f12af2b0ba5c3684f5af9c006
5.10.248 (semver) before 5.10.252
6.1.160 (semver) before 6.1.165
6.6.120 (semver) before 6.6.128
6.12.64 (semver) before 6.12.75
6.18.3 (semver) before 6.18.14
6.19
Any version before 6.19
5.10.252 (semver)
6.1.165 (semver)
6.6.128 (semver)
6.12.75 (semver)
6.18.14 (semver)
6.19.4 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/05112ba67c824ab416cd54307c0b50aba9f0047a
git.kernel.org/...c/efd68429f23fb4015b0ebc2392334059e06fad18
git.kernel.org/...c/f448acd86835a650f9ea83460b9ca347d3aafba5
git.kernel.org/...c/914b47c9b824d3d74f31c764163edf93302100b1
git.kernel.org/...c/14a38784e09aebc21207dc32fffa05247fc3dd64
git.kernel.org/...c/894d9c7aab68fd0c70c78b1d03c8fa589fb0f67d
git.kernel.org/...c/8bde3e395a85017f12af2b0ba5c3684f5af9c006