• Wen Yang's avatar
    iommu/mediatek: Fix leaked of_node references · 1eb8e4e2
    Wen Yang authored
    The call to of_parse_phandle returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    581 static int mtk_iommu_probe(struct platform_device *pdev)
    582 {
        ...
    626         for (i = 0; i < larb_nr; i++) {
    627                 struct device_node *larbnode;
        ...
    631                 larbnode = of_parse_phandle(...);
    632                 if (!larbnode)
    633                         return -EINVAL;
    634
    635                 if (!of_device_is_available(larbnode))
    636                         continue;             ---> leaked here
    637
        ...
    643                 if (!plarbdev)
    644                         return -EPROBE_DEFER; ---> leaked here
        ...
    647                 component_match_add_release(dev, &match, release_of,
    648                                             compare_of, larbnode);
                                       ---> release_of will call of_node_put
    649         }
        ...
    650
    
    Detected by coccinelle with the following warnings:
    ./drivers/iommu/mtk_iommu.c:644:3-9: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 631, but without a corresponding object release within this function.
    Signed-off-by: default avatarWen Yang <wen.yang99@zte.com.cn>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Matthias Brugger <matthias.bgg@gmail.com>
    Cc: iommu@lists.linux-foundation.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-mediatek@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Reviewed-by: default avatarMatthias Brugger <mbrugger@suse.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    1eb8e4e2
mtk_iommu.c 20.7 KB