CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's handling of GenDisk cleanup paths, where improper error handling can lead to memory leaks of temporary gendisk and request_queue objects. This could potentially allow for resource exhaustion or unintended retention of blk-mq state, impacting system stability and performance. System administrators and developers working with Linux kernel versions that utilize Rust for block device management should prioritize addressing this issue to ensure optimal resource management and system reliability.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: rust: block: fix GenDisk cleanup paths GenDiskBuilder::build() still has fallible work after __blk_mq_alloc_disk(), but its error path only recovers the foreign queue data. That leaks the temporary gendisk and request_queue until later teardown. If the caller moved the last Arc<TagSet<T>> into build(), the leaked queue can retain blk-mq state after the tag set is dropped. Fix the pre-registration failure path by dropping the temporary gendisk reference with put_disk() before recovering queue_data, so disk_release() can tear down the owned queue. Also pair GenDisk::drop() with put_disk() after del_gendisk(). Once a Rust GenDisk has been added with device_add_disk(), del_gendisk() only unregisters it; the final gendisk reference still has to be dropped to complete the release path.