From patchwork Tue Apr 11 00:34:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aashish Sharma X-Patchwork-Id: 13206862 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C89E2C77B61 for ; Tue, 11 Apr 2023 00:35:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: Mime-Version:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=By0PHmdEjEb6OjoXQZlJDTezqbydWTvaitr2zbubjdI=; b=c1u cxejG9Jt540bpIMIcX3QSs0msfwqSs9RsslbhcjHtbfB7JdMacqHtIGtGkfAeZgpwjZE7whZcz9z6 OJ+esbXWVybyOobq7fX/mqvtXHCpEzZ0867zLE6/Uk9egD4rknIP4CeHe3s8zMuZQ0YM9OPuXmicw Ck46J2Ryv5BXm4+uSj6X057a+0GblMRpiRg6+5zmWCRuMvT5UBpNbZjzkIWV3TrhN9N4YF+16Z1u0 JHHEPM5RiP1I9NxyVKJIKyM+b7Xs0IKKwOJBCj71q4fcwj1laYVtzHSOxmUJXrdsnCyLQBRRaTJkW cqC+EmPcg/6ClR0omGJkpi6JnXMXgIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pm1yH-00G9pv-2t; Tue, 11 Apr 2023 00:34:53 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pm1yC-00G9oY-1p for linux-arm-kernel@lists.infradead.org; Tue, 11 Apr 2023 00:34:52 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id 10-20020a25000a000000b00b5f1fab9897so7263891yba.19 for ; Mon, 10 Apr 2023 17:34:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1681173285; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=VV8PXIioY+lpB4ukX6X0D5BOfhtAOO5OAgem+yfBPzU=; b=DwHddE9ICDDWjQSM54RArNBxPbpLZ/n6gkwcx9BCskxL2erXnG3TX1P1/lmatz71h8 e94TF8KXKDvpyL4+PvFL49b96iK4zjO7oAD6oKVkKVTugVr/ROAVKTo6DG3IYXBNNIwd KZwGLSxNmgNkFDNODIwPNAG9WGleBFL4Lg8DGM0uPXamolTJCKG1FeSxuwZta+gWzIs8 GEieLq6UzVi9zxIKuSHQrSuVRgg613rdEsagFCHxGrV1UU9im61ClVqEDPa9FRAv74zx VtHQ3ba/QpGls+Yf8jJ9cbGHYt0miiDAZ36gBf5/V7GI1LYNdafonbUf2M4vYCef0HDE FW+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681173285; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=VV8PXIioY+lpB4ukX6X0D5BOfhtAOO5OAgem+yfBPzU=; b=XN7DGOvN/cLCsHv/KAhWnNdCPlG8E4eNNZszKq7zSNyPHbM/nKUGCuY2GjfbOgA2Lc Yg/NUSpUT6hvJJ2N5S2iZ+n2/UH+R1EcZsau1oe/yvnUzQsp2bZRsaAcro02H4ZE+Sa/ IyFOGIXsymXuhZ8QJJgwFBMu5i+yRcHHpNSHxTGSL9+teaTVZKqGDEzMSp7OMPfafgcO TVpABXVodmkjnNsvPn2K2+EIvFgjxxemO6XMWbxnMY0L1B00JjXYXfPHzjMFsBMBLX/J vkomVb9CXRO+lmX3ADNWZ0Ip1IjEL0gS23BpyxFmmBOPnN1ni/FGD1yCNa2mhW9ZDfpK vJkA== X-Gm-Message-State: AAQBX9d5ODV1/fb+DX/iyBgMIhTEIryyJ9VLLbnmycA3vyYbN+95GYK7 a+w2EfLL1R2LlXXy5T6TaRhtJ0Leymp5 X-Google-Smtp-Source: AKy350ZOwDyxZ5zmnvjOtmK+m8d2Zb+sInKjo5gza1IG8xreF6QccHiFCV8qDL7zjDXDQLZcFmYPSNKGp1ua X-Received: from ezekiel.c.googlers.com ([fda3:e722:ac3:cc00:4f:4b78:c0a8:108e]) (user=shraash job=sendgmr) by 2002:a81:b284:0:b0:544:94fe:4244 with SMTP id q126-20020a81b284000000b0054494fe4244mr636814ywh.10.1681173284695; Mon, 10 Apr 2023 17:34:44 -0700 (PDT) Date: Tue, 11 Apr 2023 06:04:31 +0530 Mime-Version: 1.0 X-Mailer: git-send-email 2.40.0.577.gac1e443424-goog Message-ID: <20230411003431.4048700-1-shraash@google.com> Subject: [PATCH] ASoC: mediatek: common: Fix refcount leak in parse_dai_link_info From: Aashish Sharma To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Matthias Brugger , AngeloGioacchino Del Regno , Trevor Wu , Guenter Roeck Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Aashish Sharma , kernel test robot , Julia Lawall X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230410_173448_600650_E4D4436D X-CRM114-Status: GOOD ( 13.10 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add missing of_node_put()s before the returns to balance of_node_get()s and of_node_put()s, which may get unbalanced in case the for loop 'for_each_available_child_of_node' returns early. Fixes: 4302187d955f ("ASoC: mediatek: common: add soundcard driver common code") Reported-by: kernel test robot Reported-by: Julia Lawall Link: https://lore.kernel.org/r/202304090504.2K8L6soj-lkp@intel.com/ Signed-off-by: Aashish Sharma Reviewed-by: Guenter Roeck Reviewed-by: Trevor Wu --- sound/soc/mediatek/common/mtk-soundcard-driver.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sound/soc/mediatek/common/mtk-soundcard-driver.c b/sound/soc/mediatek/common/mtk-soundcard-driver.c index 7c55c2cb1f21..738093451ccb 100644 --- a/sound/soc/mediatek/common/mtk-soundcard-driver.c +++ b/sound/soc/mediatek/common/mtk-soundcard-driver.c @@ -47,20 +47,26 @@ int parse_dai_link_info(struct snd_soc_card *card) /* Loop over all the dai link sub nodes */ for_each_available_child_of_node(dev->of_node, sub_node) { if (of_property_read_string(sub_node, "link-name", - &dai_link_name)) + &dai_link_name)) { + of_node_put(sub_node); return -EINVAL; + } for_each_card_prelinks(card, i, dai_link) { if (!strcmp(dai_link_name, dai_link->name)) break; } - if (i >= card->num_links) + if (i >= card->num_links) { + of_node_put(sub_node); return -EINVAL; + } ret = set_card_codec_info(card, sub_node, dai_link); - if (ret < 0) + if (ret < 0) { + of_node_put(sub_node); return ret; + } } return 0;