]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
add a new patch and remove one too
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 7 Mar 2007 14:27:23 +0000 (06:27 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 7 Mar 2007 14:27:23 +0000 (06:27 -0800)
queue-2.6.20/fix-bug-7994-sleeping-function-called-from-invalid-context-at-mm-slab.c-3034.patch [deleted file]
queue-2.6.20/revert-log2-alter-get_order-so-that-it-can-make-use-of-ilog2-on-a-constant.patch [new file with mode: 0644]
queue-2.6.20/series

diff --git a/queue-2.6.20/fix-bug-7994-sleeping-function-called-from-invalid-context-at-mm-slab.c-3034.patch b/queue-2.6.20/fix-bug-7994-sleeping-function-called-from-invalid-context-at-mm-slab.c-3034.patch
deleted file mode 100644 (file)
index 62f470a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From stable-bounces@linux.kernel.org Tue Feb 13 09:33:02 2007
-From: Douglas Gilbert <dougg@torque.net>
-Date: Tue, 13 Feb 2007 09:31:38 -0800
-Subject: Fix Bug 7994: sleeping function called from invalid context at mm/slab.c:3034
-To: stable@kernel.org
-Cc: Douglas Gilbert <dougg@torque.net>
-Message-ID: <20070213093138.b4fa28c5.akpm@linux-foundation.org>
-
-From: Douglas Gilbert <dougg@torque.net>
-
-ChangeLog:
-   - Use GFP_ATOMIC for allocations that can be called
-     from the queuecommand() entry point
-
-Signed-off-by: Douglas Gilbert <dougg@torque.net>
-Cc: James Bottomley <James.Bottomley@SteelEye.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/scsi/scsi_debug.c |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- linux-2.6.20.1.orig/drivers/scsi/scsi_debug.c
-+++ linux-2.6.20.1/drivers/scsi/scsi_debug.c
-@@ -954,7 +954,7 @@ static int resp_inquiry(struct scsi_cmnd
-       int alloc_len, n, ret;
-       alloc_len = (cmd[3] << 8) + cmd[4];
--      arr = kzalloc(SDEBUG_MAX_INQ_ARR_SZ, GFP_KERNEL);
-+      arr = kzalloc(SDEBUG_MAX_INQ_ARR_SZ, GFP_ATOMIC);
-       if (devip->wlun)
-               pq_pdt = 0x1e;  /* present, wlun */
-       else if (scsi_debug_no_lun_0 && (0 == devip->lun))
-@@ -1217,7 +1217,7 @@ static int resp_report_tgtpgs(struct scs
-       alen = ((cmd[6] << 24) + (cmd[7] << 16) + (cmd[8] << 8)
-               + cmd[9]);
--      arr = kzalloc(SDEBUG_MAX_TGTPGS_ARR_SZ, GFP_KERNEL);
-+      arr = kzalloc(SDEBUG_MAX_TGTPGS_ARR_SZ, GFP_ATOMIC);
-       /*
-        * EVPD page 0x88 states we have two ports, one
-        * real and a fake port with no device connected.
-@@ -2044,7 +2044,7 @@ static struct sdebug_dev_info * devInfoR
-               }
-       }
-       if (NULL == open_devip) { /* try and make a new one */
--              open_devip = kzalloc(sizeof(*open_devip),GFP_KERNEL);
-+              open_devip = kzalloc(sizeof(*open_devip),GFP_ATOMIC);
-               if (NULL == open_devip) {
-                       printk(KERN_ERR "%s: out of memory at line %d\n",
-                               __FUNCTION__, __LINE__);
diff --git a/queue-2.6.20/revert-log2-alter-get_order-so-that-it-can-make-use-of-ilog2-on-a-constant.patch b/queue-2.6.20/revert-log2-alter-get_order-so-that-it-can-make-use-of-ilog2-on-a-constant.patch
new file mode 100644 (file)
index 0000000..d99bf55
--- /dev/null
@@ -0,0 +1,96 @@
+From stable-bounces@linux.kernel.org Tue Mar  6 23:57:26 2007
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Wed, 07 Mar 2007 07:56:00 +0000
+Subject: Revert "[PATCH] LOG2: Alter get_order() so that it can make use of ilog2() on a constant"
+To: stable@kernel.org
+Message-ID: <1173254160.3461.305.camel@pmac.infradead.org>
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+Revert "[PATCH] LOG2: Alter get_order() so that it can make use of ilog2() on a constant"
+
+This reverts commit 39d61db0edb34d60b83c5e0d62d0e906578cc707.
+
+The commit was buggy in multiple ways:
+ - the conversion to ilog2() was incorrect to begin with
+ - it tested the wrong #defines, so on all architectures but FRV you'd
+   never see the bug except for constant arguments.
+ - the new "get_order()" macro used its arguments multiple times, and
+   didn't even parenthesize them properly
+ - despite the comments, it was not true that you could use it for
+   constant initializers, since not all architectures even use the
+   generic page.h header file.
+
+All of the problems are individually fixable, but it all boils down to:
+better just revert it, and re-do it from scratch.
+
+Cc: David Howells <dhowells@redhat.com>
+Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Cc: Paul Mackerras <paulus@samba.org>
+Cc: Andrew Morton <akpm@osdl.org>
+Cc: David Woodhouse <dwmw2@infradead.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-generic/page.h |   38 ++++----------------------------------
+ 1 file changed, 4 insertions(+), 34 deletions(-)
+
+--- linux-2.6.20.1.orig/include/asm-generic/page.h
++++ linux-2.6.20.1/include/asm-generic/page.h
+@@ -4,51 +4,21 @@
+ #ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+-#include <linux/log2.h>
++#include <linux/compiler.h>
+-/*
+- * non-const pure 2^n version of get_order
+- * - the arch may override these in asm/bitops.h if they can be implemented
+- *   more efficiently than using the arch log2 routines
+- * - we use the non-const log2() instead if the arch has defined one suitable
+- */
+-#ifndef ARCH_HAS_GET_ORDER
+-static inline __attribute__((const))
+-int __get_order(unsigned long size, int page_shift)
++/* Pure 2^n version of get_order */
++static __inline__ __attribute_const__ int get_order(unsigned long size)
+ {
+-#if BITS_PER_LONG == 32 && defined(ARCH_HAS_ILOG2_U32)
+-      int order = __ilog2_u32(size) - page_shift;
+-      return order >= 0 ? order : 0;
+-#elif BITS_PER_LONG == 64 && defined(ARCH_HAS_ILOG2_U64)
+-      int order = __ilog2_u64(size) - page_shift;
+-      return order >= 0 ? order : 0;
+-#else
+       int order;
+-      size = (size - 1) >> (page_shift - 1);
++      size = (size - 1) >> (PAGE_SHIFT - 1);
+       order = -1;
+       do {
+               size >>= 1;
+               order++;
+       } while (size);
+       return order;
+-#endif
+ }
+-#endif
+-
+-/**
+- * get_order - calculate log2(pages) to hold a block of the specified size
+- * @n - size
+- *
+- * calculate allocation order based on the current page size
+- * - this can be used to initialise global variables from constant data
+- */
+-#define get_order(n)                                                  \
+-(                                                                     \
+-      __builtin_constant_p(n) ?                                       \
+-      ((n < (1UL << PAGE_SHIFT)) ? 0 : ilog2(n) - PAGE_SHIFT) :       \
+-      __get_order(n, PAGE_SHIFT)                                      \
+- )
+ #endif        /* __ASSEMBLY__ */
+ #endif        /* __KERNEL__ */
index 4b877e66363a00bc9d14329fac89289b7282542d..647c5542a4dbba5faad243ffab3d22576053aba2 100644 (file)
@@ -31,7 +31,6 @@ ehci-turn-off-remote-wakeup-during-shutdown.patch
 avoid-using-nfsd-process-pools-on-smp-machines.patch
 fix-recently-introduced-problem-with-shutting-down-a-busy-nfs-server.patch
 uhci-fix-port-resume-problem.patch
-fix-bug-7994-sleeping-function-called-from-invalid-context-at-mm-slab.c-3034.patch
 fix-atmarp.h-for-userspace.patch
 clear-tcp-segmentation-offload-state-in-ipt_reject.patch
 fix-ipx-module-unload.patch
@@ -77,3 +76,4 @@ tty_io-fix-race-in-master-pty-close-slave-pty-close-path.patch
 sched-fix-smt-scheduler-bug.patch
 usb-usbnet-driver-bugfix.patch
 backport-of-psmouse-suspend-shutdown-cleanups.patch
+revert-log2-alter-get_order-so-that-it-can-make-use-of-ilog2-on-a-constant.patch