lkml.org 
[lkml]   [2014]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: How to fix CHECK warning: testing a 'safe expression' ?
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


\
 
 \ /
  Last update: 2014-12-18 19:21    [W:0.046 / U:25.604 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site