Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: nvmet-fc: fix invalid free in LS IOD error path nvmet_fc_alloc_ls_iodlist() advances iod while initializing the LS IOD array. If an rqstbuf allocation or response buffer DMA mapping fails, the unwind loop decrements iod past the start of the array. The final kfree(iod) therefore frees an address before the allocated object. This can be reproduced with nvme-fcloop and failslab by setting fail-nth to 6 before creating a target port. KASAN reports: BUG: KASAN: invalid-free in nvmet_fc_register_targetport Free of addr ffff88816cf8ff48 by task nvmet_fail_nth/9552 Free the original allocation base stored in tgtport->iod instead. With this fix applied, the same sysfs write with fail-nth=6 returns -ENOMEM without any KASAN report.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before b189c6e408896ccc23d2e76d7738847cdebf1532; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before 449e9c4f8db84ad9d9bb288029b230bcf590faa2; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before 1a8f007faefe8c226ec65896589f8d59b0a8d5a5; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before d094582cce9c08516d714e7436a8f3b9211dda90; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before 371fb1bf902adaa59be32bd7e904a5317e604fd0; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before 8bce9cd08aae4283badf8ddc11fbb6f57b75a81e; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before bb9489f0dce58da730d3479588d6710d7a2c1b45; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before 94334ea92f4d7535f66f86e33681efa94827eddc; affected c53432030d86429dc9fe5adc3d68cb9d1343b0b2 before ba98d6796d12258e837ece065d2ecb59d76ce4ff |
| Linux / Linux | affected 4.10; unaffected 0 before 4.10; unaffected 5.10.267 through 5.10.*; unaffected 5.15.218 through 5.15.*; unaffected 6.1.185 through 6.1.*; unaffected 6.6.154 through 6.6.*; unaffected 6.12.106 through 6.12.*; unaffected 6.18.47 through 6.18.*; unaffected 7.1.11 through 7.1.*; unaffected 7.2.1 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/b189c6e408896ccc23d2e76d7738847cdebf1532
- https://git.kernel.org/stable/c/449e9c4f8db84ad9d9bb288029b230bcf590faa2
- https://git.kernel.org/stable/c/1a8f007faefe8c226ec65896589f8d59b0a8d5a5
- https://git.kernel.org/stable/c/d094582cce9c08516d714e7436a8f3b9211dda90
- https://git.kernel.org/stable/c/371fb1bf902adaa59be32bd7e904a5317e604fd0
- https://git.kernel.org/stable/c/8bce9cd08aae4283badf8ddc11fbb6f57b75a81e
- https://git.kernel.org/stable/c/bb9489f0dce58da730d3479588d6710d7a2c1b45
- https://git.kernel.org/stable/c/94334ea92f4d7535f66f86e33681efa94827eddc
- https://git.kernel.org/stable/c/ba98d6796d12258e837ece065d2ecb59d76ce4ff