Description
In the Linux kernel, the following vulnerability has been resolved: comedi: Reinit dev->spinlock between attachments to low-level drivers `struct comedi_device` is the main controlling structure for a COMEDI device created by the COMEDI subsystem. It contains a member `spinlock` containing a spin-lock that is initialized by the COMEDI subsystem, but is reserved for use by a low-level driver attached to the COMEDI device (at least since commit 25436dc9d84f ("Staging: comedi: remove RT code")). Some COMEDI devices (those created on initialization of the COMEDI subsystem when the "comedi.comedi_num_legacy_minors" parameter is non-zero) can be attached to different low-level drivers over their lifetime using the `COMEDI_DEVCONFIG` ioctl command. This can result in inconsistent lock states being reported when there is a mismatch in the spin-lock locking levels used by each low-level driver to which the COMEDI device has been attached. Fix it by reinitializing `dev->spinlock` before calling the low-level driver's `attach` function pointer if `CONFIG_LOCKDEP` is enabled.
Product status
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before 3181c34b415c5464be9d34bff3e43ef63b747039
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before 2b1f49e4fdff3ef0f8e9158bbb5b149e06287560
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before 4d5ffe524903a30e2e0da7d16841a56bec2de55c
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before c01bcc67a9a692d65508ebd480405b5e77d562b7
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before 430291d8f3884f57ae0057049b0ca291453e29e1
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before b89c026227712c367950bbae055a5b31073d3b30
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before 83134a7a176ce5b4b19b6edecf4360e8d98d1a5a
ed9eccbe8970f6eedc1b978c157caf1251a896d4 (git) before 4b9a9a6d71e3e252032f959fb3895a33acb5865c
2.6.29
Any version before 2.6.29
5.10.253 (semver)
5.15.203 (semver)
6.1.168 (semver)
6.6.134 (semver)
6.12.81 (semver)
6.18.22 (semver)
6.19.12 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/3181c34b415c5464be9d34bff3e43ef63b747039
git.kernel.org/...c/2b1f49e4fdff3ef0f8e9158bbb5b149e06287560
git.kernel.org/...c/4d5ffe524903a30e2e0da7d16841a56bec2de55c
git.kernel.org/...c/c01bcc67a9a692d65508ebd480405b5e77d562b7
git.kernel.org/...c/430291d8f3884f57ae0057049b0ca291453e29e1
git.kernel.org/...c/b89c026227712c367950bbae055a5b31073d3b30
git.kernel.org/...c/83134a7a176ce5b4b19b6edecf4360e8d98d1a5a
git.kernel.org/...c/4b9a9a6d71e3e252032f959fb3895a33acb5865c