CVE-2026-99019
Beschrijving NL
In de Linux kernel is de volgende kwetsbaarheid verholpen:
scsi: ch: Bewaar geen verwijzingen naar apparaten met gegevensoverdrachtselementen
ch_readconfig() zoekt het scsi_device op van elk element voor gegevensoverdracht
wiens SCSI-id de wisselaar rapporteert in LEESELEMENTSTATUS en opslaat in
ch->dt[]. scsi_device_lookup() neemt een referentie en er valt nooit iets weg
it: ch_destroy() bevrijdt de array met kfree(). ch->dt[] wordt nergens gelezen
Anders vermeldt het alleen de leverancier, het model en de revisie, die allemaal op dezelfde manier zijn afgedrukt.
lus. Zodra een dergelijke schijf is verwijderd, kan het bijbehorende scsi_device nooit meer worden vrijgegeven.
blijft op de apparatenlijst van de host staan op het betreffende adres, dus een nieuw apparaat daar is
geweigerd door alles wat de lijst doorloopt - target_core_pscsi-rapporten
"scsi_device_get() mislukt voor H:C:T:L" - en de module van het low-level stuurprogramma
Kan niet meer worden verwijderd. Alleen een herstart biedt uitkomst. Het werkt met elke wisselaar die de ID's van zijn schijven rapporteert; met de mhvtl
virtuele bibliotheek (IBM 3573-TL-persoonlijkheid), elk aanmaken en verwijderen van een
Een bibliotheek met vier schijven laat vier verwijzingen achter, geteld door de
Het aantal keren dat een module wordt gebruikt in lsmod. Als ch niet is gebonden, blijft het aantal ongewijzigd.
Met deze patch blijft alles ongewijzigd. Verwijder de verwijzing zodra de naam is afgedrukt en verwijder de 'now'.
ongebruikte dt[] array. Dat verwijdert ook de array die is gelekt toen ch_probe() mislukte.
na ch_readconfig(). Hetzelfde lek werd gemeld met een RFC-patch in 2022, die niet is samengevoegd.
Origineel (Engels) tonen
In the Linux kernel, the following vulnerability has been resolved:
scsi: ch: Do not keep references to data transfer element devices
ch_readconfig() looks up the scsi_device of every data transfer element
whose SCSI id the changer reports in READ ELEMENT STATUS, and stores it in
ch->dt[]. scsi_device_lookup() takes a reference, and nothing ever drops
it: ch_destroy() frees the array with kfree(). ch->dt[] is read nowhere
else - it only supplies the vendor, model and revision printed in the same
loop.
Once such a drive is removed, its scsi_device can never be released. It
stays on the host's device list at its address, so a new device there is
refused by anything that walks the list - target_core_pscsi reports
"scsi_device_get() failed for H:C:T:L" - and the low-level driver's module
can no longer be unloaded. Only a reboot recovers.
It shows with any changer that reports its drives' ids; with the mhvtl
virtual library (IBM 3573-TL personality), each create and remove of a
library with four drives leaves four references behind, counted by the
module's use count in lsmod. With ch not bound the count is unchanged, and
with this patch applied it is unchanged too.
Drop the reference as soon as the name has been printed, and remove the now
unused dt[] array. That also removes the array leaked when ch_probe() fails
after ch_readconfig().
The same leak was reported with an RFC patch in 2022, which was not merged.