mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 17:59:32 +00:00
![Johan Hovold](/assets/img/avatar_default.png)
[ Upstream commit229e73d469
] Make sure to free the platform device in the unlikely event that registration fails. Fixes:7a67832c7e
("libnvdimm, e820: make CONFIG_X86_PMEM_LEGACY a tristate option") Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Borislav Petkov <bp@suse.de> Link: https://lore.kernel.org/r/20220620140723.9810-1-johan@kernel.org Signed-off-by: Sasha Levin <sashal@kernel.org>
37 lines
798 B
C
37 lines
798 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2015, Christoph Hellwig.
|
|
* Copyright (c) 2015, Intel Corporation.
|
|
*/
|
|
#include <linux/platform_device.h>
|
|
#include <linux/init.h>
|
|
#include <linux/ioport.h>
|
|
|
|
static int found(struct resource *res, void *data)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
static __init int register_e820_pmem(void)
|
|
{
|
|
struct platform_device *pdev;
|
|
int rc;
|
|
|
|
rc = walk_iomem_res_desc(IORES_DESC_PERSISTENT_MEMORY_LEGACY,
|
|
IORESOURCE_MEM, 0, -1, NULL, found);
|
|
if (rc <= 0)
|
|
return 0;
|
|
|
|
/*
|
|
* See drivers/nvdimm/e820.c for the implementation, this is
|
|
* simply here to trigger the module to load on demand.
|
|
*/
|
|
pdev = platform_device_alloc("e820_pmem", -1);
|
|
|
|
rc = platform_device_add(pdev);
|
|
if (rc)
|
|
platform_device_put(pdev);
|
|
|
|
return rc;
|
|
}
|
|
device_initcall(register_e820_pmem);
|