* new sparse warning fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression @ 2011-08-07 16:22 ` Steve French 0 siblings, 0 replies; 6+ messages in thread From: Steve French @ 2011-08-07 16:22 UTC (permalink / raw) To: LKML, linux-cifs-u79uwXL29TY76Z2rM5mHXA I noticed a series of sparse warnings (on all calls to cifs's GetXid after building on a newly install fc15 system (yum installed a sparse binary dated June 23). fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression Has sparse changed to add a new warning - I see (from quick search) others getting this on other modules years ago, but I didn't see anything obvious wrong with the definition of the function, and I hadn't noticed sparse complaining about it before, and would like to remove the 50+ new messages as they clutter the build output. -- Thanks, Steve ^ permalink raw reply [flat|nested] 6+ messages in thread
* new sparse warning fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression @ 2011-08-07 16:22 ` Steve French 0 siblings, 0 replies; 6+ messages in thread From: Steve French @ 2011-08-07 16:22 UTC (permalink / raw) To: LKML, linux-cifs I noticed a series of sparse warnings (on all calls to cifs's GetXid after building on a newly install fc15 system (yum installed a sparse binary dated June 23). fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression Has sparse changed to add a new warning - I see (from quick search) others getting this on other modules years ago, but I didn't see anything obvious wrong with the definition of the function, and I hadn't noticed sparse complaining about it before, and would like to remove the 50+ new messages as they clutter the build output. -- Thanks, Steve ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <CAH2r5mszsiu2Gm-DPbfT8UReT=eBTf4Du4eyEapG8Ayn7UN1pw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: new sparse warning fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression 2011-08-07 16:22 ` Steve French @ 2011-08-07 17:48 ` Al Viro -1 siblings, 0 replies; 6+ messages in thread From: Al Viro @ 2011-08-07 17:48 UTC (permalink / raw) To: Steve French; +Cc: LKML, linux-cifs-u79uwXL29TY76Z2rM5mHXA On Sun, Aug 07, 2011 at 11:22:51AM -0500, Steve French wrote: > I noticed a series of sparse warnings (on all calls to cifs's GetXid > after building on a newly install fc15 system (yum installed a sparse > binary dated June 23). > > fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression > fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression > > Has sparse changed to add a new warning - I see (from quick search) > others getting this on other modules years ago, but I didn't see > anything obvious wrong with the definition of the function, and I > hadn't noticed sparse complaining about it before, and would like to > remove the 50+ new messages as they clutter the build output. It's not sparse change - the whinge comes from current_fsuid(), i.e. direct read of current->cred, even though it's declared with __rcu. The thing is, current->cred does *not* need rcu_dereference() - only the task itself can change it. Easily fixed... Signed-off-by: Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org> --- diff --git a/include/linux/cred.h b/include/linux/cred.h index 48e82af..98f46ef 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h @@ -265,10 +265,11 @@ static inline void put_cred(const struct cred *_cred) /** * current_cred - Access the current task's subjective credentials * - * Access the subjective credentials of the current task. + * Access the subjective credentials of the current task. RCU-safe, + * since nobody else can modify it. */ #define current_cred() \ - (current->cred) + (*(__force struct cred **)¤t->cred) /** * __task_cred - Access a task's objective credentials @@ -307,7 +308,7 @@ static inline void put_cred(const struct cred *_cred) ({ \ struct user_struct *__u; \ struct cred *__cred; \ - __cred = (struct cred *) current_cred(); \ + __cred = current_cred(); \ __u = get_uid(__cred->user); \ __u; \ }) @@ -322,7 +323,7 @@ static inline void put_cred(const struct cred *_cred) ({ \ struct group_info *__groups; \ struct cred *__cred; \ - __cred = (struct cred *) current_cred(); \ + __cred = current_cred(); \ __groups = get_group_info(__cred->group_info); \ __groups; \ }) @@ -341,7 +342,7 @@ static inline void put_cred(const struct cred *_cred) #define current_cred_xxx(xxx) \ ({ \ - current->cred->xxx; \ + current_cred()->xxx; \ }) #define current_uid() (current_cred_xxx(uid)) ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: new sparse warning fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression @ 2011-08-07 17:48 ` Al Viro 0 siblings, 0 replies; 6+ messages in thread From: Al Viro @ 2011-08-07 17:48 UTC (permalink / raw) To: Steve French; +Cc: LKML, linux-cifs On Sun, Aug 07, 2011 at 11:22:51AM -0500, Steve French wrote: > I noticed a series of sparse warnings (on all calls to cifs's GetXid > after building on a newly install fc15 system (yum installed a sparse > binary dated June 23). > > fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression > fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression > > Has sparse changed to add a new warning - I see (from quick search) > others getting this on other modules years ago, but I didn't see > anything obvious wrong with the definition of the function, and I > hadn't noticed sparse complaining about it before, and would like to > remove the 50+ new messages as they clutter the build output. It's not sparse change - the whinge comes from current_fsuid(), i.e. direct read of current->cred, even though it's declared with __rcu. The thing is, current->cred does *not* need rcu_dereference() - only the task itself can change it. Easily fixed... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> --- diff --git a/include/linux/cred.h b/include/linux/cred.h index 48e82af..98f46ef 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h @@ -265,10 +265,11 @@ static inline void put_cred(const struct cred *_cred) /** * current_cred - Access the current task's subjective credentials * - * Access the subjective credentials of the current task. + * Access the subjective credentials of the current task. RCU-safe, + * since nobody else can modify it. */ #define current_cred() \ - (current->cred) + (*(__force struct cred **)¤t->cred) /** * __task_cred - Access a task's objective credentials @@ -307,7 +308,7 @@ static inline void put_cred(const struct cred *_cred) ({ \ struct user_struct *__u; \ struct cred *__cred; \ - __cred = (struct cred *) current_cred(); \ + __cred = current_cred(); \ __u = get_uid(__cred->user); \ __u; \ }) @@ -322,7 +323,7 @@ static inline void put_cred(const struct cred *_cred) ({ \ struct group_info *__groups; \ struct cred *__cred; \ - __cred = (struct cred *) current_cred(); \ + __cred = current_cred(); \ __groups = get_group_info(__cred->group_info); \ __groups; \ }) @@ -341,7 +342,7 @@ static inline void put_cred(const struct cred *_cred) #define current_cred_xxx(xxx) \ ({ \ - current->cred->xxx; \ + current_cred()->xxx; \ }) #define current_uid() (current_cred_xxx(uid)) ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <20110807174829.GY2203-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>]
* Re: new sparse warning fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression 2011-08-07 17:48 ` Al Viro @ 2011-08-07 19:32 ` Steve French -1 siblings, 0 replies; 6+ messages in thread From: Steve French @ 2011-08-07 19:32 UTC (permalink / raw) To: Al Viro; +Cc: LKML, linux-cifs-u79uwXL29TY76Z2rM5mHXA On Sun, Aug 7, 2011 at 12:48 PM, Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org> wrote: > On Sun, Aug 07, 2011 at 11:22:51AM -0500, Steve French wrote: >> I noticed a series of sparse warnings (on all calls to cifs's GetXid >> after building on a newly install fc15 system (yum installed a sparse >> binary dated June 23). >> >> fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression >> fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression >> >> Has sparse changed to add a new warning - I see (from quick search) >> others getting this on other modules years ago, but I didn't see >> anything obvious wrong with the definition of the function, and I >> hadn't noticed sparse complaining about it before, and would like to >> remove the 50+ new messages as they clutter the build output. > > It's not sparse change - the whinge comes from current_fsuid(), i.e. direct > read of current->cred, even though it's declared with __rcu. The thing is, > current->cred does *not* need rcu_dereference() - only the task itself > can change it. Easily fixed... your change makes sense - thx Steve ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: new sparse warning fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression @ 2011-08-07 19:32 ` Steve French 0 siblings, 0 replies; 6+ messages in thread From: Steve French @ 2011-08-07 19:32 UTC (permalink / raw) To: Al Viro; +Cc: LKML, linux-cifs On Sun, Aug 7, 2011 at 12:48 PM, Al Viro <viro@zeniv.linux.org.uk> wrote: > On Sun, Aug 07, 2011 at 11:22:51AM -0500, Steve French wrote: >> I noticed a series of sparse warnings (on all calls to cifs's GetXid >> after building on a newly install fc15 system (yum installed a sparse >> binary dated June 23). >> >> fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression >> fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression >> >> Has sparse changed to add a new warning - I see (from quick search) >> others getting this on other modules years ago, but I didn't see >> anything obvious wrong with the definition of the function, and I >> hadn't noticed sparse complaining about it before, and would like to >> remove the 50+ new messages as they clutter the build output. > > It's not sparse change - the whinge comes from current_fsuid(), i.e. direct > read of current->cred, even though it's declared with __rcu. The thing is, > current->cred does *not* need rcu_dereference() - only the task itself > can change it. Easily fixed... your change makes sense - thx Steve ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-08-07 19:32 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-07 16:22 new sparse warning fs/cifs/cifsfs.c:168:15: warning: dereference of noderef expression fs/cifs/cifsfs.c:542:15: warning: dereference of noderef expression Steve French
2011-08-07 16:22 ` Steve French
[not found] ` <CAH2r5mszsiu2Gm-DPbfT8UReT=eBTf4Du4eyEapG8Ayn7UN1pw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-07 17:48 ` Al Viro
2011-08-07 17:48 ` Al Viro
[not found] ` <20110807174829.GY2203-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
2011-08-07 19:32 ` Steve French
2011-08-07 19:32 ` Steve French
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.