Messages in this thread |  | | | From | Lucas De Marchi <> | | Date | Wed, 1 Jun 2011 11:11:36 -0300 | | Subject | Re: [PATCH] sysctl: remove impossible condition check |
| |
[ CC'ing Al Viro ]
On Wed, Jun 1, 2011 at 10:25 AM, Jesper Juhl <jj@chaosbits.net> wrote: > How about compacting it even further by getting rid of the 'len' variable > as well? > Like this: > > Signed-off-by: Jesper Juhl <jj@chaosbits.net> > --- > proc_sysctl.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c > index f50133c..bd7f7af 100644 > --- a/fs/proc/proc_sysctl.c > +++ b/fs/proc/proc_sysctl.c > @@ -49,17 +49,11 @@ out: > > static struct ctl_table *find_in_table(struct ctl_table *p, struct qstr *name) > { > - int len; > for ( ; p->procname; p++) { > - > - if (!p->procname) > - continue; > - > - len = strlen(p->procname); > - if (len != name->len) > + if (strlen(p->procname) != name->len) > continue; > > - if (memcmp(p->procname, name->name, len) != 0) > + if (memcmp(p->procname, name->name, name->len) != 0) > continue; > > /* I have a match */ >
Looking again at the code, I'm wondering if this is not actually a bug. There might be entries with procname == NULL, meaning they are not mirrored in /proc. What seems wrong is the condition in the for(). It should stop when all fields are 0 (meaning the end of the table) instead of stopping when procname is NULL.
> > -- > Jesper Juhl <jj@chaosbits.net> http://www.chaosbits.net/ > Don't top-post http://www.catb.org/jargon/html/T/top-post.html > Plain text mails only, please. > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |