在平台驱动程序的探测例程中,我看到私有设备结构是通过devm_kzalloc()
. 在设置驱动程序数据之前,platform_set_drvdata()
有一些错误情况会返回,而不会释放分配的私有设备结构。我找不到这个结构将被释放的地方。你能指出结构在哪里被释放。下面是 Linux 内核源代码 (v5.0) 中的示例平台驱动程序,分配失败ep
时不会释放该驱动程序。pci
static int __init exynos_pcie_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct dw_pcie *pci;
struct exynos_pcie *ep;
struct device_node *np = dev->of_node;
int ret;
ep = devm_kzalloc(dev, sizeof(*ep), GFP_KERNEL);
if (!ep)
return -ENOMEM;
pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL);
if (!pci)
return -ENOMEM;
...
...
}