kernel-janitors.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new_xat
@ 2012-09-12  2:28 Fengguang Wu
  2012-09-12  7:55 ` [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new Dan Carpenter
  2012-09-12 13:40 ` Aristeu Rozanski
  0 siblings, 2 replies; 3+ messages in thread
From: Fengguang Wu @ 2012-09-12  2:28 UTC (permalink / raw)
  To: kernel-janitors

Hi Aristeu,

FYI, there are new smatch warnings show up in

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-next
head:   9814e970d7947dcc5ab7b37a53514c0098bfacc9
commit: 38f38657444d15e1a8574eae80ed3de9f501737a xattr: extract simple_xattr code from tmpfs


fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new_xattr'.

vim +882 fs/xattr.c
   872				} else {
   873					list_del(&xattr->list);
   874				}
   875				goto out;
   876			}
   877		}
   878		if (flags & XATTR_REPLACE) {
   879			xattr = new_xattr;
   880			err = -ENODATA;
   881		} else {
 > 882			list_add(&new_xattr->list, &xattrs->head);
   883			xattr = NULL;
   884		}
   885	out:
   886		spin_unlock(&xattrs->lock);
   887		if (xattr) {
   888			kfree(xattr->name);
   889			kfree(xattr);
   890		}
   891		return err;
   892	

---
0-DAY kernel build testing backend         Open Source Technology Centre
Fengguang Wu <wfg@linux.intel.com>                     Intel Corporation

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new
  2012-09-12  2:28 [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new_xat Fengguang Wu
@ 2012-09-12  7:55 ` Dan Carpenter
  2012-09-12 13:40 ` Aristeu Rozanski
  1 sibling, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2012-09-12  7:55 UTC (permalink / raw)
  To: kernel-janitors

On Wed, Sep 12, 2012 at 10:28:13AM +0800, Fengguang Wu wrote:
> Hi Aristeu,
> 
> FYI, there are new smatch warnings show up in
> 
> tree:   git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-next
> head:   9814e970d7947dcc5ab7b37a53514c0098bfacc9
> commit: 38f38657444d15e1a8574eae80ed3de9f501737a xattr: extract simple_xattr code from tmpfs
> 
> 
> fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new_xattr'.
> 

I don't know if this specific code is buggy or not.  It would depend
on how the function is called.

But potentially I should disable this Smatch rule.  It tends to have
a lot of false positives.  The thing is that GCC complains if you
don't initialize "new_xattr", but if you initialize it to NULL then
Smatch complains.

One solution might be to use the unitialized_var() macro.

-       struct simple_xattr *new_xattr = NULL;
+       struct simple_xattr *uninitialized_var(new_xattr);

That would make both GCC and Smatch happy.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new
  2012-09-12  2:28 [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new_xat Fengguang Wu
  2012-09-12  7:55 ` [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new Dan Carpenter
@ 2012-09-12 13:40 ` Aristeu Rozanski
  1 sibling, 0 replies; 3+ messages in thread
From: Aristeu Rozanski @ 2012-09-12 13:40 UTC (permalink / raw)
  To: kernel-janitors

On Wed, Sep 12, 2012 at 10:55:17AM +0300, Dan Carpenter wrote:
> On Wed, Sep 12, 2012 at 10:28:13AM +0800, Fengguang Wu wrote:
> > Hi Aristeu,
> > 
> > FYI, there are new smatch warnings show up in
> > 
> > tree:   git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-next
> > head:   9814e970d7947dcc5ab7b37a53514c0098bfacc9
> > commit: 38f38657444d15e1a8574eae80ed3de9f501737a xattr: extract simple_xattr code from tmpfs
> > 
> > 
> > fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new_xattr'.
> > 
> 
> I don't know if this specific code is buggy or not.  It would depend
> on how the function is called.

this should be safe. the only way to have value = NULL (thus keeping
new_xattr from being initialized) is if you call __simple_xattr_set()
directly with the intention of removing an existing entry.

> But potentially I should disable this Smatch rule.  It tends to have
> a lot of false positives.  The thing is that GCC complains if you
> don't initialize "new_xattr", but if you initialize it to NULL then
> Smatch complains.
> 
> One solution might be to use the unitialized_var() macro.
> 
> -       struct simple_xattr *new_xattr = NULL;
> +       struct simple_xattr *uninitialized_var(new_xattr);
> 
> That would make both GCC and Smatch happy.

Sounds good to me. Will get a patch ready. Thanks Dan.

-- 
Aristeu


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-09-12 13:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-12  2:28 [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new_xat Fengguang Wu
2012-09-12  7:55 ` [cgroup:for-next 5/6] fs/xattr.c:882 __simple_xattr_set() error: potential NULL dereference 'new Dan Carpenter
2012-09-12 13:40 ` Aristeu Rozanski

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).