From: Greg Kroah-Hartman Date: Tue, 10 Oct 2006 07:54:20 +0000 (-0700) Subject: more patches added... X-Git-Tag: v2.6.17.14~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bbbeff84a083464c525e694323a266740554f2e;p=thirdparty%2Fkernel%2Fstable-queue.git more patches added... --- 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 index 00000000000..65bf77a2bd7 --- /dev/null +++ b/queue-2.6.18/fbdev-correct-buffer-size-limit-in-fbmem_read_proc.patch @@ -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 +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 + +Address http://bugzilla.kernel.org/show_bug.cgi?id=7189 + +It should check `clen', not `len'. + +Signed-off-by: Geert Uytterhoeven +Cc: +Cc: "Antonino A. Daplas" +Cc: Willy Tarreau +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + + +--- + 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 < ®istered_fb[FB_MAX] && len < 4000; fi++) ++ for (fi = registered_fb; fi < ®istered_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 index 00000000000..94b0ffdfac7 --- /dev/null +++ b/queue-2.6.18/ide-generic-jmicron-fix.patch @@ -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 +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 + +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 +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + + +--- + 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 index 00000000000..4dbf5b3241b --- /dev/null +++ b/queue-2.6.18/invalidate_inode_pages2-ignore-page-refcounts.patch @@ -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 +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 + +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 +Cc: Nick Piggin +Cc: Peter Zijlstra +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..48f83ece4e3 --- /dev/null +++ b/queue-2.6.18/rtc-driver-rtc-pcf8563-century-bit-inversed.patch @@ -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 +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 + +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 +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + + +--- + 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 index 00000000000..bf1c458c49e --- /dev/null +++ b/queue-2.6.18/scx200_hrt-fix-precedence-bug-manifesting-as-27x-clock-in-1-mhz-mode.patch @@ -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 +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 + +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 +Cc: +Cc: +Cc: +Acked-by: John Stultz +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + +--- + 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 diff --git a/queue-2.6.18/series b/queue-2.6.18/series index ba7e904f3a5..3dc044cb68d 100644 --- a/queue-2.6.18/series +++ b/queue-2.6.18/series @@ -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