* Re: How to fix CHECK warning: testing a 'safe expression' ? [not found] ` <5491ACE6.4070108@ti.com> @ 2014-12-17 18:49 ` Bjorn Helgaas 2014-12-17 22:35 ` Murali Karicheri 0 siblings, 1 reply; 7+ messages in thread From: Bjorn Helgaas @ 2014-12-17 18:49 UTC (permalink / raw) To: Murali Karicheri Cc: linux-pci@vger.kernel.org, Christopher Li, linux-kernel@vger.kernel.org [+cc Christopher, linux-kernel (this doesn't sound like a PCI-specific question)] On Wed, Dec 17, 2014 at 9:18 AM, Murali Karicheri <m-karicheri2@ti.com> wrote: > I am trying to address CHECK warnings in my driver and wondering how to > resolve 'warning: testing a 'safe expression' which appears when using > IS_ERR_OR_NULL(foo) > > where foo is defined as > > struct foo_type *foo; > > The foo get assigned only NULL or ERR_PTR(error code). So I believe the > usage is correct. But then how do I make the CHECK happy of its usage? > > I have tried a grep to check on the current usage of IS_ERR_OR_NULL() and > found 276 of them causes this warning in the v3.18 version of the kernel > that I am using > > $ grep -r "warning: testing a 'safe expression" * | wc -l > 276 > > Can someone help me undestand what this means and how to fix the same? > > I run folling for CHECK > > make C=2 CF="-D__CHECK_ENDIAN__" CHECK=sparse If you can share your actual code or point to it in the tree, you might get more specific help. Bjorn ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: How to fix CHECK warning: testing a 'safe expression' ? 2014-12-17 18:49 ` How to fix CHECK warning: testing a 'safe expression' ? Bjorn Helgaas @ 2014-12-17 22:35 ` Murali Karicheri 2014-12-17 22:37 ` Murali Karicheri 0 siblings, 1 reply; 7+ messages in thread From: Murali Karicheri @ 2014-12-17 22:35 UTC (permalink / raw) To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, Christopher Li, linux-kernel@vger.kernel.org On 12/17/2014 01:49 PM, Bjorn Helgaas wrote: > [+cc Christopher, linux-kernel (this doesn't sound like a PCI-specific > question)] > > On Wed, Dec 17, 2014 at 9:18 AM, Murali Karicheri<m-karicheri2@ti.com> wrote: >> I am trying to address CHECK warnings in my driver and wondering how to >> resolve 'warning: testing a 'safe expression' which appears when using >> IS_ERR_OR_NULL(foo) >> >> where foo is defined as >> >> struct foo_type *foo; >> >> The foo get assigned only NULL or ERR_PTR(error code). So I believe the >> usage is correct. But then how do I make the CHECK happy of its usage? >> >> I have tried a grep to check on the current usage of IS_ERR_OR_NULL() and >> found 276 of them causes this warning in the v3.18 version of the kernel >> that I am using >> >> $ grep -r "warning: testing a 'safe expression" * | wc -l >> 276 >> >> Can someone help me undestand what this means and how to fix the same? >> >> I run folling for CHECK >> >> make C=2 CF="-D__CHECK_ENDIAN__" CHECK=sparse > > If you can share your actual code or point to it in the tree, you > might get more specific help. > > Bjorn For example I get CHECK drivers/pci/host/pci-keystone.c include/linux/err.h:40:16: warning: testing a 'safe expression' Actually it is for IS_ERR_OR_NULL() call in the file which is the only one call in the file. -- Murali Karicheri Linux Kernel, Texas Instruments ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: How to fix CHECK warning: testing a 'safe expression' ? 2014-12-17 22:35 ` Murali Karicheri @ 2014-12-17 22:37 ` Murali Karicheri 2014-12-18 2:39 ` Christopher Li 0 siblings, 1 reply; 7+ messages in thread From: Murali Karicheri @ 2014-12-17 22:37 UTC (permalink / raw) To: Bjorn Helgaas Cc: linux-pci@vger.kernel.org, Christopher Li, linux-kernel@vger.kernel.org On 12/17/2014 05:35 PM, Murali Karicheri wrote: > On 12/17/2014 01:49 PM, Bjorn Helgaas wrote: >> [+cc Christopher, linux-kernel (this doesn't sound like a PCI-specific >> question)] >> >> On Wed, Dec 17, 2014 at 9:18 AM, Murali Karicheri<m-karicheri2@ti.com> >> wrote: >>> I am trying to address CHECK warnings in my driver and wondering how to >>> resolve 'warning: testing a 'safe expression' which appears when using >>> IS_ERR_OR_NULL(foo) >>> >>> where foo is defined as >>> >>> struct foo_type *foo; >>> >>> The foo get assigned only NULL or ERR_PTR(error code). So I believe the >>> usage is correct. But then how do I make the CHECK happy of its usage? >>> >>> I have tried a grep to check on the current usage of IS_ERR_OR_NULL() >>> and >>> found 276 of them causes this warning in the v3.18 version of the kernel >>> that I am using >>> >>> $ grep -r "warning: testing a 'safe expression" * | wc -l >>> 276 >>> >>> Can someone help me undestand what this means and how to fix the same? >>> >>> I run folling for CHECK >>> >>> make C=2 CF="-D__CHECK_ENDIAN__" CHECK=sparse >> >> If you can share your actual code or point to it in the tree, you >> might get more specific help. >> >> Bjorn > > For example I get > > CHECK drivers/pci/host/pci-keystone.c > include/linux/err.h:40:16: warning: testing a 'safe expression' > > Actually it is for IS_ERR_OR_NULL() call in the file which is the only > one call in the file. > Here is the code snippet for your convenience struct device *dev = &pdev->dev; struct keystone_pcie *ks_pcie; struct pcie_port *pp; struct resource *res; void __iomem *reg_p; struct phy *phy; int ret = 0; ks_pcie = devm_kzalloc(&pdev->dev, sizeof(*ks_pcie), GFP_KERNEL); if (!ks_pcie) { dev_err(dev, "no memory for keystone pcie\n"); return -ENOMEM; } pp = &ks_pcie->pp; /* initialize SerDes Phy if present */ phy = devm_phy_get(dev, "pcie-phy"); ===> if (!IS_ERR_OR_NULL(phy)) { ret = phy_init(phy); if (ret < 0) return ret; } -- Murali Karicheri Linux Kernel, Texas Instruments ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: How to fix CHECK warning: testing a 'safe expression' ? 2014-12-17 22:37 ` Murali Karicheri @ 2014-12-18 2:39 ` Christopher Li 2014-12-18 17:45 ` Murali Karicheri 0 siblings, 1 reply; 7+ messages in thread From: Christopher Li @ 2014-12-18 2:39 UTC (permalink / raw) To: Murali Karicheri Cc: Bjorn Helgaas, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org On Thu, Dec 18, 2014 at 6:37 AM, Murali Karicheri <m-karicheri2@ti.com> wrote: > if (!ks_pcie) { > dev_err(dev, "no memory for keystone pcie\n"); > return -ENOMEM; > } > pp = &ks_pcie->pp; > > /* initialize SerDes Phy if present */ > phy = devm_phy_get(dev, "pcie-phy"); > ===> if (!IS_ERR_OR_NULL(phy)) { > ret = phy_init(phy); > if (ret < 0) > return ret; > Hi, Do you have a smaller stand alone test case which I can reproduce with sparse? Thanks Chris ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: How to fix CHECK warning: testing a 'safe expression' ? 2014-12-18 2:39 ` Christopher Li @ 2014-12-18 17:45 ` Murali Karicheri 0 siblings, 0 replies; 7+ messages in thread From: Murali Karicheri @ 2014-12-18 17:45 UTC (permalink / raw) To: Christopher Li Cc: Bjorn Helgaas, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org On 12/17/2014 09:39 PM, Christopher Li wrote: > On Thu, Dec 18, 2014 at 6:37 AM, Murali Karicheri<m-karicheri2@ti.com> wrote: >> if (!ks_pcie) { >> dev_err(dev, "no memory for keystone pcie\n"); >> return -ENOMEM; >> } >> pp =&ks_pcie->pp; >> >> /* initialize SerDes Phy if present */ >> phy = devm_phy_get(dev, "pcie-phy"); >> ===> if (!IS_ERR_OR_NULL(phy)) { >> ret = phy_init(phy); >> if (ret< 0) >> return ret; >> > > Hi, > > Do you have a smaller stand alone test case which I can reproduce with sparse? > > Thanks > > Chris Thanks Chris for responding. You could add this piece of code for testing struct foo { int x; int y; }; static struct foo *func1(struct device *dev) { struct foo *fp; fp = devm_kzalloc(dev, sizeof(*fp), GFP_KERNEL); if (fp == NULL) return ERR_PTR(-ENOMEM); return fp; } And in one of your module in kernel add struct foo *fp; if (IS_ERR_OR_NULL(fp)) return -ENOMEM; and do make C=2 CF="-D__CHECK_ENDIAN__" CHECK=sparse You will see the CHECK warning against your module as include/linux/err.h:40:16: warning: testing a 'safe expression' Hope this helps. -- Murali Karicheri Linux Kernel, Texas Instruments ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: How to fix CHECK warning: testing a 'safe expression' [not found] <54907884.2040502@ti.com> [not found] ` <5491ACE6.4070108@ti.com> @ 2015-01-02 14:51 ` Murali Karicheri 2015-01-02 22:20 ` Josh Triplett 1 sibling, 1 reply; 7+ messages in thread From: Murali Karicheri @ 2015-01-02 14:51 UTC (permalink / raw) To: netdev, josh, linux-kernel@vger.kernel.org + Josh On 12/16/2014 01:23 PM, Murali Karicheri wrote: > netdev maintainers, > > I got a comment to address CHECK warning and wondering how to address > 'warning: testing a 'safe expression' which appears when using > IS_ERR_OR_NULL(foo) > > where foo is defined as > > struct foo_type *foo; > > The foo get assigned only NULL or ERR_PTR(error code). So I believe the > usage is correct. But then how do I make the CHECK happy of its usage? > > I have tried doing a grep on the current usage of IS_ERR_OR_NULL() and > found 276 of them causes this warning in the v3.18 version of the kernel > that I am using > > $ grep -r "warning: testing a 'safe expression" * | wc -l > 276 > > 1) Can someone explain what this warning means? > > 2) Is it acceptable to post patches to netdev list with this warning? > > 3) if not, how this is expected to be fixed? Any example usage to fix > this warning will be helpful. > > Thanks in advance for -- Murali Karicheri Linux Kernel, Texas Instruments ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: How to fix CHECK warning: testing a 'safe expression' 2015-01-02 14:51 ` How to fix CHECK warning: testing a 'safe expression' Murali Karicheri @ 2015-01-02 22:20 ` Josh Triplett 0 siblings, 0 replies; 7+ messages in thread From: Josh Triplett @ 2015-01-02 22:20 UTC (permalink / raw) To: Murali Karicheri; +Cc: netdev, linux-kernel, linux-sparse +linux-sparse On Fri, Jan 02, 2015 at 09:51:25AM -0500, Murali Karicheri wrote: > On 12/16/2014 01:23 PM, Murali Karicheri wrote: > >netdev maintainers, > > > >I got a comment to address CHECK warning and wondering how to address > >'warning: testing a 'safe expression' which appears when using > >IS_ERR_OR_NULL(foo) > > > >where foo is defined as > > > >struct foo_type *foo; > > > >The foo get assigned only NULL or ERR_PTR(error code). So I believe the > >usage is correct. But then how do I make the CHECK happy of its usage? > > > >I have tried doing a grep on the current usage of IS_ERR_OR_NULL() and > >found 276 of them causes this warning in the v3.18 version of the kernel > >that I am using > > > >$ grep -r "warning: testing a 'safe expression" * | wc -l > >276 > > > >1) Can someone explain what this warning means? > > > >2) Is it acceptable to post patches to netdev list with this warning? > > > >3) if not, how this is expected to be fixed? Any example usage to fix > >this warning will be helpful. > > > >Thanks in advance for > > > -- > Murali Karicheri > Linux Kernel, Texas Instruments ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-01-02 22:20 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <54907884.2040502@ti.com>
[not found] ` <5491ACE6.4070108@ti.com>
2014-12-17 18:49 ` How to fix CHECK warning: testing a 'safe expression' ? Bjorn Helgaas
2014-12-17 22:35 ` Murali Karicheri
2014-12-17 22:37 ` Murali Karicheri
2014-12-18 2:39 ` Christopher Li
2014-12-18 17:45 ` Murali Karicheri
2015-01-02 14:51 ` How to fix CHECK warning: testing a 'safe expression' Murali Karicheri
2015-01-02 22:20 ` Josh Triplett
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).