0

在平台驱动程序的探测例程中,我看到私有设备结构是通过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;
    ...
    ...
}
4

0 回答 0