]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
another 2.6.22 patch
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 19 Nov 2007 17:26:44 +0000 (09:26 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 19 Nov 2007 17:26:44 +0000 (09:26 -0800)
queue-2.6.22/fix-param_sysfs_builtin-name-length-check.patch [new file with mode: 0644]
queue-2.6.22/series

diff --git a/queue-2.6.22/fix-param_sysfs_builtin-name-length-check.patch b/queue-2.6.22/fix-param_sysfs_builtin-name-length-check.patch
new file mode 100644 (file)
index 0000000..41a5abb
--- /dev/null
@@ -0,0 +1,54 @@
+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;
index 292f9e8a0612cbe35991bfec9730d9c60ed7d386..31478dd94ff81a7b36189c8e411f63fe5cfcb468 100644 (file)
@@ -5,3 +5,4 @@ alsa-hdsp-fix-zero-division.patch
 alsa-hda-codec-add-array-terminator-for-dmic-in-stac-codec.patch
 forcedeth-msi-bugfix.patch
 hptiop-avoid-buffer-overflow-when-returning-sense-data.patch
+fix-param_sysfs_builtin-name-length-check.patch