From: Greg Kroah-Hartman Date: Fri, 16 Nov 2007 00:12:56 +0000 (-0800) Subject: another param bugfix added X-Git-Tag: v2.6.23.2~2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=f2e864365933c50acdb12e3aee011f6ac4fdf301;p=thirdparty%2Fkernel%2Fstable-queue.git another param bugfix added --- diff --git a/review-2.6.23-1/fix-param_sysfs_builtin-name-length-check.patch b/review-2.6.23-1/fix-param_sysfs_builtin-name-length-check.patch new file mode 100644 index 00000000000..b52f40a0fea --- /dev/null +++ b/review-2.6.23-1/fix-param_sysfs_builtin-name-length-check.patch @@ -0,0 +1,54 @@ +From 22800a2830ec07e7cc5c837999890ac47cc7f5de Mon Sep 17 00:00:00 2001 +From: Jan Kiszka +Date: Wed, 14 Nov 2007 17:00:08 -0800 +Subject: [PATCH] fix param_sysfs_builtin name length check + +From: Jan Kiszka + +patch 22800a2830ec07e7cc5c837999890ac47cc7f5de in mainline. + +Commit faf8c714f4508207a9c81cc94dafc76ed6680b44 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 +Cc: Dave Young +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Cc: Chuck Ebbert +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/params.c | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +--- a/kernel/params.c ++++ b/kernel/params.c +@@ -595,19 +595,16 @@ static void __init param_sysfs_builtin(v + + 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; diff --git a/review-2.6.23-1/series b/review-2.6.23-1/series index 4c6c15258c8..2b54dfdd2cc 100644 --- a/review-2.6.23-1/series +++ b/review-2.6.23-1/series @@ -3,6 +3,7 @@ lockdep-fix-mismatched-lockdep_depth-curr_chain_hash.patch locks-fix-possible-infinite-loop-in-posix-deadlock-detection.patch remove-broken-ptrace-special-case-code-from-file-mapping.patch param_sysfs_builtin-memchr-argument-fix.patch +fix-param_sysfs_builtin-name-length-check.patch howto-update-ja_jp-howto-with-latest-changes.patch slub-fix-memory-leak-by-not-reusing-cpu_slab.patch writeback-don-t-propagate-aop_writepage_activate.patch