From patchwork Wed Dec 6 23:17:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174767 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438148vqy; Wed, 6 Dec 2023 15:17:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IGfWUr5pkoFaN8JP5KCv/hWxku8dW6Aecb1LOibiVujQhW02IUFiH6JqcCZhuPmFCsV2gYU X-Received: by 2002:a17:903:2441:b0:1cf:cb80:3fa5 with SMTP id l1-20020a170903244100b001cfcb803fa5mr2854693pls.23.1701904667720; Wed, 06 Dec 2023 15:17:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904667; cv=none; d=google.com; s=arc-20160816; b=g0Dp2u3W550im5//gPd7ayfyoe9D7/xQTKGUAwwL4d2oWxOabjTAb+r7a47EtH0pH+ IzAu6sq2ywn5c+aT1Q9hjzpeXnJexyX20apzE7U26dj/pK4pNBSO/8mZH4mEOUHYghIS w2q6MuHUNj2aUXUI0ELSB7Hdwcn3tPCFXp1bgpX8evJWrTIkn5gK280D4yFdwapZvGg8 r5Nrrzj4RhNOwguKgoG0yYXSMtfM2poQK11PmeLIjifVIujUGFZ4EIcrziHu4XZDEwhg 5p4BUQGjcz/8AecaCDOV6e28pXITCXFjQIxsyh+FWoRhnqmGBRyjExIJ+Bgv5PgCJP8j 3QXA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=M8rtEHygI9RG6sBRnubA7bTpojnZgHlW5a8etwqssgk=; fh=ylw7XFiXYr9BYF9M+Kpjdbiymg7bIn6MnHhSkmiqHOA=; b=ycKkl+f8L/NWkli6MuINFlrxeVV/34ztWy9yV+Fo6s7SM/lToqO2LXMpQcFbF8vuFC AtDC7mwnjQ3l5Qh4RSb9ccuv4J+EpB58PkbY9p06ln8TCYt031zoz+sMD4O2Mio8Eycl efrT6kObASlUYRwRsbrrZ0fp+KkrWtg5l9jlD0W8ne/Q4fNKKut904xE4q8FFSVvA50Z Sow1YLnGTHgLuOfAbX7DmQ+Eimgl2A9LkdWVH0EXMpz4410olfbkBEZicQyb87KD6j7W G5MRzcsAdBDmr7JW5F/8nqpFNAQvwdxT+LDn5Kos1teNRyLdHlBCvMhKk57YB35JAfc7 I4Ug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gofp9myH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id c1-20020a170902d48100b001cfe100a99fsi529592plg.487.2023.12.06.15.17.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:17:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gofp9myH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 45F0280DAC76; Wed, 6 Dec 2023 15:17:43 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379626AbjLFXRb (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37276 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229669AbjLFXR3 (ORCPT ); Wed, 6 Dec 2023 18:17:29 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24D97D62 for ; Wed, 6 Dec 2023 15:17:35 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 805A9C433C8; Wed, 6 Dec 2023 23:17:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904654; bh=btlg8hyFkyWuS3pIp7blky6KCbKG8CQSpsyNdN07Qds=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gofp9myHsPQijWocq0HLQpbngoOklggPnv8Q5vi10Iwc1kARRtnQoaNQ68lyw0pJn de1UgZyfPBHMBhHDk1l7shQravN1aiqVEcZ+Nd6rIk2cMw+Qo1j98x7j9v+MyEzVFo Z/n30t8tIP8xGLx+ZSfj7zhHIzKomLqCYhhxdDfxMzsm/GjEbiCp5ZmsSPQpwdsp+i VNlIFeLA0ncGe4/wwbBvcjp443jdYBwSBTbHmMksUrOwlfmeP4PztkKSMiAZH0cP8y DdYC3EjQCubqGKT0P3E7WNqkQrkGg+dTV+YmwCwbVWqL4nNzX3mDlML7gmX5PMLYYR ZxQaO5ivqAnDA== From: Stephen Boyd To: Greg Kroah-Hartman Cc: =?utf-8?b?TsOtY29sYXMgRi4gUi4gQS4gUHJhZG8=?= , linux-kernel@vger.kernel.org, patches@lists.linux.dev, AngeloGioacchino Del Regno , Alexandre Mergnat Subject: [PATCH 1/8] spmi: mtk-pmif: Serialize PMIF status check and command submission Date: Wed, 6 Dec 2023 15:17:24 -0800 Message-ID: <20231206231733.4031901-2-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:17:43 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576389018289711 X-GMAIL-MSGID: 1784576389018289711 From: NĂ­colas F. R. A. Prado Before writing the read or write command to the SPMI arbiter through the PMIF interface, the current status of the channel is checked to ensure it is idle. However, since the status only changes from idle when the command is written, it is possible for two concurrent calls to determine that the channel is idle and simultaneously send their commands. At this point the PMIF interface hangs, with the status register no longer being updated, and thus causing all subsequent operations to time out. This was observed on the mt8195-cherry-tomato-r2 machine, particularly after commit 46600ab142f8 ("regulator: Set PROBE_PREFER_ASYNCHRONOUS for drivers between 5.10 and 5.15") was applied, since then the two MT6315 devices present on the SPMI bus would probe assynchronously and sometimes (during probe or at a later point) read the bus simultaneously, breaking the PMIF interface and consequently slowing down the whole system. To fix the issue at its root cause, introduce locking around the channel status check and the command write, so that both become an atomic operation, preventing race conditions between two (or more) SPMI bus read/write operations. A spinlock is used since this is a fast bus, as indicated by the usage of the atomic variant of readl_poll, and '.fast_io = true' being used in the mt6315 driver, so spinlocks are already used for the regmap access. Fixes: b45b3ccef8c0 ("spmi: mediatek: Add support for MT6873/8192") Signed-off-by: NĂ­colas F. R. A. Prado Link: https://lore.kernel.org/r/20230724154739.493724-1-nfraprado@collabora.com Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Alexandre Mergnat Signed-off-by: Stephen Boyd --- drivers/spmi/spmi-mtk-pmif.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c index b3c991e1ea40..54c35f5535cb 100644 --- a/drivers/spmi/spmi-mtk-pmif.c +++ b/drivers/spmi/spmi-mtk-pmif.c @@ -50,6 +50,7 @@ struct pmif { struct clk_bulk_data clks[PMIF_MAX_CLKS]; size_t nclks; const struct pmif_data *data; + raw_spinlock_t lock; }; static const char * const pmif_clock_names[] = { @@ -314,6 +315,7 @@ static int pmif_spmi_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, struct ch_reg *inf_reg; int ret; u32 data, cmd; + unsigned long flags; /* Check for argument validation. */ if (sid & ~0xf) { @@ -334,6 +336,7 @@ static int pmif_spmi_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, else return -EINVAL; + raw_spin_lock_irqsave(&arb->lock, flags); /* Wait for Software Interface FSM state to be IDLE. */ inf_reg = &arb->chan; ret = readl_poll_timeout_atomic(arb->base + arb->data->regs[inf_reg->ch_sta], @@ -343,6 +346,7 @@ static int pmif_spmi_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, /* set channel ready if the data has transferred */ if (pmif_is_fsm_vldclr(arb)) pmif_writel(arb, 1, inf_reg->ch_rdy); + raw_spin_unlock_irqrestore(&arb->lock, flags); dev_err(&ctrl->dev, "failed to wait for SWINF_IDLE\n"); return ret; } @@ -350,6 +354,7 @@ static int pmif_spmi_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, /* Send the command. */ cmd = (opc << 30) | (sid << 24) | ((len - 1) << 16) | addr; pmif_writel(arb, cmd, inf_reg->ch_send); + raw_spin_unlock_irqrestore(&arb->lock, flags); /* * Wait for Software Interface FSM state to be WFVLDCLR, @@ -376,7 +381,8 @@ static int pmif_spmi_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, struct pmif *arb = spmi_controller_get_drvdata(ctrl); struct ch_reg *inf_reg; int ret; - u32 data, cmd; + u32 data, wdata, cmd; + unsigned long flags; if (len > 4) { dev_err(&ctrl->dev, "pmif supports 1..4 bytes per trans, but:%zu requested", len); @@ -394,6 +400,10 @@ static int pmif_spmi_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, else return -EINVAL; + /* Set the write data. */ + memcpy(&wdata, buf, len); + + raw_spin_lock_irqsave(&arb->lock, flags); /* Wait for Software Interface FSM state to be IDLE. */ inf_reg = &arb->chan; ret = readl_poll_timeout_atomic(arb->base + arb->data->regs[inf_reg->ch_sta], @@ -403,17 +413,17 @@ static int pmif_spmi_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, /* set channel ready if the data has transferred */ if (pmif_is_fsm_vldclr(arb)) pmif_writel(arb, 1, inf_reg->ch_rdy); + raw_spin_unlock_irqrestore(&arb->lock, flags); dev_err(&ctrl->dev, "failed to wait for SWINF_IDLE\n"); return ret; } - /* Set the write data. */ - memcpy(&data, buf, len); - pmif_writel(arb, data, inf_reg->wdata); + pmif_writel(arb, wdata, inf_reg->wdata); /* Send the command. */ cmd = (opc << 30) | BIT(29) | (sid << 24) | ((len - 1) << 16) | addr; pmif_writel(arb, cmd, inf_reg->ch_send); + raw_spin_unlock_irqrestore(&arb->lock, flags); return 0; } @@ -488,6 +498,8 @@ static int mtk_spmi_probe(struct platform_device *pdev) arb->chan.ch_send = PMIF_SWINF_0_ACC + chan_offset; arb->chan.ch_rdy = PMIF_SWINF_0_VLD_CLR + chan_offset; + raw_spin_lock_init(&arb->lock); + platform_set_drvdata(pdev, ctrl); err = spmi_controller_add(ctrl); From patchwork Wed Dec 6 23:17:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174768 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438185vqy; Wed, 6 Dec 2023 15:17:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IFPXqWxao0vD9tyJrf6Q5cIxzcv/jXKUstD3OLweJzicNTVOUm4F51WRMOs0a+ViTARS62u X-Received: by 2002:a05:6e02:2184:b0:35d:59a2:2bf with SMTP id j4-20020a056e02218400b0035d59a202bfmr2485707ila.95.1701904671354; Wed, 06 Dec 2023 15:17:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904671; cv=none; d=google.com; s=arc-20160816; b=XfvrcIoFlTClJU3uAxK3wfav3RO2nzzDfAJcw981qPDXE0tyGtvgf9vPs2fqVMMSp3 TOpq1Vlp4g57iePrj15VpElIztnNiNEStRNQbmYTXljuBKdKzJ9DW5OlujnfXERuCf8I Xve+L1ieg+05A2F/5WVD9Q5IpxefSu4qi32Uz+vDR1XrLrxxdmEH73FK9lU8is7vn1RW c5TQLnkSjYGRHFcEBAlXFXTFeaUBsBXTaOz7VpnHQIWC+dUHWMeuYJn/AEQ7/9kclgsI GAA5aM9om4Hr+KL6bz0mU5NG5slMB41ZgyyQC6iP/JXGh5L3bQf39Uix6t54eZz7pJS7 cLeA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=GHpn8i2i6PhKHssE/MepqgmgdsrNDF4ZmbyHHfW1KCY=; fh=23+4sTwLWDRCm6vm5eDuLNS4sSnEsE3GjKbynyYGEtE=; b=TN9RoDZLZhy0yWGg7r3qQKzhUJVfiOGd8AfKbs8Dw7N6P83PluAlzANBYeibz3rU45 3166zSZWkHrhP/dnmjZdjqd1/Y/9EcJ/cjSyNNDn7mf0a6Hkzz8NiOdfkP2sQ6zt2FPk 2LDAT9wtWal1n0P9XM70vylxTKpLa8Lv6sWIGzWlkfM5vvOIon9HcDnj1e4aNMn9925J Nqhjt3XcU427ECTo7HM4WYhGW4iLxf5pObIH1amj/H2LAtmcG/mXYD5UjvzUdcBqlCGP TM4DohhvEBaCXNK0KkUrqm13PuXKgpLY5ToCglQYGmkkZd/yFtmUQiT1xX8x6i3SFAtR 9a9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="o+I5/P8j"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id c22-20020a631c56000000b005c200b11ba3si31278pgm.888.2023.12.06.15.17.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:17:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="o+I5/P8j"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id BC7D380843EC; Wed, 6 Dec 2023 15:17:48 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379646AbjLFXRe (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377556AbjLFXR3 (ORCPT ); Wed, 6 Dec 2023 18:17:29 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90CE2181 for ; Wed, 6 Dec 2023 15:17:35 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EC886C433CA; Wed, 6 Dec 2023 23:17:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904655; bh=DE6LOODg8opqMxDQr9pajmg5bZcQ8RbpkX6Gz17Xsa4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o+I5/P8jMIg5fG9kLI7hWzQVkunc0BfPRII4N7CB72iq2sxL9q5BicDtkfVtb/T4U xEJ+g32CtkG1tRpnPX9W0eIh8I4RVFdtunftSv5dVygMuF3J2RsuM1Js99lnLQ9fIg d2tbrlGCduycPKs3smcm4etVDMtkATGm/dKfU5foU5UrpdxkkH+Tryud70/JhboP1l n3whXkHfCiCrw47Np+hHmLfnM3puM3HQShycc6ZBvZ3wdS7dX6aJURO+rCvj2XeeSd iQ56ZWE+SukHSBhgWnbjrFU85zUpvwa4YC569ArB4bA52iiwBooT3sLkFA4j1KSIR4 mxbPFVUHPtbXw== From: Stephen Boyd To: Greg Kroah-Hartman Cc: Yu-Che Cheng , linux-kernel@vger.kernel.org, patches@lists.linux.dev, Fei Shao , Chen-Yu Tsai Subject: [PATCH 2/8] spmi: mediatek: Fix UAF on device remove Date: Wed, 6 Dec 2023 15:17:25 -0800 Message-ID: <20231206231733.4031901-3-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:17:48 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576392632893934 X-GMAIL-MSGID: 1784576392632893934 From: Yu-Che Cheng The pmif driver data that contains the clocks is allocated along with spmi_controller. On device remove, spmi_controller will be freed first, and then devres , including the clocks, will be cleanup. This leads to UAF because putting the clocks will access the clocks in the pmif driver data, which is already freed along with spmi_controller. This can be reproduced by enabling DEBUG_TEST_DRIVER_REMOVE and building the kernel with KASAN. Fix the UAF issue by using unmanaged clk_bulk_get() and putting the clocks before freeing spmi_controller. Reported-by: Fei Shao Signed-off-by: Yu-Che Cheng Link: https://lore.kernel.org/r/20230717173934.1.If004a6e055a189c7f2d0724fa814422c26789839@changeid Tested-by: Fei Shao Reviewed-by: Fei Shao Reviewed-by: Chen-Yu Tsai Signed-off-by: Stephen Boyd --- drivers/spmi/spmi-mtk-pmif.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c index 54c35f5535cb..1261f381cae6 100644 --- a/drivers/spmi/spmi-mtk-pmif.c +++ b/drivers/spmi/spmi-mtk-pmif.c @@ -475,7 +475,7 @@ static int mtk_spmi_probe(struct platform_device *pdev) for (i = 0; i < arb->nclks; i++) arb->clks[i].id = pmif_clock_names[i]; - err = devm_clk_bulk_get(&pdev->dev, arb->nclks, arb->clks); + err = clk_bulk_get(&pdev->dev, arb->nclks, arb->clks); if (err) { dev_err(&pdev->dev, "Failed to get clocks: %d\n", err); goto err_put_ctrl; @@ -484,7 +484,7 @@ static int mtk_spmi_probe(struct platform_device *pdev) err = clk_bulk_prepare_enable(arb->nclks, arb->clks); if (err) { dev_err(&pdev->dev, "Failed to enable clocks: %d\n", err); - goto err_put_ctrl; + goto err_put_clks; } ctrl->cmd = pmif_arb_cmd; @@ -510,6 +510,8 @@ static int mtk_spmi_probe(struct platform_device *pdev) err_domain_remove: clk_bulk_disable_unprepare(arb->nclks, arb->clks); +err_put_clks: + clk_bulk_put(arb->nclks, arb->clks); err_put_ctrl: spmi_controller_put(ctrl); return err; @@ -521,6 +523,7 @@ static void mtk_spmi_remove(struct platform_device *pdev) struct pmif *arb = spmi_controller_get_drvdata(ctrl); clk_bulk_disable_unprepare(arb->nclks, arb->clks); + clk_bulk_put(arb->nclks, arb->clks); spmi_controller_remove(ctrl); spmi_controller_put(ctrl); } From patchwork Wed Dec 6 23:17:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174771 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438375vqy; Wed, 6 Dec 2023 15:18:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IHyYxn+b9i2m6vClGMh9H1mK18LMp60+glbDBW8jDDTGmb0VoPzwsgwT6jgjNpb31/ss/MI X-Received: by 2002:a05:6a20:9718:b0:18c:a983:a5f2 with SMTP id hr24-20020a056a20971800b0018ca983a5f2mr3864380pzc.29.1701904700023; Wed, 06 Dec 2023 15:18:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904700; cv=none; d=google.com; s=arc-20160816; b=cZ4LZonKLIutg6sL1vETPtqDczp96ziI0Kb8oQSPI+/BmzFiqMtVtadfGeklHsifjE 5oDlHifzgCJZPzi5vouXmVZKQeb0cNx9KoWda17gEh53w956wz+KIconaSa+afazZSGi tuXV3BEkY36A8zrts2+eT+ztufjo9SZH8jvGAetjchkftUrRydShlDeplIb+UhHoVM6c qVdcT609xUx+g2cTf9KRjBDZrflS24JnYnSQhdGHijbqqUezWH1fQkdc0PDjsjoCvXTe ZGXnQVpH6hbjyAf6DbvgjVG0/B/b0sD5WDVqOxdKEewX1sNtHRyDKHqZ591G6NnC/53l UepQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9cQ0nnxRIAlLS0zsskkj4f3yF5uqECmSkWkegBz4IVM=; fh=fyWHa9Xga1kBSwfIj7Gdwg4R3yg35b+1QQ92cERVV+E=; b=ShpvwUVtAdRKxwnPBVAj0+CxYGZ8B5qHpBASuUmdYEmi2bBm6UncQLn/iwyfDH57LG BTIQvLOOzzqGCIEGMIdQItv2U5D2NOvXk2Dym1yC69nfsD3ypc1FOhnZuIgDWFLCz+a/ wDWuaEO8mcX7tl6k5x6nuddXdRIPUVJ7U75x7tQdqp80p5NFEa3zlQAzRC2jQCHyD9ym xqTck04j1uwj8Xj517aJk02vPeBqflv0hCh+jfV42qmqKgsKwxpRuRR4D+GXMGGPFyx1 yzUUibj3Y6K2tu9SVEiXM30vt3XK7OoE1thovNNea+wf0NJJZyIs1vr0WhtscNgyYkHX zByg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=k7IFO3ij; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id by42-20020a056a0205aa00b005bdf5961826si66945pgb.136.2023.12.06.15.18.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:18:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=k7IFO3ij; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id F24DB80FD8AE; Wed, 6 Dec 2023 15:18:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379681AbjLFXRh (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377599AbjLFXRa (ORCPT ); Wed, 6 Dec 2023 18:17:30 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3FC2D68 for ; Wed, 6 Dec 2023 15:17:35 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 640CDC433C9; Wed, 6 Dec 2023 23:17:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904655; bh=7tbd8uhNTKZSutzFMyZ5HgE6AjUYlNT/oHYwtf76HfA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k7IFO3ijBVlBV1sBpidCG1KvAEhs/FdY5Cl7xJpD10CLO+aYXDeWcKeSrvgNEsGub 5Rf2cEYPNvyEyg1xhu0tcFKbiY6WiEdpOLgJ5uuJMuGrqK3Z8UknDEr3w8wDb+j8WL XYDK+HlHVZL1qWWFPJu2hOdIH0PGTE2aMbffeDl+gjoNgfuIRSsMugNvSDRwuGfDuq Pb9eWpGJihPNCWIKJ7oJVE7isSmV5M+HRtF86RKlabuNm5oT/54T5gliBPyPBWjW22 lUjU5PcNgGrMcZ/ZJb+BuTE7o0UFE/jN0pHNmX3szaYwXSTbfa7HKqG+uFFz7cpKtO VqsCXFYhMV7Sw== From: Stephen Boyd To: Greg Kroah-Hartman Cc: Fei Shao , linux-kernel@vger.kernel.org, patches@lists.linux.dev, AngeloGioacchino Del Regno Subject: [PATCH 3/8] spmi: Introduce device-managed functions Date: Wed, 6 Dec 2023 15:17:26 -0800 Message-ID: <20231206231733.4031901-4-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:18:16 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576422741639797 X-GMAIL-MSGID: 1784576422741639797 From: Fei Shao Utilize the managed resource (devres) framework and add the following devm_* helpers for the SPMI driver: - devm_spmi_controller_alloc() - devm_spmi_controller_add() Signed-off-by: Fei Shao Link: https://lore.kernel.org/r/20230824104101.4083400-2-fshao@chromium.org Reviewed-by: AngeloGioacchino Del Regno [sboyd@kernel.org: Rename to spmi-devres for module niceness, slap on GPL module license] Signed-off-by: Stephen Boyd --- drivers/spmi/Makefile | 2 +- drivers/spmi/spmi-devres.c | 64 ++++++++++++++++++++++++++++++++++++++ include/linux/spmi.h | 3 ++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 drivers/spmi/spmi-devres.c diff --git a/drivers/spmi/Makefile b/drivers/spmi/Makefile index 9d974424c8c1..7f152167bb05 100644 --- a/drivers/spmi/Makefile +++ b/drivers/spmi/Makefile @@ -2,7 +2,7 @@ # # Makefile for kernel SPMI framework. # -obj-$(CONFIG_SPMI) += spmi.o +obj-$(CONFIG_SPMI) += spmi.o spmi-devres.o obj-$(CONFIG_SPMI_HISI3670) += hisi-spmi-controller.o obj-$(CONFIG_SPMI_MSM_PMIC_ARB) += spmi-pmic-arb.o diff --git a/drivers/spmi/spmi-devres.c b/drivers/spmi/spmi-devres.c new file mode 100644 index 000000000000..7683e6fdb18f --- /dev/null +++ b/drivers/spmi/spmi-devres.c @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright 2023 Google LLC. + */ + +#include +#include + +static void devm_spmi_controller_release(struct device *parent, void *res) +{ + spmi_controller_put(*(struct spmi_controller **)res); +} + +struct spmi_controller *devm_spmi_controller_alloc(struct device *parent, size_t size) +{ + struct spmi_controller **ptr, *ctrl; + + ptr = devres_alloc(devm_spmi_controller_release, sizeof(*ptr), GFP_KERNEL); + if (!ptr) + return ERR_PTR(-ENOMEM); + + ctrl = spmi_controller_alloc(parent, size); + if (!ctrl) { + devres_free(ptr); + return ERR_PTR(-ENOMEM); + } + + *ptr = ctrl; + devres_add(parent, ptr); + + return ctrl; +} +EXPORT_SYMBOL_GPL(devm_spmi_controller_alloc); + +static void devm_spmi_controller_remove(struct device *parent, void *res) +{ + spmi_controller_remove(*(struct spmi_controller **)res); +} + +int devm_spmi_controller_add(struct device *parent, struct spmi_controller *ctrl) +{ + struct spmi_controller **ptr; + int ret; + + ptr = devres_alloc(devm_spmi_controller_remove, sizeof(*ptr), GFP_KERNEL); + if (!ptr) + return -ENOMEM; + + ret = spmi_controller_add(ctrl); + if (ret) { + devres_free(ptr); + return ret; + } + + *ptr = ctrl; + devres_add(parent, ptr); + + return 0; + +} +EXPORT_SYMBOL_GPL(devm_spmi_controller_add); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("SPMI devres helpers"); diff --git a/include/linux/spmi.h b/include/linux/spmi.h index eac1956a8727..14597708fdbc 100644 --- a/include/linux/spmi.h +++ b/include/linux/spmi.h @@ -120,6 +120,9 @@ static inline void spmi_controller_put(struct spmi_controller *ctrl) int spmi_controller_add(struct spmi_controller *ctrl); void spmi_controller_remove(struct spmi_controller *ctrl); +struct spmi_controller *devm_spmi_controller_alloc(struct device *parent, size_t size); +int devm_spmi_controller_add(struct device *parent, struct spmi_controller *ctrl); + /** * struct spmi_driver - SPMI slave device driver * @driver: SPMI device drivers should initialize name and owner field of From patchwork Wed Dec 6 23:17:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174769 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438310vqy; Wed, 6 Dec 2023 15:18:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IHAgIJIMBv2aX0TTpo6LfNjRD2SaXyeWqCkwDmGojOvDokLGS/8bMd6QvBEiHMXJ5o/xSz1 X-Received: by 2002:a17:90a:c084:b0:286:6cc1:3eff with SMTP id o4-20020a17090ac08400b002866cc13effmr1885191pjs.54.1701904688618; Wed, 06 Dec 2023 15:18:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904688; cv=none; d=google.com; s=arc-20160816; b=nZ2S+VOn/kv6AVptTBR1Uo7gtdb/a42V4NFQNx0eBBF/ZcVyhqgl2wzAIniMz5T3jO Ae10sdqIByXu5s6XL3eVTXyYcUOX7WIflP0RuGzaQ0msSHC8pY+2om//PDJ9hRAI/5wK Wx0NDunaOq5eicbp+YkZQf4aqkVfVHRVe9dZK1T1HTDXOQ/JVb2TBGCXx4Fka9Q+/ZK0 S/2wZN28bcGTgzO8QG4H7LINpeXdBsnSzn4yq2oGFxbN7FcnnXVbK5x+RAhTWJF4MiVQ YAF4Mk3lT09/kgb+qWBpuYQCvUm+7YWt2TuBi0+ZX9MK4I1hTKs8kTjkrTNJ1NqOhVVN YC3Q== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=YdQd7Ci7siM5mCquOr8hTp27Z0VKfR694N2uQNfDaUE=; fh=fyWHa9Xga1kBSwfIj7Gdwg4R3yg35b+1QQ92cERVV+E=; b=KUEP0d2iTMPh9XOvn/GxYyMuYq0wMCRvw7bufsWqXjT7OVgqOwPBZs1em/Ea3lMbNZ Bi3wE+CiRmOUCY1n/VjorNQzI5CnpO85E2XxzYXHiWEZrVLBB9yRw3ruzLhmAz4qDeg1 i+r1YMyXomMUR0IKmbVwDFz4iKkjkszdC3/9voqG680Mcoz4dRwc4yqKmY3Cg5C8/PjZ JSStLVXysIvA9tZ0w33L8IOOaSv8wZ+DkCGesMEJd6+ByedbibaOvsPk8ESFR276enfT +Y/pXlWfCn4vYgRGYLt/xXqBfDb62uJIWH0lfP9JBfjlyaIXx49eXZjB/33AutnFqu9V MtlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="rpzfC/K6"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id x8-20020a17090abc8800b0028688690987si551620pjr.186.2023.12.06.15.18.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:18:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="rpzfC/K6"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 92E918026486; Wed, 6 Dec 2023 15:18:03 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230274AbjLFXRn (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379621AbjLFXRb (ORCPT ); Wed, 6 Dec 2023 18:17:31 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 621D3B9 for ; Wed, 6 Dec 2023 15:17:36 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C62D5C433CC; Wed, 6 Dec 2023 23:17:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904656; bh=ez5Rw+bekRSdPyYItpCuQMs/kNPSCZ2/f2QC2C+vegs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rpzfC/K6dhFTjJlt/mON4wKyI6v+Xpwv4qUmGPFRTzsvD4c4GQpyTN6d2voIu2i7b LGJ6YLVxTMAkGnXQ9DtQnWR7ea5jke4CIOMu99xS12c8OH0kQhvmWxI0d0PGXxy+aG eLr+i2/oxqYPsN7uRGNtvrev3y+0V0clIzkucA65r66c9Nd4Pdv2PciX3syjLBSIju fnUSj4+5/55nvtwp9nu6fHsfF/pX33U28F8aQG2hEP7r7oXAyGg/PbnCjkufv+FbPD 4M2RvuowvPBbkYkHyICsmVQ83zd6y/l5LYfgx+3G2jN2tQolqxiwKnKpmsuWGOHLWY byCRsWieNnF9w== From: Stephen Boyd To: Greg Kroah-Hartman Cc: Fei Shao , linux-kernel@vger.kernel.org, patches@lists.linux.dev, AngeloGioacchino Del Regno Subject: [PATCH 4/8] spmi: Use devm_spmi_controller_alloc() Date: Wed, 6 Dec 2023 15:17:27 -0800 Message-ID: <20231206231733.4031901-5-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:18:03 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576410716451429 X-GMAIL-MSGID: 1784576410716451429 From: Fei Shao Convert to the device-managed version of spmi_controller_alloc() and simplify the excess error handling code. Signed-off-by: Fei Shao Link: https://lore.kernel.org/r/20230824104101.4083400-3-fshao@chromium.org Reviewed-by: AngeloGioacchino Del Regno Signed-off-by: Stephen Boyd --- drivers/spmi/hisi-spmi-controller.c | 22 +++----- drivers/spmi/spmi-mtk-pmif.c | 26 +++------ drivers/spmi/spmi-pmic-arb.c | 87 ++++++++++------------------- 3 files changed, 46 insertions(+), 89 deletions(-) diff --git a/drivers/spmi/hisi-spmi-controller.c b/drivers/spmi/hisi-spmi-controller.c index 9cbd473487cb..a5525902656a 100644 --- a/drivers/spmi/hisi-spmi-controller.c +++ b/drivers/spmi/hisi-spmi-controller.c @@ -267,10 +267,10 @@ static int spmi_controller_probe(struct platform_device *pdev) struct resource *iores; int ret; - ctrl = spmi_controller_alloc(&pdev->dev, sizeof(*spmi_controller)); - if (!ctrl) { + ctrl = devm_spmi_controller_alloc(&pdev->dev, sizeof(*spmi_controller)); + if (IS_ERR(ctrl)) { dev_err(&pdev->dev, "can not allocate spmi_controller data\n"); - return -ENOMEM; + return PTR_ERR(ctrl); } spmi_controller = spmi_controller_get_drvdata(ctrl); spmi_controller->controller = ctrl; @@ -278,24 +278,21 @@ static int spmi_controller_probe(struct platform_device *pdev) iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!iores) { dev_err(&pdev->dev, "can not get resource!\n"); - ret = -EINVAL; - goto err_put_controller; + return -EINVAL; } spmi_controller->base = devm_ioremap(&pdev->dev, iores->start, resource_size(iores)); if (!spmi_controller->base) { dev_err(&pdev->dev, "can not remap base addr!\n"); - ret = -EADDRNOTAVAIL; - goto err_put_controller; + return -EADDRNOTAVAIL; } ret = of_property_read_u32(pdev->dev.of_node, "hisilicon,spmi-channel", &spmi_controller->channel); if (ret) { dev_err(&pdev->dev, "can not get channel\n"); - ret = -ENODEV; - goto err_put_controller; + return -ENODEV; } platform_set_drvdata(pdev, spmi_controller); @@ -314,14 +311,10 @@ static int spmi_controller_probe(struct platform_device *pdev) ret = spmi_controller_add(ctrl); if (ret) { dev_err(&pdev->dev, "spmi_controller_add failed with error %d!\n", ret); - goto err_put_controller; + return ret; } return 0; - -err_put_controller: - spmi_controller_put(ctrl); - return ret; } static void spmi_del_controller(struct platform_device *pdev) @@ -329,7 +322,6 @@ static void spmi_del_controller(struct platform_device *pdev) struct spmi_controller *ctrl = platform_get_drvdata(pdev); spmi_controller_remove(ctrl); - spmi_controller_put(ctrl); } static const struct of_device_id spmi_controller_match_table[] = { diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c index 1261f381cae6..6ebc6901490a 100644 --- a/drivers/spmi/spmi-mtk-pmif.c +++ b/drivers/spmi/spmi-mtk-pmif.c @@ -447,29 +447,24 @@ static int mtk_spmi_probe(struct platform_device *pdev) int err, i; u32 chan_offset; - ctrl = spmi_controller_alloc(&pdev->dev, sizeof(*arb)); - if (!ctrl) - return -ENOMEM; + ctrl = devm_spmi_controller_alloc(&pdev->dev, sizeof(*arb)); + if (IS_ERR(ctrl)) + return PTR_ERR(ctrl); arb = spmi_controller_get_drvdata(ctrl); arb->data = device_get_match_data(&pdev->dev); if (!arb->data) { - err = -EINVAL; dev_err(&pdev->dev, "Cannot get drv_data\n"); - goto err_put_ctrl; + return -EINVAL; } arb->base = devm_platform_ioremap_resource_byname(pdev, "pmif"); - if (IS_ERR(arb->base)) { - err = PTR_ERR(arb->base); - goto err_put_ctrl; - } + if (IS_ERR(arb->base)) + return PTR_ERR(arb->base); arb->spmimst_base = devm_platform_ioremap_resource_byname(pdev, "spmimst"); - if (IS_ERR(arb->spmimst_base)) { - err = PTR_ERR(arb->spmimst_base); - goto err_put_ctrl; - } + if (IS_ERR(arb->spmimst_base)) + return PTR_ERR(arb->spmimst_base); arb->nclks = ARRAY_SIZE(pmif_clock_names); for (i = 0; i < arb->nclks; i++) @@ -478,7 +473,7 @@ static int mtk_spmi_probe(struct platform_device *pdev) err = clk_bulk_get(&pdev->dev, arb->nclks, arb->clks); if (err) { dev_err(&pdev->dev, "Failed to get clocks: %d\n", err); - goto err_put_ctrl; + return err; } err = clk_bulk_prepare_enable(arb->nclks, arb->clks); @@ -512,8 +507,6 @@ static int mtk_spmi_probe(struct platform_device *pdev) clk_bulk_disable_unprepare(arb->nclks, arb->clks); err_put_clks: clk_bulk_put(arb->nclks, arb->clks); -err_put_ctrl: - spmi_controller_put(ctrl); return err; } @@ -525,7 +518,6 @@ static void mtk_spmi_remove(struct platform_device *pdev) clk_bulk_disable_unprepare(arb->nclks, arb->clks); clk_bulk_put(arb->nclks, arb->clks); spmi_controller_remove(ctrl); - spmi_controller_put(ctrl); } static const struct of_device_id mtk_spmi_match_table[] = { diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c index dcb675d980d4..9ed1180fe31f 100644 --- a/drivers/spmi/spmi-pmic-arb.c +++ b/drivers/spmi/spmi-pmic-arb.c @@ -1443,9 +1443,9 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) u32 channel, ee, hw_ver; int err; - ctrl = spmi_controller_alloc(&pdev->dev, sizeof(*pmic_arb)); - if (!ctrl) - return -ENOMEM; + ctrl = devm_spmi_controller_alloc(&pdev->dev, sizeof(*pmic_arb)); + if (IS_ERR(ctrl)) + return PTR_ERR(ctrl); pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb->spmic = ctrl; @@ -1462,20 +1462,16 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) */ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "core"); core = devm_ioremap(&ctrl->dev, res->start, resource_size(res)); - if (IS_ERR(core)) { - err = PTR_ERR(core); - goto err_put_ctrl; - } + if (IS_ERR(core)) + return PTR_ERR(core); pmic_arb->core_size = resource_size(res); pmic_arb->ppid_to_apid = devm_kcalloc(&ctrl->dev, PMIC_ARB_MAX_PPID, sizeof(*pmic_arb->ppid_to_apid), GFP_KERNEL); - if (!pmic_arb->ppid_to_apid) { - err = -ENOMEM; - goto err_put_ctrl; - } + if (!pmic_arb->ppid_to_apid) + return -ENOMEM; hw_ver = readl_relaxed(core + PMIC_ARB_VERSION); @@ -1499,19 +1495,15 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) "obsrvr"); pmic_arb->rd_base = devm_ioremap(&ctrl->dev, res->start, resource_size(res)); - if (IS_ERR(pmic_arb->rd_base)) { - err = PTR_ERR(pmic_arb->rd_base); - goto err_put_ctrl; - } + if (IS_ERR(pmic_arb->rd_base)) + return PTR_ERR(pmic_arb->rd_base); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "chnls"); pmic_arb->wr_base = devm_ioremap(&ctrl->dev, res->start, resource_size(res)); - if (IS_ERR(pmic_arb->wr_base)) { - err = PTR_ERR(pmic_arb->wr_base); - goto err_put_ctrl; - } + if (IS_ERR(pmic_arb->wr_base)) + return PTR_ERR(pmic_arb->wr_base); } pmic_arb->max_periphs = PMIC_ARB_MAX_PERIPHS; @@ -1522,10 +1514,9 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) of_property_read_u32(pdev->dev.of_node, "qcom,bus-id", &pmic_arb->bus_instance); if (pmic_arb->bus_instance > 1) { - err = -EINVAL; dev_err(&pdev->dev, "invalid bus instance (%u) specified\n", pmic_arb->bus_instance); - goto err_put_ctrl; + return -EINVAL; } if (pmic_arb->bus_instance == 0) { @@ -1543,10 +1534,9 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) } if (pmic_arb->base_apid + pmic_arb->apid_count > pmic_arb->max_periphs) { - err = -EINVAL; dev_err(&pdev->dev, "Unsupported APID count %d detected\n", pmic_arb->base_apid + pmic_arb->apid_count); - goto err_put_ctrl; + return -EINVAL; } } else if (hw_ver >= PMIC_ARB_VERSION_V5_MIN) { pmic_arb->base_apid = 0; @@ -1554,55 +1544,45 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) PMIC_ARB_FEATURES_PERIPH_MASK; if (pmic_arb->apid_count > pmic_arb->max_periphs) { - err = -EINVAL; dev_err(&pdev->dev, "Unsupported APID count %d detected\n", pmic_arb->apid_count); - goto err_put_ctrl; + return -EINVAL; } } pmic_arb->apid_data = devm_kcalloc(&ctrl->dev, pmic_arb->max_periphs, sizeof(*pmic_arb->apid_data), GFP_KERNEL); - if (!pmic_arb->apid_data) { - err = -ENOMEM; - goto err_put_ctrl; - } + if (!pmic_arb->apid_data) + return -ENOMEM; dev_info(&ctrl->dev, "PMIC arbiter version %s (0x%x)\n", pmic_arb->ver_ops->ver_str, hw_ver); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "intr"); pmic_arb->intr = devm_ioremap_resource(&ctrl->dev, res); - if (IS_ERR(pmic_arb->intr)) { - err = PTR_ERR(pmic_arb->intr); - goto err_put_ctrl; - } + if (IS_ERR(pmic_arb->intr)) + return PTR_ERR(pmic_arb->intr); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cnfg"); pmic_arb->cnfg = devm_ioremap_resource(&ctrl->dev, res); - if (IS_ERR(pmic_arb->cnfg)) { - err = PTR_ERR(pmic_arb->cnfg); - goto err_put_ctrl; - } + if (IS_ERR(pmic_arb->cnfg)) + return PTR_ERR(pmic_arb->cnfg); pmic_arb->irq = platform_get_irq_byname(pdev, "periph_irq"); - if (pmic_arb->irq < 0) { - err = pmic_arb->irq; - goto err_put_ctrl; - } + if (pmic_arb->irq < 0) + return pmic_arb->irq; err = of_property_read_u32(pdev->dev.of_node, "qcom,channel", &channel); if (err) { dev_err(&pdev->dev, "channel unspecified.\n"); - goto err_put_ctrl; + return err; } if (channel > 5) { dev_err(&pdev->dev, "invalid channel (%u) specified.\n", channel); - err = -EINVAL; - goto err_put_ctrl; + return -EINVAL; } pmic_arb->channel = channel; @@ -1610,22 +1590,19 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) err = of_property_read_u32(pdev->dev.of_node, "qcom,ee", &ee); if (err) { dev_err(&pdev->dev, "EE unspecified.\n"); - goto err_put_ctrl; + return err; } if (ee > 5) { dev_err(&pdev->dev, "invalid EE (%u) specified\n", ee); - err = -EINVAL; - goto err_put_ctrl; + return -EINVAL; } pmic_arb->ee = ee; mapping_table = devm_kcalloc(&ctrl->dev, pmic_arb->max_periphs, sizeof(*mapping_table), GFP_KERNEL); - if (!mapping_table) { - err = -ENOMEM; - goto err_put_ctrl; - } + if (!mapping_table) + return -ENOMEM; pmic_arb->mapping_table = mapping_table; /* Initialize max_apid/min_apid to the opposite bounds, during @@ -1645,7 +1622,7 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) if (err) { dev_err(&pdev->dev, "could not read APID->PPID mapping table, rc= %d\n", err); - goto err_put_ctrl; + return err; } } @@ -1654,8 +1631,7 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) &pmic_arb_irq_domain_ops, pmic_arb); if (!pmic_arb->domain) { dev_err(&pdev->dev, "unable to create irq_domain\n"); - err = -ENOMEM; - goto err_put_ctrl; + return -ENOMEM; } irq_set_chained_handler_and_data(pmic_arb->irq, pmic_arb_chained_irq, @@ -1669,8 +1645,6 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev) err_domain_remove: irq_set_chained_handler_and_data(pmic_arb->irq, NULL, NULL); irq_domain_remove(pmic_arb->domain); -err_put_ctrl: - spmi_controller_put(ctrl); return err; } @@ -1681,7 +1655,6 @@ static void spmi_pmic_arb_remove(struct platform_device *pdev) spmi_controller_remove(ctrl); irq_set_chained_handler_and_data(pmic_arb->irq, NULL, NULL); irq_domain_remove(pmic_arb->domain); - spmi_controller_put(ctrl); } static const struct of_device_id spmi_pmic_arb_match_table[] = { From patchwork Wed Dec 6 23:17:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174774 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438504vqy; Wed, 6 Dec 2023 15:18:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IG6+uQNFgi0cYHNmtIf0FasaKXEbLwOq+rDTznIOlUSd2ccUB2GAehyPfrZcTlzrs4rNnUS X-Received: by 2002:a17:90a:4ca2:b0:286:a50d:96f1 with SMTP id k31-20020a17090a4ca200b00286a50d96f1mr1511349pjh.24.1701904717537; Wed, 06 Dec 2023 15:18:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904717; cv=none; d=google.com; s=arc-20160816; b=FVKmGXuEle4oWLQ2I5/Bs75mWPw5guGAICwTqJGpEVSnpm8+iWn2kb3KrinTDKlvOw O4q2PA6XX62U8ogJJYf+IleUCu1KzL0m6INdp2ux7LiZG2ahw1nuW1RtiQ2UvIMkPOsJ 2ZQC3vmt7Y+QVfYe11t6q/bdN84RKAzQvvPn3CuhlNyijww6nJMObi6n4HiZI6KaHm5y sq8Gs3bOyOM+CkJ2+0/uEfaK+MHxwcoJBx5+0puqZ0cVLp9KTLyV1irH86UDxiQoap94 X3WceXyJPP62hvcRs1Kx6W54bvbi7h2HABBlGUxgnvdMpt9Zsn49zSbImVlr3Fu2XNl0 oIyw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=2aQSEZ8mWupx7iBojEmnO4BJWlffS1cn+a5CTpv+RNk=; fh=fyWHa9Xga1kBSwfIj7Gdwg4R3yg35b+1QQ92cERVV+E=; b=cv3wXdXPSND64zYSofldSI5hZ6/HoXbXJGc23v/2YtJy48Uxfw6PSc48sEYg3pBl1d VgOdbC1k/cPpUgw1m+FBkMbET+hCRIJR20wdY6YKKHcwkycC7xa2r5uemOzz0heosiJ/ v1NVMu8et9cgavpemth/CzUsPdf1M67ILshSyN4X0xCWiUb4a/NiBc/cWrQhxjOQ6ntE Q3XejMX0m3ZyDLdPCBJyXv9G1F1lYdSlcSmO1yBfLuykODHeNNJxP3J9cMahxfaTOyc9 uLUVJcdKo7NQn3u52QHa/HnuZDH8SRsvTmWCcTNz3gwSod7cfGJWA+cnXAGTSuNl45DG 8jaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ldO8y0aa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id lj6-20020a17090b344600b002868183da74si569840pjb.65.2023.12.06.15.18.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:18:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ldO8y0aa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id EFFCD80DAC76; Wed, 6 Dec 2023 15:18:33 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379666AbjLFXRj (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379617AbjLFXRa (ORCPT ); Wed, 6 Dec 2023 18:17:30 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D218BD69 for ; Wed, 6 Dec 2023 15:17:36 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3424CC433CB; Wed, 6 Dec 2023 23:17:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904656; bh=8uz7AK/6yHawqaJPcw4bg1vliKDTq/KL8xQPTh+RBhQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ldO8y0aaCAI30pGHZ+jGi3ri+gv6J7mHp87soVwGOCnw7hGcQgtXzAK6BzELZoYXT EkEFX2BuYSZfAhST/kM4KnpgfrUHGV4vAsB7+Ouh4jfVeliyoFM5Qhy/H7rOju9C5n fW2tyyccaFPGkmXsN/rlupyXFxMt0EKFplWPVCQy/CmqxlalQSkr7GtccdcDSbvVNR 3wy2y6YX/LW2rtq8M5iliwsM/Fx8Pg4+Ge8xxfSFebR//VvU94kwwBFAKUZaoVgj79 MUX+xlMD1xRnCl2NeZL2/zAlrXEnZasnuLWe3loDsHzSUMGaKwJFLs9qgItr2iDKaP ESqXecPm63nDg== From: Stephen Boyd To: Greg Kroah-Hartman Cc: Fei Shao , linux-kernel@vger.kernel.org, patches@lists.linux.dev, AngeloGioacchino Del Regno Subject: [PATCH 5/8] spmi: mtk-pmif: Reorder driver remove sequence Date: Wed, 6 Dec 2023 15:17:28 -0800 Message-ID: <20231206231733.4031901-6-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:18:34 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576440890508495 X-GMAIL-MSGID: 1784576440890508495 From: Fei Shao This driver enables clocks and then adds SPMI controller in probing, so we expect the reversed sequence in removal. Fix the order in the remove callback. Signed-off-by: Fei Shao Link: https://lore.kernel.org/r/20230824104101.4083400-4-fshao@chromium.org Reviewed-by: AngeloGioacchino Del Regno Signed-off-by: Stephen Boyd --- drivers/spmi/spmi-mtk-pmif.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c index 6ebc6901490a..cc660da6a037 100644 --- a/drivers/spmi/spmi-mtk-pmif.c +++ b/drivers/spmi/spmi-mtk-pmif.c @@ -515,9 +515,9 @@ static void mtk_spmi_remove(struct platform_device *pdev) struct spmi_controller *ctrl = platform_get_drvdata(pdev); struct pmif *arb = spmi_controller_get_drvdata(ctrl); + spmi_controller_remove(ctrl); clk_bulk_disable_unprepare(arb->nclks, arb->clks); clk_bulk_put(arb->nclks, arb->clks); - spmi_controller_remove(ctrl); } static const struct of_device_id mtk_spmi_match_table[] = { From patchwork Wed Dec 6 23:17:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174770 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438318vqy; Wed, 6 Dec 2023 15:18:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IE4CbTXPOX8qJP9OTyhfW1qX4mvhGAhwzobtwoQNAxlF4PQuGrM9ZafzCAtQ09eXEz6mFKx X-Received: by 2002:a05:6a00:e05:b0:6ce:3efd:3951 with SMTP id bq5-20020a056a000e0500b006ce3efd3951mr1720568pfb.30.1701904690008; Wed, 06 Dec 2023 15:18:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904689; cv=none; d=google.com; s=arc-20160816; b=cz8NcGZHHu0Qquh193BkCJIfE/kLhJ0tlYsp8Iwkha8Sh2g7xRxT46+Xcj8DmkNB3e 2V2UTg2BAwMG9zbiBI1RKCHgRnkRFYPhQ/8Gu2+qxdfZvMj1+XHBtPXU/wYmEy2yhay3 OrRDNjh4FzJtV7grzsijyEDOCRN84goBkb/Q6sQpEeI2eYBPYr5HtNLHyk/8yGakxNB0 bOi3hF9vMrVBLnXNckei546lNQrGW4Mr0cNf4cJMNnqmd3Kt1RbScdNo1qW0NSFRXGEF 1cXG9ZuHM8GlDdZc/ilVZhoMvk4JlX0n8tGyYJUCrKHM2PcYv0ODGEnlxSJKr7DKIlhZ ROBQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0QHAq2TCBs9YRpG8R3zH1wbBe0gsNCocueqladz7Vd8=; fh=G6Hp1tEbdXsoLeWD0Yc7Z9n/scIRldNp9qabfZjjMx0=; b=mrWy6wlu+eVZY8wfP+O8boDQii0KZP6eMuADW7DfMN/nEBk6GkJGB3l+Ngn5AEGYy2 k6q1nwGsWSL7ybaDTrKxT6CJjCbp/NUCRs4SOy6zA6t8V6XKLBa8EbZDNgoA6yjsILNg jnJ50DzuLOzAFj4OTIa4AGv7tJamdCowepE5hdb675KM/+cjGBvrJfADt5y8kNlLf57e QFCO9N8SRdm8rvgQoaln/fFlckc9Pax5YucD6feaNZFNYKZaQ9A4Oeki0gSRees7S/VA YXaXVBxf8nGaxghgS0dxkZUk0uJqD2Fu28mdtrrSVwkNKzg2TnHIWnVNShBb3TTVrCKx UA0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=HtlXVGsX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id e3-20020a654783000000b005bddb417affsi48775pgs.291.2023.12.06.15.18.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:18:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=HtlXVGsX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 8A3CD82F2C52; Wed, 6 Dec 2023 15:18:07 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379685AbjLFXRl (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230304AbjLFXRb (ORCPT ); Wed, 6 Dec 2023 18:17:31 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5786F181 for ; Wed, 6 Dec 2023 15:17:37 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95DC0C433CD; Wed, 6 Dec 2023 23:17:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904656; bh=6JfBdb+tpPHhDepnCfkjAjsjvnC4Fs4rfNHqqamKfJI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HtlXVGsXz2TXYLBoQPOAOPi787gCgqWL0dRemgzUi9stC6047e0TTgEULxWGYZ7f0 iaiqNBG6FrMll4RjwFeMNXFdUTGAnToZWWVgrPXsF9yxR4n2Sp9sOAGD+aFo9hrHHc cu+HbZQvyeOA0YfIZDgHO1kqdXGKTucbZW4CA5X2qKNvC5sEM/lYeJR5rzIuB9l4Aq PiZkf9wm+IHPtUxkjlqgzLFiqykvibjO2aRGqavaMr5PmTnKR/p4BqE09aEXUj04DC WvdjFe05QBGozxmRaGgdFq0Kucz0ciJD6x7X3Q6QVMerITsNgRlpiJ+6yLDkmHwmWK i6HfCK2B3bwvg== From: Stephen Boyd To: Greg Kroah-Hartman Cc: Fei Shao , linux-kernel@vger.kernel.org, patches@lists.linux.dev Subject: [PATCH 6/8] spmi: hisi-spmi-controller: Use devm_spmi_controller_add() Date: Wed, 6 Dec 2023 15:17:29 -0800 Message-ID: <20231206231733.4031901-7-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:18:07 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576412370363045 X-GMAIL-MSGID: 1784576412370363045 From: Fei Shao Convert to the device-managed version of spmi_controller_add() and delete the unnecessary driver remove callback. Signed-off-by: Fei Shao Link: https://lore.kernel.org/r/20230824104101.4083400-5-fshao@chromium.org Signed-off-by: Stephen Boyd --- drivers/spmi/hisi-spmi-controller.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/drivers/spmi/hisi-spmi-controller.c b/drivers/spmi/hisi-spmi-controller.c index a5525902656a..674a350cc676 100644 --- a/drivers/spmi/hisi-spmi-controller.c +++ b/drivers/spmi/hisi-spmi-controller.c @@ -308,7 +308,7 @@ static int spmi_controller_probe(struct platform_device *pdev) ctrl->read_cmd = spmi_read_cmd; ctrl->write_cmd = spmi_write_cmd; - ret = spmi_controller_add(ctrl); + ret = devm_spmi_controller_add(&pdev->dev, ctrl); if (ret) { dev_err(&pdev->dev, "spmi_controller_add failed with error %d!\n", ret); return ret; @@ -317,13 +317,6 @@ static int spmi_controller_probe(struct platform_device *pdev) return 0; } -static void spmi_del_controller(struct platform_device *pdev) -{ - struct spmi_controller *ctrl = platform_get_drvdata(pdev); - - spmi_controller_remove(ctrl); -} - static const struct of_device_id spmi_controller_match_table[] = { { .compatible = "hisilicon,kirin970-spmi-controller", @@ -334,7 +327,6 @@ MODULE_DEVICE_TABLE(of, spmi_controller_match_table); static struct platform_driver spmi_controller_driver = { .probe = spmi_controller_probe, - .remove_new = spmi_del_controller, .driver = { .name = "hisi_spmi_controller", .of_match_table = spmi_controller_match_table, From patchwork Wed Dec 6 23:17:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174773 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438412vqy; Wed, 6 Dec 2023 15:18:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IGtB4Y4/hsClxU1uzEJDshK8dh87Tl8GLwsnmiLx0shY4Vk1Uycm81bp2cA5z34+TMlqJ/n X-Received: by 2002:a17:903:22d0:b0:1d0:6ffe:1e7d with SMTP id y16-20020a17090322d000b001d06ffe1e7dmr1508058plg.96.1701904706292; Wed, 06 Dec 2023 15:18:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904706; cv=none; d=google.com; s=arc-20160816; b=flSL+ehk6p/UiwvA9MqSR5uk0ufRXB41KeL/CbbuDsDgIlpp0GaiKV/nbYIJGo4X5S N7ENjkTo9JPTxghb27rCR7pihMfbCWD7vlyodeJpj7mz6hBe6pDjXSDWrwstKCrGjrjC Vrk3kU+4lU0dZvhsw2on9lV7M4DEw69/x7I1qw6Ka213gA1BXDdK8mtn2cGJcdpqYX1u IjdMx0DtBFAjrcA6k/d2z5etI29LxleQQAf8ZSIOYxGOhljHXIuNmcaBwCghcqoL8IrA 3bycxa73zS5k/p2CVNvpG2m9Z3LD2cSz95qiHfOcOP90h0W9lDCkgS0LXG6fkrshg4mA cuzg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Gwv/6oPFanLePWslpfRNyjWyOxGu6dVOOW4rGpdEP+Y=; fh=G6Hp1tEbdXsoLeWD0Yc7Z9n/scIRldNp9qabfZjjMx0=; b=JZIz1tpFOfyZvVAevZv+dyOoIZzSeTObS9EZ+gkJzfyqG7nk+KMYtpgAYzBznkXn6M kRZkg/o4v0aHyqeSjrnvFzw13+40y5BBrMmj91V8vjQKpHBj2pjJTmoHhIGFHZkynfzy U5OYDh93zsbBpu1bTUXH5C/9kYf3/AYcQH+lcggN3GHDAKCSOKwNCbGUVkRVhbh6E9d5 bOsMgeNbZ2X8gMMPJH63cbtKeY6Tsx714ukPpNg9oHT+2hzKJGmnNJEUsbVqLhowXof/ opYf2G/A8HycIwfmKEYM5sNfdL8ZXSPhrB6eEvfmZ1d1YqaRHCDUfX9SFHkE68VRoXvB FN9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qAxZ9aTS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id a4-20020a1709027d8400b001d0cbef2eeesi11941plm.71.2023.12.06.15.18.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:18:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qAxZ9aTS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id E76218328ACF; Wed, 6 Dec 2023 15:18:17 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379547AbjLFXRu (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379625AbjLFXRb (ORCPT ); Wed, 6 Dec 2023 18:17:31 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 81D24D6D for ; Wed, 6 Dec 2023 15:17:37 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE161C433C8; Wed, 6 Dec 2023 23:17:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904657; bh=0Qw8myzJlI3KvHO4ZZ9sYNzQlLdb50E+KYoJvBETQBg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qAxZ9aTSAhvoOKJ3eMtfYllXKM8tyzCzwF0nY3H0T7478W3tIEvmsSp7Wg7bfvNMm sATZj5/cS+X8srz04BDBgDT119KuKL89gaBl5B/mgH1C2P/r7FoDVc+DCu7qvsAVXJ E8Ct3p4XBEyyU46XyBq6rNT2TYcDXS0kXvidAmIuNitbkulQcwXjlI+4tb5O/czBPP vciad4Q00mi9IbLeywfL80hvUx9QGLGY69JpCkqsu8WAjWPqHTXyUqW4iGpBihRqoJ oEndnjKfQIfbgritGCDZi3BMI6SZEBVEGDbdjbwtCphk7OCvV1/kIWERQHQSeQM0QN ZTAIx7m4IRM+w== From: Stephen Boyd To: Greg Kroah-Hartman Cc: Fei Shao , linux-kernel@vger.kernel.org, patches@lists.linux.dev Subject: [PATCH 7/8] spmi: Return meaningful errors in spmi_controller_alloc() Date: Wed, 6 Dec 2023 15:17:30 -0800 Message-ID: <20231206231733.4031901-8-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:18:18 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576429452913546 X-GMAIL-MSGID: 1784576429452913546 From: Fei Shao spmi_controller_alloc() currently returns NULL to all types of errors, which can be improved. Use appropriate error code in returns and pass the errors from used functions where possible. Signed-off-by: Fei Shao Link: https://lore.kernel.org/r/20230824104101.4083400-6-fshao@chromium.org Signed-off-by: Stephen Boyd --- drivers/spmi/spmi-devres.c | 4 ++-- drivers/spmi/spmi.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/spmi/spmi-devres.c b/drivers/spmi/spmi-devres.c index 7683e6fdb18f..62c4b3f24d06 100644 --- a/drivers/spmi/spmi-devres.c +++ b/drivers/spmi/spmi-devres.c @@ -20,9 +20,9 @@ struct spmi_controller *devm_spmi_controller_alloc(struct device *parent, size_t return ERR_PTR(-ENOMEM); ctrl = spmi_controller_alloc(parent, size); - if (!ctrl) { + if (IS_ERR(ctrl)) { devres_free(ptr); - return ERR_PTR(-ENOMEM); + return ctrl; } *ptr = ctrl; diff --git a/drivers/spmi/spmi.c b/drivers/spmi/spmi.c index 7313d4c18a04..5f11ced3f8b9 100644 --- a/drivers/spmi/spmi.c +++ b/drivers/spmi/spmi.c @@ -445,11 +445,11 @@ struct spmi_controller *spmi_controller_alloc(struct device *parent, int id; if (WARN_ON(!parent)) - return NULL; + return ERR_PTR(-EINVAL); ctrl = kzalloc(sizeof(*ctrl) + size, GFP_KERNEL); if (!ctrl) - return NULL; + return ERR_PTR(-ENOMEM); device_initialize(&ctrl->dev); ctrl->dev.type = &spmi_ctrl_type; @@ -463,7 +463,7 @@ struct spmi_controller *spmi_controller_alloc(struct device *parent, dev_err(parent, "unable to allocate SPMI controller identifier.\n"); spmi_controller_put(ctrl); - return NULL; + return ERR_PTR(id); } ctrl->nr = id; From patchwork Wed Dec 6 23:17:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 174772 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4438393vqy; Wed, 6 Dec 2023 15:18:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IGlyq7m0YWhzENkegTKiLSD7gO6yv38P2HQCTy9SBWjzYVKFhuh/lEDy40vhqwwmUTqbiRC X-Received: by 2002:a05:6358:9889:b0:170:17eb:14c4 with SMTP id q9-20020a056358988900b0017017eb14c4mr1735822rwa.52.1701904703103; Wed, 06 Dec 2023 15:18:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701904703; cv=none; d=google.com; s=arc-20160816; b=rRmePr94WIRjmN6Yi0fOGmYDlz1sOBEQxMaFnYUiLJdk+60M9Av86fqHLQySdMKt7A VEUBZrQStKCZ8l0uILHF9DwseOe4z2woSd+auyoGTYVH/CcqirPs+qAou3wmqiSi73BL 6q3Y3fYpmUoJlASAFGph5i86JQkCcx+iR6FT5dGGXSkxSDDRTXfr/XZ3C6HB2z2uFdz0 D+ArQRi9fRfHHC1icGs5H3WyPsitGuVB4QKi6DEJzwLf7M6zkql+rRQ+/DNrRqTjN825 6vNLzN3cU4lIyo/f0k8zC//nxfz2aHkVavgo6NSs6wwPhs84kbMIfkkLCxMy/YSf8v5C aDjg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4nIdsTL05i/fQcKGuxcdEvUcSTjM6r4SYAxOvza2riQ=; fh=XjWMGZLmH9qKWKwKp7YWjCeiSm2DM8dAydweZsdA3Kc=; b=ozW5RxmFlaBP60M3IR6m8CRykOyFXtPNvkljQ4V7BoKFeSreaIWGeRXEdcmG013APS KmWtdwuWNwhySTGt+Vq3+CptQFicWykmlrD7v5r1+UfpqN6SFH/p/T3bN+3H4ZtkH2sb Y84J6EHjBj4MrnPZVBZKYQkIdOkS2iCbvv0VwC66yhu5ajTAsuAUhcwYihrcYA5o2YTN aG0Ut5jgPQDUVkBjCVnZU28TJlzPC9CKAsLe1crUEP3ta54q6eXlKO28ambmTcLO8ofU b64QoflDkbRo10jUnGR1+iR4WRu5HQ74PGxDabH5Hyr+TD9ixzvCdTahCPJjYLePKOg1 lkIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="t1v/QW/1"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id t23-20020a17090ad15700b0028658c54f6bsi598988pjw.11.2023.12.06.15.18.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 15:18:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="t1v/QW/1"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 4EC3681EE386; Wed, 6 Dec 2023 15:18:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1441796AbjLFXRq (ORCPT + 99 others); Wed, 6 Dec 2023 18:17:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57482 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379631AbjLFXRc (ORCPT ); Wed, 6 Dec 2023 18:17:32 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8979D68 for ; Wed, 6 Dec 2023 15:17:37 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5250AC433C9; Wed, 6 Dec 2023 23:17:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701904657; bh=xHlmGR20SCrHf8Fi+WuUdvFz6wf3sL0KK/pWnjjJEHo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t1v/QW/16H+qXUvY+0BysMSAcM1TrX8UQoPoodoywnixyHSWOX0FleDPIUyTbzsKh Fdp39iypGh5vfvEkubP/VBns0GzPnRPHZx67aEAdvYBFhmlZz3/3aRgNoH23J5JdI6 mIOPe9o9uqQihp3rNJwVvQVYCgyYzDHqyqdL73IZPu0Svyx+c9PkqQUM9YH1Gny9Ly WKTYtGbmr+Sb9SlWp5+VcnH+98sqWoa6swfZmd1yE5D4b7cXKmv2ZG629mYM7Cgi0P +Wcg66LT40iYTvGlAFr51Jk5G/BWc8GgtlMPMwAX3CWAN4Gahea5lP7S9dYMEsZkEa fATtFkcS851Iw== From: Stephen Boyd To: Greg Kroah-Hartman Cc: Sen Chu , linux-kernel@vger.kernel.org, patches@lists.linux.dev, AngeloGioacchino Del Regno Subject: [PATCH 8/8] spmi: mediatek: add device id check Date: Wed, 6 Dec 2023 15:17:31 -0800 Message-ID: <20231206231733.4031901-9-sboyd@kernel.org> X-Mailer: git-send-email 2.43.0.rc2.451.g8631bc7472-goog In-Reply-To: <20231206231733.4031901-1-sboyd@kernel.org> References: <20231206231733.4031901-1-sboyd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Wed, 06 Dec 2023 15:18:15 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784576426341505465 X-GMAIL-MSGID: 1784576426341505465 From: Sen Chu Add device id check for spmi write API. Signed-off-by: Sen Chu Link: https://lore.kernel.org/r/20230518040729.8789-1-sen.chu@mediatek.com Reviewed-by: AngeloGioacchino Del Regno Signed-off-by: Stephen Boyd --- drivers/spmi/spmi-mtk-pmif.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c index cc660da6a037..5079442f8ea1 100644 --- a/drivers/spmi/spmi-mtk-pmif.c +++ b/drivers/spmi/spmi-mtk-pmif.c @@ -384,6 +384,12 @@ static int pmif_spmi_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid, u32 data, wdata, cmd; unsigned long flags; + /* Check for argument validation. */ + if (unlikely(sid & ~0xf)) { + dev_err(&ctrl->dev, "exceed the max slv id\n"); + return -EINVAL; + } + if (len > 4) { dev_err(&ctrl->dev, "pmif supports 1..4 bytes per trans, but:%zu requested", len);