Skip to content

Commit

Permalink
fix param_sysfs_builtin name length check
Browse files Browse the repository at this point in the history
Commit faf8c71 caused a regression:
parameter names longer than MAX_KBUILD_MODNAME will now be rejected,
although we just need to keep the module name part that short.  This patch
restores the old behaviour while still avoiding that memchr is called with
its length parameter larger than the total string length.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
Cc: Dave Young <hidave.darkstar@gmail.com>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Jan Kiszka authored and Linus Torvalds committed Nov 15, 2007
1 parent 9fcc2d1 commit 22800a2
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions kernel/params.c
Original file line number Diff line number Diff line change
Expand Up @@ -592,19 +592,16 @@ static void __init param_sysfs_builtin(void)

for (i=0; i < __stop___param - __start___param; i++) {
char *dot;
size_t kplen;
size_t max_name_len;

kp = &__start___param[i];
kplen = strlen(kp->name);
max_name_len =
min_t(size_t, MAX_KBUILD_MODNAME, strlen(kp->name));

/* We do not handle args without periods. */
if (kplen > MAX_KBUILD_MODNAME) {
DEBUGP("kernel parameter name is too long: %s\n", kp->name);
continue;
}
dot = memchr(kp->name, '.', kplen);
dot = memchr(kp->name, '.', max_name_len);
if (!dot) {
DEBUGP("couldn't find period in %s\n", kp->name);
DEBUGP("couldn't find period in first %d characters "
"of %s\n", MAX_KBUILD_MODNAME, kp->name);
continue;
}
name_len = dot - kp->name;
Expand Down

0 comments on commit 22800a2

Please sign in to comment.