mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
cxl/memdev: Pin parents for entire memdev lifetime
In order to be able to manage the driver that uses a memdev attach
mechanism the parent needs to stick around for the
device_release_driver(cxlmd->dev.parent) event.
Fixes: 29317f8dc6 ("cxl/mem: Introduce cxl_memdev_attach for CXL-dependent operation")
Signed-off-by: Dan Williams <djbw@kernel.org>
Reviewed-by: Alejandro Lucero <alucerop@amd.com>
Tested-by: ALejandro Lucero <alucerop@amd.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://patch.msgid.link/20260519210158.1499795-4-djbw@kernel.org
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
This commit is contained in:
parent
4dd86ca99f
commit
bd3a6ff4b8
|
|
@ -25,9 +25,11 @@ static DEFINE_IDA(cxl_memdev_ida);
|
|||
static void cxl_memdev_release(struct device *dev)
|
||||
{
|
||||
struct cxl_memdev *cxlmd = to_cxl_memdev(dev);
|
||||
struct device *parent = dev->parent;
|
||||
|
||||
ida_free(&cxl_memdev_ida, cxlmd->id);
|
||||
kfree(cxlmd);
|
||||
put_device(parent);
|
||||
}
|
||||
|
||||
static char *cxl_memdev_devnode(const struct device *dev, umode_t *mode, kuid_t *uid,
|
||||
|
|
@ -707,7 +709,7 @@ static struct cxl_memdev *cxl_memdev_alloc(struct cxl_dev_state *cxlds,
|
|||
dev = &cxlmd->dev;
|
||||
device_initialize(dev);
|
||||
lockdep_set_class(&dev->mutex, &cxl_memdev_key);
|
||||
dev->parent = cxlds->dev;
|
||||
dev->parent = get_device(cxlds->dev);
|
||||
dev->bus = &cxl_bus_type;
|
||||
dev->devt = MKDEV(cxl_mem_major, cxlmd->id);
|
||||
dev->type = &cxl_memdev_type;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user