--- /dev/null
+From 22800a2830ec07e7cc5c837999890ac47cc7f5de Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@web.de>
+Date: Wed, 14 Nov 2007 17:00:08 -0800
+Subject: [PATCH] fix param_sysfs_builtin name length check
+
+From: Jan Kiszka <jan.kiszka@web.de>
+
+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 <jan.kiszka@web.de>
+Cc: Dave Young <hidave.darkstar@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/params.c | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+--- a/kernel/params.c
++++ b/kernel/params.c
+@@ -591,19 +591,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;