CVE-2023-53376: scsi: mpi3mr: Use number of bits to manage bitmap sizes
In the Linux kernel, the following vulnerability has been resolved:
scsi: mpi3mr: Use number of bits to manage bitmap sizes
To allocate bitmaps, the mpi3mr driver calculates sizes of bitmaps using byte as unit. However, bitmap helper functions assume that bitmaps are allocated using unsigned long as unit. This gap causes memory access beyond the bitmap sizes and results in "BUG: KASAN: slab-out-of-bounds". The BUG was observed at firmware download to eHBA-9600. Call trace indicated that the out-of-bounds access happened in findfirstzerobit() called from mpi3mrsendeventack() for miroc->evtackcmdsbitmap.
To fix the BUG, do not use bytes to manage bitmap sizes. Instead, use number of bits, and call bitmap helper functions which take number of bits as arguments. For memory allocation, call bitmapzalloc() instead of kzalloc() and krealloc(). For memory free, call bitmapfree() instead of kfree(). For zero clear, call bitmapclear() instead of memset().
Remove three fields for bitmap byte sizes in struct scmdpriv which are no longer required. Replace the field devhandlebitmapsz with devhandlebitmapbits to keep number of bits of removependbitmap across resize.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2023-53376?
CVE-2023-53376 has been classified with a severity that may allow for improper bitmap management in the mpi3mr driver.
How do I fix CVE-2023-53376?
To fix CVE-2023-53376, you should update your Linux kernel to the latest version that contains the patches for this vulnerability.
What systems are affected by CVE-2023-53376?
CVE-2023-53376 affects the Linux kernel, specifically those using the mpi3mr driver.
What are the potential impacts of CVE-2023-53376?
The potential impacts of CVE-2023-53376 include risks of improper bitmap size management, leading to system instability or security issues.
When was CVE-2023-53376 reported?
CVE-2023-53376 was reported in 2023, highlighting an issue in bitmap management within the Linux kernel.