In the Linux kernel, the following vulnerability has been resolved:
scsi: lpfc: Fix use-after-free KFENCE violation during sysfs firmware write
During the sysfs firmware write process, a use-after-free read warning is logged from the lpfcwrobject() routine:
BUG: KFENCE: use-after-free read in lpfcwrobject+0x235/0x310 [lpfc] Use-after-free read at 0x0000000000cf164d (in kfence-#111): lpfcwrobject+0x235/0x310 [lpfc] lpfcwritefirmware.cold+0x206/0x30d [lpfc] lpfcsli4requestfirmwareupdate+0xa6/0x100 [lpfc] lpfcrequestfirmwareupgradestore+0x66/0xb0 [lpfc] kernfsfopwriteiter+0x121/0x1b0 newsyncwrite+0x11c/0x1b0 vfswrite+0x1ef/0x280 ksyswrite+0x5f/0xe0 dosyscall64+0x59/0x90 entrySYSCALL64after_hwframe+0x63/0xcd
The driver accessed wr_object pointer data, which was initialized into mailbox payload memory, after the mailbox object was released back to the mailbox pool.
Fix by moving the mailbox free calls to the end of the routine ensuring that we don't reference internal mailbox memory after release.