--- /dev/null
+From gregkh@mini.kroah.org Wed Jul 30 16:10:46 2008
+Message-Id: <20080730231046.609398761@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:04 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jan Kara <jack@suse.cz>
+Subject: [patch 01/29] quota: fix possible infinite loop in quota code
+Content-Disposition: inline; filename=quota-fix-possible-infinite-loop-in-quota-code.patch
+Content-Length: 1827
+Lines: 61
+
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+
+From: Jan Kara <jack@suse.cz>
+
+commit b48d380541f634663b71766005838edbb7261685 upstream
+
+When quota structure is going to be dropped and it is dirty, quota code tries
+to write it. If the write fails for some reason (e. g. transaction cannot
+be started because the journal is aborted), we try writing again and again and
+again... Fix the problem by clearing the dirty bit even if the write failed.
+
+(akpm: for 2.6.27, 2.6.26.x and 2.6.25.x)
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Reviewed-by: dingdinghua <dingdinghua85@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/dquot.c | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+--- a/fs/dquot.c
++++ b/fs/dquot.c
+@@ -554,6 +554,8 @@ static struct shrinker dqcache_shrinker
+ */
+ static void dqput(struct dquot *dquot)
+ {
++ int ret;
++
+ if (!dquot)
+ return;
+ #ifdef __DQUOT_PARANOIA
+@@ -586,7 +588,19 @@ we_slept:
+ if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && dquot_dirty(dquot)) {
+ spin_unlock(&dq_list_lock);
+ /* Commit dquot before releasing */
+- dquot->dq_sb->dq_op->write_dquot(dquot);
++ ret = dquot->dq_sb->dq_op->write_dquot(dquot);
++ if (ret < 0) {
++ printk(KERN_ERR "VFS: cannot write quota structure on "
++ "device %s (error %d). Quota may get out of "
++ "sync!\n", dquot->dq_sb->s_id, ret);
++ /*
++ * We clear dirty bit anyway, so that we avoid
++ * infinite loop here
++ */
++ spin_lock(&dq_list_lock);
++ clear_dquot_dirty(dquot);
++ spin_unlock(&dq_list_lock);
++ }
+ goto we_slept;
+ }
+ /* Clear flag in case dquot was inactive (something bad happened) */
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:46 2008
+Message-Id: <20080730231046.766368083@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:05 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Adam Greenblatt <adam.greenblatt@gmail.com>
+Subject: [patch 02/29] isofs: fix minor filesystem corruption
+Content-Disposition: inline; filename=isofs-fix-minor-filesystem-corruption.patch
+Content-Length: 2859
+Lines: 87
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Adam Greenblatt <adam.greenblatt@gmail.com>
+
+commit c0a1633b6201ef79e31b7da464d44fdf5953054d upstream
+
+Some iso9660 images contain files with rockridge data that is either
+incorrect or incompletely parsed. Prior to commit
+f2966632a134e865db3c819346a1dc7d96e05309 ("[PATCH] rock: handle directory
+overflows") (included with kernel 2.6.13) the kernel ignored the rockridge
+data for these files, while still allowing the files to be accessed under
+their non-rockridge names. That commit inadvertently changed things so
+that files with invalid rockridge data could not be accessed at all. (I
+ran across the problem when comparing some old CDs with hard disk copies I
+had made long ago under kernel 2.4: a few of the files on the hard disk
+copies were no longer visible on the CDs.)
+
+This change reverts to the pre-2.6.13 behavior.
+
+Signed-off-by: Adam Greenblatt <adam.greenblatt@gmail.com>
+Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/isofs/rock.c | 22 ++++++++++++++++++++--
+ 1 file changed, 20 insertions(+), 2 deletions(-)
+
+--- a/fs/isofs/rock.c
++++ b/fs/isofs/rock.c
+@@ -209,6 +209,11 @@ repeat:
+
+ while (rs.len > 2) { /* There may be one byte for padding somewhere */
+ rr = (struct rock_ridge *)rs.chr;
++ /*
++ * Ignore rock ridge info if rr->len is out of range, but
++ * don't return -EIO because that would make the file
++ * invisible.
++ */
+ if (rr->len < 3)
+ goto out; /* Something got screwed up here */
+ sig = isonum_721(rs.chr);
+@@ -216,8 +221,12 @@ repeat:
+ goto eio;
+ rs.chr += rr->len;
+ rs.len -= rr->len;
++ /*
++ * As above, just ignore the rock ridge info if rr->len
++ * is bogus.
++ */
+ if (rs.len < 0)
+- goto eio; /* corrupted isofs */
++ goto out; /* Something got screwed up here */
+
+ switch (sig) {
+ case SIG('R', 'R'):
+@@ -307,6 +316,11 @@ parse_rock_ridge_inode_internal(struct i
+ repeat:
+ while (rs.len > 2) { /* There may be one byte for padding somewhere */
+ rr = (struct rock_ridge *)rs.chr;
++ /*
++ * Ignore rock ridge info if rr->len is out of range, but
++ * don't return -EIO because that would make the file
++ * invisible.
++ */
+ if (rr->len < 3)
+ goto out; /* Something got screwed up here */
+ sig = isonum_721(rs.chr);
+@@ -314,8 +328,12 @@ repeat:
+ goto eio;
+ rs.chr += rr->len;
+ rs.len -= rr->len;
++ /*
++ * As above, just ignore the rock ridge info if rr->len
++ * is bogus.
++ */
+ if (rs.len < 0)
+- goto eio; /* corrupted isofs */
++ goto out; /* Something got screwed up here */
+
+ switch (sig) {
+ #ifndef CONFIG_ZISOFS /* No flag for SF or ZF */
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:47 2008
+Message-Id: <20080730231046.924914420@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:06 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jan Kratochvil <jan.kratochvil@redhat.com>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 03/29] x86: fix crash due to missing debugctlmsr on AMD K6-3
+Content-Disposition: inline; filename=x86-fix-crash-due-to-missing-debugctlmsr-on-amd-k6-3.patch
+Content-Length: 1207
+Lines: 36
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Jan Kratochvil <jan.kratochvil@redhat.com>
+
+commit d536b1f86591fb081c7a56eab04e711eb4dab951 upstream
+
+currently if you use PTRACE_SINGLEBLOCK on AMD K6-3 (i586) it will crash.
+Kernel now wrongly assumes existing DEBUGCTLMSR MSR register there.
+
+Removed the assumption also for some other non-K6 CPUs but I am not sure there
+(but it can only bring small inefficiency there if my assumption is wrong).
+
+Based on info from Roland McGrath, Chuck Ebbert and Mikulas Patocka.
+More info at:
+ https://bugzilla.redhat.com/show_bug.cgi?id=456175
+
+Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/Kconfig.cpu | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/Kconfig.cpu
++++ b/arch/x86/Kconfig.cpu
+@@ -409,4 +409,4 @@ config X86_MINIMUM_CPU_FAMILY
+
+ config X86_DEBUGCTLMSR
+ def_bool y
+- depends on !(M586MMX || M586TSC || M586 || M486 || M386)
++ depends on !(MK6 || MWINCHIPC6 || MWINCHIP2 || MWINCHIP3D || MCYRIXIII || M586MMX || M586TSC || M586 || M486 || M386)
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:47 2008
+Message-Id: <20080730231047.104534177@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:07 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jan Beulich <jbeulich@novell.com>,
+ Sam Ravnborg <sam@ravnborg.org>
+Subject: [patch 04/29] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section
+Content-Disposition: inline; filename=vmlinux.lds-move-__attribute__-functions-back-into-final-.text-section.patch
+Content-Length: 1570
+Lines: 49
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Jan Beulich <jbeulich@novell.com>
+
+commit fb5e2b379732e1a6ea32392980bb42e0212db842 upstream
+
+Due to the addition of __attribute__((__cold__)) to a few symbols
+without adjusting the linker scripts, those symbols currently may end
+up outside the [_stext,_etext) range, as they get placed in
+.text.unlikely by (at least) gcc 4.3.0. This may confuse code not only
+outside of the kernel, symbol_put_addr()'s BUG() could also trigger.
+Hence we need to add .text.unlikely (and for future uses of
+__attribute__((__hot__)) also .text.hot) to the TEXT_TEXT() macro.
+
+Issue observed by Lukas Lipavsky.
+
+Signed-off-by: Jan Beulich <jbeulich@novell.com>
+Tested-by: Lukas Lipavsky <llipavsky@suse.cz>
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-generic/vmlinux.lds.h | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/include/asm-generic/vmlinux.lds.h
++++ b/include/asm-generic/vmlinux.lds.h
+@@ -204,6 +204,7 @@
+ * during second ld run in second ld pass when generating System.map */
+ #define TEXT_TEXT \
+ ALIGN_FUNCTION(); \
++ *(.text.hot) \
+ *(.text) \
+ *(.ref.text) \
+ *(.text.init.refok) \
+@@ -213,7 +214,8 @@
+ CPU_KEEP(init.text) \
+ CPU_KEEP(exit.text) \
+ MEM_KEEP(init.text) \
+- MEM_KEEP(exit.text)
++ MEM_KEEP(exit.text) \
++ *(.text.unlikely)
+
+
+ /* sched.text is aling to function alignment to secure we have same
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:47 2008
+Message-Id: <20080730231047.255665605@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:08 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 05/29] tcp: Clear probes_out more aggressively in tcp_ack().
+Content-Disposition: inline; filename=tcp-clear-probes_out-more-aggressively-in-tcp_ack.patch
+Content-Length: 11329
+Lines: 232
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: David S. Miller <davem@davemloft.net>
+
+[ Upstream commit 4b53fb67e385b856a991d402096379dab462170a ]
+
+This is based upon an excellent bug report from Eric Dumazet.
+
+tcp_ack() should clear ->icsk_probes_out even if there are packets
+outstanding. Otherwise if we get a sequence of ACKs while we do have
+packets outstanding over and over again, we'll never clear the
+probes_out value and eventually think the connection is too sick and
+we'll reset it.
+
+This appears to be some "optimization" added to tcp_ack() in the 2.4.x
+timeframe. In 2.2.x, probes_out is pretty much always cleared by
+tcp_ack().
+
+Here is Eric's original report:
+
+----------------------------------------
+Apparently, we can in some situations reset TCP connections in a couple of seconds when some frames are lost.
+
+In order to reproduce the problem, please try the following program on linux-2.6.25.*
+
+Setup some iptables rules to allow two frames per second sent on loopback interface to tcp destination port 12000
+
+iptables -N SLOWLO
+iptables -A SLOWLO -m hashlimit --hashlimit 2 --hashlimit-burst 1 --hashlimit-mode dstip --hashlimit-name slow2 -j ACCEPT
+iptables -A SLOWLO -j DROP
+
+iptables -A OUTPUT -o lo -p tcp --dport 12000 -j SLOWLO
+
+Then run the attached program and see the output :
+
+# ./loop
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,200ms,1)
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,200ms,3)
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,200ms,5)
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,200ms,7)
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,200ms,9)
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,200ms,11)
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,201ms,13)
+State Recv-Q Send-Q Local Address:Port Peer Address:Port
+ESTAB 0 40 127.0.0.1:54455 127.0.0.1:12000 timer:(persist,188ms,15)
+write(): Connection timed out
+wrote 890 bytes but was interrupted after 9 seconds
+ESTAB 0 0 127.0.0.1:12000 127.0.0.1:54455
+Exiting read() because no data available (4000 ms timeout).
+read 860 bytes
+
+While this tcp session makes progress (sending frames with 50 bytes of payload, every 500ms), linux tcp stack decides to reset it, when tcp_retries 2 is reached (default value : 15)
+
+tcpdump :
+
+15:30:28.856695 IP 127.0.0.1.56554 > 127.0.0.1.12000: S 33788768:33788768(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 7>
+15:30:28.856711 IP 127.0.0.1.12000 > 127.0.0.1.56554: S 33899253:33899253(0) ack 33788769 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 7>
+15:30:29.356947 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 1:61(60) ack 1 win 257
+15:30:29.356966 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 61 win 257
+15:30:29.866415 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 61:111(50) ack 1 win 257
+15:30:29.866427 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 111 win 257
+15:30:30.366516 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 111:161(50) ack 1 win 257
+15:30:30.366527 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 161 win 257
+15:30:30.876196 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 161:211(50) ack 1 win 257
+15:30:30.876207 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 211 win 257
+15:30:31.376282 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 211:261(50) ack 1 win 257
+15:30:31.376290 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 261 win 257
+15:30:31.885619 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 261:311(50) ack 1 win 257
+15:30:31.885631 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 311 win 257
+15:30:32.385705 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 311:361(50) ack 1 win 257
+15:30:32.385715 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 361 win 257
+15:30:32.895249 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 361:411(50) ack 1 win 257
+15:30:32.895266 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 411 win 257
+15:30:33.395341 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 411:461(50) ack 1 win 257
+15:30:33.395351 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 461 win 257
+15:30:33.918085 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 461:511(50) ack 1 win 257
+15:30:33.918096 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 511 win 257
+15:30:34.418163 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 511:561(50) ack 1 win 257
+15:30:34.418172 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 561 win 257
+15:30:34.927685 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 561:611(50) ack 1 win 257
+15:30:34.927698 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 611 win 257
+15:30:35.427757 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 611:661(50) ack 1 win 257
+15:30:35.427766 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 661 win 257
+15:30:35.937359 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 661:711(50) ack 1 win 257
+15:30:35.937376 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 711 win 257
+15:30:36.437451 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 711:761(50) ack 1 win 257
+15:30:36.437464 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 761 win 257
+15:30:36.947022 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 761:811(50) ack 1 win 257
+15:30:36.947039 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 811 win 257
+15:30:37.447135 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 811:861(50) ack 1 win 257
+15:30:37.447203 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 861 win 257
+15:30:41.448171 IP 127.0.0.1.12000 > 127.0.0.1.56554: F 1:1(0) ack 861 win 257
+15:30:41.448189 IP 127.0.0.1.56554 > 127.0.0.1.12000: R 33789629:33789629(0) win 0
+
+Source of program :
+
+/*
+ * small producer/consumer program.
+ * setup a listener on 127.0.0.1:12000
+ * Forks a child
+ * child connect to 127.0.0.1, and sends 10 bytes on this tcp socket every 100 ms
+ * Father accepts connection, and read all data
+ */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <time.h>
+#include <sys/poll.h>
+
+int port = 12000;
+char buffer[4096];
+int main(int argc, char *argv[])
+{
+ int lfd = socket(AF_INET, SOCK_STREAM, 0);
+ struct sockaddr_in socket_address;
+ time_t t0, t1;
+ int on = 1, sfd, res;
+ unsigned long total = 0;
+ socklen_t alen = sizeof(socket_address);
+ pid_t pid;
+
+ time(&t0);
+ socket_address.sin_family = AF_INET;
+ socket_address.sin_port = htons(port);
+ socket_address.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+ if (lfd == -1) {
+ perror("socket()");
+ return 1;
+ }
+ setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(int));
+ if (bind(lfd, (struct sockaddr *)&socket_address, sizeof(socket_address)) == -1) {
+ perror("bind");
+ close(lfd);
+ return 1;
+ }
+ if (listen(lfd, 1) == -1) {
+ perror("listen()");
+ close(lfd);
+ return 1;
+ }
+ pid = fork();
+ if (pid == 0) {
+ int i, cfd = socket(AF_INET, SOCK_STREAM, 0);
+ close(lfd);
+ if (connect(cfd, (struct sockaddr *)&socket_address, sizeof(socket_address)) == -1) {
+ perror("connect()");
+ return 1;
+ }
+ for (i = 0 ; ;) {
+ res = write(cfd, "blablabla\n", 10);
+ if (res > 0) total += res;
+ else if (res == -1) {
+ perror("write()");
+ break;
+ } else break;
+ usleep(100000);
+ if (++i == 10) {
+ system("ss -on dst 127.0.0.1:12000");
+ i = 0;
+ }
+ }
+ time(&t1);
+ fprintf(stderr, "wrote %lu bytes but was interrupted after %g seconds\n", total, difftime(t1, t0));
+ system("ss -on | grep 127.0.0.1:12000");
+ close(cfd);
+ return 0;
+ }
+ sfd = accept(lfd, (struct sockaddr *)&socket_address, &alen);
+ if (sfd == -1) {
+ perror("accept");
+ return 1;
+ }
+ close(lfd);
+ while (1) {
+ struct pollfd pfd[1];
+ pfd[0].fd = sfd;
+ pfd[0].events = POLLIN;
+ if (poll(pfd, 1, 4000) == 0) {
+ fprintf(stderr, "Exiting read() because no data available (4000 ms timeout).\n");
+ break;
+ }
+ res = read(sfd, buffer, sizeof(buffer));
+ if (res > 0) total += res;
+ else if (res == 0) break;
+ else perror("read()");
+ }
+ fprintf(stderr, "read %lu bytes\n", total);
+ close(sfd);
+ return 0;
+}
+----------------------------------------
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv4/tcp_input.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/net/ipv4/tcp_input.c
++++ b/net/ipv4/tcp_input.c
+@@ -3259,6 +3259,7 @@ static int tcp_ack(struct sock *sk, stru
+ * log. Something worked...
+ */
+ sk->sk_err_soft = 0;
++ icsk->icsk_probes_out = 0;
+ tp->rcv_tstamp = tcp_time_stamp;
+ prior_packets = tp->packets_out;
+ if (!prior_packets)
+@@ -3291,8 +3292,6 @@ static int tcp_ack(struct sock *sk, stru
+ return 1;
+
+ no_queue:
+- icsk->icsk_probes_out = 0;
+-
+ /* If this ack opens up a zero window, clear backoff. It was
+ * being used to time the probes, and is probably far higher than
+ * it needs to be for normal retransmission.
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:47 2008
+Message-Id: <20080730231047.440265463@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:09 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 06/29] sparc64: Fix lockdep issues in LDC protocol layer.
+Content-Disposition: inline; filename=sparc64-fix-lockdep-issues-in-ldc-protocol-layer.patch
+Content-Length: 4127
+Lines: 153
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: David S. Miller <davem@davemloft.net>
+
+[ Upstream commit b7c2a75725dee9b5643a0aae3a4cb47f52e00a49 ]
+
+We're calling request_irq() with a IRQs disabled.
+
+No straightforward fix exists because we want to
+enable these IRQs and setup state atomically before
+getting into the IRQ handler the first time.
+
+What happens now is that we mark the VIRQ to not be
+automatically enabled by request_irq(). Then we
+make explicit enable_irq() calls when we grab the
+LDC channel.
+
+This way we don't need to call request_irq() illegally
+under the LDC channel lock any more.
+
+Bump LDC version and release date.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc64/kernel/irq.c | 10 +++++++++-
+ arch/sparc64/kernel/ldc.c | 38 +++++++++++++++++++-------------------
+ 2 files changed, 28 insertions(+), 20 deletions(-)
+
+--- a/arch/sparc64/kernel/irq.c
++++ b/arch/sparc64/kernel/irq.c
+@@ -621,8 +621,9 @@ unsigned int sun4v_build_irq(u32 devhand
+ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
+ {
+ struct irq_handler_data *data;
+- struct ino_bucket *bucket;
+ unsigned long hv_err, cookie;
++ struct ino_bucket *bucket;
++ struct irq_desc *desc;
+ unsigned int virt_irq;
+
+ bucket = kzalloc(sizeof(struct ino_bucket), GFP_ATOMIC);
+@@ -643,6 +644,13 @@ unsigned int sun4v_build_virq(u32 devhan
+ if (unlikely(!data))
+ return 0;
+
++ /* In order to make the LDC channel startup sequence easier,
++ * especially wrt. locking, we do not let request_irq() enable
++ * the interrupt.
++ */
++ desc = irq_desc + virt_irq;
++ desc->status |= IRQ_NOAUTOEN;
++
+ set_irq_chip_data(virt_irq, data);
+
+ /* Catch accidental accesses to these things. IMAP/ICLR handling
+--- a/arch/sparc64/kernel/ldc.c
++++ b/arch/sparc64/kernel/ldc.c
+@@ -1,6 +1,6 @@
+ /* ldc.c: Logical Domain Channel link-layer protocol driver.
+ *
+- * Copyright (C) 2007 David S. Miller <davem@davemloft.net>
++ * Copyright (C) 2007, 2008 David S. Miller <davem@davemloft.net>
+ */
+
+ #include <linux/kernel.h>
+@@ -23,8 +23,8 @@
+
+ #define DRV_MODULE_NAME "ldc"
+ #define PFX DRV_MODULE_NAME ": "
+-#define DRV_MODULE_VERSION "1.0"
+-#define DRV_MODULE_RELDATE "June 25, 2007"
++#define DRV_MODULE_VERSION "1.1"
++#define DRV_MODULE_RELDATE "July 22, 2008"
+
+ static char version[] __devinitdata =
+ DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
+@@ -1235,13 +1235,9 @@ int ldc_bind(struct ldc_channel *lp, con
+ unsigned long hv_err, flags;
+ int err = -EINVAL;
+
+- spin_lock_irqsave(&lp->lock, flags);
+-
+- if (!name)
+- goto out_err;
+-
+- if (lp->state != LDC_STATE_INIT)
+- goto out_err;
++ if (!name ||
++ (lp->state != LDC_STATE_INIT))
++ return -EINVAL;
+
+ snprintf(lp->rx_irq_name, LDC_IRQ_NAME_MAX, "%s RX", name);
+ snprintf(lp->tx_irq_name, LDC_IRQ_NAME_MAX, "%s TX", name);
+@@ -1250,25 +1246,32 @@ int ldc_bind(struct ldc_channel *lp, con
+ IRQF_SAMPLE_RANDOM | IRQF_SHARED,
+ lp->rx_irq_name, lp);
+ if (err)
+- goto out_err;
++ return err;
+
+ err = request_irq(lp->cfg.tx_irq, ldc_tx,
+ IRQF_SAMPLE_RANDOM | IRQF_SHARED,
+ lp->tx_irq_name, lp);
+- if (err)
+- goto out_free_rx_irq;
++ if (err) {
++ free_irq(lp->cfg.rx_irq, lp);
++ return err;
++ }
++
+
++ spin_lock_irqsave(&lp->lock, flags);
++
++ enable_irq(lp->cfg.rx_irq);
++ enable_irq(lp->cfg.tx_irq);
+
+ lp->flags |= LDC_FLAG_REGISTERED_IRQS;
+
+ err = -ENODEV;
+ hv_err = sun4v_ldc_tx_qconf(lp->id, 0, 0);
+ if (hv_err)
+- goto out_free_tx_irq;
++ goto out_free_irqs;
+
+ hv_err = sun4v_ldc_tx_qconf(lp->id, lp->tx_ra, lp->tx_num_entries);
+ if (hv_err)
+- goto out_free_tx_irq;
++ goto out_free_irqs;
+
+ hv_err = sun4v_ldc_rx_qconf(lp->id, 0, 0);
+ if (hv_err)
+@@ -1304,14 +1307,11 @@ out_unmap_rx:
+ out_unmap_tx:
+ sun4v_ldc_tx_qconf(lp->id, 0, 0);
+
+-out_free_tx_irq:
++out_free_irqs:
+ lp->flags &= ~LDC_FLAG_REGISTERED_IRQS;
+ free_irq(lp->cfg.tx_irq, lp);
+-
+-out_free_rx_irq:
+ free_irq(lp->cfg.rx_irq, lp);
+
+-out_err:
+ spin_unlock_irqrestore(&lp->lock, flags);
+
+ return err;
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:47 2008
+Message-Id: <20080730231047.622942871@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:10 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 07/29] sparc64: Fix cpufreq notifier registry.
+Content-Disposition: inline; filename=sparc64-fix-cpufreq-notifier-registry.patch
+Content-Length: 1344
+Lines: 53
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: David S. Miller <davem@davemloft.net>
+
+[ Upstream commit 7ae93f51d7fa8b9130d47e0b7d17979a165c5bc3 ]
+
+Based upon a report by Daniel Smolik.
+
+We do it too early, which triggers a BUG in
+cpufreq_register_notifier().
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc64/kernel/time.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+--- a/arch/sparc64/kernel/time.c
++++ b/arch/sparc64/kernel/time.c
+@@ -883,6 +883,16 @@ static struct notifier_block sparc64_cpu
+ .notifier_call = sparc64_cpufreq_notifier
+ };
+
++static int __init register_sparc64_cpufreq_notifier(void)
++{
++
++ cpufreq_register_notifier(&sparc64_cpufreq_notifier_block,
++ CPUFREQ_TRANSITION_NOTIFIER);
++ return 0;
++}
++
++core_initcall(register_sparc64_cpufreq_notifier);
++
+ #endif /* CONFIG_CPU_FREQ */
+
+ static int sparc64_next_event(unsigned long delta,
+@@ -1049,11 +1059,6 @@ void __init time_init(void)
+ sparc64_clockevent.mult, sparc64_clockevent.shift);
+
+ setup_sparc64_timer();
+-
+-#ifdef CONFIG_CPU_FREQ
+- cpufreq_register_notifier(&sparc64_cpufreq_notifier_block,
+- CPUFREQ_TRANSITION_NOTIFIER);
+-#endif
+ }
+
+ unsigned long long sched_clock(void)
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:47 2008
+Message-Id: <20080730231047.793304467@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:11 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ "David S. Miller" <davem@davemloft.net>
+Subject: [patch 08/29] sparc64: Do not define BIO_VMERGE_BOUNDARY.
+Content-Disposition: inline; filename=sparc64-do-not-define-bio_vmerge_boundary.patch
+Content-Length: 794
+Lines: 30
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: David S. Miller <davem@davemloft.net>
+
+[ Upstream commit 74988bd85d1cb97987534fd7ffbc570e81145418 ]
+
+The IOMMU code and the block layer can split things
+up using different rules, so this can't work reliably.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-sparc64/io.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/include/asm-sparc64/io.h
++++ b/include/asm-sparc64/io.h
+@@ -16,7 +16,6 @@
+ /* BIO layer definitions. */
+ extern unsigned long kern_base, kern_size;
+ #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
+-#define BIO_VMERGE_BOUNDARY 8192
+
+ static inline u8 _inb(unsigned long addr)
+ {
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:48 2008
+Message-Id: <20080730231047.946605306@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:12 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jeff Garzik <jgarzik@redhat.com>,
+ Alan Cox <alan@redhat.com>
+Subject: [patch 09/29] pata_atiixp: Dont disable
+Content-Disposition: inline; filename=pata_atiixp-don-t-disable.patch
+Content-Length: 2254
+Lines: 71
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Alan Cox <alan@lxorguk.ukuu.org.uk>
+
+Commit 05177f178efe1459d2d0ac05430027ba201889a4 upstream
+
+pata_atiixp: Don't disable
+
+A couple of distributions (Fedora, Ubuntu) were having weird problems with the
+ATI IXP series PATA controllers being reported as simplex. At the heart of
+the problem is that both distros ignored the recommendations to load pata_acpi
+and ata_generic *AFTER* specific host drivers.
+
+The underlying cause however is that if you D3 and then D0 an ATI IXP it
+helpfully throws away some configuration and won't let you rewrite it.
+
+Add checks to ata_generic and pata_acpi to pin ATIIXP devices. Possibly the
+real answer here is to quirk them and pin them, but right now we can't do that
+before they've been pcim_enable()'d by a driver.
+
+I'm indebted to David Gero for this. His bug report not only reported the
+problem but identified the cause correctly and he had tested the right values
+to prove what was going on
+
+[If you backport this for 2.6.24 you will need to pull in the 2.6.25
+removal of the bogus WARN_ON() in pcim_enagle]
+
+Signed-off-by: Alan Cox <alan@redhat.com>
+Tested-by: David Gero <davidg@havidave.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+
+---
+ drivers/ata/ata_generic.c | 6 ++++++
+ drivers/ata/pata_acpi.c | 6 ++++++
+ 2 files changed, 12 insertions(+)
+
+--- a/drivers/ata/ata_generic.c
++++ b/drivers/ata/ata_generic.c
+@@ -193,6 +193,12 @@ static int ata_generic_init_one(struct p
+ if (dev->vendor == PCI_VENDOR_ID_AL)
+ ata_pci_clear_simplex(dev);
+
++ if (dev->vendor == PCI_VENDOR_ID_ATI) {
++ int rc = pcim_enable_device(dev);
++ if (rc < 0)
++ return rc;
++ pcim_pin_device(dev);
++ }
+ return ata_pci_init_one(dev, ppi);
+ }
+
+--- a/drivers/ata/pata_acpi.c
++++ b/drivers/ata/pata_acpi.c
+@@ -314,6 +314,12 @@ static int pacpi_init_one (struct pci_de
+ .port_ops = &pacpi_ops,
+ };
+ const struct ata_port_info *ppi[] = { &info, NULL };
++ if (pdev->vendor == PCI_VENDOR_ID_ATI) {
++ int rc = pcim_enable_device(pdev);
++ if (rc < 0)
++ return rc;
++ pcim_pin_device(pdev);
++ }
+ return ata_pci_init_one(pdev, ppi);
+ }
+
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:48 2008
+Message-Id: <20080730231048.118037010@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:13 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
+ Roland McGrath <roland@redhat.com>,
+ Wenji Huang <wenji.huang@oracle.com>,
+ Takashi Nishiie <t-nishiie@np.css.fujitsu.com>
+Subject: [patch 10/29] markers: fix duplicate modpost entry
+Content-Disposition: inline; filename=markers-fix-duplicate-modpost-entry.patch
+Content-Length: 2447
+Lines: 80
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Mathieu Desnoyers <compudj@krystal.dyndns.org>
+
+commit: d35cb360c29956510b2fe1a953bd4968536f7216
+
+When a kernel was rebuilt, the previous Module.markers was not cleared.
+It caused markers with different format strings to appear as duplicates
+when a markers was changed. This problem is present since
+scripts/mod/modpost.c started to generate Module.markers, commit
+b2e3e658b344c6bcfb8fb694100ab2f2b5b2edb0
+
+It therefore applies to 2.6.25, 2.6.26 and linux-next.
+
+I merely merged the patches from Roland, Wenji and Takashi here.
+
+Credits to
+Roland McGrath <roland@redhat.com>
+Wenji Huang <wenji.huang@oracle.com>
+and
+Takashi Nishiie <t-nishiie@np.css.fujitsu.com>
+
+for providing the individual fixes.
+
+- Changelog :
+ - Integrated Takashi's Makefile modification to clear Module.markers upon
+ make clean.
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+Cc: Roland McGrath <roland@redhat.com>
+Cc: Wenji Huang <wenji.huang@oracle.com>
+Cc: Takashi Nishiie <t-nishiie@np.css.fujitsu.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Makefile | 3 ++-
+ scripts/Makefile.modpost | 1 +
+ scripts/mod/modpost.c | 3 ++-
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -1126,7 +1126,8 @@ clean: archclean $(clean-dirs)
+ @find . $(RCS_FIND_IGNORE) \
+ \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
+ -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
+- -o -name '*.symtypes' -o -name 'modules.order' \) \
++ -o -name '*.symtypes' -o -name 'modules.order' \
++ -o -name 'Module.markers' \) \
+ -type f -print | xargs rm -f
+
+ # mrproper - Delete all generated files, including .config
+--- a/scripts/Makefile.modpost
++++ b/scripts/Makefile.modpost
+@@ -87,6 +87,7 @@ quiet_cmd_kernel-mod = MODPOST $@
+ cmd_kernel-mod = $(modpost) $@
+
+ vmlinux.o: FORCE
++ @rm -fr $(kernelmarkersfile)
+ $(call cmd,kernel-mod)
+
+ # Declare generated files as targets for modpost
+--- a/scripts/mod/modpost.c
++++ b/scripts/mod/modpost.c
+@@ -1973,7 +1973,8 @@ static void read_markers(const char *fna
+ mod->skip = 1;
+ }
+
+- add_marker(mod, marker, fmt);
++ if (!mod->skip)
++ add_marker(mod, marker, fmt);
+ }
+ return;
+ fail:
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:48 2008
+Message-Id: <20080730231048.273874134@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:14 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Michael Buesch <mb@bu3sch.de>,
+ Jan Kara <jack@suse.cz>,
+ Arnd Bergmann <arnd@arndb.de>,
+ Borislav Petkov <petkovbb@googlemail.com>,
+ Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
+ Harvey Harrison <harvey.harrison@gmail.com>
+Subject: [patch 11/29] ide-cd: fix oops when using growisofs
+Content-Disposition: inline; filename=ide-cd-fix-oops-when-using-growisofs.patch
+Content-Length: 2146
+Lines: 71
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Jens Axboe <jens.axboe@oracle.com>
+
+commit e8e7b9eb11c34ee18bde8b7011af41938d1ad667 upstream
+
+cdrom_read_capacity() will blindly return the capacity from the device
+without sanity-checking it. This later causes code in fs/buffer.c to
+oops.
+
+Fix this by checking that the device is telling us sensible things.
+
+From: Jens Axboe <jens.axboe@oracle.com>
+Cc: Michael Buesch <mb@bu3sch.de>
+Cc: Jan Kara <jack@suse.cz>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Cc: Borislav Petkov <petkovbb@googlemail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+[bart: print device name instead of driver name]
+Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
+[harvey: blocklen is a big-endian value]
+Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
+Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ide/ide-cd.c | 27 ++++++++++++++++++++++-----
+ 1 file changed, 22 insertions(+), 5 deletions(-)
+
+--- a/drivers/ide/ide-cd.c
++++ b/drivers/ide/ide-cd.c
+@@ -1421,13 +1421,30 @@ static int cdrom_read_capacity(ide_drive
+ req.cmd_flags |= REQ_QUIET;
+
+ stat = ide_cd_queue_pc(drive, &req);
+- if (stat == 0) {
+- *capacity = 1 + be32_to_cpu(capbuf.lba);
+- *sectors_per_frame =
+- be32_to_cpu(capbuf.blocklen) >> SECTOR_BITS;
++ if (stat)
++ return stat;
++
++ /*
++ * Sanity check the given block size
++ */
++ switch (capbuf.blocklen) {
++ case __constant_cpu_to_be32(512):
++ case __constant_cpu_to_be32(1024):
++ case __constant_cpu_to_be32(2048):
++ case __constant_cpu_to_be32(4096):
++ break;
++ default:
++ printk(KERN_ERR "%s: weird block size %u\n",
++ drive->name, capbuf.blocklen);
++ printk(KERN_ERR "%s: default to 2kb block size\n",
++ drive->name);
++ capbuf.blocklen = __constant_cpu_to_be32(2048);
++ break;
+ }
+
+- return stat;
++ *capacity = 1 + be32_to_cpu(capbuf.lba);
++ *sectors_per_frame = be32_to_cpu(capbuf.blocklen) >> SECTOR_BITS;
++ return 0;
+ }
+
+ static int cdrom_read_tocentry(ide_drive_t *drive, int trackno, int msf_flag,
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:48 2008
+Message-Id: <20080730231048.437569241@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:15 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Atsushi Nemoto <anemo@mba.ocn.ne.jp>,
+ Davide Libenzi <davidel@xmailserver.org>
+Subject: [patch 12/29] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled
+Content-Disposition: inline; filename=fix-build-on-compat-platforms-when-config_epoll-is-disabled.patch
+Content-Length: 910
+Lines: 32
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
+
+commit 5f17156fc55abac476d180e480bedb0f07f01b14 upstream
+
+Add missing cond_syscall() entry for compat_sys_epoll_pwait.
+
+Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
+Cc: Davide Libenzi <davidel@xmailserver.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/sys_ni.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/kernel/sys_ni.c
++++ b/kernel/sys_ni.c
+@@ -59,6 +59,7 @@ cond_syscall(sys_epoll_create);
+ cond_syscall(sys_epoll_ctl);
+ cond_syscall(sys_epoll_wait);
+ cond_syscall(sys_epoll_pwait);
++cond_syscall(compat_sys_epoll_pwait);
+ cond_syscall(sys_semget);
+ cond_syscall(sys_semop);
+ cond_syscall(sys_semtimedop);
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:48 2008
+Message-Id: <20080730231048.594307877@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:16 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Nickolay Vinogradov <nickolay@protei.ru>,
+ Russell King <rmk+kernel@arm.linux.org.uk>
+Subject: [patch 13/29] ARM: fix fls() for 64-bit arguments
+Content-Disposition: inline; filename=arm-fix-fls-for-64-bit-arguments.patch
+Content-Length: 1269
+Lines: 43
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Andrew Morton <akpm@linux-foundation.org>
+
+commit 0c65f459ce6c8bd873a61b3ae1e57858ab1debf3 upstream
+
+arm's fls() is implemented as a macro, causing it to misbehave when passed
+64-bit arguments. Fix.
+
+Cc: Nickolay Vinogradov <nickolay@protei.ru>
+Tested-by: Krzysztof Halasa <khc@pm.waw.pl>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-arm/bitops.h | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/include/asm-arm/bitops.h
++++ b/include/asm-arm/bitops.h
+@@ -277,9 +277,16 @@ static inline int constant_fls(int x)
+ * the clz instruction for much better code efficiency.
+ */
+
+-#define fls(x) \
++#define __fls(x) \
+ ( __builtin_constant_p(x) ? constant_fls(x) : \
+ ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
++
++/* Implement fls() in C so that 64-bit args are suitably truncated */
++static inline int fls(int x)
++{
++ return __fls(x);
++}
++
+ #define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
+ #define __ffs(x) (ffs(x) - 1)
+ #define ffz(x) __ffs( ~(x) )
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:48 2008
+Message-Id: <20080730231048.752620805@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:17 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ tiwai@suse.de
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Akio Idehara <zbe64533@gmail.com>
+Subject: [patch 14/29] ALSA: hda - Fix "alc262_sony_unsol" hda_verb array
+Content-Disposition: inline; filename=alsa-hda-fix-alc262_sony_unsol-hda_verb-array.patch
+Content-Length: 1006
+Lines: 34
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Akio Idehara <zbe64533@gmail.com>
+
+[ALSA] hda - Fix "alc262_sony_unsol[]" hda_verb array
+
+commit 7b1e8795ebfe1705153d1001f2a899119f4d9012 upstream
+
+I think that hda_verb array must have "terminator (empty array)".
+But alc262_sony_unsol[] does not have it.
+And it causes gcc-4.3's buggy behavior
+with snd_hda_sequence_write().
+
+Signed-off-by: Akio Idehara <zbe64533@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ sound/pci/hda/patch_realtek.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -8517,6 +8517,7 @@ static struct hda_verb alc262_sony_unsol
+
+ {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
+ {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
++ {}
+ };
+
+ /* mute/unmute internal speaker according to the hp jack and mute state */
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:49 2008
+Message-Id: <20080730231048.915669390@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:18 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Takashi Iwai <tiwai@suse.de>,
+ Pierre Ossman <drzeus@drzeus.cx>,
+ Jaroslav Kysela <perex@perex.cz>
+Subject: [patch 15/29] ALSA: trident - pause s/pdif output
+Content-Disposition: inline; filename=alsa-trident-pause-s-pdif-output.patch
+Content-Length: 1355
+Lines: 39
+
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Pierre Ossman <drzeus@drzeus.cx>
+
+Commit 981bcead3f2279a1ec6fb5f2c57aff79ed61a700 upstream.
+
+Stop the S/PDIF DMA engine and output when the device is told to pause.
+It will keep on looping the current buffer contents if this isn't done.
+
+Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
+Tested-by: Rene Herman <rene.herman@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/trident/trident_main.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/trident/trident_main.c
++++ b/sound/pci/trident/trident_main.c
+@@ -1590,7 +1590,10 @@ static int snd_trident_trigger(struct sn
+ if (spdif_flag) {
+ if (trident->device != TRIDENT_DEVICE_ID_SI7018) {
+ outl(trident->spdif_pcm_bits, TRID_REG(trident, NX_SPCSTATUS));
+- outb(trident->spdif_pcm_ctrl, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
++ val = trident->spdif_pcm_ctrl;
++ if (!go)
++ val &= ~(0x28);
++ outb(val, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
+ } else {
+ outl(trident->spdif_pcm_bits, TRID_REG(trident, SI_SPDIF_CS));
+ val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL)) | SPDIF_EN;
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:49 2008
+Message-Id: <20080730231049.099190061@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:19 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jeff Garzik <jgarzik@redhat.com>,
+ Tejun Heo <htejun@gmail.com>,
+ Peer Chen <pchen@nvidia.com>,
+ Volker Armin Hemmann <volker.armin.hemmann@tu-clausthal.de>
+Subject: [patch 16/29] ahci: retry enabling AHCI a few times before spitting out WARN_ON()
+Content-Disposition: inline; filename=ahci-retry-enabling-ahci-a-few-times-before-spitting-out-warn_on.patch
+Content-Length: 1462
+Lines: 58
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Tejun Heo <htejun@gmail.com>
+
+commit 15fe982e429e0e6b7466719acb6cfd9dbfe47f0c upstream
+
+ahci: retry enabling AHCI a few times before spitting out WARN_ON()
+
+Some chips need AHCI_EN set more than once to actually set it. Try a
+few times before giving up and spitting out WARN_ON().
+
+Signed-off-by: Tejun Heo <htejun@gmail.com>
+Cc: Peer Chen <pchen@nvidia.com>
+Cc: Volker Armin Hemmann <volker.armin.hemmann@tu-clausthal.de>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/ahci.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+--- a/drivers/ata/ahci.c
++++ b/drivers/ata/ahci.c
+@@ -634,16 +634,27 @@ static inline void __iomem *ahci_port_ba
+
+ static void ahci_enable_ahci(void __iomem *mmio)
+ {
++ int i;
+ u32 tmp;
+
+ /* turn on AHCI_EN */
+ tmp = readl(mmio + HOST_CTL);
+- if (!(tmp & HOST_AHCI_EN)) {
++ if (tmp & HOST_AHCI_EN)
++ return;
++
++ /* Some controllers need AHCI_EN to be written multiple times.
++ * Try a few times before giving up.
++ */
++ for (i = 0; i < 5; i++) {
+ tmp |= HOST_AHCI_EN;
+ writel(tmp, mmio + HOST_CTL);
+ tmp = readl(mmio + HOST_CTL); /* flush && sanity check */
+- WARN_ON(!(tmp & HOST_AHCI_EN));
++ if (tmp & HOST_AHCI_EN)
++ return;
++ msleep(10);
+ }
++
++ WARN_ON(1);
+ }
+
+ /**
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:49 2008
+Message-Id: <20080730231049.284411018@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:20 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Oliver Pinter <oliver.pntr@gmail.com>
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ linux-mm@kvack.org,
+ Jack Steiner <steiner@sgi.com>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 17/29] x86: fix kernel_physical_mapping_init() for large x86 systems
+Content-Disposition: inline; filename=x86-fix-kernel_physical_mapping_init-for-large-x86-systems.patch
+Content-Length: 1000
+Lines: 36
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Ingo Molnar <mingo@elte.hu>
+
+based on e22146e610bb7aed63282148740ab1d1b91e1d90 upstream
+
+Fix bug in kernel_physical_mapping_init() that causes kernel
+page table to be built incorrectly for systems with greater
+than 512GB of memory.
+
+Signed-off-by: Jack Steiner <steiner@sgi.com>
+Cc: linux-mm@kvack.org
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Cc: Oliver Pinter <oliver.pntr@gmail.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/mm/init_64.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/mm/init_64.c
++++ b/arch/x86/mm/init_64.c
+@@ -427,7 +427,7 @@ void __init_refok init_memory_mapping(un
+ else
+ pud = alloc_low_page(&pud_phys);
+
+- next = start + PGDIR_SIZE;
++ next = (start + PGDIR_SIZE) & PGDIR_MASK;
+ if (next > end)
+ next = end;
+ phys_pud_init(pud, __pa(start), __pa(next));
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:49 2008
+Message-Id: <20080730231049.449487027@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:21 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alex Nixon <Alex.Nixon@citrix.com>,
+ Andi Kleen <andi@firstfloor.org>,
+ Jeremy Fitzhardinge <jeremy@goop.org>,
+ Peter Zijlstra <peterz@infradead.org>,
+ Ingo Molnar <mingo@elte.hu>,
+ Ian Campbell <Ian.Campbell@eu.citrix.com>,
+ Alexander Viro <viro@zeniv.linux.org.uk>,
+ Hugh Dickins <hugh@veritas.com>,
+ Jens Axboe <jens.axboe@oracle.com>
+Subject: [patch 18/29] VFS: increase pseudo-filesystem block size to PAGE_SIZE
+Content-Disposition: inline; filename=vfs-increase-pseudo-filesystem-block-size-to-page_size.patch
+Content-Length: 1611
+Lines: 53
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Alex Nixon <alex.nixon@citrix.com>
+
+commit 3971e1a917548977cff71418a7c3575ffbc9571f upstream
+
+This commit:
+
+ commit ba52de123d454b57369f291348266d86f4b35070
+ Author: Theodore Ts'o <tytso@mit.edu>
+ Date: Wed Sep 27 01:50:49 2006 -0700
+
+ [PATCH] inode-diet: Eliminate i_blksize from the inode structure
+
+caused the block size used by pseudo-filesystems to decrease from
+PAGE_SIZE to 1024 leading to a doubling of the number of context switches
+during a kernbench run.
+
+Signed-off-by: Alex Nixon <Alex.Nixon@citrix.com>
+Cc: Andi Kleen <andi@firstfloor.org>
+Cc: Jeremy Fitzhardinge <jeremy@goop.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Ian Campbell <Ian.Campbell@eu.citrix.com>
+Cc: "Theodore Ts'o" <tytso@mit.edu>
+Cc: Alexander Viro <viro@zeniv.linux.org.uk>
+Cc: Hugh Dickins <hugh@veritas.com>
+Cc: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/libfs.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/libfs.c
++++ b/fs/libfs.c
+@@ -216,8 +216,8 @@ int get_sb_pseudo(struct file_system_typ
+
+ s->s_flags = MS_NOUSER;
+ s->s_maxbytes = ~0ULL;
+- s->s_blocksize = 1024;
+- s->s_blocksize_bits = 10;
++ s->s_blocksize = PAGE_SIZE;
++ s->s_blocksize_bits = PAGE_SHIFT;
+ s->s_magic = magic;
+ s->s_op = ops ? ops : &simple_super_operations;
+ s->s_time_gran = 1;
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:49 2008
+Message-Id: <20080730231049.615986330@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:22 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Hugh Dickins <hugh@veritas.com>
+Subject: [patch 19/29] tmpfs: fix kernel BUG in shmem_delete_inode
+Content-Disposition: inline; filename=tmpfs-fix-kernel-bug-in-shmem_delete_inode.patch
+Content-Length: 2111
+Lines: 57
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Hugh Dickins <hugh@veritas.com>
+
+commit 14fcc23fdc78e9d32372553ccf21758a9bd56fa1 upstream
+
+SuSE's insserve initscript ordering program hits kernel BUG at mm/shmem.c:814
+on 2.6.26. It's using posix_fadvise on directories, and the shmem_readpage
+method added in 2.6.23 is letting POSIX_FADV_WILLNEED allocate useless pages
+to a tmpfs directory, incrementing i_blocks count but never decrementing it.
+
+Fix this by assigning shmem_aops (pointing to readpage and writepage and
+set_page_dirty) only when it's needed, on a regular file or a long symlink.
+
+Many thanks to Kel for outstanding bugreport and steps to reproduce it.
+
+Reported-by: Kel Modderman <kel@otaku42.de>
+Tested-by: Kel Modderman <kel@otaku42.de>
+Signed-off-by: Hugh Dickins <hugh@veritas.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/shmem.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/mm/shmem.c
++++ b/mm/shmem.c
+@@ -1559,7 +1559,6 @@ shmem_get_inode(struct super_block *sb,
+ inode->i_uid = current->fsuid;
+ inode->i_gid = current->fsgid;
+ inode->i_blocks = 0;
+- inode->i_mapping->a_ops = &shmem_aops;
+ inode->i_mapping->backing_dev_info = &shmem_backing_dev_info;
+ inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+ inode->i_generation = get_seconds();
+@@ -1574,6 +1573,7 @@ shmem_get_inode(struct super_block *sb,
+ init_special_inode(inode, mode, dev);
+ break;
+ case S_IFREG:
++ inode->i_mapping->a_ops = &shmem_aops;
+ inode->i_op = &shmem_inode_operations;
+ inode->i_fop = &shmem_file_operations;
+ mpol_shared_policy_init(&info->policy, sbinfo->policy,
+@@ -1964,6 +1964,7 @@ static int shmem_symlink(struct inode *d
+ return error;
+ }
+ unlock_page(page);
++ inode->i_mapping->a_ops = &shmem_aops;
+ inode->i_op = &shmem_symlink_inode_operations;
+ kaddr = kmap_atomic(page, KM_USER0);
+ memcpy(kaddr, symname, len);
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:49 2008
+Message-Id: <20080730231049.770839670@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:23 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Luotao Fu <l.fu@pengutronix.de>,
+ David Brownell <dbrownell@users.sourceforge.net>
+Subject: [patch 20/29] mpc52xx_psc_spi: fix block transfer
+Content-Disposition: inline; filename=mpc52xx_psc_spi-fix-block-transfer.patch
+Content-Length: 2124
+Lines: 70
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Luotao Fu <l.fu@pengutronix.de>
+
+commit 9a7867e1b34c3575e7e76a05c0c54c6edbdae2a4 upstream
+
+The block transfer routine in the mpc52xx psc spi driver misinterpret
+the datasheet. According to the processor datasheet the chipselect is
+held as long as the EOF is not written.
+
+Theoretically blocks of any sizes can be transferred in this way. The
+old routine however writes an EOF after every word, which has the size
+of size_of_word. This makes the transfer slow.
+
+Also fixed some duplicate code.
+
+Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/spi/mpc52xx_psc_spi.c | 22 +++++++---------------
+ 1 file changed, 7 insertions(+), 15 deletions(-)
+
+--- a/drivers/spi/mpc52xx_psc_spi.c
++++ b/drivers/spi/mpc52xx_psc_spi.c
+@@ -148,7 +148,6 @@ static int mpc52xx_psc_spi_transfer_rxtx
+ unsigned rfalarm;
+ unsigned send_at_once = MPC52xx_PSC_BUFSIZE;
+ unsigned recv_at_once;
+- unsigned bpw = mps->bits_per_word / 8;
+
+ if (!t->tx_buf && !t->rx_buf && t->len)
+ return -EINVAL;
+@@ -164,22 +163,15 @@ static int mpc52xx_psc_spi_transfer_rxtx
+ }
+
+ dev_dbg(&spi->dev, "send %d bytes...\n", send_at_once);
+- if (tx_buf) {
+- for (; send_at_once; sb++, send_at_once--) {
+- /* set EOF flag */
+- if (mps->bits_per_word
+- && (sb + 1) % bpw == 0)
+- out_8(&psc->ircr2, 0x01);
++ for (; send_at_once; sb++, send_at_once--) {
++ /* set EOF flag before the last word is sent */
++ if (send_at_once == 1)
++ out_8(&psc->ircr2, 0x01);
++
++ if (tx_buf)
+ out_8(&psc->mpc52xx_psc_buffer_8, tx_buf[sb]);
+- }
+- } else {
+- for (; send_at_once; sb++, send_at_once--) {
+- /* set EOF flag */
+- if (mps->bits_per_word
+- && ((sb + 1) % bpw) == 0)
+- out_8(&psc->ircr2, 0x01);
++ else
+ out_8(&psc->mpc52xx_psc_buffer_8, 0);
+- }
+ }
+
+
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:50 2008
+Message-Id: <20080730231049.945324836@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:24 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
+ "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
+Subject: [patch 21/29] markers: fix markers read barrier for multiple probes
+Content-Disposition: inline; filename=markers-fix-markers-read-barrier-for-multiple-probes.patch
+Content-Length: 2616
+Lines: 80
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+
+commit 5def9a3a22e09c99717f41ab7f07ec9e1a1f3ec8 upstream
+
+Paul pointed out two incorrect read barriers in the marker handler code in
+the path where multiple probes are connected. Those are ordering reads of
+"ptype" (single or multi probe marker), "multi" array pointer, and "multi"
+array data access.
+
+It should be ordered like this :
+
+read ptype
+smp_rmb()
+read multi array pointer
+smp_read_barrier_depends()
+access data referenced by multi array pointer
+
+The code with a single probe connected (optimized case, does not have to
+allocate an array) has correct memory ordering.
+
+It applies to kernel 2.6.26.x, 2.6.25.x and linux-next.
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/marker.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+--- a/kernel/marker.c
++++ b/kernel/marker.c
+@@ -126,6 +126,11 @@ void marker_probe_cb(const struct marker
+ struct marker_probe_closure *multi;
+ int i;
+ /*
++ * Read mdata->ptype before mdata->multi.
++ */
++ smp_rmb();
++ multi = mdata->multi;
++ /*
+ * multi points to an array, therefore accessing the array
+ * depends on reading multi. However, even in this case,
+ * we must insure that the pointer is read _before_ the array
+@@ -133,7 +138,6 @@ void marker_probe_cb(const struct marker
+ * in the fast path, so put the explicit barrier here.
+ */
+ smp_read_barrier_depends();
+- multi = mdata->multi;
+ for (i = 0; multi[i].func; i++) {
+ va_start(args, fmt);
+ multi[i].func(multi[i].probe_private, call_private, fmt,
+@@ -176,6 +180,11 @@ void marker_probe_cb_noarg(const struct
+ struct marker_probe_closure *multi;
+ int i;
+ /*
++ * Read mdata->ptype before mdata->multi.
++ */
++ smp_rmb();
++ multi = mdata->multi;
++ /*
+ * multi points to an array, therefore accessing the array
+ * depends on reading multi. However, even in this case,
+ * we must insure that the pointer is read _before_ the array
+@@ -183,7 +192,6 @@ void marker_probe_cb_noarg(const struct
+ * in the fast path, so put the explicit barrier here.
+ */
+ smp_read_barrier_depends();
+- multi = mdata->multi;
+ for (i = 0; multi[i].func; i++)
+ multi[i].func(multi[i].probe_private, call_private, fmt,
+ &args);
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:50 2008
+Message-Id: <20080730231050.112930286@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:25 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jesse Brandeburg <jesse.brandeburg@intel.com>,
+ Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
+ Jeff Garzik <jgarzik@redhat.com>
+Subject: [patch 22/29] ixgbe: remove device ID for unsupported device
+Content-Disposition: inline; filename=ixgbe-remove-device-id-for-unsupported-device.patch
+Content-Length: 1204
+Lines: 36
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Jesse Brandeburg <jesse.brandeburg@intel.com>
+
+commit bb5d10ac8cc315d53306963001fe650d88a1cbb2 upstream
+
+The ixgbe driver was untested with device ID 8086:10c8 but still advertises
+support. Currently if this device is present in the system when the driver
+is loaded, the system will panic.
+Remove this device ID until full support can be tested with available
+hardware. This patch is necessary for 2.6.24, 2.6.25 and 2.6.26
+
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/ixgbe/ixgbe_main.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/drivers/net/ixgbe/ixgbe_main.c
++++ b/drivers/net/ixgbe/ixgbe_main.c
+@@ -70,8 +70,6 @@ static struct pci_device_id ixgbe_pci_tb
+ board_82598 },
+ {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AF_SINGLE_PORT),
+ board_82598 },
+- {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AT_DUAL_PORT),
+- board_82598 },
+ {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_CX4),
+ board_82598 },
+
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:50 2008
+Message-Id: <20080730231050.263522330@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:26 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Eric Sandeen <sandeen@redhat.com>,
+ Michael Halcrow <mhalcrow@us.ibm.com>,
+ Rik van Riel <riel@redhat.com>
+Subject: [patch 23/29] eCryptfs: use page_alloc not kmalloc to get a page of memory
+Content-Disposition: inline; filename=ecryptfs-use-page_alloc-not-kmalloc-to-get-a-page-of-memory.patch
+Content-Length: 3623
+Lines: 118
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Eric Sandeen <sandeen@redhat.com>
+
+commit 7fcba054373d5dfc43d26e243a5c9b92069972ee upstream
+Date: Mon, 28 Jul 2008 15:46:39 -0700
+Subject: [patch 23/29] eCryptfs: use page_alloc not kmalloc to get a page of memory
+
+With SLUB debugging turned on in 2.6.26, I was getting memory corruption
+when testing eCryptfs. The root cause turned out to be that eCryptfs was
+doing kmalloc(PAGE_CACHE_SIZE); virt_to_page() and treating that as a nice
+page-aligned chunk of memory. But at least with SLUB debugging on, this
+is not always true, and the page we get from virt_to_page does not
+necessarily match the PAGE_CACHE_SIZE worth of memory we got from kmalloc.
+
+My simple testcase was 2 loops doing "rm -f fileX; cp /tmp/fileX ." for 2
+different multi-megabyte files. With this change I no longer see the
+corruption.
+
+Signed-off-by: Eric Sandeen <sandeen@redhat.com>
+Acked-by: Michael Halcrow <mhalcrow@us.ibm.com>
+Acked-by: Rik van Riel <riel@redhat.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ecryptfs/crypto.c | 30 ++++++++++++++++++------------
+ 1 file changed, 18 insertions(+), 12 deletions(-)
+
+--- a/fs/ecryptfs/crypto.c
++++ b/fs/ecryptfs/crypto.c
+@@ -474,8 +474,8 @@ int ecryptfs_encrypt_page(struct page *p
+ {
+ struct inode *ecryptfs_inode;
+ struct ecryptfs_crypt_stat *crypt_stat;
+- char *enc_extent_virt = NULL;
+- struct page *enc_extent_page;
++ char *enc_extent_virt;
++ struct page *enc_extent_page = NULL;
+ loff_t extent_offset;
+ int rc = 0;
+
+@@ -491,14 +491,14 @@ int ecryptfs_encrypt_page(struct page *p
+ page->index);
+ goto out;
+ }
+- enc_extent_virt = kmalloc(PAGE_CACHE_SIZE, GFP_USER);
+- if (!enc_extent_virt) {
++ enc_extent_page = alloc_page(GFP_USER);
++ if (!enc_extent_page) {
+ rc = -ENOMEM;
+ ecryptfs_printk(KERN_ERR, "Error allocating memory for "
+ "encrypted extent\n");
+ goto out;
+ }
+- enc_extent_page = virt_to_page(enc_extent_virt);
++ enc_extent_virt = kmap(enc_extent_page);
+ for (extent_offset = 0;
+ extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
+ extent_offset++) {
+@@ -526,7 +526,10 @@ int ecryptfs_encrypt_page(struct page *p
+ }
+ }
+ out:
+- kfree(enc_extent_virt);
++ if (enc_extent_page) {
++ kunmap(enc_extent_page);
++ __free_page(enc_extent_page);
++ }
+ return rc;
+ }
+
+@@ -608,8 +611,8 @@ int ecryptfs_decrypt_page(struct page *p
+ {
+ struct inode *ecryptfs_inode;
+ struct ecryptfs_crypt_stat *crypt_stat;
+- char *enc_extent_virt = NULL;
+- struct page *enc_extent_page;
++ char *enc_extent_virt;
++ struct page *enc_extent_page = NULL;
+ unsigned long extent_offset;
+ int rc = 0;
+
+@@ -626,14 +629,14 @@ int ecryptfs_decrypt_page(struct page *p
+ page->index);
+ goto out;
+ }
+- enc_extent_virt = kmalloc(PAGE_CACHE_SIZE, GFP_USER);
+- if (!enc_extent_virt) {
++ enc_extent_page = alloc_page(GFP_USER);
++ if (!enc_extent_page) {
+ rc = -ENOMEM;
+ ecryptfs_printk(KERN_ERR, "Error allocating memory for "
+ "encrypted extent\n");
+ goto out;
+ }
+- enc_extent_page = virt_to_page(enc_extent_virt);
++ enc_extent_virt = kmap(enc_extent_page);
+ for (extent_offset = 0;
+ extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
+ extent_offset++) {
+@@ -661,7 +664,10 @@ int ecryptfs_decrypt_page(struct page *p
+ }
+ }
+ out:
+- kfree(enc_extent_virt);
++ if (enc_extent_page) {
++ kunmap(enc_extent_page);
++ __free_page(enc_extent_page);
++ }
+ return rc;
+ }
+
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:50 2008
+Message-Id: <20080730231050.412744089@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:27 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Thomas Renninger <trenn@suse.de>,
+ Andi Kleen <andi@firstfloor.org>,
+ Len Brown <lenb@kernel.org>,
+ Dave Jones <davej@codemonkey.org.uk>,
+ Ingo Molnar <mingo@elte.hu>,
+ Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+Subject: [patch 24/29] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already
+Content-Disposition: inline; filename=cpufreq-acpi-only-call-_ppc-after-cpufreq-acpi-init-funcs-got-called-already.patch
+Content-Length: 3693
+Lines: 111
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Thomas Renninger <trenn@suse.de>
+
+commit a1531acd43310a7e4571d52e8846640667f4c74b upstream
+
+Ingo Molnar provided a fix to not call _PPC at processor driver
+initialization time in "[PATCH] ACPI: fix cpufreq regression" (git
+commit e4233dec749a3519069d9390561b5636a75c7579)
+
+But it can still happen that _PPC is called at processor driver
+initialization time.
+
+This patch should make sure that this is not possible anymore.
+
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+Cc: Andi Kleen <andi@firstfloor.org>
+Cc: Len Brown <lenb@kernel.org>
+Cc: Dave Jones <davej@codemonkey.org.uk>
+Cc: Ingo Molnar <mingo@elte.hu>
+Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c | 6 ++++++
+ drivers/acpi/processor_perflib.c | 15 +++++++++++++--
+ drivers/cpufreq/cpufreq.c | 3 +++
+ include/linux/cpufreq.h | 1 +
+ 4 files changed, 23 insertions(+), 2 deletions(-)
+
+--- a/arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c
++++ b/arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c
+@@ -96,6 +96,12 @@ static int pmi_notifier(struct notifier_
+ struct cpufreq_frequency_table *cbe_freqs;
+ u8 node;
+
++ /* Should this really be called for CPUFREQ_ADJUST, CPUFREQ_INCOMPATIBLE
++ * and CPUFREQ_NOTIFY policy events?)
++ */
++ if (event == CPUFREQ_START)
++ return 0;
++
+ cbe_freqs = cpufreq_frequency_get_table(policy->cpu);
+ node = cbe_cpu_to_node(policy->cpu);
+
+--- a/drivers/acpi/processor_perflib.c
++++ b/drivers/acpi/processor_perflib.c
+@@ -64,7 +64,13 @@ static DEFINE_MUTEX(performance_mutex);
+ * policy is adjusted accordingly.
+ */
+
+-static unsigned int ignore_ppc = 0;
++/* ignore_ppc:
++ * -1 -> cpufreq low level drivers not initialized -> _PSS, etc. not called yet
++ * ignore _PPC
++ * 0 -> cpufreq low level drivers initialized -> consider _PPC values
++ * 1 -> ignore _PPC totally -> forced by user through boot param
++ */
++static unsigned int ignore_ppc = -1;
+ module_param(ignore_ppc, uint, 0644);
+ MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
+ "limited by BIOS, this should help");
+@@ -72,7 +78,7 @@ MODULE_PARM_DESC(ignore_ppc, "If the fre
+ #define PPC_REGISTERED 1
+ #define PPC_IN_USE 2
+
+-static int acpi_processor_ppc_status = 0;
++static int acpi_processor_ppc_status;
+
+ static int acpi_processor_ppc_notifier(struct notifier_block *nb,
+ unsigned long event, void *data)
+@@ -81,6 +87,11 @@ static int acpi_processor_ppc_notifier(s
+ struct acpi_processor *pr;
+ unsigned int ppc = 0;
+
++ if (event == CPUFREQ_START && ignore_ppc <= 0) {
++ ignore_ppc = 0;
++ return 0;
++ }
++
+ if (ignore_ppc)
+ return 0;
+
+--- a/drivers/cpufreq/cpufreq.c
++++ b/drivers/cpufreq/cpufreq.c
+@@ -806,6 +806,9 @@ static int cpufreq_add_dev (struct sys_d
+ policy->user_policy.min = policy->cpuinfo.min_freq;
+ policy->user_policy.max = policy->cpuinfo.max_freq;
+
++ blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
++ CPUFREQ_START, policy);
++
+ #ifdef CONFIG_SMP
+
+ #ifdef CONFIG_HOTPLUG_CPU
+--- a/include/linux/cpufreq.h
++++ b/include/linux/cpufreq.h
+@@ -108,6 +108,7 @@ struct cpufreq_policy {
+ #define CPUFREQ_ADJUST (0)
+ #define CPUFREQ_INCOMPATIBLE (1)
+ #define CPUFREQ_NOTIFY (2)
++#define CPUFREQ_START (3)
+
+ #define CPUFREQ_SHARED_TYPE_NONE (0) /* None */
+ #define CPUFREQ_SHARED_TYPE_HW (1) /* HW does needed coordination */
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:50 2008
+Message-Id: <20080730231050.597021839@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:28 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Julia Lawall <julia@diku.dk>,
+ Michael Buesch <mb@bu3sch.de>,
+ "John W. Linville" <linville@tuxdriver.com>
+Subject: [patch 25/29] b43legacy: Release mutex in error handling code
+Content-Disposition: inline; filename=b43legacy-release-mutex-in-error-handling-code.patch
+Content-Length: 1225
+Lines: 58
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Julia Lawall <julia@diku.dk>
+
+commit 4104863fb4a724723d1d5f3cba9d3c5084087e45 upstream
+
+The mutex is released on a successful return, so it would seem that it
+should be released on an error return as well.
+
+The semantic patch finds this problem is as follows:
+(http://www.emn.fr/x-info/coccinelle/)
+
+// <smpl>
+@@
+expression l;
+@@
+
+mutex_lock(l);
+.. when != mutex_unlock(l)
+ when any
+ when strict
+(
+if (...) { ... when != mutex_unlock(l)
++ mutex_unlock(l);
+ return ...;
+}
+|
+mutex_unlock(l);
+)
+// </smpl>
+
+Signed-off-by: Julia Lawall <julia@diku.dk>
+Signed-off-by: Michael Buesch <mb@bu3sch.de>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43legacy/main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/b43legacy/main.c
++++ b/drivers/net/wireless/b43legacy/main.c
+@@ -3792,10 +3792,10 @@ static int b43legacy_resume(struct ssb_d
+ goto out;
+ }
+ }
+- mutex_unlock(&wl->mutex);
+
+ b43legacydbg(wl, "Device resumed.\n");
+ out:
++ mutex_unlock(&wl->mutex);
+ return err;
+ }
+
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:50 2008
+Message-Id: <20080730231050.753056614@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:29 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Pavel Roskin <proski@gnu.org>,
+ Nick Kossifidis <mickflemm@gmail.com>,
+ "John W. Linville" <linville@tuxdriver.com>
+Subject: [patch 26/29] ath5k: dont enable MSI, we cannot handle it yet
+Content-Disposition: inline; filename=ath5k-don-t-enable-msi-we-cannot-handle-it-yet.patch
+Content-Length: 1445
+Lines: 51
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Pavel Roskin <proski@gnu.org>
+
+commit 256b152b005e319f985f50f2a910a75ba0def74f upstream
+
+MSI is a nice thing, but we cannot enable it without changing the
+interrupt handler. If we do it, we break MSI capable hardware,
+specifically AR5006 chipset.
+
+Signed-off-by: Pavel Roskin <proski@gnu.org>
+Acked-by: Nick Kossifidis <mickflemm@gmail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath5k/base.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+--- a/drivers/net/wireless/ath5k/base.c
++++ b/drivers/net/wireless/ath5k/base.c
+@@ -484,9 +484,6 @@ ath5k_pci_probe(struct pci_dev *pdev,
+ /* Set private data */
+ pci_set_drvdata(pdev, hw);
+
+- /* Enable msi for devices that support it */
+- pci_enable_msi(pdev);
+-
+ /* Setup interrupt handler */
+ ret = request_irq(pdev->irq, ath5k_intr, IRQF_SHARED, "ath", sc);
+ if (ret) {
+@@ -553,7 +550,6 @@ err_ah:
+ err_irq:
+ free_irq(pdev->irq, sc);
+ err_free:
+- pci_disable_msi(pdev);
+ ieee80211_free_hw(hw);
+ err_map:
+ pci_iounmap(pdev, mem);
+@@ -575,7 +571,6 @@ ath5k_pci_remove(struct pci_dev *pdev)
+ ath5k_detach(pdev, hw);
+ ath5k_hw_detach(sc->ah);
+ free_irq(pdev->irq, sc);
+- pci_disable_msi(pdev);
+ pci_iounmap(pdev, sc->iobase);
+ pci_release_region(pdev, 0);
+ pci_disable_device(pdev);
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:51 2008
+Message-Id: <20080730231050.928524167@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:30 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Greg KH <greg@kroah.com>,
+ Andy Whitcroft <apw@shadowen.org>,
+ David Gibson <david@gibson.dropbear.id.au>
+Subject: [patch 27/29] Correct hash flushing from huge_ptep_set_wrprotect()
+Content-Disposition: inline; filename=correct-hash-flushing-from-huge_ptep_set_wrprotect.patch
+Content-Length: 2833
+Lines: 81
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: David Gibson <david@gibson.dropbear.id.au>
+
+Correct hash flushing from huge_ptep_set_wrprotect() [stable tree version]
+
+A fix for incorrect flushing of the hash page table at fork() for
+hugepages was recently committed as
+86df86424939d316b1f6cfac1b6204f0c7dee317. Without this fix, a process
+can make a MAP_PRIVATE hugepage mapping, then fork() and have writes
+to the mapping after the fork() pollute the child's version.
+
+Unfortunately this bug also exists in the stable branch. In fact in
+that case copy_hugetlb_page_range() from mm/hugetlb.c calls
+ptep_set_wrprotect() directly, the hugepage variant hook
+huge_ptep_set_wrprotect() doesn't even exist.
+
+The patch below is a port of the fix to the stable25/master branch.
+It introduces a huge_ptep_set_wrprotect() call, but this is #defined
+to be equal to ptep_set_wrprotect() unless the arch defines its own
+version and sets __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT.
+
+This arch preprocessor flag is kind of nasty, but it seems the sanest
+way to introduce this fix with minimum risk of breaking other archs
+for whom prep_set_wprotect() is suitable for hugepages.
+
+Signed-off-by: Andy Whitcroft <apw@shadowen.org>
+Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-powerpc/pgtable-ppc64.h | 11 +++++++++++
+ mm/hugetlb.c | 6 +++++-
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+
+--- a/include/asm-powerpc/pgtable-ppc64.h
++++ b/include/asm-powerpc/pgtable-ppc64.h
+@@ -311,6 +311,17 @@ static inline void ptep_set_wrprotect(st
+ old = pte_update(mm, addr, ptep, _PAGE_RW, 0);
+ }
+
++#define __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
++static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
++ unsigned long addr, pte_t *ptep)
++{
++ unsigned long old;
++
++ if ((pte_val(*ptep) & _PAGE_RW) == 0)
++ return;
++ old = pte_update(mm, addr, ptep, _PAGE_RW, 1);
++}
++
+ /*
+ * We currently remove entries from the hashtable regardless of whether
+ * the entry was young or dirty. The generic routines only flush if the
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -738,6 +738,10 @@ static void set_huge_ptep_writable(struc
+ }
+
+
++#ifndef __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
++#define huge_ptep_set_wrprotect ptep_set_wrprotect
++#endif
++
+ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
+ struct vm_area_struct *vma)
+ {
+@@ -764,7 +768,7 @@ int copy_hugetlb_page_range(struct mm_st
+ spin_lock(&src->page_table_lock);
+ if (!pte_none(*src_pte)) {
+ if (cow)
+- ptep_set_wrprotect(src, addr, src_pte);
++ huge_ptep_set_wrprotect(src, addr, src_pte);
+ entry = *src_pte;
+ ptepage = pte_page(entry);
+ get_page(ptepage);
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:51 2008
+Message-Id: <20080730231051.090691496@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:31 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Netfilter Development Mailinglist <netfilter-devel@vger.kernel.org>,
+ "David S. Miller" <davem@davemloft.net>,
+ Patrick McHardy <kaber@trash.net>
+Subject: [patch 28/29] netfilter -stable: nf_conntrack_tcp: fix endless loop
+Content-Disposition: inline; filename=netfilter-stable-nf_conntrack_tcp-fix-endless-loop.patch
+Content-Length: 1876
+Lines: 54
+
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Patrick McHardy <kaber@trash.net>
+
+netfilter: nf_conntrack_tcp: fix endless loop
+
+Upstream commit 6b69fe0:
+
+When a conntrack entry is destroyed in process context and destruction
+is interrupted by packet processing and the packet is an attempt to
+reopen a closed connection, TCP conntrack tries to kill the old entry
+itself and returns NF_REPEAT to pass the packet through the hook
+again. This may lead to an endless loop: TCP conntrack repeatedly
+finds the old entry, but can not kill it itself since destruction
+is already in progress, but destruction in process context can not
+complete since TCP conntrack is keeping the CPU busy.
+
+Drop the packet in TCP conntrack if we can't kill the connection
+ourselves to avoid this.
+
+Reported by: hemao77@gmail.com [ Kernel bugzilla #11058 ]
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/netfilter/nf_conntrack_proto_tcp.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+--- a/net/netfilter/nf_conntrack_proto_tcp.c
++++ b/net/netfilter/nf_conntrack_proto_tcp.c
+@@ -845,9 +845,15 @@ static int tcp_packet(struct nf_conn *ct
+ /* Attempt to reopen a closed/aborted connection.
+ * Delete this connection and look up again. */
+ write_unlock_bh(&tcp_lock);
+- if (del_timer(&ct->timeout))
++ /* Only repeat if we can actually remove the timer.
++ * Destruction may already be in progress in process
++ * context and we must give it a chance to terminate.
++ */
++ if (del_timer(&ct->timeout)) {
+ ct->timeout.function((unsigned long)ct);
+- return -NF_REPEAT;
++ return -NF_REPEAT;
++ }
++ return -NF_DROP;
+ }
+ /* Fall through */
+ case TCP_CONNTRACK_IGNORE:
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:51 2008
+Message-Id: <20080730231051.263272158@mini.kroah.org>
+References: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:32 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Nick Piggin <npiggin@suse.de>
+Subject: [patch 29/29] Fix off-by-one error in iov_iter_advance()
+Content-Disposition: inline; filename=fix-off-by-one-error-in-iov_iter_advance.patch
+Content-Length: 1464
+Lines: 42
+
+2.6.25-stable review patch. If anyone has any objections, please let us
+know.
+
+------------------
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 94ad374a0751f40d25e22e036c37f7263569d24c upstream
+
+The iov_iter_advance() function would look at the iov->iov_len entry
+even though it might have iterated over the whole array, and iov was
+pointing past the end. This would cause DEBUG_PAGEALLOC to trigger a
+kernel page fault if the allocation was at the end of a page, and the
+next page was unallocated.
+
+The quick fix is to just change the order of the tests: check that there
+is any iovec data left before we check the iov entry itself.
+
+Thanks to Alexey Dobriyan for finding this case, and testing the fix.
+
+Reported-and-tested-by: Alexey Dobriyan <adobriyan@gmail.com>
+Cc: Nick Piggin <npiggin@suse.de>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/filemap.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/mm/filemap.c
++++ b/mm/filemap.c
+@@ -1771,7 +1771,7 @@ void iov_iter_advance(struct iov_iter *i
+ * The !iov->iov_len check ensures we skip over unlikely
+ * zero-length segments (without overruning the iovec).
+ */
+- while (bytes || unlikely(!iov->iov_len && i->count)) {
++ while (bytes || unlikely(i->count && !iov->iov_len)) {
+ int copy;
+
+ copy = min(bytes, iov->iov_len - base);
+
+--
+
+From gregkh@mini.kroah.org Wed Jul 30 16:10:46 2008
+Message-Id: <20080730231003.655833364@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Wed, 30 Jul 2008 16:10:03 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 00/29] 2.6.25-stable review
+Content-Length: 3189
+Lines: 62
+
+This is the start of the stable review cycle for the 2.6.25.14 release.
+There are 29 patches in this series, all will be posted as a response to
+this one. If anyone has any issues with these being applied, please let
+us know. If anyone is a maintainer of the proper subsystem, and wants
+to add a Signed-off-by: line to the patch, please respond with it.
+
+These patches are sent out with a number of different people on the Cc:
+line. If you wish to be a reviewer, please email stable@kernel.org to
+add your name to the list. If you want to be off the reviewer list,
+also email us.
+
+Responses should be made by August 1, 12:00:00 UTC. Anything received
+after that time might be too late.
+
+The whole patch series can be found in one patch at:
+ kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.25.14-rc1.gz
+and the diffstat can be found below.
+
+
+thanks,
+
+the -stable release team
+
+
+ Makefile | 5 ++-
+ arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c | 6 ++++
+ arch/sparc64/kernel/irq.c | 10 ++++++
+ arch/sparc64/kernel/ldc.c | 38 +++++++++++++-------------
+ arch/sparc64/kernel/time.c | 15 ++++++----
+ arch/x86/Kconfig.cpu | 2 -
+ arch/x86/mm/init_64.c | 2 -
+ drivers/acpi/processor_perflib.c | 15 ++++++++--
+ drivers/ata/ahci.c | 15 ++++++++--
+ drivers/ata/ata_generic.c | 6 ++++
+ drivers/ata/pata_acpi.c | 6 ++++
+ drivers/cpufreq/cpufreq.c | 3 ++
+ drivers/ide/ide-cd.c | 27 +++++++++++++++---
+ drivers/net/ixgbe/ixgbe_main.c | 2 -
+ drivers/net/wireless/ath5k/base.c | 5 ---
+ drivers/net/wireless/b43legacy/main.c | 2 -
+ drivers/spi/mpc52xx_psc_spi.c | 22 ++++-----------
+ fs/dquot.c | 16 ++++++++++
+ fs/ecryptfs/crypto.c | 30 ++++++++++++--------
+ fs/isofs/rock.c | 22 +++++++++++++--
+ fs/libfs.c | 4 +-
+ include/asm-arm/bitops.h | 9 +++++-
+ include/asm-generic/vmlinux.lds.h | 4 ++
+ include/asm-powerpc/pgtable-ppc64.h | 11 +++++++
+ include/asm-sparc64/io.h | 1
+ include/linux/cpufreq.h | 1
+ kernel/marker.c | 12 ++++++--
+ kernel/sys_ni.c | 1
+ mm/filemap.c | 2 -
+ mm/hugetlb.c | 6 +++-
+ mm/shmem.c | 3 +-
+ net/ipv4/tcp_input.c | 3 --
+ net/netfilter/nf_conntrack_proto_tcp.c | 10 +++++-
+ scripts/Makefile.modpost | 1
+ scripts/mod/modpost.c | 3 +-
+ sound/pci/hda/patch_realtek.c | 1
+ sound/pci/trident/trident_main.c | 5 ++-
+ 37 files changed, 234 insertions(+), 92 deletions(-)
+