Description
In the Linux kernel, the following vulnerability has been resolved: mtd: mtdswap: Avoid freeing registered blktrans device twice In mtdswap_add_mtd(), debugfs setup failure after successful blktrans registration can free mbd_dev twice. add_mtd_blktrans_dev() initializes the blktrans device reference and publishes the disk. Once that succeeds, del_mtd_blktrans_dev() tears the disk down and drops the blktrans reference; when that reference reaches zero, blktrans_dev_release() frees the mtd_blktrans_dev. The debugfs failure path called del_mtd_blktrans_dev(mbd_dev), then fell through the common cleanup label and called kfree(mbd_dev) again. Clear the local pointer after deregistration so the common cleanup can still release the mtdswap state without freeing the blktrans object twice. This issue was found by a static analysis checker and confirmed by manual source review.
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
e8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < ecadb9137aeaa0615183f8d23eabea2b45c862f1affectede8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < eec130fc9ffbbd08a5d5432683122b79aca2a726affectede8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < d5086911d532b82ca070d944aa08ddde00baefe4affectede8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < 0ce48c6ddea1a8e675a2eb0221b62a9950788f3caffectede8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < a82d93fcfdfd26af17049c34319dfdd079cd1901affectede8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < 5c349c533e72af2313c3be0f80a24d7407fa4777affectede8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < 37be7bc2c2d09c18e939da20224405864a0090b9affectede8e3edb95ce6a146bc774b6cfad3553f4383edc8 to < 779aa4c66a96bf43d2d62982ea1a9096a9128d87affected
Linux Linux
Default version status: affected
4.14affected0 to < 4.14unaffected5.10.270 to ≤ 5.10.*unaffected5.15.221 to ≤ 5.15.*unaffected6.1.188 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/ecadb9137aeaa0615183f8d23eabea2b45c862f1 ↗
- https://git.kernel.org/stable/c/eec130fc9ffbbd08a5d5432683122b79aca2a726 ↗
- https://git.kernel.org/stable/c/d5086911d532b82ca070d944aa08ddde00baefe4 ↗
- https://git.kernel.org/stable/c/0ce48c6ddea1a8e675a2eb0221b62a9950788f3c ↗
- https://git.kernel.org/stable/c/a82d93fcfdfd26af17049c34319dfdd079cd1901 ↗
- https://git.kernel.org/stable/c/5c349c533e72af2313c3be0f80a24d7407fa4777 ↗
- https://git.kernel.org/stable/c/37be7bc2c2d09c18e939da20224405864a0090b9 ↗
- https://git.kernel.org/stable/c/779aa4c66a96bf43d2d62982ea1a9096a9128d87 ↗