Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
c53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < b189c6e408896ccc23d2e76d7738847cdebf1532affectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < 449e9c4f8db84ad9d9bb288029b230bcf590faa2affectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < 1a8f007faefe8c226ec65896589f8d59b0a8d5a5affectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < d094582cce9c08516d714e7436a8f3b9211dda90affectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < 371fb1bf902adaa59be32bd7e904a5317e604fd0affectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < 8bce9cd08aae4283badf8ddc11fbb6f57b75a81eaffectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < bb9489f0dce58da730d3479588d6710d7a2c1b45affectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < 94334ea92f4d7535f66f86e33681efa94827eddcaffectedc53432030d86429dc9fe5adc3d68cb9d1343b0b2 to < ba98d6796d12258e837ece065d2ecb59d76ce4ffaffected
Linux Linux
Default version status: affected
4.10affected0 to < 4.10unaffected5.10.267 to ≤ 5.10.*unaffected5.15.218 to ≤ 5.15.*unaffected6.1.185 to ≤ 6.1.*unaffected6.6.154 to ≤ 6.6.*unaffected6.12.106 to ≤ 6.12.*unaffected6.18.47 to ≤ 6.18.*unaffected7.1.11 to ≤ 7.1.*unaffected7.2.1 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
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 ↗