From: Junhao He <hejunhao3@huawei.com> To: <suzuki.poulose@arm.com>, <james.clark@arm.com> Cc: <coresight@lists.linaro.org>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <linuxarm@huawei.com>, <jonathan.cameron@huawei.com>, <yangyicong@huawei.com>, <prime.zeng@hisilicon.com>, <hejunhao3@huawei.com>, <u.kleine-koenig@pengutronix.de> Subject: [PATCH v3 2/4] coresight: ultrasoc-smb: Config SMB buffer before register sink Date: Tue, 14 Nov 2023 21:33:44 +0800 [thread overview] Message-ID: <20231114133346.30489-3-hejunhao3@huawei.com> (raw) In-Reply-To: <20231114133346.30489-1-hejunhao3@huawei.com> The SMB dirver register the enable/disable sysfs interface in function smb_register_sink(), however the buffer depends on the following configuration to work well. So it'll be possible for user to access an unreset one. Move the config buffer operation to before register_sink(). Ignore the return value, if smb_config_inport() fails. That will cause the hardwares disable trace path to fail, should not affect SMB driver remove. So we make smb_remove() return success, Fixes: 06f5c2926aaa ("drivers/coresight: Add UltraSoc System Memory Buffer driver") Signed-off-by: Junhao He <hejunhao3@huawei.com> --- drivers/hwtracing/coresight/ultrasoc-smb.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/hwtracing/coresight/ultrasoc-smb.c b/drivers/hwtracing/coresight/ultrasoc-smb.c index 0a0fe9fcc57f..2f2aba90a514 100644 --- a/drivers/hwtracing/coresight/ultrasoc-smb.c +++ b/drivers/hwtracing/coresight/ultrasoc-smb.c @@ -583,37 +583,32 @@ static int smb_probe(struct platform_device *pdev) return ret; } + ret = smb_config_inport(dev, true); + if (ret) + return ret; + + platform_set_drvdata(pdev, drvdata); spin_lock_init(&drvdata->spinlock); drvdata->pid = -1; ret = smb_register_sink(pdev, drvdata); if (ret) { + smb_config_inport(&pdev->dev, false); dev_err(dev, "Failed to register SMB sink\n"); return ret; } - ret = smb_config_inport(dev, true); - if (ret) { - smb_unregister_sink(drvdata); - return ret; - } - - platform_set_drvdata(pdev, drvdata); - return 0; } static int smb_remove(struct platform_device *pdev) { struct smb_drv_data *drvdata = platform_get_drvdata(pdev); - int ret; - - ret = smb_config_inport(&pdev->dev, false); - if (ret) - return ret; smb_unregister_sink(drvdata); + smb_config_inport(&pdev->dev, false); + return 0; } -- 2.33.0
WARNING: multiple messages have this Message-ID (diff)
From: Junhao He <hejunhao3@huawei.com> To: <suzuki.poulose@arm.com>, <james.clark@arm.com> Cc: <coresight@lists.linaro.org>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <linuxarm@huawei.com>, <jonathan.cameron@huawei.com>, <yangyicong@huawei.com>, <prime.zeng@hisilicon.com>, <hejunhao3@huawei.com>, <u.kleine-koenig@pengutronix.de> Subject: [PATCH v3 2/4] coresight: ultrasoc-smb: Config SMB buffer before register sink Date: Tue, 14 Nov 2023 21:33:44 +0800 [thread overview] Message-ID: <20231114133346.30489-3-hejunhao3@huawei.com> (raw) In-Reply-To: <20231114133346.30489-1-hejunhao3@huawei.com> The SMB dirver register the enable/disable sysfs interface in function smb_register_sink(), however the buffer depends on the following configuration to work well. So it'll be possible for user to access an unreset one. Move the config buffer operation to before register_sink(). Ignore the return value, if smb_config_inport() fails. That will cause the hardwares disable trace path to fail, should not affect SMB driver remove. So we make smb_remove() return success, Fixes: 06f5c2926aaa ("drivers/coresight: Add UltraSoc System Memory Buffer driver") Signed-off-by: Junhao He <hejunhao3@huawei.com> --- drivers/hwtracing/coresight/ultrasoc-smb.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/hwtracing/coresight/ultrasoc-smb.c b/drivers/hwtracing/coresight/ultrasoc-smb.c index 0a0fe9fcc57f..2f2aba90a514 100644 --- a/drivers/hwtracing/coresight/ultrasoc-smb.c +++ b/drivers/hwtracing/coresight/ultrasoc-smb.c @@ -583,37 +583,32 @@ static int smb_probe(struct platform_device *pdev) return ret; } + ret = smb_config_inport(dev, true); + if (ret) + return ret; + + platform_set_drvdata(pdev, drvdata); spin_lock_init(&drvdata->spinlock); drvdata->pid = -1; ret = smb_register_sink(pdev, drvdata); if (ret) { + smb_config_inport(&pdev->dev, false); dev_err(dev, "Failed to register SMB sink\n"); return ret; } - ret = smb_config_inport(dev, true); - if (ret) { - smb_unregister_sink(drvdata); - return ret; - } - - platform_set_drvdata(pdev, drvdata); - return 0; } static int smb_remove(struct platform_device *pdev) { struct smb_drv_data *drvdata = platform_get_drvdata(pdev); - int ret; - - ret = smb_config_inport(&pdev->dev, false); - if (ret) - return ret; smb_unregister_sink(drvdata); + smb_config_inport(&pdev->dev, false); + return 0; } -- 2.33.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-11-14 13:33 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-11-14 13:33 [PATCH v3 0/4] Fixed some issues and cleanup of ultrasoc-smb Junhao He 2023-11-14 13:33 ` Junhao He 2023-11-14 13:33 ` [PATCH v3 1/4] coresight: ultrasoc-smb: Fix sleep while close preempt in enable_smb Junhao He 2023-11-14 13:33 ` Junhao He 2023-11-15 16:39 ` James Clark 2023-11-15 16:39 ` James Clark 2023-11-14 13:33 ` Junhao He [this message] 2023-11-14 13:33 ` [PATCH v3 2/4] coresight: ultrasoc-smb: Config SMB buffer before register sink Junhao He 2023-11-15 16:43 ` James Clark 2023-11-15 16:43 ` James Clark 2023-11-14 13:33 ` [PATCH v3 3/4] coresight: ultrasoc-smb: Fix uninitialized before use buf_hw_base Junhao He 2023-11-14 13:33 ` Junhao He 2023-11-15 16:47 ` James Clark 2023-11-15 16:47 ` James Clark 2023-11-14 13:33 ` [PATCH v3 4/4] coresight: ultrasoc-smb: Use guards to cleanup Junhao He 2023-11-14 13:33 ` Junhao He 2023-11-15 16:51 ` James Clark 2023-11-15 16:51 ` James Clark 2023-11-21 11:34 ` [PATCH v3 0/4] Fixed some issues and cleanup of ultrasoc-smb Suzuki K Poulose 2023-11-21 11:34 ` Suzuki K Poulose
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20231114133346.30489-3-hejunhao3@huawei.com \ --to=hejunhao3@huawei.com \ --cc=coresight@lists.linaro.org \ --cc=james.clark@arm.com \ --cc=jonathan.cameron@huawei.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxarm@huawei.com \ --cc=prime.zeng@hisilicon.com \ --cc=suzuki.poulose@arm.com \ --cc=u.kleine-koenig@pengutronix.de \ --cc=yangyicong@huawei.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.