* [patch 00/29] 2.6.25-stable review
@ 2008-07-30 23:24 ` Greg KH
2008-07-30 23:26 ` [patch 01/29] quota: fix possible infinite loop in quota code Greg KH
` (28 more replies)
0 siblings, 29 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:24 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan
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(-)
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 01/29] quota: fix possible infinite loop in quota code
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:26 ` [patch 02/29] isofs: fix minor filesystem corruption Greg KH
` (27 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Jan Kara
[-- Attachment #1: quota-fix-possible-infinite-loop-in-quota-code.patch --]
[-- Type: text/plain, Size: 1827 bytes --]
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) */
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 02/29] isofs: fix minor filesystem corruption
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
2008-07-30 23:26 ` [patch 01/29] quota: fix possible infinite loop in quota code Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:26 ` [patch 03/29] x86: fix crash due to missing debugctlmsr on AMD K6-3 Greg KH
` (26 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Adam Greenblatt
[-- Attachment #1: isofs-fix-minor-filesystem-corruption.patch --]
[-- Type: text/plain, Size: 2859 bytes --]
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 */
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 03/29] x86: fix crash due to missing debugctlmsr on AMD K6-3
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
2008-07-30 23:26 ` [patch 01/29] quota: fix possible infinite loop in quota code Greg KH
2008-07-30 23:26 ` [patch 02/29] isofs: fix minor filesystem corruption Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:26 ` [patch 04/29] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section Greg KH
` (25 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Jan Kratochvil, Ingo Molnar
[-- Attachment #1: x86-fix-crash-due-to-missing-debugctlmsr-on-amd-k6-3.patch --]
[-- Type: text/plain, Size: 1207 bytes --]
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)
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 04/29] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (2 preceding siblings ...)
2008-07-30 23:26 ` [patch 03/29] x86: fix crash due to missing debugctlmsr on AMD K6-3 Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:26 ` [patch 05/29] tcp: Clear probes_out more aggressively in tcp_ack() Greg KH
` (24 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Jan Beulich, Sam Ravnborg
[-- Attachment #1: vmlinux.lds-move-__attribute__-functions-back-into-final-.text-section.patch --]
[-- Type: text/plain, Size: 1570 bytes --]
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
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 05/29] tcp: Clear probes_out more aggressively in tcp_ack().
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (3 preceding siblings ...)
2008-07-30 23:26 ` [patch 04/29] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:26 ` [patch 06/29] sparc64: Fix lockdep issues in LDC protocol layer Greg KH
` (23 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, David S. Miller
[-- Attachment #1: tcp-clear-probes_out-more-aggressively-in-tcp_ack.patch --]
[-- Type: text/plain, Size: 11329 bytes --]
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.
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 06/29] sparc64: Fix lockdep issues in LDC protocol layer.
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (4 preceding siblings ...)
2008-07-30 23:26 ` [patch 05/29] tcp: Clear probes_out more aggressively in tcp_ack() Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:26 ` [patch 07/29] sparc64: Fix cpufreq notifier registry Greg KH
` (22 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, David S. Miller
[-- Attachment #1: sparc64-fix-lockdep-issues-in-ldc-protocol-layer.patch --]
[-- Type: text/plain, Size: 4127 bytes --]
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;
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 07/29] sparc64: Fix cpufreq notifier registry.
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (5 preceding siblings ...)
2008-07-30 23:26 ` [patch 06/29] sparc64: Fix lockdep issues in LDC protocol layer Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:26 ` [patch 08/29] sparc64: Do not define BIO_VMERGE_BOUNDARY Greg KH
` (21 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, David S. Miller
[-- Attachment #1: sparc64-fix-cpufreq-notifier-registry.patch --]
[-- Type: text/plain, Size: 1344 bytes --]
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)
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 08/29] sparc64: Do not define BIO_VMERGE_BOUNDARY.
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (6 preceding siblings ...)
2008-07-30 23:26 ` [patch 07/29] sparc64: Fix cpufreq notifier registry Greg KH
@ 2008-07-30 23:26 ` Greg KH
2008-07-30 23:27 ` [patch 09/29] pata_atiixp: Dont disable Greg KH
` (20 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, David S. Miller
[-- Attachment #1: sparc64-do-not-define-bio_vmerge_boundary.patch --]
[-- Type: text/plain, Size: 794 bytes --]
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)
{
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 09/29] pata_atiixp: Dont disable
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (7 preceding siblings ...)
2008-07-30 23:26 ` [patch 08/29] sparc64: Do not define BIO_VMERGE_BOUNDARY Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 10/29] markers: fix duplicate modpost entry Greg KH
` (19 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Jeff Garzik, Alan Cox
[-- Attachment #1: pata_atiixp-don-t-disable.patch --]
[-- Type: text/plain, Size: 2254 bytes --]
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);
}
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 10/29] markers: fix duplicate modpost entry
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (8 preceding siblings ...)
2008-07-30 23:27 ` [patch 09/29] pata_atiixp: Dont disable Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 11/29] ide-cd: fix oops when using growisofs Greg KH
` (18 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Mathieu Desnoyers, Roland McGrath, Wenji Huang,
Takashi Nishiie
[-- Attachment #1: markers-fix-duplicate-modpost-entry.patch --]
[-- Type: text/plain, Size: 2447 bytes --]
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:
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 11/29] ide-cd: fix oops when using growisofs
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (9 preceding siblings ...)
2008-07-30 23:27 ` [patch 10/29] markers: fix duplicate modpost entry Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 12/29] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled Greg KH
` (17 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Michael Buesch, Jan Kara, Arnd Bergmann, Borislav Petkov,
Bartlomiej Zolnierkiewicz, Harvey Harrison
[-- Attachment #1: ide-cd-fix-oops-when-using-growisofs.patch --]
[-- Type: text/plain, Size: 2146 bytes --]
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,
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 12/29] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (10 preceding siblings ...)
2008-07-30 23:27 ` [patch 11/29] ide-cd: fix oops when using growisofs Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 13/29] ARM: fix fls() for 64-bit arguments Greg KH
` (16 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Atsushi Nemoto, Davide Libenzi
[-- Attachment #1: fix-build-on-compat-platforms-when-config_epoll-is-disabled.patch --]
[-- Type: text/plain, Size: 910 bytes --]
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);
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 13/29] ARM: fix fls() for 64-bit arguments
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (11 preceding siblings ...)
2008-07-30 23:27 ` [patch 12/29] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 14/29] ALSA: hda - Fix "alc262_sony_unsol" hda_verb array Greg KH
` (15 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Nickolay Vinogradov, Russell King
[-- Attachment #1: arm-fix-fls-for-64-bit-arguments.patch --]
[-- Type: text/plain, Size: 1269 bytes --]
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) )
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 14/29] ALSA: hda - Fix "alc262_sony_unsol" hda_verb array
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (12 preceding siblings ...)
2008-07-30 23:27 ` [patch 13/29] ARM: fix fls() for 64-bit arguments Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 15/29] ALSA: trident - pause s/pdif output Greg KH
` (14 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, tiwai
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Akio Idehara
[-- Attachment #1: alsa-hda-fix-alc262_sony_unsol-hda_verb-array.patch --]
[-- Type: text/plain, Size: 1006 bytes --]
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 */
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 15/29] ALSA: trident - pause s/pdif output
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (13 preceding siblings ...)
2008-07-30 23:27 ` [patch 14/29] ALSA: hda - Fix "alc262_sony_unsol" hda_verb array Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 16/29] ahci: retry enabling AHCI a few times before spitting out WARN_ON() Greg KH
` (13 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Takashi Iwai, Pierre Ossman, Jaroslav Kysela
[-- Attachment #1: alsa-trident-pause-s-pdif-output.patch --]
[-- Type: text/plain, Size: 1355 bytes --]
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;
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 16/29] ahci: retry enabling AHCI a few times before spitting out WARN_ON()
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (14 preceding siblings ...)
2008-07-30 23:27 ` [patch 15/29] ALSA: trident - pause s/pdif output Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 17/29] x86: fix kernel_physical_mapping_init() for large x86 systems Greg KH
` (12 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Jeff Garzik, Tejun Heo, Peer Chen, Volker Armin Hemmann
[-- Attachment #1: ahci-retry-enabling-ahci-a-few-times-before-spitting-out-warn_on.patch --]
[-- Type: text/plain, Size: 1462 bytes --]
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);
}
/**
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 17/29] x86: fix kernel_physical_mapping_init() for large x86 systems
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (15 preceding siblings ...)
2008-07-30 23:27 ` [patch 16/29] ahci: retry enabling AHCI a few times before spitting out WARN_ON() Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 18/29] VFS: increase pseudo-filesystem block size to PAGE_SIZE Greg KH
` (11 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, Oliver Pinter
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, linux-mm, Jack Steiner, Ingo Molnar
[-- Attachment #1: x86-fix-kernel_physical_mapping_init-for-large-x86-systems.patch --]
[-- Type: text/plain, Size: 1000 bytes --]
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));
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 18/29] VFS: increase pseudo-filesystem block size to PAGE_SIZE
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (16 preceding siblings ...)
2008-07-30 23:27 ` [patch 17/29] x86: fix kernel_physical_mapping_init() for large x86 systems Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 19/29] tmpfs: fix kernel BUG in shmem_delete_inode Greg KH
` (10 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Alex Nixon, Andi Kleen, Jeremy Fitzhardinge, Peter Zijlstra,
Ingo Molnar, Ian Campbell, Alexander Viro, Hugh Dickins,
Jens Axboe
[-- Attachment #1: vfs-increase-pseudo-filesystem-block-size-to-page_size.patch --]
[-- Type: text/plain, Size: 1611 bytes --]
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;
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 19/29] tmpfs: fix kernel BUG in shmem_delete_inode
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (17 preceding siblings ...)
2008-07-30 23:27 ` [patch 18/29] VFS: increase pseudo-filesystem block size to PAGE_SIZE Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 20/29] mpc52xx_psc_spi: fix block transfer Greg KH
` (9 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Hugh Dickins
[-- Attachment #1: tmpfs-fix-kernel-bug-in-shmem_delete_inode.patch --]
[-- Type: text/plain, Size: 2111 bytes --]
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);
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 20/29] mpc52xx_psc_spi: fix block transfer
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (18 preceding siblings ...)
2008-07-30 23:27 ` [patch 19/29] tmpfs: fix kernel BUG in shmem_delete_inode Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 21/29] markers: fix markers read barrier for multiple probes Greg KH
` (8 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Luotao Fu, David Brownell
[-- Attachment #1: mpc52xx_psc_spi-fix-block-transfer.patch --]
[-- Type: text/plain, Size: 2124 bytes --]
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);
- }
}
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 21/29] markers: fix markers read barrier for multiple probes
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (19 preceding siblings ...)
2008-07-30 23:27 ` [patch 20/29] mpc52xx_psc_spi: fix block transfer Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 22/29] ixgbe: remove device ID for unsupported device Greg KH
` (7 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Mathieu Desnoyers, Paul E. McKenney
[-- Attachment #1: markers-fix-markers-read-barrier-for-multiple-probes.patch --]
[-- Type: text/plain, Size: 2616 bytes --]
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);
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 22/29] ixgbe: remove device ID for unsupported device
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (20 preceding siblings ...)
2008-07-30 23:27 ` [patch 21/29] markers: fix markers read barrier for multiple probes Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 23/29] eCryptfs: use page_alloc not kmalloc to get a page of memory Greg KH
` (6 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Jesse Brandeburg, Jeff Kirsher, Jeff Garzik
[-- Attachment #1: ixgbe-remove-device-id-for-unsupported-device.patch --]
[-- Type: text/plain, Size: 1204 bytes --]
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 },
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 23/29] eCryptfs: use page_alloc not kmalloc to get a page of memory
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (21 preceding siblings ...)
2008-07-30 23:27 ` [patch 22/29] ixgbe: remove device ID for unsupported device Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 24/29] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already Greg KH
` (5 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Eric Sandeen, Michael Halcrow, Rik van Riel
[-- Attachment #1: ecryptfs-use-page_alloc-not-kmalloc-to-get-a-page-of-memory.patch --]
[-- Type: text/plain, Size: 3623 bytes --]
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;
}
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 24/29] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (22 preceding siblings ...)
2008-07-30 23:27 ` [patch 23/29] eCryptfs: use page_alloc not kmalloc to get a page of memory Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 25/29] b43legacy: Release mutex in error handling code Greg KH
` (4 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Thomas Renninger, Andi Kleen, Len Brown, Dave Jones,
Ingo Molnar, Venkatesh Pallipadi
[-- Attachment #1: cpufreq-acpi-only-call-_ppc-after-cpufreq-acpi-init-funcs-got-called-already.patch --]
[-- Type: text/plain, Size: 3693 bytes --]
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 */
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 25/29] b43legacy: Release mutex in error handling code
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (23 preceding siblings ...)
2008-07-30 23:27 ` [patch 24/29] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 26/29] ath5k: dont enable MSI, we cannot handle it yet Greg KH
` (3 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Julia Lawall, Michael Buesch, John W. Linville
[-- Attachment #1: b43legacy-release-mutex-in-error-handling-code.patch --]
[-- Type: text/plain, Size: 1225 bytes --]
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;
}
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 26/29] ath5k: dont enable MSI, we cannot handle it yet
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (24 preceding siblings ...)
2008-07-30 23:27 ` [patch 25/29] b43legacy: Release mutex in error handling code Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 27/29] Correct hash flushing from huge_ptep_set_wrprotect() Greg KH
` (2 subsequent siblings)
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Pavel Roskin, Nick Kossifidis, John W. Linville
[-- Attachment #1: ath5k-don-t-enable-msi-we-cannot-handle-it-yet.patch --]
[-- Type: text/plain, Size: 1445 bytes --]
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);
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 27/29] Correct hash flushing from huge_ptep_set_wrprotect()
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (25 preceding siblings ...)
2008-07-30 23:27 ` [patch 26/29] ath5k: dont enable MSI, we cannot handle it yet Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 28/29] netfilter -stable: nf_conntrack_tcp: fix endless loop Greg KH
2008-07-30 23:27 ` [patch 29/29] Fix off-by-one error in iov_iter_advance() Greg KH
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, Benjamin Herrenschmidt
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Greg KH, Andy Whitcroft, David Gibson
[-- Attachment #1: correct-hash-flushing-from-huge_ptep_set_wrprotect.patch --]
[-- Type: text/plain, Size: 2833 bytes --]
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);
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 28/29] netfilter -stable: nf_conntrack_tcp: fix endless loop
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (26 preceding siblings ...)
2008-07-30 23:27 ` [patch 27/29] Correct hash flushing from huge_ptep_set_wrprotect() Greg KH
@ 2008-07-30 23:27 ` Greg KH
2008-07-30 23:27 ` [patch 29/29] Fix off-by-one error in iov_iter_advance() Greg KH
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Netfilter Development Mailinglist, David S. Miller,
Patrick McHardy
[-- Attachment #1: netfilter-stable-nf_conntrack_tcp-fix-endless-loop.patch --]
[-- Type: text/plain, Size: 1876 bytes --]
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:
--
^ permalink raw reply [flat|nested] 30+ messages in thread
* [patch 29/29] Fix off-by-one error in iov_iter_advance()
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
` (27 preceding siblings ...)
2008-07-30 23:27 ` [patch 28/29] netfilter -stable: nf_conntrack_tcp: fix endless loop Greg KH
@ 2008-07-30 23:27 ` Greg KH
28 siblings, 0 replies; 30+ messages in thread
From: Greg KH @ 2008-07-30 23:27 UTC (permalink / raw)
To: linux-kernel, stable, jejb
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
alan, Nick Piggin
[-- Attachment #1: fix-off-by-one-error-in-iov_iter_advance.patch --]
[-- Type: text/plain, Size: 1464 bytes --]
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);
--
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2008-07-30 23:44 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20080730231003.655833364@mini.kroah.org>
2008-07-30 23:24 ` [patch 00/29] 2.6.25-stable review Greg KH
2008-07-30 23:26 ` [patch 01/29] quota: fix possible infinite loop in quota code Greg KH
2008-07-30 23:26 ` [patch 02/29] isofs: fix minor filesystem corruption Greg KH
2008-07-30 23:26 ` [patch 03/29] x86: fix crash due to missing debugctlmsr on AMD K6-3 Greg KH
2008-07-30 23:26 ` [patch 04/29] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section Greg KH
2008-07-30 23:26 ` [patch 05/29] tcp: Clear probes_out more aggressively in tcp_ack() Greg KH
2008-07-30 23:26 ` [patch 06/29] sparc64: Fix lockdep issues in LDC protocol layer Greg KH
2008-07-30 23:26 ` [patch 07/29] sparc64: Fix cpufreq notifier registry Greg KH
2008-07-30 23:26 ` [patch 08/29] sparc64: Do not define BIO_VMERGE_BOUNDARY Greg KH
2008-07-30 23:27 ` [patch 09/29] pata_atiixp: Dont disable Greg KH
2008-07-30 23:27 ` [patch 10/29] markers: fix duplicate modpost entry Greg KH
2008-07-30 23:27 ` [patch 11/29] ide-cd: fix oops when using growisofs Greg KH
2008-07-30 23:27 ` [patch 12/29] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled Greg KH
2008-07-30 23:27 ` [patch 13/29] ARM: fix fls() for 64-bit arguments Greg KH
2008-07-30 23:27 ` [patch 14/29] ALSA: hda - Fix "alc262_sony_unsol" hda_verb array Greg KH
2008-07-30 23:27 ` [patch 15/29] ALSA: trident - pause s/pdif output Greg KH
2008-07-30 23:27 ` [patch 16/29] ahci: retry enabling AHCI a few times before spitting out WARN_ON() Greg KH
2008-07-30 23:27 ` [patch 17/29] x86: fix kernel_physical_mapping_init() for large x86 systems Greg KH
2008-07-30 23:27 ` [patch 18/29] VFS: increase pseudo-filesystem block size to PAGE_SIZE Greg KH
2008-07-30 23:27 ` [patch 19/29] tmpfs: fix kernel BUG in shmem_delete_inode Greg KH
2008-07-30 23:27 ` [patch 20/29] mpc52xx_psc_spi: fix block transfer Greg KH
2008-07-30 23:27 ` [patch 21/29] markers: fix markers read barrier for multiple probes Greg KH
2008-07-30 23:27 ` [patch 22/29] ixgbe: remove device ID for unsupported device Greg KH
2008-07-30 23:27 ` [patch 23/29] eCryptfs: use page_alloc not kmalloc to get a page of memory Greg KH
2008-07-30 23:27 ` [patch 24/29] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already Greg KH
2008-07-30 23:27 ` [patch 25/29] b43legacy: Release mutex in error handling code Greg KH
2008-07-30 23:27 ` [patch 26/29] ath5k: dont enable MSI, we cannot handle it yet Greg KH
2008-07-30 23:27 ` [patch 27/29] Correct hash flushing from huge_ptep_set_wrprotect() Greg KH
2008-07-30 23:27 ` [patch 28/29] netfilter -stable: nf_conntrack_tcp: fix endless loop Greg KH
2008-07-30 23:27 ` [patch 29/29] Fix off-by-one error in iov_iter_advance() Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox