[PATCH] nvme-tcp: fix use-after-free in nvme_tcp_free_ctrl()
Keith Busch
kbusch at kernel.org
Mon Nov 2 09:26:58 PST 2026
On Fri, Oct 30, 2026 at 02:01:51PM -0300, Christian Aurich Zanettini Martins wrote:
> nvme_tcp_free_ctrl() reads ctrl->ctrl.opts to know how many queue
> mutexes to destroy. When creating the controller fails,
> nvmf_create_ctrl() frees opts as soon as nvme_tcp_create_ctrl()
> returns, but a concurrent open of the character device can hold the
> last reference to the controller. With CONFIG_DEBUG_KOBJECT_RELEASE,
> which delays the release, every failed connect reads freed memory:
>
> BUG: KASAN: slab-use-after-free in nvme_tcp_free_ctrl+0x38b/0x430
> Read of size 4 at addr ffff888005b93740 by task kworker/2:1/51
>
> Keep the size of the queue array in the controller and use it instead.
Thanks, applied to nvme-7.4.
More information about the Linux-nvme
mailing list