Message ID | 20200402063302.20640-1-tangbin@cmss.chinamobile.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | iommu/qcom:fix local_base status check | expand |
On Wed 01 Apr 23:33 PDT 2020, Tang Bin wrote: > Release resources when exiting on error. > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Regards, Bjorn > Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> > --- > drivers/iommu/qcom_iommu.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/qcom_iommu.c > index 4328da0b0..c08aa9651 100644 > --- a/drivers/iommu/qcom_iommu.c > +++ b/drivers/iommu/qcom_iommu.c > @@ -813,8 +813,11 @@ static int qcom_iommu_device_probe(struct platform_device *pdev) > qcom_iommu->dev = dev; > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - if (res) > + if (res) { > qcom_iommu->local_base = devm_ioremap_resource(dev, res); > + if (IS_ERR(qcom_iommu->local_base)) > + return PTR_ERR(qcom_iommu->local_base); > + } > > qcom_iommu->iface_clk = devm_clk_get(dev, "iface"); > if (IS_ERR(qcom_iommu->iface_clk)) { > -- > 2.20.1.windows.1 > > >
Hi Bjorn: On 2020/4/2 14:45, Bjorn Andersson wrote: > On Wed 01 Apr 23:33 PDT 2020, Tang Bin wrote: > >> Release resources when exiting on error. >> > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Thanks for your positive feedback. I don't know whether the commit message affect this patch's result. If so, I think the commit message need more clarification. As follwos: The function qcom_iommu_device_probe() does not perform sufficient error checking after executing devm_ioremap_resource(), which can result in crashes if a critical error path is encountered. Fixes: 0ae349a0("iommu/qcom: Add qcom_iommu") I'm waiting for your reply actively. Thanks, Tang Bin > >> Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> >> --- >> drivers/iommu/qcom_iommu.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/qcom_iommu.c >> index 4328da0b0..c08aa9651 100644 >> --- a/drivers/iommu/qcom_iommu.c >> +++ b/drivers/iommu/qcom_iommu.c >> @@ -813,8 +813,11 @@ static int qcom_iommu_device_probe(struct platform_device *pdev) >> qcom_iommu->dev = dev; >> >> res = platform_get_resource(pdev, IORESOURCE_MEM, 0); >> - if (res) >> + if (res) { >> qcom_iommu->local_base = devm_ioremap_resource(dev, res); >> + if (IS_ERR(qcom_iommu->local_base)) >> + return PTR_ERR(qcom_iommu->local_base); >> + } >> >> qcom_iommu->iface_clk = devm_clk_get(dev, "iface"); >> if (IS_ERR(qcom_iommu->iface_clk)) { >> -- >> 2.20.1.windows.1 >> >> >>
On 2020-04-02 7:33 am, Tang Bin wrote: > Release resources when exiting on error. > > Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> > --- > drivers/iommu/qcom_iommu.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/qcom_iommu.c > index 4328da0b0..c08aa9651 100644 > --- a/drivers/iommu/qcom_iommu.c > +++ b/drivers/iommu/qcom_iommu.c > @@ -813,8 +813,11 @@ static int qcom_iommu_device_probe(struct platform_device *pdev) > qcom_iommu->dev = dev; > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - if (res) > + if (res) { > qcom_iommu->local_base = devm_ioremap_resource(dev, res); > + if (IS_ERR(qcom_iommu->local_base)) > + return PTR_ERR(qcom_iommu->local_base); > + } ...or just use devm_platform_ioremap_resource() to make the whole thing simpler. Robin. > > qcom_iommu->iface_clk = devm_clk_get(dev, "iface"); > if (IS_ERR(qcom_iommu->iface_clk)) { >
On 2020/4/16 18:05, Robin Murphy wrote: > On 2020-04-02 7:33 am, Tang Bin wrote: >> Release resources when exiting on error. >> >> Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> >> --- >> drivers/iommu/qcom_iommu.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/qcom_iommu.c >> index 4328da0b0..c08aa9651 100644 >> --- a/drivers/iommu/qcom_iommu.c >> +++ b/drivers/iommu/qcom_iommu.c >> @@ -813,8 +813,11 @@ static int qcom_iommu_device_probe(struct >> platform_device *pdev) >> qcom_iommu->dev = dev; >> res = platform_get_resource(pdev, IORESOURCE_MEM, 0); >> - if (res) >> + if (res) { >> qcom_iommu->local_base = devm_ioremap_resource(dev, res); >> + if (IS_ERR(qcom_iommu->local_base)) >> + return PTR_ERR(qcom_iommu->local_base); >> + } > > ...or just use devm_platform_ioremap_resource() to make the whole > thing simpler. Yes, I was going to simplify the code here, but status check is still required. So I'm waiting. Thanks, Tang Bin
On Thu, Apr 16, 2020 at 02:42:23PM +0800, Tang Bin wrote: > The function qcom_iommu_device_probe() does not perform sufficient > error checking after executing devm_ioremap_resource(), which can result in > crashes if a critical error path is encountered. > > Fixes: 0ae349a0("iommu/qcom: Add qcom_iommu") Yes, that sounds better. Please use it for the commit message and also add the Fixes line and resubmit the fix to me. Please make the fixes line: Fixes: 0ae349a0f33f ("iommu/qcom: Add qcom_iommu") So that the commit-id is 12 characters long and a space between it and the subject. Thanks, Joerg
On 2020/4/18 19:54, Joerg Roedel wrote: > On Thu, Apr 16, 2020 at 02:42:23PM +0800, Tang Bin wrote: >> The function qcom_iommu_device_probe() does not perform sufficient >> error checking after executing devm_ioremap_resource(), which can result in >> crashes if a critical error path is encountered. >> >> Fixes: 0ae349a0("iommu/qcom: Add qcom_iommu") > Yes, that sounds better. Please use it for the commit message and also > add the Fixes line and resubmit the fix to me. > Please make the fixes line: > > Fixes: 0ae349a0f33f ("iommu/qcom: Add qcom_iommu") > > So that the commit-id is 12 characters long and a space between it and > the subject. Got it, thanks for your instruction. Tang Bin > >
diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/qcom_iommu.c index 4328da0b0..c08aa9651 100644 --- a/drivers/iommu/qcom_iommu.c +++ b/drivers/iommu/qcom_iommu.c @@ -813,8 +813,11 @@ static int qcom_iommu_device_probe(struct platform_device *pdev) qcom_iommu->dev = dev; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (res) + if (res) { qcom_iommu->local_base = devm_ioremap_resource(dev, res); + if (IS_ERR(qcom_iommu->local_base)) + return PTR_ERR(qcom_iommu->local_base); + } qcom_iommu->iface_clk = devm_clk_get(dev, "iface"); if (IS_ERR(qcom_iommu->iface_clk)) {
Release resources when exiting on error. Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> --- drivers/iommu/qcom_iommu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)