In the Linux kernel, the following vulnerability has been resolved:
md/md-bitmap: fix GPF in bitmapgetstats()
The commit message of commit 6ec1f0239485 ("md/md-bitmap: fix stats collection for external bitmaps") states:
Remove the external bitmap check as the statistics should be
available regardless of bitmap storage location.
Return -EINVAL only for invalid bitmap with no storage (neither in
superblock nor in external file).
But, the code does not adhere to the above, as it does only check for a valid super-block for "internal" bitmaps. Hence, we observe:
Oops: GPF, probably for non-canonical address 0x1cd66f1f40000028 RIP: 0010:bitmapgetstats+0x45/0xd0 Call Trace:
seqreaditer+0x2b9/0x46a seqread+0x12f/0x180 procregread+0x57/0xb0 vfsread+0xf6/0x380 ksysread+0x6d/0xf0 dosyscall64+0x8c/0x1b0 entrySYSCALL64after_hwframe+0x76/0x7e
We fix this by checking the existence of a super-block for both the internal and external case.