lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 02 Jun 2011 06:40:13 -0700
From:	ebiederm@...ssion.com (Eric W. Biederman)
To:	Lucas De Marchi <lucas.demarchi@...fusion.mobi>
Cc:	Jesper Juhl <jj@...osbits.net>, linux-kernel@...r.kernel.org,
	Nick Piggin <npiggin@...nel.dk>,
	Christoph Hellwig <hch@....de>,
	Al Viro <viro@...iv.linux.org.uk>
Subject: Re: [PATCH] sysctl: remove impossible condition check

Lucas De Marchi <lucas.demarchi@...fusion.mobi> writes:

> [ CC'ing Al Viro ]
>
> On Wed, Jun 1, 2011 at 10:25 AM, Jesper Juhl <jj@...osbits.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@...osbits.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.

It is not a bug.  The condition was originally p->ctlname then
it became p->ctlname || p->procname and then finally I was able to
kill ctl_name.

What you see is a left over that didn't get removed.

This is also the second time in the last couple of weeks someone has
sent this patch. 

There is some ongoing work to make sysctl scale better that with
any luck should be ready for 3.1.  Decide which version of this
patch you like and please resend, and I will add this to my
sysctl tree.

Thank you,
Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ