From: Greg Kroah-Hartman Date: Wed, 7 Mar 2007 14:27:23 +0000 (-0800) Subject: add a new patch and remove one too X-Git-Tag: v2.6.20.2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ba45ea334934973146525dd80545bbd38f0af8b4;p=thirdparty%2Fkernel%2Fstable-queue.git add a new patch and remove one too --- 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 index 62f470a763a..00000000000 --- a/queue-2.6.20/fix-bug-7994-sleeping-function-called-from-invalid-context-at-mm-slab.c-3034.patch +++ /dev/null @@ -1,51 +0,0 @@ -From stable-bounces@linux.kernel.org Tue Feb 13 09:33:02 2007 -From: Douglas Gilbert -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 -Message-ID: <20070213093138.b4fa28c5.akpm@linux-foundation.org> - -From: Douglas Gilbert - -ChangeLog: - - Use GFP_ATOMIC for allocations that can be called - from the queuecommand() entry point - -Signed-off-by: Douglas Gilbert -Cc: James Bottomley -Signed-off-by: Greg Kroah-Hartman - ---- - 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 index 00000000000..d99bf55dadd --- /dev/null +++ b/queue-2.6.20/revert-log2-alter-get_order-so-that-it-can-make-use-of-ilog2-on-a-constant.patch @@ -0,0 +1,96 @@ +From stable-bounces@linux.kernel.org Tue Mar 6 23:57:26 2007 +From: Linus Torvalds +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 + +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 +Cc: Benjamin Herrenschmidt +Cc: Paul Mackerras +Cc: Andrew Morton +Cc: David Woodhouse +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + 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 ++#include + +-/* +- * 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__ */ diff --git a/queue-2.6.20/series b/queue-2.6.20/series index 4b877e66363..647c5542a4d 100644 --- a/queue-2.6.20/series +++ b/queue-2.6.20/series @@ -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