Re: [PATCH v2] nvdimm/pmem: Release gendisk on probe failure
From: Alison Schofield
Date: Thu Oct 01 2026 - 21:40:57 EST
On Fri, Sep 11, 2026 at 01:55:43PM +0530, Hemanth Selam wrote:
> pmem_attach_disk() allocates the gendisk with blk_alloc_disk() and hands
> it to devres only once device_add_disk() has succeeded. Until that
> point the probe path owns the disk itself, which is why every failure
> after the allocation jumps to the out: label and puts it there.
>
> The devm_init_badblocks() failure returns directly instead, so the disk
> allocated a few lines earlier is never released. Nothing releases it
> afterwards either: the devres action that would have done so has not
> been registered yet, so unbinding the namespace or destroying it does
> not reach the disk, and it stays allocated along with its queue and its
> bdev inode until the machine is rebooted.
>
> devm_init_badblocks() only fails when a single page allocation fails, so
> reaching this at all needs memory exhaustion during namespace probe, and
> because device_add_disk() has not run there is nothing user visible left
> behind: no device node, no sysfs entry, only the leaked memory.
>
> Release the gendisk through the existing cleanup path on this failure.
>
> Fixes: 3dd60fb9d95d ("nvdimm/pmem: stop using q_usage_count as external pgmap refcount")
> Signed-off-by: Hemanth Selam <hemanth.selam@xxxxxxxxx>
Applied to libnvdimm-for-next:
https://git.kernel.org/nvdimm/nvdimm/c/855a46681e0b