Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp392784rwb; Thu, 6 Oct 2022 20:59:13 -0700 (PDT) X-Google-Smtp-Source: AMsMyM77dcAJHTcAxWOKZ9ajsw51uKVVdslkUBPdfI2rIH0oGSllY+IT/KXnKZeIRyfq+PJBN2pM X-Received: by 2002:a17:907:728f:b0:78c:336b:d8c0 with SMTP id dt15-20020a170907728f00b0078c336bd8c0mr2395337ejc.429.1665115153667; Thu, 06 Oct 2022 20:59:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665115153; cv=none; d=google.com; s=arc-20160816; b=xVPdBXv9uS7nV7Qr+9nXukumSKL5z8dCSNb4Q0AUuWxOR/Fhjvcbq3oKQD7iDisKQr 5ATAIDHRqeLeVMEF+1aXys5h6sHKSNBUm5bHtW/gF6fHPo00y+1TTKgSIdmyFo0+sDCq 2LTVZYBy91QPv3oMgq0q6WQhr7UErVQWqOJ3Le4Z/cEDdB1/N5OhLqbI3sJHE8Osxdsr Y+ZhelnRlXDJgxtzBEiNnmmoyIFVQGICM98OC9KjAkKFyeKWSf9hIHh+G0gkdCpVnboH inDOHwxPkEtLJygARrSQP8ygD7tuKylY+J73HjzS77zQrNSmS3HRXDa/5U7hSEFM32Qc BAiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=/oWLN1QibLKYwbGtl/+MPnCzcRVAOZYRE3UKJfp/DEg=; b=CamR2P20EstZ8cjT8U9qE7LsNoQCAFyFf0aazjA3OFcBlsXB8BUZs98c7h5KZJ/6Gu EV2LxMH/BnPh2mydXifQm70CpqbClrg9t3psngVkZIb4Zyi4v65ZFJrQ7TrXnqE6lboT 6ecSyIceRkNbl+Ylr8hocrlVux2uiDIrFVIBB2BxMx4zVHdV583tYGIssqhb7ZgClZOZ 3Jmzc8EAZx0ujpQVpxpUz8+I20fPNdoCQ6rD9KGart3pYtmOYo4ahyp0EjZ41Vv/RZmZ 4YZ+U8Yi7jGkJ2aKyLHb8tyol7oe35+q4gH82Q+luU5fvXRLt69Do+OYJK25lJ2A0y9S jfSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id du18-20020a17090772d200b0078d2848bca9si1239827ejc.704.2022.10.06.20.58.42; Thu, 06 Oct 2022 20:59:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229680AbiJGDcx (ORCPT + 99 others); Thu, 6 Oct 2022 23:32:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43696 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229591AbiJGDcv (ORCPT ); Thu, 6 Oct 2022 23:32:51 -0400 Received: from cstnet.cn (smtp84.cstnet.cn [159.226.251.84]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 8F1E69C22B; Thu, 6 Oct 2022 20:32:48 -0700 (PDT) Received: from localhost.localdomain (unknown [124.16.138.125]) by APP-05 (Coremail) with SMTP id zQCowADX3bHanT9joexyAw--.27884S2; Fri, 07 Oct 2022 11:32:43 +0800 (CST) From: Jiasheng Jiang To: andersson@kernel.org Cc: quic_jjohnson@quicinc.com, agross@kernel.org, bjorn.andersson@linaro.org, konrad.dybcio@somainline.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Jiasheng Jiang Subject: [PATCH v5] soc: qcom: apr: Add check for idr_alloc and of_property_read_string_index Date: Fri, 7 Oct 2022 11:32:40 +0800 Message-Id: <20221007033240.42442-1-jiasheng@iscas.ac.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: zQCowADX3bHanT9joexyAw--.27884S2 X-Coremail-Antispam: 1UD129KBjvJXoW7Ar43Xw48GFy5Xw4DGw18Grg_yoW8Cw1fpa 1avas8Cry8KFsa9ry3Zr1kWFyYga1xtaykG3s7J3sI9rn8XFnxKrnrtFy09rWrCFZ7Aa1U JF1aqF95CF4UWFJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkv14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26r1j6r1xM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4j 6F4UM28EF7xvwVC2z280aVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVCY1x0267AKxVW8Jr 0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj 6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr 0_Gr1lF7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkIecxEwVAFwVW8 GwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r 1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2Ij 64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr 0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF 0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0JU-miiUUUUU= X-Originating-IP: [124.16.138.125] X-CM-SenderInfo: pmld2xxhqjqxpvfd2hldfou0/ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As idr_alloc() and of_property_read_string_index() can return negative numbers, it should be better to check the return value and deal with the exception. Therefore, it should be better to use goto statement to stop and return error. Fixes: 6adba21eb434 ("soc: qcom: Add APR bus driver") Signed-off-by: Jiasheng Jiang --- Changelog: v4 -> v5: 1. Change dev_err and goto statements. v3 -> v4: 1. Change the title and remove the kfree. v2 -> v3: 1. Change the title and use goto statement to deal with the exception. v1 -> v2: 1. Add dev_err and put_device in order to maintain the code consistency. --- drivers/soc/qcom/apr.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/soc/qcom/apr.c b/drivers/soc/qcom/apr.c index b4046f393575..a942c8a8dde2 100644 --- a/drivers/soc/qcom/apr.c +++ b/drivers/soc/qcom/apr.c @@ -454,11 +454,21 @@ static int apr_add_device(struct device *dev, struct device_node *np, adev->dev.driver = NULL; spin_lock(&apr->svcs_lock); - idr_alloc(&apr->svcs_idr, svc, svc_id, svc_id + 1, GFP_ATOMIC); + ret = idr_alloc(&apr->svcs_idr, svc, svc_id, svc_id + 1, GFP_ATOMIC); spin_unlock(&apr->svcs_lock); + if (ret < 0) { + dev_err(dev, "idr_alloc failed: %d\n", ret); + put_device(&adev->dev); + goto out; + } - of_property_read_string_index(np, "qcom,protection-domain", - 1, &adev->service_path); + ret = of_property_read_string_index(np, "qcom,protection-domain", + 1, &adev->service_path); + if (ret < 0) { + dev_err(dev, "Failed to read second value of qcom,protection-domain\n"); + put_device(&adev->dev); + goto out; + } dev_info(dev, "Adding APR/GPR dev: %s\n", dev_name(&adev->dev)); @@ -468,6 +478,7 @@ static int apr_add_device(struct device *dev, struct device_node *np, put_device(&adev->dev); } +out: return ret; } -- 2.25.1