]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
more patches added...
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 10 Oct 2006 07:54:20 +0000 (00:54 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 10 Oct 2006 07:54:20 +0000 (00:54 -0700)
queue-2.6.18/fbdev-correct-buffer-size-limit-in-fbmem_read_proc.patch [new file with mode: 0644]
queue-2.6.18/ide-generic-jmicron-fix.patch [new file with mode: 0644]
queue-2.6.18/invalidate_inode_pages2-ignore-page-refcounts.patch [new file with mode: 0644]
queue-2.6.18/rtc-driver-rtc-pcf8563-century-bit-inversed.patch [new file with mode: 0644]
queue-2.6.18/scx200_hrt-fix-precedence-bug-manifesting-as-27x-clock-in-1-mhz-mode.patch [new file with mode: 0644]
queue-2.6.18/series

diff --git a/queue-2.6.18/fbdev-correct-buffer-size-limit-in-fbmem_read_proc.patch b/queue-2.6.18/fbdev-correct-buffer-size-limit-in-fbmem_read_proc.patch
new file mode 100644 (file)
index 0000000..65bf77a
--- /dev/null
@@ -0,0 +1,39 @@
+From stable-bounces@linux.kernel.org Tue Oct  3 01:22:33 2006
+Message-Id: <200610030815.k938FB4V020043@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: Geert Uytterhoeven <geert@linux-m68k.org>
+Date: Tue, 03 Oct 2006 01:15:11 -0700
+Cc: akpm@osdl.org, stable@kernel.org, geert@linux-m68k.org, adaplas@pol.net,
+        w@1wt.eu, jurij@wooyd.org
+Subject: fbdev: correct buffer size limit in fbmem_read_proc()
+
+From: Geert Uytterhoeven <geert@linux-m68k.org>
+
+Address http://bugzilla.kernel.org/show_bug.cgi?id=7189
+
+It should check `clen', not `len'.
+
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Cc: <jurij@wooyd.org>
+Cc: "Antonino A. Daplas" <adaplas@pol.net>
+Cc: Willy Tarreau <w@1wt.eu>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/video/fbmem.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- linux-2.6.18.orig/drivers/video/fbmem.c
++++ linux-2.6.18/drivers/video/fbmem.c
+@@ -554,7 +554,8 @@ static int fbmem_read_proc(char *buf, ch
+       int clen;
+       clen = 0;
+-      for (fi = registered_fb; fi < &registered_fb[FB_MAX] && len < 4000; fi++)
++      for (fi = registered_fb; fi < &registered_fb[FB_MAX] && clen < 4000;
++           fi++)
+               if (*fi)
+                       clen += sprintf(buf + clen, "%d %s\n",
+                                       (*fi)->node,
diff --git a/queue-2.6.18/ide-generic-jmicron-fix.patch b/queue-2.6.18/ide-generic-jmicron-fix.patch
new file mode 100644 (file)
index 0000000..94b0ffd
--- /dev/null
@@ -0,0 +1,44 @@
+From stable-bounces@linux.kernel.org Thu Oct  5 14:40:23 2006
+Message-Id: <200610052139.k95LdQjP004460@shell0.pdx.osdl.net>
+From: Alan Cox <alan@lxorguk.ukuu.org.uk>
+To: mm-commits@vger.kernel.org
+Date: Thu, 05 Oct 2006 14:39:26 -0700
+Cc: stable@kernel.org, alan@lxorguk.ukuu.org.uk
+Subject: ide-generic: jmicron fix
+
+From: Alan Cox <alan@lxorguk.ukuu.org.uk>
+
+Some people find their Jmicron pata port reports its disabled even
+though it has devices on it and was boot probed. Fix this
+
+(Candidate for 2.6.18.*, less so for 2.6.19 as we've got a proper
+jmicron driver on the merge for that to replace ide-generic support)
+
+From: Alan Cox <alan@lxorguk.ukuu.org.uk>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/ide/pci/generic.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- linux-2.6.18.orig/drivers/ide/pci/generic.c
++++ linux-2.6.18/drivers/ide/pci/generic.c
+@@ -245,10 +245,12 @@ static int __devinit generic_init_one(st
+       if (dev->vendor == PCI_VENDOR_ID_JMICRON && PCI_FUNC(dev->devfn) != 1)
+               goto out;
+-      pci_read_config_word(dev, PCI_COMMAND, &command);
+-      if (!(command & PCI_COMMAND_IO)) {
+-              printk(KERN_INFO "Skipping disabled %s IDE controller.\n", d->name);
+-              goto out;
++      if (dev->vendor != PCI_VENDOR_ID_JMICRON) {
++              pci_read_config_word(dev, PCI_COMMAND, &command);
++              if (!(command & PCI_COMMAND_IO)) {
++                      printk(KERN_INFO "Skipping disabled %s IDE controller.\n", d->name);
++                      goto out;
++              }
+       }
+       ret = ide_setup_pci_device(dev, d);
+ out:
diff --git a/queue-2.6.18/invalidate_inode_pages2-ignore-page-refcounts.patch b/queue-2.6.18/invalidate_inode_pages2-ignore-page-refcounts.patch
new file mode 100644 (file)
index 0000000..4dbf5b3
--- /dev/null
@@ -0,0 +1,90 @@
+From stable-bounces@linux.kernel.org Sat Sep 30 23:30:53 2006
+Message-Id: <200610010629.k916TTpF010835@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: Andrew Morton <akpm@osdl.org>
+Date: Sat, 30 Sep 2006 23:29:29 -0700
+Cc: akpm@osdl.org, nickpiggin@yahoo.com.au, stable@kernel.org,
+        a.p.zijlstra@chello.nl, cel@citi.umich.edu
+Subject: invalidate_inode_pages2(): ignore page refcounts
+
+From: Andrew Morton <akpm@osdl.org>
+
+The recent fix to invalidate_inode_pages() (git commit 016eb4a) managed to
+unfix invalidate_inode_pages2().
+
+The problem is that various bits of code in the kernel can take transient refs
+on pages: the page scanner will do this when inspecting a batch of pages, and
+the lru_cache_add() batching pagevecs also hold a ref.
+
+Net result is transient failures in invalidate_inode_pages2().  This affects
+NFS directory invalidation (observed) and presumably also block-backed
+direct-io (not yet reported).
+
+Fix it by reverting invalidate_inode_pages2() back to the old version which
+ignores the page refcounts.
+
+We may come up with something more clever later, but for now we need a 2.6.18
+fix for NFS.
+
+Cc: Chuck Lever <cel@citi.umich.edu>
+Cc: Nick Piggin <nickpiggin@yahoo.com.au>
+Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/truncate.c |   34 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 32 insertions(+), 2 deletions(-)
+
+--- linux-2.6.18.orig/mm/truncate.c
++++ linux-2.6.18/mm/truncate.c
+@@ -270,9 +270,39 @@ unsigned long invalidate_inode_pages(str
+ {
+       return invalidate_mapping_pages(mapping, 0, ~0UL);
+ }
+-
+ EXPORT_SYMBOL(invalidate_inode_pages);
++/*
++ * This is like invalidate_complete_page(), except it ignores the page's
++ * refcount.  We do this because invalidate_inode_pages2() needs stronger
++ * invalidation guarantees, and cannot afford to leave pages behind because
++ * shrink_list() has a temp ref on them, or because they're transiently sitting
++ * in the lru_cache_add() pagevecs.
++ */
++static int
++invalidate_complete_page2(struct address_space *mapping, struct page *page)
++{
++      if (page->mapping != mapping)
++              return 0;
++
++      if (PagePrivate(page) && !try_to_release_page(page, 0))
++              return 0;
++
++      write_lock_irq(&mapping->tree_lock);
++      if (PageDirty(page))
++              goto failed;
++
++      BUG_ON(PagePrivate(page));
++      __remove_from_page_cache(page);
++      write_unlock_irq(&mapping->tree_lock);
++      ClearPageUptodate(page);
++      page_cache_release(page);       /* pagecache ref */
++      return 1;
++failed:
++      write_unlock_irq(&mapping->tree_lock);
++      return 0;
++}
++
+ /**
+  * invalidate_inode_pages2_range - remove range of pages from an address_space
+  * @mapping: the address_space
+@@ -339,7 +369,7 @@ int invalidate_inode_pages2_range(struct
+                               }
+                       }
+                       was_dirty = test_clear_page_dirty(page);
+-                      if (!invalidate_complete_page(mapping, page)) {
++                      if (!invalidate_complete_page2(mapping, page)) {
+                               if (was_dirty)
+                                       set_page_dirty(page);
+                               ret = -EIO;
diff --git a/queue-2.6.18/rtc-driver-rtc-pcf8563-century-bit-inversed.patch b/queue-2.6.18/rtc-driver-rtc-pcf8563-century-bit-inversed.patch
new file mode 100644 (file)
index 0000000..48f83ec
--- /dev/null
@@ -0,0 +1,44 @@
+From stable-bounces@linux.kernel.org Sat Sep 30 23:50:48 2006
+Message-Id: <200610010628.k916SCLM010532@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@teamlog.com>
+Date: Sat, 30 Sep 2006 23:28:12 -0700
+Cc: akpm@osdl.org, jean-baptiste.maneyrol@teamlog.com, stable@kernel.org,
+        a.zummo@towertech.it
+Subject: rtc driver rtc-pcf8563 century bit inversed
+
+From: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@teamlog.com>
+
+The century bit PCF8563_MO_C in the month register is misinterpreted.  It
+is set to 1 for the 20th century and 0 for 21th, and the driver is
+expecting the opposite behavior.
+
+Acked-by: Alessandro Zummo <a.zummo@towertech.it>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/rtc/rtc-pcf8563.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- linux-2.6.18.orig/drivers/rtc/rtc-pcf8563.c
++++ linux-2.6.18/drivers/rtc/rtc-pcf8563.c
+@@ -95,7 +95,7 @@ static int pcf8563_get_datetime(struct i
+       tm->tm_wday = buf[PCF8563_REG_DW] & 0x07;
+       tm->tm_mon = BCD2BIN(buf[PCF8563_REG_MO] & 0x1F) - 1; /* rtc mn 1-12 */
+       tm->tm_year = BCD2BIN(buf[PCF8563_REG_YR])
+-              + (buf[PCF8563_REG_MO] & PCF8563_MO_C ? 100 : 0);
++              + (buf[PCF8563_REG_MO] & PCF8563_MO_C ? 0 : 100);
+       dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
+               "mday=%d, mon=%d, year=%d, wday=%d\n",
+@@ -135,7 +135,7 @@ static int pcf8563_set_datetime(struct i
+       /* year and century */
+       buf[PCF8563_REG_YR] = BIN2BCD(tm->tm_year % 100);
+-      if (tm->tm_year / 100)
++      if (tm->tm_year < 100)
+               buf[PCF8563_REG_MO] |= PCF8563_MO_C;
+       buf[PCF8563_REG_DW] = tm->tm_wday & 0x07;
diff --git a/queue-2.6.18/scx200_hrt-fix-precedence-bug-manifesting-as-27x-clock-in-1-mhz-mode.patch b/queue-2.6.18/scx200_hrt-fix-precedence-bug-manifesting-as-27x-clock-in-1-mhz-mode.patch
new file mode 100644 (file)
index 0000000..bf1c458
--- /dev/null
@@ -0,0 +1,68 @@
+From stable-bounces@linux.kernel.org Wed Oct  4 02:17:45 2006
+Message-Id: <200610040915.k949FZY8031823@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: Jim Cromie <jim.cromie@gmail.com>
+Date: Wed, 04 Oct 2006 02:15:35 -0700
+Cc: akpm@osdl.org, jim.cromie@gmail.com, johnstul@us.ibm.com,
+        alexander.krause@erazor-zone.de, dzpost@dedekind.net,
+        phelps@mantara.com, stable@kernel.org
+Subject: scx200_hrt: fix precedence bug manifesting as 27x clock in 1 MHz mode
+
+From: Jim Cromie <jim.cromie@gmail.com>
+
+Fix paren-placement / precedence bug breaking initialization for 1 MHz
+clock mode.
+
+Also fix comment spelling error, and fence-post (off-by-one) error on
+symbol used in request_region.
+
+Addresses http://bugzilla.kernel.org/show_bug.cgi?id=7242
+
+Thanks alexander.krause@erazor-zone.de, dzpost@dedekind.net, for the
+reports and patch test, and phelps@mantara.com for the independent patch
+and verification.
+
+Signed-off-by:  Jim Cromie <jim.cromie@gmail.com>
+Cc: <alexander.krause@erazor-zone.de>
+Cc: <dzpost@dedekind.net>
+Cc: <phelps@mantara.com>
+Acked-by: John Stultz <johnstul@us.ibm.com>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/clocksource/scx200_hrt.c |    4 ++--
+ include/linux/scx200.h           |    2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- linux-2.6.18.orig/drivers/clocksource/scx200_hrt.c
++++ linux-2.6.18/drivers/clocksource/scx200_hrt.c
+@@ -63,7 +63,7 @@ static struct clocksource cs_hrt = {
+ static int __init init_hrt_clocksource(void)
+ {
+-      /* Make sure scx200 has initializedd the configuration block */
++      /* Make sure scx200 has initialized the configuration block */
+       if (!scx200_cb_present())
+               return -ENODEV;
+@@ -76,7 +76,7 @@ static int __init init_hrt_clocksource(v
+       }
+       /* write timer config */
+-      outb(HR_TMEN | (mhz27) ? HR_TMCLKSEL : 0,
++      outb(HR_TMEN | (mhz27 ? HR_TMCLKSEL : 0),
+            scx200_cb_base + SCx200_TMCNFG_OFFSET);
+       if (mhz27) {
+--- linux-2.6.18.orig/include/linux/scx200.h
++++ linux-2.6.18/include/linux/scx200.h
+@@ -32,7 +32,7 @@ extern unsigned scx200_cb_base;
+ /* High Resolution Timer */
+ #define SCx200_TIMER_OFFSET 0x08
+-#define SCx200_TIMER_SIZE 0x05
++#define SCx200_TIMER_SIZE 0x06
+ /* Clock Generators */
+ #define SCx200_CLOCKGEN_OFFSET 0x10
index ba7e904f3a54dc49652e76e159fa0f9fc17055ed..3dc044cb68d01be6946f0e3ebc19f2cc4ff139fe 100644 (file)
@@ -57,3 +57,8 @@ ipv6-disable-sg-for-gso-unless-we-have-checksum.patch
 md-fix-problem-where-hot-added-drives-are-not-resynced.patch
 tcp-fix-and-simplify-microsecond-rtt-sampling.patch
 mm-bug-in-set_page_dirty_buffers.patch
+fbdev-correct-buffer-size-limit-in-fbmem_read_proc.patch
+rtc-driver-rtc-pcf8563-century-bit-inversed.patch
+invalidate_inode_pages2-ignore-page-refcounts.patch
+scx200_hrt-fix-precedence-bug-manifesting-as-27x-clock-in-1-mhz-mode.patch
+ide-generic-jmicron-fix.patch