Peter Samuelson wrote:
>
> [Torsten Duwe]
> > >>>>> "Francis" == Francis Galiegue <[EMAIL PROTECTED]> writes:
> >
> > >> + if ((*p & 0xdf) >= 'a' && (*p & 0xdf) <= 'z') continue;
> >
> > Francis> Just in case... Some modules have uppercase letters too :)
> >
> > That's what the &0xdf is intended for...
>
> It's wrong, then: you've converted to uppercase, not lowercase.
>
> request_module is not a fast path. Do it the obvious, unoptimized way:
>
> if ((*p < 'a' || *p > 'z') &&
> (*p < 'A' || *p > 'Z') &&
> (*p < '0' || *p > '9') &&
> *p != '-' && *p != '_')
> return -EINVAL;
Heading in the right direction, but this is equivalent to:
if (isalnum(*p) && *p != '-' && *p != '_') return -EINVAL;
which is faster, smaller and easier to read.
--
Daniel
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/