Re: How to fix CHECK warning: testing a 'safe expression' ?
From: Murali Karicheri
Date: Thu Dec 18 2014 - 12:45:34 EST
On 12/17/2014 09:39 PM, Christopher Li wrote:
On Thu, Dec 18, 2014 at 6:37 AM, Murali Karicheri<m-karicheri2@xxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/