* [patch 000/101] 2.6.20-stable review
@ 2007-03-07 17:10 Greg KH
2007-03-07 17:10 ` [patch 001/101] ocfs2: ocfs2_link() journal credits update Greg KH
` (102 more replies)
0 siblings, 103 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan
After many weeks of backlogs, I've finally flushed out all of the
pending -stable patches, bringing this series to a whopping 101 patches
pending for the next 2.6.20.2 release.
If everyone could please take the time to review them and let me know if
there are any issues with any of these being applied.
Also, if there are any patches that I am somehow missing that should go
into the 2.6.20-stable tree, please forward them on to the
stable@kernel.org alias.
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 Friday March 9, 17:00:00 UTC. Anything
received after that time might be too late.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 001/101] ocfs2: ocfs2_link() journal credits update
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 002/101] x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted Greg KH
` (101 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, Mark Fasheh, Chris Wright
[-- Attachment #1: ocfs2-ocfs2_link-journal-credits-update.patch --]
[-- Type: text/plain, Size: 1129 bytes --]
Commit 592282cf2eaa33409c6511ddd3f3ecaa57daeaaa fixed some missing directory
c/mtime updates in part by introducing a dinode update in ocfs2_add_entry().
Unfortunately, ocfs2_link() (which didn't update the directory inode before)
is now missing a single journal credit. Fix this by doubling the number of
inode updates expected during hard link creation.
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
fs/ocfs2/journal.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/fs/ocfs2/journal.h
+++ linux-2.6.20.1/fs/ocfs2/journal.h
@@ -306,8 +306,8 @@ int ocfs2_journal_dirty
* for the dinode, one for the new block. */
#define OCFS2_SIMPLE_DIR_EXTEND_CREDITS (2)
-/* file update (nlink, etc) + dir entry block */
-#define OCFS2_LINK_CREDITS (OCFS2_INODE_UPDATE_CREDITS + 1)
+/* file update (nlink, etc) + directory mtime/ctime + dir entry block */
+#define OCFS2_LINK_CREDITS (2*OCFS2_INODE_UPDATE_CREDITS + 1)
/* inode + dir inode (if we unlink a dir), + dir entry block + orphan
* dir inode link */
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 002/101] x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
2007-03-07 17:10 ` [patch 001/101] ocfs2: ocfs2_link() journal credits update Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 003/101] rtc-pcf8563: detect polarity of century bit automatically Greg KH
` (100 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, Andrew Morton
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, Jeff Dike, Andi Kleen,
user-mode-linux-devel, Paolo Blaisorblade Giarrusso
[-- Attachment #1: x86_64-fix-2.6.18-regression-ptrace_oldsetoptions-should-be-accepted.patch --]
[-- Type: text/plain, Size: 1292 bytes --]
Also PTRACE_OLDSETOPTIONS should be accepted, as done by kernel/ptrace.c and
forced by binary compatibility. UML/32bit breaks because of this - since it is wise
enough to use PTRACE_OLDSETOPTIONS to be binary compatible with 2.4 host
kernels.
Until 2.6.17 (commit f0f2d6536e3515b5b1b7ae97dc8f176860c8c2ce) we had:
default:
return sys_ptrace(request, pid, addr, data);
Instead here we have:
case PTRACE_GET_THREAD_AREA:
case ...:
return sys_ptrace(request, pid, addr, data);
default:
return -EINVAL;
This change was a style change - when a case is added, it must be explicitly
tested this way. In this case, not enough testing was done.
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/x86_64/ia32/ptrace32.c | 1 +
1 file changed, 1 insertion(+)
--- linux-2.6.20.1.orig/arch/x86_64/ia32/ptrace32.c
+++ linux-2.6.20.1/arch/x86_64/ia32/ptrace32.c
@@ -243,6 +243,7 @@ asmlinkage long sys32_ptrace(long reques
case PTRACE_SINGLESTEP:
case PTRACE_DETACH:
case PTRACE_SYSCALL:
+ case PTRACE_OLDSETOPTIONS:
case PTRACE_SETOPTIONS:
case PTRACE_SET_THREAD_AREA:
case PTRACE_GET_THREAD_AREA:
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 003/101] rtc-pcf8563: detect polarity of century bit automatically
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
2007-03-07 17:10 ` [patch 001/101] ocfs2: ocfs2_link() journal credits update Greg KH
2007-03-07 17:10 ` [patch 002/101] x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 004/101] prism54: correct assignment of DOT1XENABLE in WE-19 codepaths Greg KH
` (99 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, akpm
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, alan, jean-baptiste.maneyrol, a.zummo,
dbrownell, Atsushi Nemoto
[-- Attachment #1: rtc-pcf8563-detect-polarity-of-century-bit-automatically.patch --]
[-- Type: text/plain, Size: 4808 bytes --]
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
The usage of the century bit was inverted on 2.6.19 following to PCF8563's
description, but it was not match to usage suggested by RTC8564's
datasheet. Anyway what MO_C=1 means can vary on each platform. This patch
is to detect its polarity in get_datetime routine. The default value of
c_polarity is 0 (MO_C=1 means 19xx) so that this patch does not change
current behavior even if get_datetime was not called before set_datetime.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@teamlog.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/rtc/rtc-pcf8563.c | 40 ++++++++++++++++++++++++++++++++++------
1 file changed, 34 insertions(+), 6 deletions(-)
--- linux-2.6.20.1.orig/drivers/rtc/rtc-pcf8563.c
+++ linux-2.6.20.1/drivers/rtc/rtc-pcf8563.c
@@ -53,6 +53,25 @@ I2C_CLIENT_INSMOD;
#define PCF8563_SC_LV 0x80 /* low voltage */
#define PCF8563_MO_C 0x80 /* century */
+struct pcf8563 {
+ struct i2c_client client;
+ /*
+ * The meaning of MO_C bit varies by the chip type.
+ * From PCF8563 datasheet: this bit is toggled when the years
+ * register overflows from 99 to 00
+ * 0 indicates the century is 20xx
+ * 1 indicates the century is 19xx
+ * From RTC8564 datasheet: this bit indicates change of
+ * century. When the year digit data overflows from 99 to 00,
+ * this bit is set. By presetting it to 0 while still in the
+ * 20th century, it will be set in year 2000, ...
+ * There seems no reliable way to know how the system use this
+ * bit. So let's do it heuristically, assuming we are live in
+ * 1970...2069.
+ */
+ int c_polarity; /* 0: MO_C=1 means 19xx, otherwise MO_C=1 means 20xx */
+};
+
static int pcf8563_probe(struct i2c_adapter *adapter, int address, int kind);
static int pcf8563_detach(struct i2c_client *client);
@@ -62,6 +81,7 @@ static int pcf8563_detach(struct i2c_cli
*/
static int pcf8563_get_datetime(struct i2c_client *client, struct rtc_time *tm)
{
+ struct pcf8563 *pcf8563 = container_of(client, struct pcf8563, client);
unsigned char buf[13] = { PCF8563_REG_ST1 };
struct i2c_msg msgs[] = {
@@ -94,8 +114,12 @@ static int pcf8563_get_datetime(struct i
tm->tm_mday = BCD2BIN(buf[PCF8563_REG_DM] & 0x3F);
tm->tm_wday = buf[PCF8563_REG_DW] & 0x07;
tm->tm_mon = BCD2BIN(buf[PCF8563_REG_MO] & 0x1F) - 1; /* rtc mn 1-12 */
- tm->tm_year = BCD2BIN(buf[PCF8563_REG_YR])
- + (buf[PCF8563_REG_MO] & PCF8563_MO_C ? 0 : 100);
+ tm->tm_year = BCD2BIN(buf[PCF8563_REG_YR]);
+ if (tm->tm_year < 70)
+ tm->tm_year += 100; /* assume we are in 1970...2069 */
+ /* detect the polarity heuristically. see note above. */
+ pcf8563->c_polarity = (buf[PCF8563_REG_MO] & PCF8563_MO_C) ?
+ (tm->tm_year >= 100) : (tm->tm_year < 100);
dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
"mday=%d, mon=%d, year=%d, wday=%d\n",
@@ -114,6 +138,7 @@ static int pcf8563_get_datetime(struct i
static int pcf8563_set_datetime(struct i2c_client *client, struct rtc_time *tm)
{
+ struct pcf8563 *pcf8563 = container_of(client, struct pcf8563, client);
int i, err;
unsigned char buf[9];
@@ -135,7 +160,7 @@ static int pcf8563_set_datetime(struct i
/* year and century */
buf[PCF8563_REG_YR] = BIN2BCD(tm->tm_year % 100);
- if (tm->tm_year < 100)
+ if (pcf8563->c_polarity ? (tm->tm_year >= 100) : (tm->tm_year < 100))
buf[PCF8563_REG_MO] |= PCF8563_MO_C;
buf[PCF8563_REG_DW] = tm->tm_wday & 0x07;
@@ -248,6 +273,7 @@ static struct i2c_driver pcf8563_driver
static int pcf8563_probe(struct i2c_adapter *adapter, int address, int kind)
{
+ struct pcf8563 *pcf8563;
struct i2c_client *client;
struct rtc_device *rtc;
@@ -260,11 +286,12 @@ static int pcf8563_probe(struct i2c_adap
goto exit;
}
- if (!(client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL))) {
+ if (!(pcf8563 = kzalloc(sizeof(struct pcf8563), GFP_KERNEL))) {
err = -ENOMEM;
goto exit;
}
+ client = &pcf8563->client;
client->addr = address;
client->driver = &pcf8563_driver;
client->adapter = adapter;
@@ -301,7 +328,7 @@ exit_detach:
i2c_detach_client(client);
exit_kfree:
- kfree(client);
+ kfree(pcf8563);
exit:
return err;
@@ -309,6 +336,7 @@ exit:
static int pcf8563_detach(struct i2c_client *client)
{
+ struct pcf8563 *pcf8563 = container_of(client, struct pcf8563, client);
int err;
struct rtc_device *rtc = i2c_get_clientdata(client);
@@ -318,7 +346,7 @@ static int pcf8563_detach(struct i2c_cli
if ((err = i2c_detach_client(client)))
return err;
- kfree(client);
+ kfree(pcf8563);
return 0;
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 004/101] prism54: correct assignment of DOT1XENABLE in WE-19 codepaths
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (2 preceding siblings ...)
2007-03-07 17:10 ` [patch 003/101] rtc-pcf8563: detect polarity of century bit automatically Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 005/101] pata_amd: fix an obvious bug in cable detection Greg KH
` (98 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, Dan Williams
[-- Attachment #1: prism54-correct-assignment-of-dot1xenable-in-we-19-codepaths.patch --]
[-- Type: text/plain, Size: 1483 bytes --]
Correct assignment of DOT1XENABLE in WE-19 codepaths.
RX_UNENCRYPTED_EAPOL = 1 really means setting DOT1XENABLE _off_, and
vice versa. The original WE-19 patch erroneously reversed that. This
patch fixes association with unencrypted and WEP networks when using
wpa_supplicant.
It also adds two missing break statements that, left out, could result
in incorrect card configuration.
Applies to (I think) 2.6.19 and later.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/prism54/isl_ioctl.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/net/wireless/prism54/isl_ioctl.c
+++ linux-2.6.20.1/drivers/net/wireless/prism54/isl_ioctl.c
@@ -1395,11 +1395,16 @@ static int prism54_set_auth(struct net_d
break;
case IW_AUTH_RX_UNENCRYPTED_EAPOL:
- dot1x = param->value ? 1 : 0;
+ /* dot1x should be the opposite of RX_UNENCRYPTED_EAPOL;
+ * turn off dot1x when allowing recepit of unencrypted eapol
+ * frames, turn on dot1x when we disallow receipt
+ */
+ dot1x = param->value ? 0x00 : 0x01;
break;
case IW_AUTH_PRIVACY_INVOKED:
privinvoked = param->value ? 1 : 0;
+ break;
case IW_AUTH_DROP_UNENCRYPTED:
exunencrypt = param->value ? 1 : 0;
@@ -1589,6 +1594,7 @@ static int prism54_set_encodeext(struct
}
key.type = DOT11_PRIV_TKIP;
key.length = KEY_SIZE_TKIP;
+ break;
default:
return -EINVAL;
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 005/101] pata_amd: fix an obvious bug in cable detection
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (3 preceding siblings ...)
2007-03-07 17:10 ` [patch 004/101] prism54: correct assignment of DOT1XENABLE in WE-19 codepaths Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 006/101] knfsd: Fix a race in closing NFSd connections Greg KH
` (97 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, Jeff Garzik, Alan Cox, linux-ide
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, Tejun Heo
[-- Attachment #1: pata_amd-fix-an-obvious-bug-in-cable-detection.patch --]
[-- Type: text/plain, Size: 994 bytes --]
80c test mask is at bits 18 and 19 of EIDE Controller Configuration
not 22 and 23. Fix it.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
---
drivers/ata/pata_amd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/ata/pata_amd.c
+++ linux-2.6.20.1/drivers/ata/pata_amd.c
@@ -128,7 +128,7 @@ static void timing_setup(struct ata_port
static int amd_pre_reset(struct ata_port *ap)
{
- static const u32 bitmask[2] = {0x03, 0xC0};
+ static const u32 bitmask[2] = {0x03, 0x0C};
static const struct pci_bits amd_enable_bits[] = {
{ 0x40, 1, 0x02, 0x02 },
{ 0x40, 1, 0x01, 0x01 }
@@ -247,7 +247,7 @@ static void amd133_set_dmamode(struct at
*/
static int nv_pre_reset(struct ata_port *ap) {
- static const u8 bitmask[2] = {0x03, 0xC0};
+ static const u8 bitmask[2] = {0x03, 0x0C};
static const struct pci_bits nv_enable_bits[] = {
{ 0x50, 1, 0x02, 0x02 },
{ 0x50, 1, 0x01, 0x01 }
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 006/101] knfsd: Fix a race in closing NFSd connections.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (4 preceding siblings ...)
2007-03-07 17:10 ` [patch 005/101] pata_amd: fix an obvious bug in cable detection Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 007/101] Keys: Fix key serial number collision handling Greg KH
` (96 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, Andrew Morton
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, nfs, Neil Brown
[-- Attachment #1: knfsd-fix-a-race-in-closing-nfsd-connections.patch --]
[-- Type: text/plain, Size: 6430 bytes --]
If you lose this race, it can iput a socket inode twice and you
get a BUG in fs/inode.c
When I added the option for user-space to close a socket,
I added some cruft to svc_delete_socket so that I could call
that function when closing a socket per user-space request.
This was the wrong thing to do. I should have just set SK_CLOSE
and let normal mechanisms do the work.
Not only wrong, but buggy. The locking is all wrong and it openned
up a race where-by a socket could be closed twice.
So this patch:
Introduces svc_close_socket which sets SK_CLOSE then either leave
the close up to a thread, or calls svc_delete_socket if it can
get SK_BUSY.
Adds a bias to sk_busy which is removed when SK_DEAD is set,
This avoid races around shutting down the socket.
Changes several 'spin_lock' to 'spin_lock_bh' where the _bh
was missing.
Bugzilla-url: http://bugzilla.kernel.org/show_bug.cgi?id=7916
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/linux/sunrpc/svcsock.h | 2 -
net/sunrpc/svc.c | 4 +--
net/sunrpc/svcsock.c | 52 +++++++++++++++++++++++++++++------------
3 files changed, 41 insertions(+), 17 deletions(-)
--- linux-2.6.20.1.orig/include/linux/sunrpc/svcsock.h
+++ linux-2.6.20.1/include/linux/sunrpc/svcsock.h
@@ -63,7 +63,7 @@ struct svc_sock {
* Function prototypes.
*/
int svc_makesock(struct svc_serv *, int, unsigned short);
-void svc_delete_socket(struct svc_sock *);
+void svc_close_socket(struct svc_sock *);
int svc_recv(struct svc_rqst *, long);
int svc_send(struct svc_rqst *);
void svc_drop(struct svc_rqst *);
--- linux-2.6.20.1.orig/net/sunrpc/svc.c
+++ linux-2.6.20.1/net/sunrpc/svc.c
@@ -386,7 +386,7 @@ svc_destroy(struct svc_serv *serv)
svsk = list_entry(serv->sv_tempsocks.next,
struct svc_sock,
sk_list);
- svc_delete_socket(svsk);
+ svc_close_socket(svsk);
}
if (serv->sv_shutdown)
serv->sv_shutdown(serv);
@@ -395,7 +395,7 @@ svc_destroy(struct svc_serv *serv)
svsk = list_entry(serv->sv_permsocks.next,
struct svc_sock,
sk_list);
- svc_delete_socket(svsk);
+ svc_close_socket(svsk);
}
cache_clean_deferred(serv);
--- linux-2.6.20.1.orig/net/sunrpc/svcsock.c
+++ linux-2.6.20.1/net/sunrpc/svcsock.c
@@ -62,6 +62,12 @@
* after a clear, the socket must be read/accepted
* if this succeeds, it must be set again.
* SK_CLOSE can set at any time. It is never cleared.
+ * sk_inuse contains a bias of '1' until SK_DEAD is set.
+ * so when sk_inuse hits zero, we know the socket is dead
+ * and no-one is using it.
+ * SK_DEAD can only be set while SK_BUSY is held which ensures
+ * no other thread will be using the socket or will try to
+ * set SK_DEAD.
*
*/
@@ -70,6 +76,7 @@
static struct svc_sock *svc_setup_socket(struct svc_serv *, struct socket *,
int *errp, int pmap_reg);
+static void svc_delete_socket(struct svc_sock *svsk);
static void svc_udp_data_ready(struct sock *, int);
static int svc_udp_recvfrom(struct svc_rqst *);
static int svc_udp_sendto(struct svc_rqst *);
@@ -329,8 +336,9 @@ void svc_reserve(struct svc_rqst *rqstp,
static inline void
svc_sock_put(struct svc_sock *svsk)
{
- if (atomic_dec_and_test(&svsk->sk_inuse) &&
- test_bit(SK_DEAD, &svsk->sk_flags)) {
+ if (atomic_dec_and_test(&svsk->sk_inuse)) {
+ BUG_ON(! test_bit(SK_DEAD, &svsk->sk_flags));
+
dprintk("svc: releasing dead socket\n");
if (svsk->sk_sock->file)
sockfd_put(svsk->sk_sock);
@@ -520,7 +528,7 @@ svc_sock_names(char *buf, struct svc_ser
if (!serv)
return 0;
- spin_lock(&serv->sv_lock);
+ spin_lock_bh(&serv->sv_lock);
list_for_each_entry(svsk, &serv->sv_permsocks, sk_list) {
int onelen = one_sock_name(buf+len, svsk);
if (toclose && strcmp(toclose, buf+len) == 0)
@@ -528,12 +536,12 @@ svc_sock_names(char *buf, struct svc_ser
else
len += onelen;
}
- spin_unlock(&serv->sv_lock);
+ spin_unlock_bh(&serv->sv_lock);
if (closesk)
/* Should unregister with portmap, but you cannot
* unregister just one protocol...
*/
- svc_delete_socket(closesk);
+ svc_close_socket(closesk);
else if (toclose)
return -ENOENT;
return len;
@@ -683,6 +691,11 @@ svc_udp_recvfrom(struct svc_rqst *rqstp)
return svc_deferred_recv(rqstp);
}
+ if (test_bit(SK_CLOSE, &svsk->sk_flags)) {
+ svc_delete_socket(svsk);
+ return 0;
+ }
+
clear_bit(SK_DATA, &svsk->sk_flags);
while ((skb = skb_recv_datagram(svsk->sk_sk, 0, 1, &err)) == NULL) {
if (err == -EAGAIN) {
@@ -1176,7 +1189,8 @@ svc_tcp_sendto(struct svc_rqst *rqstp)
rqstp->rq_sock->sk_server->sv_name,
(sent<0)?"got error":"sent only",
sent, xbufp->len);
- svc_delete_socket(rqstp->rq_sock);
+ set_bit(SK_CLOSE, &rqstp->rq_sock->sk_flags);
+ svc_sock_enqueue(rqstp->rq_sock);
sent = -EAGAIN;
}
return sent;
@@ -1495,7 +1509,7 @@ svc_setup_socket(struct svc_serv *serv,
svsk->sk_odata = inet->sk_data_ready;
svsk->sk_owspace = inet->sk_write_space;
svsk->sk_server = serv;
- atomic_set(&svsk->sk_inuse, 0);
+ atomic_set(&svsk->sk_inuse, 1);
svsk->sk_lastrecv = get_seconds();
spin_lock_init(&svsk->sk_defer_lock);
INIT_LIST_HEAD(&svsk->sk_deferred);
@@ -1618,7 +1632,7 @@ bummer:
/*
* Remove a dead socket
*/
-void
+static void
svc_delete_socket(struct svc_sock *svsk)
{
struct svc_serv *serv;
@@ -1644,16 +1658,26 @@ svc_delete_socket(struct svc_sock *svsk)
* while still attached to a queue, the queue itself
* is about to be destroyed (in svc_destroy).
*/
- if (!test_and_set_bit(SK_DEAD, &svsk->sk_flags))
+ if (!test_and_set_bit(SK_DEAD, &svsk->sk_flags)) {
+ BUG_ON(atomic_read(&svsk->sk_inuse)<2);
+ atomic_dec(&svsk->sk_inuse);
if (test_bit(SK_TEMP, &svsk->sk_flags))
serv->sv_tmpcnt--;
+ }
- /* This atomic_inc should be needed - svc_delete_socket
- * should have the semantic of dropping a reference.
- * But it doesn't yet....
- */
- atomic_inc(&svsk->sk_inuse);
spin_unlock_bh(&serv->sv_lock);
+}
+
+void svc_close_socket(struct svc_sock *svsk)
+{
+ set_bit(SK_CLOSE, &svsk->sk_flags);
+ if (test_and_set_bit(SK_BUSY, &svsk->sk_flags))
+ /* someone else will have to effect the close */
+ return;
+
+ atomic_inc(&svsk->sk_inuse);
+ svc_delete_socket(svsk);
+ clear_bit(SK_BUSY, &svsk->sk_flags);
svc_sock_put(svsk);
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 007/101] Keys: Fix key serial number collision handling
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (5 preceding siblings ...)
2007-03-07 17:10 ` [patch 006/101] knfsd: Fix a race in closing NFSd connections Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 008/101] ide: fix drive side 80c cable check Greg KH
` (95 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, David Howells
[-- Attachment #1: keys-fix-key-serial-number-collision-handling.patch --]
[-- Type: text/plain, Size: 2817 bytes --]
From: David Howells <dhowells@redhat.com>
[PATCH] Keys: Fix key serial number collision handling
Fix the key serial number collision avoidance code in key_alloc_serial().
This didn't use to be so much of a problem as the key serial numbers were
allocated from a simple incremental counter, and it would have to go through
two billion keys before it could possibly encounter a collision. However, now
that random numbers are used instead, collisions are much more likely.
This is fixed by finding a hole in the rbtree where the next unused serial
number ought to be and using that by going almost back to the top of the
insertion routine and redoing the insertion with the new serial number rather
than trying to be clever and attempting to work out the insertion point
pointer directly.
This fixes kernel BZ #7727.
Signed-off-by: David Howells <dhowells@redhat.com>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
security/keys/key.c | 33 ++++++++++++++-------------------
1 file changed, 14 insertions(+), 19 deletions(-)
--- linux-2.6.20.1.orig/security/keys/key.c
+++ linux-2.6.20.1/security/keys/key.c
@@ -188,6 +188,7 @@ static inline void key_alloc_serial(stru
spin_lock(&key_serial_lock);
+attempt_insertion:
parent = NULL;
p = &key_serial_tree.rb_node;
@@ -202,39 +203,33 @@ static inline void key_alloc_serial(stru
else
goto serial_exists;
}
- goto insert_here;
+
+ /* we've found a suitable hole - arrange for this key to occupy it */
+ rb_link_node(&key->serial_node, parent, p);
+ rb_insert_color(&key->serial_node, &key_serial_tree);
+
+ spin_unlock(&key_serial_lock);
+ return;
/* we found a key with the proposed serial number - walk the tree from
* that point looking for the next unused serial number */
serial_exists:
for (;;) {
key->serial++;
- if (key->serial < 2)
- key->serial = 2;
-
- if (!rb_parent(parent))
- p = &key_serial_tree.rb_node;
- else if (rb_parent(parent)->rb_left == parent)
- p = &(rb_parent(parent)->rb_left);
- else
- p = &(rb_parent(parent)->rb_right);
+ if (key->serial < 3) {
+ key->serial = 3;
+ goto attempt_insertion;
+ }
parent = rb_next(parent);
if (!parent)
- break;
+ goto attempt_insertion;
xkey = rb_entry(parent, struct key, serial_node);
if (key->serial < xkey->serial)
- goto insert_here;
+ goto attempt_insertion;
}
- /* we've found a suitable hole - arrange for this key to occupy it */
-insert_here:
- rb_link_node(&key->serial_node, parent, p);
- rb_insert_color(&key->serial_node, &key_serial_tree);
-
- spin_unlock(&key_serial_lock);
-
} /* end key_alloc_serial() */
/*****************************************************************************/
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 008/101] ide: fix drive side 80c cable check
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (6 preceding siblings ...)
2007-03-07 17:10 ` [patch 007/101] Keys: Fix key serial number collision handling Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 009/101] bcm43xx: Fix for oops on resume Greg KH
` (94 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, Alan
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, linux-ide, bzolnier, Tejun Heo
[-- Attachment #1: ide-fix-drive-side-80c-cable-check.patch --]
[-- Type: text/plain, Size: 802 bytes --]
eighty_ninty_three() had word 93 validitity check but not the 80c bit
test itself (bit 12). This increases the chance of incorrect wire
detection especially because host side cable detection is often
unreliable and we sometimes soley depend on drive side cable
detection. Fix it.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Acked-by: Alan <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ide/ide-iops.c | 2 ++
1 file changed, 2 insertions(+)
--- linux-2.6.20.1.orig/drivers/ide/ide-iops.c
+++ linux-2.6.20.1/drivers/ide/ide-iops.c
@@ -607,6 +607,8 @@ u8 eighty_ninty_three (ide_drive_t *driv
if(!(drive->id->hw_config & 0x4000))
return 0;
#endif /* CONFIG_IDEDMA_IVB */
+ if (!(drive->id->hw_config & 0x2000))
+ return 0;
return 1;
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 009/101] bcm43xx: Fix for oops on resume
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (7 preceding siblings ...)
2007-03-07 17:10 ` [patch 008/101] ide: fix drive side 80c cable check Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 010/101] bcm43xx: Fix for oops on ampdu status Greg KH
` (93 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, Larry Finger
[-- Attachment #1: bcm43xx-fix-for-oops-on-resume.patch --]
[-- Type: text/plain, Size: 638 bytes --]
There is a kernel oops on bcm43xx when resuming due to an overly tight timeout loop.
Signed-off-by: Larry Finger<Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/bcm43xx/bcm43xx.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/net/wireless/bcm43xx/bcm43xx.h
+++ linux-2.6.20.1/drivers/net/wireless/bcm43xx/bcm43xx.h
@@ -21,7 +21,7 @@
#define PFX KBUILD_MODNAME ": "
#define BCM43xx_SWITCH_CORE_MAX_RETRIES 50
-#define BCM43xx_IRQWAIT_MAX_RETRIES 50
+#define BCM43xx_IRQWAIT_MAX_RETRIES 100
#define BCM43xx_IO_SIZE 8192
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 010/101] bcm43xx: Fix for oops on ampdu status
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (8 preceding siblings ...)
2007-03-07 17:10 ` [patch 009/101] bcm43xx: Fix for oops on resume Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 011/101] AGP: intel-agp bugfix Greg KH
` (92 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, Michael Buesch, Larry Finger
[-- Attachment #1: bcm43xx-fix-for-oops-on-ampdu-status.patch --]
[-- Type: text/plain, Size: 1930 bytes --]
From: Michael Buesch <mb@bu3sch.de>
If bcm43xx were to process an afterburner (ampdu) status response, Linux would oops. The
ampdu and intermediate status bits are properly named.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/bcm43xx/bcm43xx_main.c | 8 +++-----
drivers/net/wireless/bcm43xx/bcm43xx_xmit.h | 10 ++--------
2 files changed, 5 insertions(+), 13 deletions(-)
--- linux-2.6.20.1.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ linux-2.6.20.1/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -1453,12 +1453,10 @@ static void handle_irq_transmit_status(s
bcm43xx_debugfs_log_txstat(bcm, &stat);
- if (stat.flags & BCM43xx_TXSTAT_FLAG_IGNORE)
+ if (stat.flags & BCM43xx_TXSTAT_FLAG_AMPDU)
+ continue;
+ if (stat.flags & BCM43xx_TXSTAT_FLAG_INTER)
continue;
- if (!(stat.flags & BCM43xx_TXSTAT_FLAG_ACK)) {
- //TODO: packet was not acked (was lost)
- }
- //TODO: There are more (unknown) flags to test. see bcm43xx_main.h
if (bcm43xx_using_pio(bcm))
bcm43xx_pio_handle_xmitstatus(bcm, &stat);
--- linux-2.6.20.1.orig/drivers/net/wireless/bcm43xx/bcm43xx_xmit.h
+++ linux-2.6.20.1/drivers/net/wireless/bcm43xx/bcm43xx_xmit.h
@@ -137,14 +137,8 @@ struct bcm43xx_xmitstatus {
u16 unknown; //FIXME
};
-#define BCM43xx_TXSTAT_FLAG_ACK 0x01
-//TODO #define BCM43xx_TXSTAT_FLAG_??? 0x02
-//TODO #define BCM43xx_TXSTAT_FLAG_??? 0x04
-//TODO #define BCM43xx_TXSTAT_FLAG_??? 0x08
-//TODO #define BCM43xx_TXSTAT_FLAG_??? 0x10
-#define BCM43xx_TXSTAT_FLAG_IGNORE 0x20
-//TODO #define BCM43xx_TXSTAT_FLAG_??? 0x40
-//TODO #define BCM43xx_TXSTAT_FLAG_??? 0x80
+#define BCM43xx_TXSTAT_FLAG_AMPDU 0x10
+#define BCM43xx_TXSTAT_FLAG_INTER 0x20
u8 bcm43xx_plcp_get_ratecode_cck(const u8 bitrate);
u8 bcm43xx_plcp_get_ratecode_ofdm(const u8 bitrate);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 011/101] AGP: intel-agp bugfix
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (9 preceding siblings ...)
2007-03-07 17:10 ` [patch 010/101] bcm43xx: Fix for oops on ampdu status Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 012/101] Missing critical phys_to_virt in lib/swiotlb.c Greg KH
` (91 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, Eric Piel
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, Wang Zhenyu, Adrian Bunk
[-- Attachment #1: agp-intel-agp-bugfix.patch --]
[-- Type: text/plain, Size: 2650 bytes --]
From: Dave Jones <davej@redhat.com>
On Sun, Feb 04, 2007 at 04:51:38PM +0100, Eric Piel wrote:
> Hello,
>
> I've got a regression in 2.6.20-rc7 (-rc6 was fine) due to commit
> 4b95320fc4d21b0ff2f8604305dd6c851aff6096 ([AGPGART] intel_agp: restore
> graphics device's pci space early in resume).
I think the key to this failure is the last line here ..
> agpgart-intel 0000:00:00.0: resuming
> PM: Writing back config space on device 0000:00:02.0 at offset f (was 10b, writing 0)
> PM: Writing back config space on device 0000:00:02.0 at offset d (was dc, writing 0)
> PM: Writing back config space on device 0000:00:02.0 at offset b (was 10161025, writing 0)
> PM: Writing back config space on device 0000:00:02.0 at offset 5 (was f4000000, writing 0)
> PM: Writing back config space on device 0000:00:02.0 at offset 4 (was f8000008, writing 0)
> PM: Writing back config space on device 0000:00:02.0 at offset 2 (was 3000011, writing 0)
> PM: Writing back config space on device 0000:00:02.0 at offset 1 (was 2b00007, writing 0)
> PM: Writing back config space on device 0000:00:02.0 at offset 0 (was 11328086, writing 0)
> agpgart: Unable to remap memory.
This then blows up the next access to intel_i810_private.registers, which happens to
be intel_i810_insert_entries.
Either we need .suspend methods which unmap these regions, or we need
to skip trying to map them a second time on resume.
There's an ugly patch below which does the latter. Give it a try?
The intel-agp suspend/resume code has really grown into something
of a monster, and could use some refactoring in a big way.
Dave
From: Dave Jones <davej@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/char/agp/intel-agp.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
--- linux-2.6.20.1.orig/drivers/char/agp/intel-agp.c
+++ linux-2.6.20.1/drivers/char/agp/intel-agp.c
@@ -117,13 +117,15 @@ static int intel_i810_configure(void)
current_size = A_SIZE_FIX(agp_bridge->current_size);
- pci_read_config_dword(intel_i810_private.i810_dev, I810_MMADDR, &temp);
- temp &= 0xfff80000;
-
- intel_i810_private.registers = ioremap(temp, 128 * 4096);
if (!intel_i810_private.registers) {
- printk(KERN_ERR PFX "Unable to remap memory.\n");
- return -ENOMEM;
+ pci_read_config_dword(intel_i810_private.i810_dev, I810_MMADDR, &temp);
+ temp &= 0xfff80000;
+
+ intel_i810_private.registers = ioremap(temp, 128 * 4096);
+ if (!intel_i810_private.registers) {
+ printk(KERN_ERR PFX "Unable to remap memory.\n");
+ return -ENOMEM;
+ }
}
if ((readl(intel_i810_private.registers+I810_DRAM_CTL)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 012/101] Missing critical phys_to_virt in lib/swiotlb.c
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (10 preceding siblings ...)
2007-03-07 17:10 ` [patch 011/101] AGP: intel-agp bugfix Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 013/101] USB: fix concurrent buffer access in the hub driver Greg KH
` (90 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, discuss, Jan Beulich,
David Moore, linux1394-devel, David Moore, Stefan Richter
[-- Attachment #1: missing-critical-phys_to_virt-in-lib-swiotlb.c.patch --]
[-- Type: text/plain, Size: 974 bytes --]
From: David Moore <dcm@acm.org>
Missing critical phys_to_virt in lib/swiotlb.c
Adds missing call to phys_to_virt() in the
lib/swiotlb.c:swiotlb_sync_sg() function. Without this change, a kernel
panic will always occur whenever a SWIOTLB bounce buffer from a
scatter-gather list gets synced. Affected are especially Intel x86_64
machines with more than about 3 GB RAM.
Signed-off-by: David Moore <dcm@acm.org>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
lib/swiotlb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/lib/swiotlb.c
+++ linux-2.6.20.1/lib/swiotlb.c
@@ -750,7 +750,7 @@ swiotlb_sync_sg(struct device *hwdev, st
for (i = 0; i < nelems; i++, sg++)
if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg))
- sync_single(hwdev, (void *) sg->dma_address,
+ sync_single(hwdev, phys_to_virt(sg->dma_address),
sg->dma_length, dir, target);
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 013/101] USB: fix concurrent buffer access in the hub driver
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (11 preceding siblings ...)
2007-03-07 17:10 ` [patch 012/101] Missing critical phys_to_virt in lib/swiotlb.c Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 014/101] USB audio fixes 1 Greg KH
` (89 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, Greg KH
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, USB development list,
Adrian Bunk, Alan Stern
[-- Attachment #1: usb-fix-concurrent-buffer-access-in-the-hub-driver.patch --]
[-- Type: text/plain, Size: 1819 bytes --]
This patch (as849) fixes a bug in the USB hub driver. A single
pre-allocated buffer is used for all port status reads, but nothing
guarantees exclusive use of the buffer. A mutex is added to provide
this guarantee.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/core/hub.c | 6 ++++++
1 file changed, 6 insertions(+)
--- linux-2.6.20.1.orig/drivers/usb/core/hub.c
+++ linux-2.6.20.1/drivers/usb/core/hub.c
@@ -44,6 +44,7 @@ struct usb_hub {
struct usb_hub_status hub;
struct usb_port_status port;
} *status; /* buffer for status reports */
+ struct mutex status_mutex; /* for the status buffer */
int error; /* last reported error */
int nerrors; /* track consecutive errors */
@@ -538,6 +539,7 @@ static int hub_hub_status(struct usb_hub
{
int ret;
+ mutex_lock(&hub->status_mutex);
ret = get_hub_status(hub->hdev, &hub->status->hub);
if (ret < 0)
dev_err (hub->intfdev,
@@ -547,6 +549,7 @@ static int hub_hub_status(struct usb_hub
*change = le16_to_cpu(hub->status->hub.wHubChange);
ret = 0;
}
+ mutex_unlock(&hub->status_mutex);
return ret;
}
@@ -620,6 +623,7 @@ static int hub_configure(struct usb_hub
ret = -ENOMEM;
goto fail;
}
+ mutex_init(&hub->status_mutex);
hub->descriptor = kmalloc(sizeof(*hub->descriptor), GFP_KERNEL);
if (!hub->descriptor) {
@@ -1418,6 +1422,7 @@ static int hub_port_status(struct usb_hu
{
int ret;
+ mutex_lock(&hub->status_mutex);
ret = get_port_status(hub->hdev, port1, &hub->status->port);
if (ret < 4) {
dev_err (hub->intfdev,
@@ -1429,6 +1434,7 @@ static int hub_port_status(struct usb_hu
*change = le16_to_cpu(hub->status->port.wPortChange);
ret = 0;
}
+ mutex_unlock(&hub->status_mutex);
return ret;
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 014/101] USB audio fixes 1
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (12 preceding siblings ...)
2007-03-07 17:10 ` [patch 013/101] USB: fix concurrent buffer access in the hub driver Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 015/101] USB audio fixes 2 Greg KH
` (88 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, Gregor Jasny, Takashi Iwai,
Jaroslav Kysela
[-- Attachment #1: usb-audio-fixes-1.patch --]
[-- Type: text/plain, Size: 1467 bytes --]
From: Takashi Iwai <tiwai@suse.de>
[PATCH] usbaudio - Fix Oops with broken usb descriptors
This is a patch for ALSA Bug #2724. Some webcams provide bogus
settings with no valid rates. With this patch those are skipped.
Signed-off-by: Gregor Jasny <gjasny@web.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
sound/usb/usbaudio.c | 6 ++++++
1 file changed, 6 insertions(+)
--- linux-2.6.20.1.orig/sound/usb/usbaudio.c
+++ linux-2.6.20.1/sound/usb/usbaudio.c
@@ -2456,6 +2456,7 @@ static int parse_audio_format_rates(stru
* build the rate table and bitmap flags
*/
int r, idx, c;
+ unsigned int nonzero_rates = 0;
/* this table corresponds to the SNDRV_PCM_RATE_XXX bit */
static unsigned int conv_rates[] = {
5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000,
@@ -2478,6 +2479,7 @@ static int parse_audio_format_rates(stru
fp->altsetting == 5 && fp->maxpacksize == 392)
rate = 96000;
fp->rate_table[r] = rate;
+ nonzero_rates |= rate;
if (rate < fp->rate_min)
fp->rate_min = rate;
else if (rate > fp->rate_max)
@@ -2493,6 +2495,10 @@ static int parse_audio_format_rates(stru
if (!found)
fp->needs_knot = 1;
}
+ if (!nonzero_rates) {
+ hwc_debug("All rates were zero. Skipping format!\n");
+ return -1;
+ }
if (fp->needs_knot)
fp->rates |= SNDRV_PCM_RATE_KNOT;
} else {
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 015/101] USB audio fixes 2
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (13 preceding siblings ...)
2007-03-07 17:10 ` [patch 014/101] USB audio fixes 1 Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 016/101] hda-intel - Dont try to probe invalid codecs Greg KH
` (87 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, Takashi Iwai
[-- Attachment #1: usb-audio-fixes-2.patch --]
[-- Type: text/plain, Size: 2519 bytes --]
From: Takashi Iwai <tiwai@suse.de>
[PATCH] usbaudio - Fix Oops with unconventional sample rates
The patch fixes the memory corruption by the support of unconventional
sample rates. Also, it avoids the too restrictive constraints if
any of usb descriptions contain continuous rates.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
sound/usb/usbaudio.c | 43 +++++++++++++++++++++++++------------------
1 file changed, 25 insertions(+), 18 deletions(-)
--- linux-2.6.20.1.orig/sound/usb/usbaudio.c
+++ linux-2.6.20.1/sound/usb/usbaudio.c
@@ -186,6 +186,7 @@ struct snd_usb_substream {
u64 formats; /* format bitmasks (all or'ed) */
unsigned int num_formats; /* number of supported audio formats (list) */
struct list_head fmt_list; /* format list */
+ struct snd_pcm_hw_constraint_list rate_list; /* limited rates */
spinlock_t lock;
struct snd_urb_ops ops; /* callbacks (must be filled at init) */
@@ -1810,28 +1811,33 @@ static int check_hw_params_convention(st
static int snd_usb_pcm_check_knot(struct snd_pcm_runtime *runtime,
struct snd_usb_substream *subs)
{
- struct list_head *p;
- struct snd_pcm_hw_constraint_list constraints_rates;
+ struct audioformat *fp;
+ int count = 0, needs_knot = 0;
int err;
- list_for_each(p, &subs->fmt_list) {
- struct audioformat *fp;
- fp = list_entry(p, struct audioformat, list);
-
- if (!fp->needs_knot)
- continue;
-
- constraints_rates.count = fp->nr_rates;
- constraints_rates.list = fp->rate_table;
- constraints_rates.mask = 0;
-
- err = snd_pcm_hw_constraint_list(runtime, 0,
- SNDRV_PCM_HW_PARAM_RATE,
- &constraints_rates);
+ list_for_each_entry(fp, &subs->fmt_list, list) {
+ if (fp->rates & SNDRV_PCM_RATE_CONTINUOUS)
+ return 0;
+ count += fp->nr_rates;
+ if (fp->needs_knot)
+ needs_knot = 1;
+ }
+ if (!needs_knot)
+ return 0;
- if (err < 0)
- return err;
+ subs->rate_list.count = count;
+ subs->rate_list.list = kmalloc(sizeof(int) * count, GFP_KERNEL);
+ subs->rate_list.mask = 0;
+ count = 0;
+ list_for_each_entry(fp, &subs->fmt_list, list) {
+ int i;
+ for (i = 0; i < fp->nr_rates; i++)
+ subs->rate_list.list[count++] = fp->rate_table[i];
}
+ err = snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+ &subs->rate_list);
+ if (err < 0)
+ return err;
return 0;
}
@@ -2231,6 +2237,7 @@ static void free_substream(struct snd_us
kfree(fp->rate_table);
kfree(fp);
}
+ kfree(subs->rate_list.list);
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 016/101] hda-intel - Dont try to probe invalid codecs
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (14 preceding siblings ...)
2007-03-07 17:10 ` [patch 015/101] USB audio fixes 2 Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 017/101] Fix various bugs with aligned reads in RAID5 Greg KH
` (86 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, Takashi Iwai, Jaroslav Kysela
[-- Attachment #1: hda-intel-don-t-try-to-probe-invalid-codecs.patch --]
[-- Type: text/plain, Size: 881 bytes --]
From: Takashi Iwai <tiwai@suse.de>
[ALSA] hda-intel - Don't try to probe invalid codecs
Fix the max number of codecs detected by HD-intel (and compatible)
controllers to 3. Some hardware reports extra bits as if
connected, and the driver gets confused to probe unexisting codecs.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
sound/pci/hda/hda_intel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/sound/pci/hda/hda_intel.c
+++ linux-2.6.20.1/sound/pci/hda/hda_intel.c
@@ -199,7 +199,7 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO
/* STATESTS int mask: SD2,SD1,SD0 */
#define STATESTS_INT_MASK 0x07
-#define AZX_MAX_CODECS 4
+#define AZX_MAX_CODECS 3
/* SD_CTL bits */
#define SD_CTL_STREAM_RESET 0x01 /* stream reset bit */
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 017/101] Fix various bugs with aligned reads in RAID5.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (15 preceding siblings ...)
2007-03-07 17:10 ` [patch 016/101] hda-intel - Dont try to probe invalid codecs Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 018/101] Fix ATM initcall ordering Greg KH
` (85 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, Kai, Andrew Morton
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, alan, Jens Axboe, Neil Brown
[-- Attachment #1: fix-various-bugs-with-aligned-reads-in-raid5.patch --]
[-- Type: text/plain, Size: 3276 bytes --]
From: Neil Brown <neilb@suse.de>
Fix various bugs with aligned reads in RAID5.
It is possible for raid5 to be sent a bio that is too big
for an underlying device. So if it is a READ that we
pass stright down to a device, it will fail and confuse
RAID5.
So in 'chunk_aligned_read' we check that the bio fits within the
parameters for the target device and if it doesn't fit, fall back
on reading through the stripe cache and making lots of one-page
requests.
Note that this is the earliest time we can check against the device
because earlier we don't have a lock on the device, so it could change
underneath us.
Also, the code for handling a retry through the cache when a read
fails has not been tested and was badly broken. This patch fixes that
code.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/md/raid5.c | 42 +++++++++++++++++++++++++++++++++++++++---
1 file changed, 39 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/drivers/md/raid5.c
+++ linux-2.6.20.1/drivers/md/raid5.c
@@ -2620,7 +2620,7 @@ static struct bio *remove_bio_from_retry
}
bi = conf->retry_read_aligned_list;
if(bi) {
- conf->retry_read_aligned = bi->bi_next;
+ conf->retry_read_aligned_list = bi->bi_next;
bi->bi_next = NULL;
bi->bi_phys_segments = 1; /* biased count of active stripes */
bi->bi_hw_segments = 0; /* count of processed stripes */
@@ -2669,6 +2669,27 @@ static int raid5_align_endio(struct bio
return 0;
}
+static int bio_fits_rdev(struct bio *bi)
+{
+ request_queue_t *q = bdev_get_queue(bi->bi_bdev);
+
+ if ((bi->bi_size>>9) > q->max_sectors)
+ return 0;
+ blk_recount_segments(q, bi);
+ if (bi->bi_phys_segments > q->max_phys_segments ||
+ bi->bi_hw_segments > q->max_hw_segments)
+ return 0;
+
+ if (q->merge_bvec_fn)
+ /* it's too hard to apply the merge_bvec_fn at this stage,
+ * just just give up
+ */
+ return 0;
+
+ return 1;
+}
+
+
static int chunk_aligned_read(request_queue_t *q, struct bio * raid_bio)
{
mddev_t *mddev = q->queuedata;
@@ -2715,6 +2736,13 @@ static int chunk_aligned_read(request_qu
align_bi->bi_flags &= ~(1 << BIO_SEG_VALID);
align_bi->bi_sector += rdev->data_offset;
+ if (!bio_fits_rdev(align_bi)) {
+ /* too big in some way */
+ bio_put(align_bi);
+ rdev_dec_pending(rdev, mddev);
+ return 0;
+ }
+
spin_lock_irq(&conf->device_lock);
wait_event_lock_irq(conf->wait_for_stripe,
conf->quiesce == 0,
@@ -3107,7 +3135,9 @@ static int retry_aligned_read(raid5_con
last_sector = raid_bio->bi_sector + (raid_bio->bi_size>>9);
for (; logical_sector < last_sector;
- logical_sector += STRIPE_SECTORS, scnt++) {
+ logical_sector += STRIPE_SECTORS,
+ sector += STRIPE_SECTORS,
+ scnt++) {
if (scnt < raid_bio->bi_hw_segments)
/* already done this stripe */
@@ -3123,7 +3153,13 @@ static int retry_aligned_read(raid5_con
}
set_bit(R5_ReadError, &sh->dev[dd_idx].flags);
- add_stripe_bio(sh, raid_bio, dd_idx, 0);
+ if (!add_stripe_bio(sh, raid_bio, dd_idx, 0)) {
+ release_stripe(sh);
+ raid_bio->bi_hw_segments = scnt;
+ conf->retry_read_aligned = raid_bio;
+ return handled;
+ }
+
handle_stripe(sh, NULL);
release_stripe(sh);
handled++;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 018/101] Fix ATM initcall ordering.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (16 preceding siblings ...)
2007-03-07 17:10 ` [patch 017/101] Fix various bugs with aligned reads in RAID5 Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 019/101] Fix TCP FIN handling Greg KH
` (84 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, bunk, Daniel Walker,
David S. Miller
[-- Attachment #1: fix-atm-initcall-ordering.patch --]
[-- Type: text/plain, Size: 1057 bytes --]
From: Daniel Walker <dwalker@mvista.com>
[ATM]: Fix for crash in adummy_init()
This was reported by Ingo Molnar here,
http://lkml.org/lkml/2006/12/18/119
The problem is that adummy_init() depends on atm_init() , but adummy_init()
is called first.
So I put atm_init() into subsys_initcall which seems appropriate, and it
will still get module_init() if it becomes a module.
Interesting to note that you could crash your system here if you just load
the modules in the wrong order.
Signed-off-by: Daniel Walker <dwalker@mvista.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/atm/common.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/net/atm/common.c
+++ linux-2.6.20.1/net/atm/common.c
@@ -816,7 +816,8 @@ static void __exit atm_exit(void)
proto_unregister(&vcc_proto);
}
-module_init(atm_init);
+subsys_initcall(atm_init);
+
module_exit(atm_exit);
MODULE_LICENSE("GPL");
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 019/101] Fix TCP FIN handling
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (17 preceding siblings ...)
2007-03-07 17:10 ` [patch 018/101] Fix ATM initcall ordering Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 020/101] Fix allocation failure handling in multicast Greg KH
` (83 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, bunk, John Heffner,
David S. Miller
[-- Attachment #1: fix-tcp-fin-handling.patch --]
[-- Type: text/plain, Size: 886 bytes --]
From: John Heffner <jheffner@psc.edu>
We can accidently spit out a huge burst of packets with TSO
when the FIN back is piggybacked onto the final packet.
[TCP]: Don't apply FIN exception to full TSO segments.
Signed-off-by: John Heffner <jheffner@psc.edu>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv4/tcp_output.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/net/ipv4/tcp_output.c
+++ linux-2.6.20.1/net/ipv4/tcp_output.c
@@ -965,7 +965,8 @@ static inline unsigned int tcp_cwnd_test
u32 in_flight, cwnd;
/* Don't be strict about the congestion window for the final FIN. */
- if (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN)
+ if ((TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN) &&
+ tcp_skb_pcount(skb) == 1)
return 1;
in_flight = tcp_packets_in_flight(tp);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 020/101] Fix allocation failure handling in multicast
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (18 preceding siblings ...)
2007-03-07 17:10 ` [patch 019/101] Fix TCP FIN handling Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 021/101] md: Avoid possible BUG_ON in md bitmap handling Greg KH
` (82 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, bunk, Alexey Dobriyan,
David S. Miller
[-- Attachment #1: fix-allocation-failure-handling-in-multicast.patch --]
[-- Type: text/plain, Size: 1154 bytes --]
From: Alexey Dobriyan <adobriyan@openvz.org>
[IPV4/IPV6] multicast: Check add_grhead() return value
add_grhead() allocates memory with GFP_ATOMIC and in at least two places skb
from it passed to skb_put() without checking.
Signed-off-by: Alexey Dobriyan <adobriyan@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv4/igmp.c | 2 ++
net/ipv6/mcast.c | 2 ++
2 files changed, 4 insertions(+)
--- linux-2.6.20.1.orig/net/ipv4/igmp.c
+++ linux-2.6.20.1/net/ipv4/igmp.c
@@ -455,6 +455,8 @@ static struct sk_buff *add_grec(struct s
skb = add_grhead(skb, pmc, type, &pgr);
first = 0;
}
+ if (!skb)
+ return NULL;
psrc = (__be32 *)skb_put(skb, sizeof(__be32));
*psrc = psf->sf_inaddr;
scount++; stotal++;
--- linux-2.6.20.1.orig/net/ipv6/mcast.c
+++ linux-2.6.20.1/net/ipv6/mcast.c
@@ -1582,6 +1582,8 @@ static struct sk_buff *add_grec(struct s
skb = add_grhead(skb, pmc, type, &pgr);
first = 0;
}
+ if (!skb)
+ return NULL;
psrc = (struct in6_addr *)skb_put(skb, sizeof(*psrc));
*psrc = psf->sf_addr;
scount++; stotal++;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 021/101] md: Avoid possible BUG_ON in md bitmap handling.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (19 preceding siblings ...)
2007-03-07 17:10 ` [patch 020/101] Fix allocation failure handling in multicast Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 022/101] Fix compile error for e500 core based processors Greg KH
` (81 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 UTC (permalink / raw)
To: linux-kernel, stable, akpm
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, alan, linux-raid, Neil Brown
[-- Attachment #1: md-avoid-possible-bug_on-in-md-bitmap-handling.patch --]
[-- Type: text/plain, Size: 2846 bytes --]
From: Neil Brown <neilb@suse.de>
md/bitmap tracks how many active write requests are pending on blocks
associated with each bit in the bitmap, so that it knows when it can
clear the bit (when count hits zero).
The counter has 14 bits of space, so if there are ever more than 16383,
we cannot cope.
Currently the code just calles BUG_ON as "all" drivers have request queue
limits much smaller than this.
However is seems that some don't. Apparently some multipath configurations
can allow more than 16383 concurrent write requests.
So, in this unlikely situation, instead of calling BUG_ON we now wait
for the count to drop down a bit. This requires a new wait_queue_head,
some waiting code, and a wakeup call.
Tested by limiting the counter to 20 instead of 16383 (writes go a lot slower
in that case...).
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
diff .prev/drivers/md/bitmap.c ./drivers/md/bitmap.c
---
drivers/md/bitmap.c | 22 +++++++++++++++++++++-
include/linux/raid/bitmap.h | 1 +
2 files changed, 22 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/md/bitmap.c
+++ linux-2.6.20.1/drivers/md/bitmap.c
@@ -1160,6 +1160,22 @@ int bitmap_startwrite(struct bitmap *bit
return 0;
}
+ if (unlikely((*bmc & COUNTER_MAX) == COUNTER_MAX)) {
+ DEFINE_WAIT(__wait);
+ /* note that it is safe to do the prepare_to_wait
+ * after the test as long as we do it before dropping
+ * the spinlock.
+ */
+ prepare_to_wait(&bitmap->overflow_wait, &__wait,
+ TASK_UNINTERRUPTIBLE);
+ spin_unlock_irq(&bitmap->lock);
+ bitmap->mddev->queue
+ ->unplug_fn(bitmap->mddev->queue);
+ schedule();
+ finish_wait(&bitmap->overflow_wait, &__wait);
+ continue;
+ }
+
switch(*bmc) {
case 0:
bitmap_file_set_bit(bitmap, offset);
@@ -1169,7 +1185,7 @@ int bitmap_startwrite(struct bitmap *bit
case 1:
*bmc = 2;
}
- BUG_ON((*bmc & COUNTER_MAX) == COUNTER_MAX);
+
(*bmc)++;
spin_unlock_irq(&bitmap->lock);
@@ -1207,6 +1223,9 @@ void bitmap_endwrite(struct bitmap *bitm
if (!success && ! (*bmc & NEEDED_MASK))
*bmc |= NEEDED_MASK;
+ if ((*bmc & COUNTER_MAX) == COUNTER_MAX)
+ wake_up(&bitmap->overflow_wait);
+
(*bmc)--;
if (*bmc <= 2) {
set_page_attr(bitmap,
@@ -1431,6 +1450,7 @@ int bitmap_create(mddev_t *mddev)
spin_lock_init(&bitmap->lock);
atomic_set(&bitmap->pending_writes, 0);
init_waitqueue_head(&bitmap->write_wait);
+ init_waitqueue_head(&bitmap->overflow_wait);
bitmap->mddev = mddev;
--- linux-2.6.20.1.orig/include/linux/raid/bitmap.h
+++ linux-2.6.20.1/include/linux/raid/bitmap.h
@@ -247,6 +247,7 @@ struct bitmap {
atomic_t pending_writes; /* pending writes to the bitmap file */
wait_queue_head_t write_wait;
+ wait_queue_head_t overflow_wait;
};
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 022/101] Fix compile error for e500 core based processors
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (20 preceding siblings ...)
2007-03-07 17:10 ` [patch 021/101] md: Avoid possible BUG_ON in md bitmap handling Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 023/101] ieee1394: video1394: DMA fix Greg KH
` (80 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, imr, linuxppc-embedded,
Kumar Gala
[-- Attachment #1: fix-compile-error-for-e500-core-based-processors.patch --]
[-- Type: text/plain, Size: 1269 bytes --]
From: Rojhalat Ibrahim <imr@rtschenk.de>
We get the following compiler error:
CC arch/ppc/kernel/ppc_ksyms.o
arch/ppc/kernel/ppc_ksyms.c:275: error: '__mtdcr' undeclared here (not in a function)
arch/ppc/kernel/ppc_ksyms.c:275: warning: type defaults to 'int' in declaration of '__mtdcr'
arch/ppc/kernel/ppc_ksyms.c:276: error: '__mfdcr' undeclared here (not in a function)
arch/ppc/kernel/ppc_ksyms.c:276: warning: type defaults to 'int' in declaration of '__mfdcr'
make[1]: *** [arch/ppc/kernel/ppc_ksyms.o] Error 1
This is due to the EXPORT_SYMBOL for __mtdcr/__mfdcr not having the proper CONFIG protection
Signed-off-by: Rojhalat Ibrahim <imr@rtschenk.de>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/ppc/kernel/ppc_ksyms.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/arch/ppc/kernel/ppc_ksyms.c
+++ linux-2.6.20.1/arch/ppc/kernel/ppc_ksyms.c
@@ -270,7 +270,7 @@ EXPORT_SYMBOL(mmu_hash_lock); /* For MOL
extern long *intercept_table;
EXPORT_SYMBOL(intercept_table);
#endif /* CONFIG_PPC_STD_MMU */
-#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
+#ifdef CONFIG_PPC_DCR_NATIVE
EXPORT_SYMBOL(__mtdcr);
EXPORT_SYMBOL(__mfdcr);
#endif
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 023/101] ieee1394: video1394: DMA fix
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (21 preceding siblings ...)
2007-03-07 17:10 ` [patch 022/101] Fix compile error for e500 core based processors Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:10 ` [patch 024/101] ieee1394: fix host device registering when nodemgr disabled Greg KH
` (79 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, linux1394-devel,
Stefan Richter, David Moore
[-- Attachment #1: ieee1394-video1394-dma-fix.patch --]
[-- Type: text/plain, Size: 1633 bytes --]
From: David Moore <dcm@acm.org>
This together with the phys_to_virt fix in lib/swiotlb.c::swiotlb_sync_sg
fixes video1394 DMA on machines with DMA bounce buffers, especially Intel
x86-64 machines with > 3GB RAM.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: David Moore <dcm@acm.org>
Tested-by: Nicolas Turro <Nicolas.Turro@inrialpes.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ieee1394/video1394.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- linux-2.6.20.1.orig/drivers/ieee1394/video1394.c
+++ linux-2.6.20.1/drivers/ieee1394/video1394.c
@@ -489,6 +489,9 @@ static void wakeup_dma_ir_ctx(unsigned l
reset_ir_status(d, i);
d->buffer_status[d->buffer_prg_assignment[i]] = VIDEO1394_BUFFER_READY;
do_gettimeofday(&d->buffer_time[d->buffer_prg_assignment[i]]);
+ dma_region_sync_for_cpu(&d->dma,
+ d->buffer_prg_assignment[i] * d->buf_size,
+ d->buf_size);
}
}
@@ -1096,6 +1099,8 @@ static long video1394_ioctl(struct file
DBGMSG(ohci->host->id, "Starting iso transmit DMA ctx=%d",
d->ctx);
put_timestamp(ohci, d, d->last_buffer);
+ dma_region_sync_for_device(&d->dma,
+ v.buffer * d->buf_size, d->buf_size);
/* Tell the controller where the first program is */
reg_write(ohci, d->cmdPtr,
@@ -1111,6 +1116,9 @@ static long video1394_ioctl(struct file
"Waking up iso transmit dma ctx=%d",
d->ctx);
put_timestamp(ohci, d, d->last_buffer);
+ dma_region_sync_for_device(&d->dma,
+ v.buffer * d->buf_size, d->buf_size);
+
reg_write(ohci, d->ctrlSet, 0x1000);
}
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 024/101] ieee1394: fix host device registering when nodemgr disabled
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (22 preceding siblings ...)
2007-03-07 17:10 ` [patch 023/101] ieee1394: video1394: DMA fix Greg KH
@ 2007-03-07 17:10 ` Greg KH
2007-03-07 17:11 ` [patch 025/101] Fix null pointer dereference in appledisplay driver Greg KH
` (78 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:10 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, torvalds, akpm, alan, linux1394-devel,
Stefan Richter
[-- Attachment #1: ieee1394-fix-host-device-registering-when-nodemgr-disabled.patch --]
[-- Type: text/plain, Size: 1855 bytes --]
From: Stefan Richter <stefanr@s5r6.in-berlin.de>
Since my commit 8252bbb1363b7fe963a3eb6f8a36da619a6f5a65 in 2.6.20-rc1,
host devices have a dummy driver attached. Alas the driver was not
registered before use if ieee1394 was loaded with disable_nodemgr=1.
This resulted in non-functional FireWire drivers or kernel lockup.
http://bugzilla.kernel.org/show_bug.cgi?id=7942
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ieee1394/nodemgr.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
--- linux-2.6.20.1.orig/drivers/ieee1394/nodemgr.c
+++ linux-2.6.20.1/drivers/ieee1394/nodemgr.c
@@ -274,7 +274,6 @@ static struct device_driver nodemgr_mid_
struct device nodemgr_dev_template_host = {
.bus = &ieee1394_bus_type,
.release = nodemgr_release_host,
- .driver = &nodemgr_mid_layer_driver,
};
@@ -1889,22 +1888,31 @@ int init_ieee1394_nodemgr(void)
error = class_register(&nodemgr_ne_class);
if (error)
- return error;
-
+ goto fail_ne;
error = class_register(&nodemgr_ud_class);
- if (error) {
- class_unregister(&nodemgr_ne_class);
- return error;
- }
+ if (error)
+ goto fail_ud;
error = driver_register(&nodemgr_mid_layer_driver);
+ if (error)
+ goto fail_ml;
+ /* This driver is not used if nodemgr is off (disable_nodemgr=1). */
+ nodemgr_dev_template_host.driver = &nodemgr_mid_layer_driver;
+
hpsb_register_highlevel(&nodemgr_highlevel);
return 0;
+
+fail_ml:
+ class_unregister(&nodemgr_ud_class);
+fail_ud:
+ class_unregister(&nodemgr_ne_class);
+fail_ne:
+ return error;
}
void cleanup_ieee1394_nodemgr(void)
{
hpsb_unregister_highlevel(&nodemgr_highlevel);
-
+ driver_unregister(&nodemgr_mid_layer_driver);
class_unregister(&nodemgr_ud_class);
class_unregister(&nodemgr_ne_class);
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 025/101] Fix null pointer dereference in appledisplay driver
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (23 preceding siblings ...)
2007-03-07 17:10 ` [patch 024/101] ieee1394: fix host device registering when nodemgr disabled Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 026/101] USB HID: Fix USB vendor and product IDs endianness for USB HID devices Greg KH
` (77 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, len.brown, cappaberra,
Michael Hanselmann
[-- Attachment #1: fix-null-pointer-dereference-in-appledisplay-driver.patch --]
[-- Type: text/plain, Size: 994 bytes --]
From: Michael Hanselmann <linux-kernel@hansmi.ch>
Commit 40b20c257a13c5a526ac540bc5e43d0fdf29792a by Len Brown introduced
a null pointer dereference in the appledisplay driver. This patch fixes
it.
Signed-off-by: Michael Hanselmann <linux-kernel@hansmi.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/misc/appledisplay.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/usb/misc/appledisplay.c
+++ linux-2.6.20.1/drivers/usb/misc/appledisplay.c
@@ -281,8 +281,8 @@ static int appledisplay_probe(struct usb
/* Register backlight device */
snprintf(bl_name, sizeof(bl_name), "appledisplay%d",
atomic_inc_return(&count_displays) - 1);
- pdata->bd = backlight_device_register(bl_name, NULL, NULL,
- &appledisplay_bl_data);
+ pdata->bd = backlight_device_register(bl_name, NULL,
+ pdata, &appledisplay_bl_data);
if (IS_ERR(pdata->bd)) {
err("appledisplay: Backlight registration failed");
goto error;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 026/101] USB HID: Fix USB vendor and product IDs endianness for USB HID devices
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (24 preceding siblings ...)
2007-03-07 17:11 ` [patch 025/101] Fix null pointer dereference in appledisplay driver Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 027/101] Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled Greg KH
` (76 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Julien BLACHE, Jiri Kosina
[-- Attachment #1: usb-hid-fix-usb-vendor-and-product-ids-endianness-for-usb-hid-devices.patch --]
[-- Type: text/plain, Size: 1078 bytes --]
From: Julien BLACHE <jb@jblache.org>
[PATCH] USB HID: Fix USB vendor and product IDs endianness for USB HID devices
The USB vendor and product IDs are not byteswapped appropriately, and
thus come out in the wrong endianness when fetched through the evdev
using ioctl() on big endian platforms.
Signed-off-by: Julien BLACHE <jb@jblache.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/input/hid-core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/usb/input/hid-core.c
+++ linux-2.6.20.1/drivers/usb/input/hid-core.c
@@ -1212,8 +1212,8 @@ static struct hid_device *usb_hid_config
le16_to_cpu(dev->descriptor.idProduct));
hid->bus = BUS_USB;
- hid->vendor = dev->descriptor.idVendor;
- hid->product = dev->descriptor.idProduct;
+ hid->vendor = le16_to_cpu(dev->descriptor.idVendor);
+ hid->product = le16_to_cpu(dev->descriptor.idProduct);
usb_make_path(dev, hid->phys, sizeof(hid->phys));
strlcat(hid->phys, "/input", sizeof(hid->phys));
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 027/101] Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (25 preceding siblings ...)
2007-03-07 17:11 ` [patch 026/101] USB HID: Fix USB vendor and product IDs endianness for USB HID devices Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-08 12:17 ` Blaisorblade
2007-03-07 17:11 ` [patch 028/101] MTD: Fatal regression in drivers/mtd/redboot.c in 2.6.20 Greg KH
` (75 subsequent siblings)
102 siblings, 1 reply; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Andrew Morton
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, Paolo Blaisorblade Giarrusso
[-- Attachment #1: kconfig-fault_injection-can-be-selected-only-if-lockdep-is-enabled.patch --]
[-- Type: text/plain, Size: 789 bytes --]
From: "Paolo 'Blaisorblade' Giarrusso" <blaisorblade@yahoo.it>
There is no prompt for STACKTRACE, so it is enabled only when 'select'ed.
FAULT_INJECTION depends on it, while LOCKDEP selects it. So FAULT_INJECTION
becomes visible in Kconfig only when LOCKDEP is enabled.
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
lib/Kconfig.debug | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/lib/Kconfig.debug
+++ linux-2.6.20.1/lib/Kconfig.debug
@@ -400,7 +400,7 @@ config LKDTM
config FAULT_INJECTION
bool "Fault-injection framework"
depends on DEBUG_KERNEL
- depends on STACKTRACE
+ select STACKTRACE
select FRAME_POINTER
help
Provide fault-injection framework.
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 028/101] MTD: Fatal regression in drivers/mtd/redboot.c in 2.6.20
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (26 preceding siblings ...)
2007-03-07 17:11 ` [patch 027/101] Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 029/101] IPV6: HASHTABLES: Use appropriate seed for caluculating ehash index Greg KH
` (74 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Andrew Morton,
David Woodhouse, Martin Michlmayr, Yoshinori Sato, Rod Whitby
[-- Attachment #1: mtd-fatal-regression-in-drivers-mtd-redboot.c-in-2.6.20.patch --]
[-- Type: text/plain, Size: 2161 bytes --]
From: David Woodhouse <dwmw2@infradead.org>
[MTD] Fix regression in RedBoot partition scanning
This fixes a regression introduced by the attempt to handle RedBoot FIS
tables which are smaller than an eraseblock, in commit
0b47d654089c5ce3f2ea26a4485db9bcead1e515
It moves the recalculation of the number of slots in the table to the
correct place, and improves the heuristic for when we think we need to
byte-swap what we read from the flash.
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Cc: Rod Whitby <rod@whitby.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/mtd/redboot.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
--- linux-2.6.20.1.orig/drivers/mtd/redboot.c
+++ linux-2.6.20.1/drivers/mtd/redboot.c
@@ -94,8 +94,19 @@ static int parse_redboot_partitions(stru
* (NOTE: this is 'size' not 'data_length'; size is
* the full size of the entry.)
*/
- if (swab32(buf[i].size) == master->erasesize) {
+
+ /* RedBoot can combine the FIS directory and
+ config partitions into a single eraseblock;
+ we assume wrong-endian if either the swapped
+ 'size' matches the eraseblock size precisely,
+ or if the swapped size actually fits in an
+ eraseblock while the unswapped size doesn't. */
+ if (swab32(buf[i].size) == master->erasesize ||
+ (buf[i].size > master->erasesize
+ && swab32(buf[i].size) < master->erasesize)) {
int j;
+ /* Update numslots based on actual FIS directory size */
+ numslots = swab32(buf[i].size) / sizeof (struct fis_image_desc);
for (j = 0; j < numslots; ++j) {
/* A single 0xff denotes a deleted entry.
@@ -120,11 +131,11 @@ static int parse_redboot_partitions(stru
swab32s(&buf[j].desc_cksum);
swab32s(&buf[j].file_cksum);
}
+ } else if (buf[i].size < master->erasesize) {
+ /* Update numslots based on actual FIS directory size */
+ numslots = buf[i].size / sizeof(struct fis_image_desc);
}
break;
- } else {
- /* re-calculate of real numslots */
- numslots = buf[i].size / sizeof(struct fis_image_desc);
}
}
if (i == numslots) {
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 029/101] IPV6: HASHTABLES: Use appropriate seed for caluculating ehash index.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (27 preceding siblings ...)
2007-03-07 17:11 ` [patch 028/101] MTD: Fatal regression in drivers/mtd/redboot.c in 2.6.20 Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 030/101] EHCI: turn off remote wakeup during shutdown Greg KH
` (73 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, davem
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, yoshfuji, netdev, handat
[-- Attachment #1: ipv6-hashtables-use-appropriate-seed-for-caluculating-ehash-index.patch --]
[-- Type: text/plain, Size: 1212 bytes --]
From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Tetsuo Handa <handat@pm.nttdata.co.jp> told me that connect(2) with TCPv6
socket almost always took a few minutes to return when we did not have any
ports available in the range of net.ipv4.ip_local_port_range.
The reason was that we used incorrect seed for calculating index of
hash when we check established sockets in __inet6_check_established().
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv6/inet6_hashtables.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/net/ipv6/inet6_hashtables.c
+++ linux-2.6.20.1/net/ipv6/inet6_hashtables.c
@@ -172,7 +172,7 @@ static int __inet6_check_established(str
const struct in6_addr *saddr = &np->daddr;
const int dif = sk->sk_bound_dev_if;
const __portpair ports = INET_COMBINED_PORTS(inet->dport, lport);
- const unsigned int hash = inet6_ehashfn(daddr, inet->num, saddr,
+ const unsigned int hash = inet6_ehashfn(daddr, lport, saddr,
inet->dport);
struct inet_ehash_bucket *head = inet_ehash_bucket(hinfo, hash);
struct sock *sk2;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 030/101] EHCI: turn off remote wakeup during shutdown
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (28 preceding siblings ...)
2007-03-07 17:11 ` [patch 029/101] IPV6: HASHTABLES: Use appropriate seed for caluculating ehash index Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 031/101] Avoid using nfsd process pools on SMP machines Greg KH
` (72 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Alan Stern
[-- Attachment #1: ehci-turn-off-remote-wakeup-during-shutdown.patch --]
[-- Type: text/plain, Size: 1709 bytes --]
From: Alan Stern <stern@rowland.harvard.edu>
This patch (as850b) disables remote wakeup (and everything else!) on
all EHCI ports when the shutdown() method is called. If remote wakeup
is left active then some systems will reboot instead of powering off.
This fixes Bugzilla #7828.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/host/ehci-hcd.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
--- linux-2.6.20.1.orig/drivers/usb/host/ehci-hcd.c
+++ linux-2.6.20.1/drivers/usb/host/ehci-hcd.c
@@ -296,6 +296,18 @@ static void ehci_watchdog (unsigned long
spin_unlock_irqrestore (&ehci->lock, flags);
}
+/* On some systems, leaving remote wakeup enabled prevents system shutdown.
+ * The firmware seems to think that powering off is a wakeup event!
+ * This routine turns off remote wakeup and everything else, on all ports.
+ */
+static void ehci_turn_off_all_ports(struct ehci_hcd *ehci)
+{
+ int port = HCS_N_PORTS(ehci->hcs_params);
+
+ while (port--)
+ writel(PORT_RWC_BITS, &ehci->regs->port_status[port]);
+}
+
/* ehci_shutdown kick in for silicon on any bus (not just pci, etc).
* This forcibly disables dma and IRQs, helping kexec and other cases
* where the next system software may expect clean state.
@@ -307,9 +319,13 @@ ehci_shutdown (struct usb_hcd *hcd)
ehci = hcd_to_ehci (hcd);
(void) ehci_halt (ehci);
+ ehci_turn_off_all_ports(ehci);
/* make BIOS/etc use companion controller during reboot */
writel (0, &ehci->regs->configured_flag);
+
+ /* unblock posted writes */
+ readl(&ehci->regs->configured_flag);
}
static void ehci_port_power (struct ehci_hcd *ehci, int is_on)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 031/101] Avoid using nfsd process pools on SMP machines.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (29 preceding siblings ...)
2007-03-07 17:11 ` [patch 030/101] EHCI: turn off remote wakeup during shutdown Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 032/101] Fix recently introduced problem with shutting down a busy NFS server Greg KH
` (71 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Neil Brown
[-- Attachment #1: avoid-using-nfsd-process-pools-on-smp-machines.patch --]
[-- Type: text/plain, Size: 1021 bytes --]
From: NeilBrown <neilb@suse.de>
process-pools have real benefits for NUMA, but on SMP
machines they only work if network interface interrupts
go to all CPUs (via round-robin or multiple nics). This is
not always the case, so disable the pools in this case until
a better solution is developped.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
diff .prev/net/sunrpc/svc.c ./net/sunrpc/svc.c
---
net/sunrpc/svc.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/net/sunrpc/svc.c
+++ linux-2.6.20.1/net/sunrpc/svc.c
@@ -79,7 +79,11 @@ svc_pool_map_choose_mode(void)
* x86_64 kernel on Xeons. In this case we
* want to divide the pools on cpu boundaries.
*/
- return SVC_POOL_PERCPU;
+ /* actually, unless your IRQs round-robin nicely,
+ * this turns out to be really bad, so just
+ * go GLOBAL for now until a better fix can be developped
+ */
+ return SVC_POOL_GLOBAL;
}
/* default: one global pool */
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 032/101] Fix recently introduced problem with shutting down a busy NFS server.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (30 preceding siblings ...)
2007-03-07 17:11 ` [patch 031/101] Avoid using nfsd process pools on SMP machines Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 033/101] UHCI: fix port resume problem Greg KH
` (70 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Neil Brown
[-- Attachment #1: fix-recently-introduced-problem-with-shutting-down-a-busy-nfs-server.patch --]
[-- Type: text/plain, Size: 3715 bytes --]
From: NeilBrown <neilb@suse.de>
When the last thread of nfsd exits, it shuts down all related sockets.
It currently uses svc_close_socket to do this, but that only is
immediately effective if the socket is not SK_BUSY.
If the socket is busy - i.e. if a request has arrived that has not yet
been processes - svc_close_socket is not effective and the shutdown
process spins.
So create a new svc_force_close_socket which removes the SK_BUSY flag
is set and then calls svc_close_socket.
Also change some open-codes loops in svc_destroy to use
list_for_each_entry_safe.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/linux/sunrpc/svcsock.h | 2 +-
net/sunrpc/svc.c | 23 ++++++++++-------------
net/sunrpc/svcsock.c | 16 +++++++++++++++-
3 files changed, 26 insertions(+), 15 deletions(-)
--- linux-2.6.20.1.orig/include/linux/sunrpc/svcsock.h
+++ linux-2.6.20.1/include/linux/sunrpc/svcsock.h
@@ -63,7 +63,7 @@ struct svc_sock {
* Function prototypes.
*/
int svc_makesock(struct svc_serv *, int, unsigned short);
-void svc_close_socket(struct svc_sock *);
+void svc_force_close_socket(struct svc_sock *);
int svc_recv(struct svc_rqst *, long);
int svc_send(struct svc_rqst *);
void svc_drop(struct svc_rqst *);
--- linux-2.6.20.1.orig/net/sunrpc/svc.c
+++ linux-2.6.20.1/net/sunrpc/svc.c
@@ -371,6 +371,7 @@ void
svc_destroy(struct svc_serv *serv)
{
struct svc_sock *svsk;
+ struct svc_sock *tmp;
dprintk("RPC: svc_destroy(%s, %d)\n",
serv->sv_program->pg_name,
@@ -386,22 +387,18 @@ svc_destroy(struct svc_serv *serv)
del_timer_sync(&serv->sv_temptimer);
- while (!list_empty(&serv->sv_tempsocks)) {
- svsk = list_entry(serv->sv_tempsocks.next,
- struct svc_sock,
- sk_list);
- svc_close_socket(svsk);
- }
+ list_for_each_entry_safe(svsk, tmp, &serv->sv_tempsocks, sk_list)
+ svc_force_close_socket(svsk);
+
if (serv->sv_shutdown)
serv->sv_shutdown(serv);
- while (!list_empty(&serv->sv_permsocks)) {
- svsk = list_entry(serv->sv_permsocks.next,
- struct svc_sock,
- sk_list);
- svc_close_socket(svsk);
- }
-
+ list_for_each_entry_safe(svsk, tmp, &serv->sv_permsocks, sk_list)
+ svc_force_close_socket(svsk);
+
+ BUG_ON(!list_empty(&serv->sv_permsocks));
+ BUG_ON(!list_empty(&serv->sv_tempsocks));
+
cache_clean_deferred(serv);
/* Unregister service with the portmapper */
--- linux-2.6.20.1.orig/net/sunrpc/svcsock.c
+++ linux-2.6.20.1/net/sunrpc/svcsock.c
@@ -80,6 +80,7 @@ static void svc_delete_socket(struct sv
static void svc_udp_data_ready(struct sock *, int);
static int svc_udp_recvfrom(struct svc_rqst *);
static int svc_udp_sendto(struct svc_rqst *);
+static void svc_close_socket(struct svc_sock *svsk);
static struct svc_deferred_req *svc_deferred_dequeue(struct svc_sock *svsk);
static int svc_deferred_recv(struct svc_rqst *rqstp);
@@ -1668,7 +1669,7 @@ svc_delete_socket(struct svc_sock *svsk)
spin_unlock_bh(&serv->sv_lock);
}
-void svc_close_socket(struct svc_sock *svsk)
+static void svc_close_socket(struct svc_sock *svsk)
{
set_bit(SK_CLOSE, &svsk->sk_flags);
if (test_and_set_bit(SK_BUSY, &svsk->sk_flags))
@@ -1681,6 +1682,19 @@ void svc_close_socket(struct svc_sock *s
svc_sock_put(svsk);
}
+void svc_force_close_socket(struct svc_sock *svsk)
+{
+ set_bit(SK_CLOSE, &svsk->sk_flags);
+ if (test_bit(SK_BUSY, &svsk->sk_flags)) {
+ /* Waiting to be processed, but no threads left,
+ * So just remove it from the waiting list
+ */
+ list_del_init(&svsk->sk_ready);
+ clear_bit(SK_BUSY, &svsk->sk_flags);
+ }
+ svc_close_socket(svsk);
+}
+
/*
* Make a socket for nfsd and lockd
*/
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 033/101] UHCI: fix port resume problem
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (31 preceding siblings ...)
2007-03-07 17:11 ` [patch 032/101] Fix recently introduced problem with shutting down a busy NFS server Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 034/101] Fix atmarp.h for userspace Greg KH
` (69 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Greg KH
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, Guilherme Salgado,
USB development list, Alan Stern
[-- Attachment #1: uhci-fix-port-resume-problem.patch --]
[-- Type: text/plain, Size: 2096 bytes --]
From: Alan Stern <stern@rowland.harvard.edu>
This patch (as863) fixes a problem encountered sometimes when resuming
a port on a UHCI controller. The hardware may turn off the
Resume-Detect bit before turning off the Suspend bit, leading usbcore
to think that the port is still suspended and the resume has failed.
The patch makes uhci_finish_suspend() wait until both bits are safely
off.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/host/uhci-hub.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
--- linux-2.6.20.1.orig/drivers/usb/host/uhci-hub.c
+++ linux-2.6.20.1/drivers/usb/host/uhci-hub.c
@@ -33,6 +33,9 @@ static __u8 root_hub_hub_des[] =
/* status change bits: nonzero writes will clear */
#define RWC_BITS (USBPORTSC_OCC | USBPORTSC_PEC | USBPORTSC_CSC)
+/* suspend/resume bits: port suspended or port resuming */
+#define SUSPEND_BITS (USBPORTSC_SUSP | USBPORTSC_RD)
+
/* A port that either is connected or has a changed-bit set will prevent
* us from AUTO_STOPPING.
*/
@@ -96,8 +99,8 @@ static void uhci_finish_suspend(struct u
int status;
int i;
- if (inw(port_addr) & (USBPORTSC_SUSP | USBPORTSC_RD)) {
- CLR_RH_PORTSTAT(USBPORTSC_SUSP | USBPORTSC_RD);
+ if (inw(port_addr) & SUSPEND_BITS) {
+ CLR_RH_PORTSTAT(SUSPEND_BITS);
if (test_bit(port, &uhci->resuming_ports))
set_bit(port, &uhci->port_c_suspend);
@@ -107,7 +110,7 @@ static void uhci_finish_suspend(struct u
* Experiments show that some controllers take longer, so
* we'll poll for completion. */
for (i = 0; i < 10; ++i) {
- if (!(inw(port_addr) & USBPORTSC_RD))
+ if (!(inw(port_addr) & SUSPEND_BITS))
break;
udelay(1);
}
@@ -289,7 +292,7 @@ static int uhci_hub_control(struct usb_h
wPortStatus |= USB_PORT_STAT_CONNECTION;
if (status & USBPORTSC_PE) {
wPortStatus |= USB_PORT_STAT_ENABLE;
- if (status & (USBPORTSC_SUSP | USBPORTSC_RD))
+ if (status & SUSPEND_BITS)
wPortStatus |= USB_PORT_STAT_SUSPEND;
}
if (status & USBPORTSC_OC)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 034/101] Fix atmarp.h for userspace
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (32 preceding siblings ...)
2007-03-07 17:11 ` [patch 033/101] UHCI: fix port resume problem Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 035/101] Clear TCP segmentation offload state in ipt_REJECT Greg KH
` (68 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, David S. Miller
[-- Attachment #1: fix-atmarp.h-for-userspace.patch --]
[-- Type: text/plain, Size: 631 bytes --]
From: David Miller <davem@davemloft.net>
[ATM]: atmarp.h needs to always include linux/types.h
To provide the __be* types, even for userspace includes.
Reported by Andrew Walrond.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/linux/atmarp.h | 2 --
1 file changed, 2 deletions(-)
--- linux-2.6.20.1.orig/include/linux/atmarp.h
+++ linux-2.6.20.1/include/linux/atmarp.h
@@ -6,9 +6,7 @@
#ifndef _LINUX_ATMARP_H
#define _LINUX_ATMARP_H
-#ifdef __KERNEL__
#include <linux/types.h>
-#endif
#include <linux/atmapi.h>
#include <linux/atmioc.h>
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 035/101] Clear TCP segmentation offload state in ipt_REJECT
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (33 preceding siblings ...)
2007-03-07 17:11 ` [patch 034/101] Fix atmarp.h for userspace Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 036/101] Fix IPX module unload Greg KH
` (67 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, Herbert Xu,
David S. Miller
[-- Attachment #1: clear-tcp-segmentation-offload-state-in-ipt_reject.patch --]
[-- Type: text/plain, Size: 950 bytes --]
From: Herbert Xu <herbert@gondor.apana.org.au>
[NETFILTER]: Clear GSO bits for TCP reset packet
The TCP reset packet is copied from the original. This
includes all the GSO bits which do not apply to the new
packet. So we should clear those bits.
Spotted by Patrick McHardy.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv4/netfilter/ipt_REJECT.c | 4 ++++
1 file changed, 4 insertions(+)
--- linux-2.6.20.1.orig/net/ipv4/netfilter/ipt_REJECT.c
+++ linux-2.6.20.1/net/ipv4/netfilter/ipt_REJECT.c
@@ -79,6 +79,10 @@ static void send_reset(struct sk_buff *o
nskb->mark = 0;
skb_init_secmark(nskb);
+ skb_shinfo(nskb)->gso_size = 0;
+ skb_shinfo(nskb)->gso_segs = 0;
+ skb_shinfo(nskb)->gso_type = 0;
+
tcph = (struct tcphdr *)((u_int32_t*)nskb->nh.iph + nskb->nh.iph->ihl);
/* Swap source and dest */
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 036/101] Fix IPX module unload
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (34 preceding siblings ...)
2007-03-07 17:11 ` [patch 035/101] Clear TCP segmentation offload state in ipt_REJECT Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 037/101] : Prevent pseudo garbage in SYNs advertized window Greg KH
` (66 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, Jiri Bohac,
David S. Miller
[-- Attachment #1: fix-ipx-module-unload.patch --]
[-- Type: text/plain, Size: 1573 bytes --]
From: Jiri Bohac <jbohac@suse.cz>
[IPX]: Fix NULL pointer dereference on ipx unload
Fixes a null pointer dereference when unloading the ipx module.
On initialization of the ipx module, registering certain packet
types can fail. When this happens, unloading the module later
dereferences NULL pointers. This patch fixes that. Please apply.
Signed-off-by: Jiri Bohac <jbohac@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipx/af_ipx.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
--- linux-2.6.20.1.orig/net/ipx/af_ipx.c
+++ linux-2.6.20.1/net/ipx/af_ipx.c
@@ -2035,19 +2035,27 @@ static void __exit ipx_proto_finito(void
ipxitf_cleanup();
- unregister_snap_client(pSNAP_datalink);
- pSNAP_datalink = NULL;
-
- unregister_8022_client(p8022_datalink);
- p8022_datalink = NULL;
+ if (pSNAP_datalink) {
+ unregister_snap_client(pSNAP_datalink);
+ pSNAP_datalink = NULL;
+ }
+
+ if (p8022_datalink) {
+ unregister_8022_client(p8022_datalink);
+ p8022_datalink = NULL;
+ }
dev_remove_pack(&ipx_8023_packet_type);
- destroy_8023_client(p8023_datalink);
- p8023_datalink = NULL;
+ if (p8023_datalink) {
+ destroy_8023_client(p8023_datalink);
+ p8023_datalink = NULL;
+ }
dev_remove_pack(&ipx_dix_packet_type);
- destroy_EII_client(pEII_datalink);
- pEII_datalink = NULL;
+ if (pEII_datalink) {
+ destroy_EII_client(pEII_datalink);
+ pEII_datalink = NULL;
+ }
proto_unregister(&ipx_proto);
sock_unregister(ipx_family_ops.family);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 037/101] : Prevent pseudo garbage in SYNs advertized window
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (35 preceding siblings ...)
2007-03-07 17:11 ` [patch 036/101] Fix IPX module unload Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 038/101] Fix oops in xfrm_audit_log() Greg KH
` (65 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Ilpo JÀrvinen,
David S. Miller
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: prevent-pseudo-garbage-in-syn-s-advertized-window.patch --]
[-- Type: text/plain, Size: 1996 bytes --]
From: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
TCP may advertize up to 16-bits window in SYN packets (no window
scaling allowed). At the same time, TCP may have rcv_wnd
(32-bits) that does not fit to 16-bits without window scaling
resulting in pseudo garbage into advertized window from the
low-order bits of rcv_wnd. This can happen at least when
mss <= (1<<wscale) (see tcp_select_initial_window). This patch
fixes the handling of SYN advertized windows (compile tested
only).
In worst case (which is unlikely to occur though), the receiver
advertized window could be just couple of bytes. I'm not sure
that such situation would be handled very well at all by the
receiver!? Fortunately, the situation normalizes after the
first non-SYN ACK is received because it has the correct,
scaled window.
Alternatively, tcp_select_initial_window could be changed to
prevent too large rcv_wnd in the first place.
[ tcp_make_synack() has the same bug, and I've added a fix for
that to this patch -DaveM ]
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv4/tcp_output.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/net/ipv4/tcp_output.c
+++ linux-2.6.20.1/net/ipv4/tcp_output.c
@@ -481,7 +481,7 @@ static int tcp_transmit_skb(struct sock
/* RFC1323: The window in SYN & SYN/ACK segments
* is never scaled.
*/
- th->window = htons(tp->rcv_wnd);
+ th->window = htons(min(tp->rcv_wnd, 65535U));
} else {
th->window = htons(tcp_select_window(sk));
}
@@ -2160,7 +2160,7 @@ struct sk_buff * tcp_make_synack(struct
}
/* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */
- th->window = htons(req->rcv_wnd);
+ th->window = htons(min(req->rcv_wnd, 65535U));
TCP_SKB_CB(skb)->when = tcp_time_stamp;
tcp_syn_build_options((__be32 *)(th + 1), dst_metric(dst, RTAX_ADVMSS), ireq->tstamp_ok,
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 038/101] Fix oops in xfrm_audit_log()
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (36 preceding siblings ...)
2007-03-07 17:11 ` [patch 037/101] : Prevent pseudo garbage in SYNs advertized window Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 039/101] sky2: dont flush good pause frames Greg KH
` (64 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, David S. Miller
[-- Attachment #1: fix-oops-in-xfrm_audit_log.patch --]
[-- Type: text/plain, Size: 2661 bytes --]
From: David Miller <davem@davemloft.net>
[XFRM]: Fix OOPSes in xfrm_audit_log().
Make sure that this function is called correctly, and
add BUG() checking to ensure the arguments are sane.
Based upon a patch by Joy Latten.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/key/af_key.c | 11 ++++++-----
net/xfrm/xfrm_policy.c | 7 ++++++-
net/xfrm/xfrm_user.c | 12 +++++++-----
3 files changed, 19 insertions(+), 11 deletions(-)
--- linux-2.6.20.1.orig/net/key/af_key.c
+++ linux-2.6.20.1/net/key/af_key.c
@@ -2297,16 +2297,17 @@ static int pfkey_spddelete(struct sock *
&sel, tmp.security, 1);
security_xfrm_policy_free(&tmp);
- xfrm_audit_log(audit_get_loginuid(current->audit_context), 0,
- AUDIT_MAC_IPSEC_DELSPD, (xp) ? 1 : 0, xp, NULL);
-
if (xp == NULL)
return -ENOENT;
- err = 0;
+ err = security_xfrm_policy_delete(xp);
- if ((err = security_xfrm_policy_delete(xp)))
+ xfrm_audit_log(audit_get_loginuid(current->audit_context), 0,
+ AUDIT_MAC_IPSEC_DELSPD, err ? 0 : 1, xp, NULL);
+
+ if (err)
goto out;
+
c.seq = hdr->sadb_msg_seq;
c.pid = hdr->sadb_msg_pid;
c.event = XFRM_MSG_DELPOLICY;
--- linux-2.6.20.1.orig/net/xfrm/xfrm_policy.c
+++ linux-2.6.20.1/net/xfrm/xfrm_policy.c
@@ -1997,9 +1997,14 @@ void xfrm_audit_log(uid_t auid, u32 sid,
if (audit_enabled == 0)
return;
+ BUG_ON((type == AUDIT_MAC_IPSEC_ADDSA ||
+ type == AUDIT_MAC_IPSEC_DELSA) && !x);
+ BUG_ON((type == AUDIT_MAC_IPSEC_ADDSPD ||
+ type == AUDIT_MAC_IPSEC_DELSPD) && !xp);
+
audit_buf = audit_log_start(current->audit_context, GFP_ATOMIC, type);
if (audit_buf == NULL)
- return;
+ return;
switch(type) {
case AUDIT_MAC_IPSEC_ADDSA:
--- linux-2.6.20.1.orig/net/xfrm/xfrm_user.c
+++ linux-2.6.20.1/net/xfrm/xfrm_user.c
@@ -1273,10 +1273,6 @@ static int xfrm_get_policy(struct sk_buf
xp = xfrm_policy_bysel_ctx(type, p->dir, &p->sel, tmp.security, delete);
security_xfrm_policy_free(&tmp);
}
- if (delete)
- xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid,
- AUDIT_MAC_IPSEC_DELSPD, (xp) ? 1 : 0, xp, NULL);
-
if (xp == NULL)
return -ENOENT;
@@ -1292,8 +1288,14 @@ static int xfrm_get_policy(struct sk_buf
MSG_DONTWAIT);
}
} else {
- if ((err = security_xfrm_policy_delete(xp)) != 0)
+ err = security_xfrm_policy_delete(xp);
+
+ xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid,
+ AUDIT_MAC_IPSEC_DELSPD, err ? 0 : 1, xp, NULL);
+
+ if (err != 0)
goto out;
+
c.data.byid = p->index;
c.event = nlh->nlmsg_type;
c.seq = nlh->nlmsg_seq;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 039/101] sky2: dont flush good pause frames
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (37 preceding siblings ...)
2007-03-07 17:11 ` [patch 038/101] Fix oops in xfrm_audit_log() Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 040/101] sky2: transmit timeout deadlock Greg KH
` (63 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Stephen Hemminger
[-- Attachment #1: sky2-pause-flush.patch --]
[-- Type: text/plain, Size: 781 bytes --]
From: Stephen Hemminger <shemminger@linux-foundation.org>
Don't mark pause frames as errors. This problem caused transmitter not
to pause and would effectively take out a gigabit switch because the
it can't handle overrun.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/sky2.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/net/sky2.h
+++ linux-2.6.20.1/drivers/net/sky2.h
@@ -1579,7 +1579,7 @@ enum {
GMR_FS_ANY_ERR = GMR_FS_RX_FF_OV | GMR_FS_CRC_ERR |
GMR_FS_FRAGMENT | GMR_FS_LONG_ERR |
- GMR_FS_MII_ERR | GMR_FS_GOOD_FC | GMR_FS_BAD_FC |
+ GMR_FS_MII_ERR | GMR_FS_BAD_FC |
GMR_FS_UN_SIZE | GMR_FS_JABBER,
};
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 040/101] sky2: transmit timeout deadlock
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (38 preceding siblings ...)
2007-03-07 17:11 ` [patch 039/101] sky2: dont flush good pause frames Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 041/101] x86_64: Fix wrong gcc check in bitops.h Greg KH
` (62 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Stephen Hemminger
[-- Attachment #1: sky2-tx-timeout-deadlock.patch --]
[-- Type: text/plain, Size: 1309 bytes --]
From: Stephen Hemminger <shemminger@linux-foundation.org>
The code in transmit timeout incorrectly assumed that netif_tx_lock
was not set.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/sky2.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
--- linux-2.6.20.1.orig/drivers/net/sky2.c
+++ linux-2.6.20.1/drivers/net/sky2.c
@@ -1796,6 +1796,7 @@ out:
/* Transmit timeout is only called if we are running, carries is up
* and tx queue is full (stopped).
+ * Called with netif_tx_lock held.
*/
static void sky2_tx_timeout(struct net_device *dev)
{
@@ -1821,17 +1822,14 @@ static void sky2_tx_timeout(struct net_d
sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_START);
} else if (report != sky2->tx_cons) {
printk(KERN_INFO PFX "status report lost?\n");
-
- netif_tx_lock_bh(dev);
sky2_tx_complete(sky2, report);
- netif_tx_unlock_bh(dev);
} else {
printk(KERN_INFO PFX "hardware hung? flushing\n");
sky2_write32(hw, Q_ADDR(txq, Q_CSR), BMU_STOP);
sky2_write32(hw, Y2_QADDR(txq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET);
- sky2_tx_clean(dev);
+ sky2_tx_complete(sky2, sky2->tx_prod);
sky2_qset(hw, txq);
sky2_prefetch_init(hw, txq, sky2->tx_le_map, TX_RING_SIZE - 1);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 041/101] x86_64: Fix wrong gcc check in bitops.h
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (39 preceding siblings ...)
2007-03-07 17:11 ` [patch 040/101] sky2: transmit timeout deadlock Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 042/101] x86: Dont require the vDSO for handling a.out signals Greg KH
` (61 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Andi Kleen
[-- Attachment #1: x86_64-fix-wrong-gcc-check-in-bitops.h.patch --]
[-- Type: text/plain, Size: 622 bytes --]
gcc 5.0 will likely not have the constraint problem
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/asm-x86_64/bitops.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/include/asm-x86_64/bitops.h
+++ linux-2.6.20.1/include/asm-x86_64/bitops.h
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
-#if __GNUC__ < 4 || __GNUC_MINOR__ < 1
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
/* Technically wrong, but this avoids compilation errors on some gcc
versions. */
#define ADDR "=m" (*(volatile long *) addr)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 042/101] x86: Dont require the vDSO for handling a.out signals
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (40 preceding siblings ...)
2007-03-07 17:11 ` [patch 041/101] x86_64: Fix wrong gcc check in bitops.h Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 043/101] i386: Fix broken CONFIG_COMPAT_VDSO on i386 Greg KH
` (60 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Andi Kleen
[-- Attachment #1: x86-don-t-require-the-vdso-for-handling-a.out-signals.patch --]
[-- Type: text/plain, Size: 2693 bytes --]
From: Andi Kleen <ak@suse.de>
x86: Don't require the vDSO for handling a.out signals
and in other strange binfmts. vDSO is not necessarily mapped there.
This fixes signals in a.out programs
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/i386/kernel/signal.c | 6 +++++-
arch/x86_64/ia32/ia32_signal.c | 7 ++++++-
fs/binfmt_elf.c | 3 ++-
include/linux/binfmts.h | 1 +
4 files changed, 14 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/arch/i386/kernel/signal.c
+++ linux-2.6.20.1/arch/i386/kernel/signal.c
@@ -21,6 +21,7 @@
#include <linux/suspend.h>
#include <linux/ptrace.h>
#include <linux/elf.h>
+#include <linux/binfmts.h>
#include <asm/processor.h>
#include <asm/ucontext.h>
#include <asm/uaccess.h>
@@ -349,7 +350,10 @@ static int setup_frame(int sig, struct k
goto give_sigsegv;
}
- restorer = (void *)VDSO_SYM(&__kernel_sigreturn);
+ if (current->binfmt->hasvdso)
+ restorer = (void *)VDSO_SYM(&__kernel_sigreturn);
+ else
+ restorer = (void *)&frame->retcode;
if (ka->sa.sa_flags & SA_RESTORER)
restorer = ka->sa.sa_restorer;
--- linux-2.6.20.1.orig/arch/x86_64/ia32/ia32_signal.c
+++ linux-2.6.20.1/arch/x86_64/ia32/ia32_signal.c
@@ -21,6 +21,7 @@
#include <linux/stddef.h>
#include <linux/personality.h>
#include <linux/compat.h>
+#include <linux/binfmts.h>
#include <asm/ucontext.h>
#include <asm/uaccess.h>
#include <asm/i387.h>
@@ -449,7 +450,11 @@ int ia32_setup_frame(int sig, struct k_s
/* Return stub is in 32bit vsyscall page */
{
- void __user *restorer = VSYSCALL32_SIGRETURN;
+ void __user *restorer;
+ if (current->binfmt->hasvdso)
+ restorer = VSYSCALL32_SIGRETURN;
+ else
+ restorer = (void *)&frame->retcode;
if (ka->sa.sa_flags & SA_RESTORER)
restorer = ka->sa.sa_restorer;
err |= __put_user(ptr_to_compat(restorer), &frame->pretcode);
--- linux-2.6.20.1.orig/fs/binfmt_elf.c
+++ linux-2.6.20.1/fs/binfmt_elf.c
@@ -76,7 +76,8 @@ static struct linux_binfmt elf_format =
.load_binary = load_elf_binary,
.load_shlib = load_elf_library,
.core_dump = elf_core_dump,
- .min_coredump = ELF_EXEC_PAGESIZE
+ .min_coredump = ELF_EXEC_PAGESIZE,
+ .hasvdso = 1
};
#define BAD_ADDR(x) ((unsigned long)(x) >= TASK_SIZE)
--- linux-2.6.20.1.orig/include/linux/binfmts.h
+++ linux-2.6.20.1/include/linux/binfmts.h
@@ -59,6 +59,7 @@ struct linux_binfmt {
int (*load_shlib)(struct file *);
int (*core_dump)(long signr, struct pt_regs * regs, struct file * file);
unsigned long min_coredump; /* minimal dump size */
+ int hasvdso;
};
extern int register_binfmt(struct linux_binfmt *);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 043/101] i386: Fix broken CONFIG_COMPAT_VDSO on i386
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (41 preceding siblings ...)
2007-03-07 17:11 ` [patch 042/101] x86: Dont require the vDSO for handling a.out signals Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 044/101] bcm43xx: fix for 4309 Greg KH
` (59 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Jan Beulich, Andi Kleen
[-- Attachment #1: i386-fix-broken-config_compat_vdso-on-i386.patch --]
[-- Type: text/plain, Size: 1367 bytes --]
From: "Jan Beulich" <jbeulich@novell.com>
After updating several machines to 2.6.20, I can't boot anymore the single
one of them that supports the NX bit and is configured as a 32-bit system.
My understanding is that the VDSO changes in 2.6.20-rc7 were not fully
cooked, in that with that config option enabled VDSO_SYM(x) now equals
x, meaning that an address in the fixmap area is now being passed to
apps via AT_SYSINFO. However, the page is mapped with PAGE_READONLY
rather than PAGE_READONLY_EXEC.
I'm not certain whether having app code go through the fixmap area is
intended, but in case it is here is the simple patch that makes things work
again.
Cc: Theodore Tso <tytso@mit.edu>
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/i386/kernel/sysenter.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/arch/i386/kernel/sysenter.c
+++ linux-2.6.20.1/arch/i386/kernel/sysenter.c
@@ -77,7 +77,7 @@ int __init sysenter_setup(void)
syscall_page = (void *)get_zeroed_page(GFP_ATOMIC);
#ifdef CONFIG_COMPAT_VDSO
- __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY);
+ __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY_EXEC);
printk("Compat vDSO mapped to %08lx.\n", __fix_to_virt(FIX_VDSO));
#endif
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 044/101] bcm43xx: fix for 4309
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (42 preceding siblings ...)
2007-03-07 17:11 ` [patch 043/101] i386: Fix broken CONFIG_COMPAT_VDSO on i386 Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 045/101] md: Fix raid10 recovery problem Greg KH
` (58 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, John Linville, Stefano Brivio,
Larry Finger, Michael Buesch
[-- Attachment #1: bcm43xx-fix-for-4309.patch --]
[-- Type: text/plain, Size: 1071 bytes --]
From: Stefano Brivio <stefano.brivio@polimi.it>
BCM4309 devices aren't working properly as A PHYs aren't supported yet, but
we probe 802.11a cores anyway. This fixes it, while still allowing for A PHY code
to be developed in the future.
Signed-off-by: Stefano Brivio <stefano.brivio@polimi.it>
Cc: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/bcm43xx/bcm43xx_main.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ linux-2.6.20.1/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -2736,8 +2736,9 @@ static int bcm43xx_probe_cores(struct bc
* dangling pins on the second core. Be careful
* and ignore these cores here.
*/
- if (bcm->pci_dev->device != 0x4324) {
- dprintk(KERN_INFO PFX "Ignoring additional 802.11 core.\n");
+ if (1 /*bcm->pci_dev->device != 0x4324*/ ) {
+ /* TODO: A PHY */
+ dprintk(KERN_INFO PFX "Ignoring additional 802.11a core.\n");
continue;
}
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 045/101] md: Fix raid10 recovery problem.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (43 preceding siblings ...)
2007-03-07 17:11 ` [patch 044/101] bcm43xx: fix for 4309 Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 046/101] dvbdev: fix illegal re-usage of fileoperations struct Greg KH
` (57 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Andrew Morton
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, alan, linux-raid, Neil Brown
[-- Attachment #1: md-fix-raid10-recovery-problem.patch --]
[-- Type: text/plain, Size: 3576 bytes --]
From: NeilBrown <neilb@suse.de>
There are two errors that can lead to recovery problems with raid10
when used in 'far' more (not the default).
Due to a '>' instead of '>=' the wrong block is located which would
result in garbage being written to some random location, quite
possible outside the range of the device, causing the newly
reconstructed device to fail.
The device size calculation had some rounding errors (it didn't round
when it should) and so recovery would go a few blocks too far which
would again cause a write to a random block address and probably
a device error.
The code for working with device sizes was fairly confused and spread
out, so this has been tided up a bit.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/md/raid10.c | 38 ++++++++++++++++++++------------------
1 file changed, 20 insertions(+), 18 deletions(-)
--- linux-2.6.20.1.orig/drivers/md/raid10.c
+++ linux-2.6.20.1/drivers/md/raid10.c
@@ -429,7 +429,7 @@ static sector_t raid10_find_virt(conf_t
if (dev < 0)
dev += conf->raid_disks;
} else {
- while (sector > conf->stride) {
+ while (sector >= conf->stride) {
sector -= conf->stride;
if (dev < conf->near_copies)
dev += conf->raid_disks - conf->near_copies;
@@ -1801,6 +1801,7 @@ static sector_t sync_request(mddev_t *md
for (k=0; k<conf->copies; k++)
if (r10_bio->devs[k].devnum == i)
break;
+ BUG_ON(k == conf->copies);
bio = r10_bio->devs[1].bio;
bio->bi_next = biolist;
biolist = bio;
@@ -2021,19 +2022,30 @@ static int run(mddev_t *mddev)
if (!conf->tmppage)
goto out_free_conf;
+ conf->mddev = mddev;
+ conf->raid_disks = mddev->raid_disks;
conf->near_copies = nc;
conf->far_copies = fc;
conf->copies = nc*fc;
conf->far_offset = fo;
conf->chunk_mask = (sector_t)(mddev->chunk_size>>9)-1;
conf->chunk_shift = ffz(~mddev->chunk_size) - 9;
+ size = mddev->size >> (conf->chunk_shift-1);
+ sector_div(size, fc);
+ size = size * conf->raid_disks;
+ sector_div(size, nc);
+ /* 'size' is now the number of chunks in the array */
+ /* calculate "used chunks per device" in 'stride' */
+ stride = size * conf->copies;
+ sector_div(stride, conf->raid_disks);
+ mddev->size = stride << (conf->chunk_shift-1);
+
if (fo)
- conf->stride = 1 << conf->chunk_shift;
- else {
- stride = mddev->size >> (conf->chunk_shift-1);
+ stride = 1;
+ else
sector_div(stride, fc);
- conf->stride = stride << conf->chunk_shift;
- }
+ conf->stride = stride << conf->chunk_shift;
+
conf->r10bio_pool = mempool_create(NR_RAID10_BIOS, r10bio_pool_alloc,
r10bio_pool_free, conf);
if (!conf->r10bio_pool) {
@@ -2063,8 +2075,6 @@ static int run(mddev_t *mddev)
disk->head_position = 0;
}
- conf->raid_disks = mddev->raid_disks;
- conf->mddev = mddev;
spin_lock_init(&conf->device_lock);
INIT_LIST_HEAD(&conf->retry_list);
@@ -2106,16 +2116,8 @@ static int run(mddev_t *mddev)
/*
* Ok, everything is just fine now
*/
- if (conf->far_offset) {
- size = mddev->size >> (conf->chunk_shift-1);
- size *= conf->raid_disks;
- size <<= conf->chunk_shift;
- sector_div(size, conf->far_copies);
- } else
- size = conf->stride * conf->raid_disks;
- sector_div(size, conf->near_copies);
- mddev->array_size = size/2;
- mddev->resync_max_sectors = size;
+ mddev->array_size = size << (conf->chunk_shift-1);
+ mddev->resync_max_sectors = size << conf->chunk_shift;
mddev->queue->unplug_fn = raid10_unplug;
mddev->queue->issue_flush_fn = raid10_issue_flush;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 046/101] dvbdev: fix illegal re-usage of fileoperations struct
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (44 preceding siblings ...)
2007-03-07 17:11 ` [patch 045/101] md: Fix raid10 recovery problem Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 047/101] V4L: pvrusb2: Fix video corruption on stream start Greg KH
` (56 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, v4l-dvb maintainer list,
Marcel Siegert, Mauro Carvalho Chehab
[-- Attachment #1: dvbdev-fix-illegal-re-usage-of-fileoperations-struct.patch --]
[-- Type: text/plain, Size: 1922 bytes --]
From: Marcel Siegert <mws@linuxtv.org>
Arjan van de Ven <arjan@infradead.org> reported an illegal re-usage of
the fileoperations struct if more than one dvb device (e.g. frontend) is
present.
This patch fixes this issue.
It allocates a new fileoperations struct each time a device is
registered and copies the default template fileops.
(backported from commit b61901024776b25ce7b8edc31bb1757c7382a88e)
Signed-off-by: Marcel Siegert <mws@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/media/dvb/dvb-core/dvbdev.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
--- linux-2.6.20.1.orig/drivers/media/dvb/dvb-core/dvbdev.c
+++ linux-2.6.20.1/drivers/media/dvb/dvb-core/dvbdev.c
@@ -200,6 +200,8 @@ int dvb_register_device(struct dvb_adapt
const struct dvb_device *template, void *priv, int type)
{
struct dvb_device *dvbdev;
+ struct file_operations *dvbdevfops;
+
int id;
if (mutex_lock_interruptible(&dvbdev_register_lock))
@@ -219,12 +221,22 @@ int dvb_register_device(struct dvb_adapt
return -ENOMEM;
}
+ dvbdevfops = kzalloc(sizeof(struct file_operations), GFP_KERNEL);
+
+ if (!dvbdevfops) {
+ kfree (dvbdev);
+ mutex_unlock(&dvbdev_register_lock);
+ return -ENOMEM;
+ }
+
memcpy(dvbdev, template, sizeof(struct dvb_device));
dvbdev->type = type;
dvbdev->id = id;
dvbdev->adapter = adap;
dvbdev->priv = priv;
+ dvbdev->fops = dvbdevfops;
+ memcpy(dvbdev->fops, template->fops, sizeof(struct file_operations));
dvbdev->fops->owner = adap->module;
list_add_tail (&dvbdev->list_head, &adap->device_list);
@@ -252,6 +264,7 @@ void dvb_unregister_device(struct dvb_de
dvbdev->type, dvbdev->id)));
list_del (&dvbdev->list_head);
+ kfree (dvbdev->fops);
kfree (dvbdev);
}
EXPORT_SYMBOL(dvb_unregister_device);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 047/101] V4L: pvrusb2: Fix video corruption on stream start
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (45 preceding siblings ...)
2007-03-07 17:11 ` [patch 046/101] dvbdev: fix illegal re-usage of fileoperations struct Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 048/101] V4L: pvrusb2: Handle larger cx2341x firmware images Greg KH
` (55 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, v4l-dvb maintainer list,
Mike Isely
[-- Attachment #1: v4l-pvrusb2-fix-video-corruption-on-stream-start.patch --]
[-- Type: text/plain, Size: 2643 bytes --]
From: Mike Isely <isely@pobox.com>
This introduces some extra cx23416 commands when streaming is
started. The addition of these commands fix random sporadic video
corruption that can take place when the video stream is temporarily
disrupted through loss of signal (e.g. changing the channel in the RF
tuner).
This fix is already in the upstream driver source and has proven
itself there; this is a backport for the 2.6.20.y kernel series.
(backported from commit 6fe7d2c4660174110c6872cacc4fc2acb6e00acf)
Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/media/video/pvrusb2/pvrusb2-encoder.c | 40 ++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
--- linux-2.6.20.1.orig/drivers/media/video/pvrusb2/pvrusb2-encoder.c
+++ linux-2.6.20.1/drivers/media/video/pvrusb2/pvrusb2-encoder.c
@@ -288,6 +288,44 @@ static int pvr2_encoder_vcmd(struct pvr2
return pvr2_encoder_cmd(hdw,cmd,args,0,data);
}
+
+/* This implements some extra setup for the encoder that seems to be
+ specific to the PVR USB2 hardware. */
+int pvr2_encoder_prep_config(struct pvr2_hdw *hdw)
+{
+ int ret = 0;
+ int encMisc3Arg = 0;
+
+ /* Mike Isely <isely@pobox.com> 22-Feb-2007 The windows driver
+ sends the following list of ENC_MISC commands (for both
+ 24xxx and 29xxx devices). Meanings are not entirely clear,
+ however without the ENC_MISC(3,encMisc3Arg) command then we risk
+ random perpetual video corruption whenever the video input
+ breaks up for a moment (like when switching channels). */
+
+
+ /* This ENC_MISC(3,encMisc3Arg) command is critical - without
+ it there will eventually be video corruption. Also, the
+ 29xxx case is strange - the Windows driver is passing 1
+ regardless of device type but if we have 1 for 29xxx device
+ the video turns sluggish. */
+ switch (hdw->hdw_type) {
+ case PVR2_HDW_TYPE_24XXX: encMisc3Arg = 1; break;
+ case PVR2_HDW_TYPE_29XXX: encMisc3Arg = 0; break;
+ default: break;
+ }
+ ret |= pvr2_encoder_vcmd(hdw, CX2341X_ENC_MISC,4, 3,
+ encMisc3Arg,0,0);
+
+ ret |= pvr2_encoder_vcmd(hdw, CX2341X_ENC_MISC,4, 8,0,0,0);
+
+ ret |= pvr2_encoder_vcmd(hdw, CX2341X_ENC_MISC,4, 0,3,0,0);
+ ret |= pvr2_encoder_vcmd(hdw, CX2341X_ENC_MISC,4,15,0,0,0);
+
+ return ret;
+}
+
+
int pvr2_encoder_configure(struct pvr2_hdw *hdw)
{
int ret;
@@ -302,6 +340,8 @@ int pvr2_encoder_configure(struct pvr2_h
ret = 0;
+ ret |= pvr2_encoder_prep_config(hdw);
+
if (!ret) ret = pvr2_encoder_vcmd(
hdw,CX2341X_ENC_SET_NUM_VSYNC_LINES, 2,
0xf0, 0xf0);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 048/101] V4L: pvrusb2: Handle larger cx2341x firmware images
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (46 preceding siblings ...)
2007-03-07 17:11 ` [patch 047/101] V4L: pvrusb2: Fix video corruption on stream start Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 049/101] DVB: cxusb: fix firmware patch for big endian systems Greg KH
` (54 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, v4l-dvb maintainer list,
Mike Isely
[-- Attachment #1: v4l-pvrusb2-handle-larger-cx2341x-firmware-images.patch --]
[-- Type: text/plain, Size: 2856 bytes --]
From: Mike Isely <isely@pobox.com>
Rework the cx23416 firmware loader so that it longer requires the
firmware size to be a multiple of 8KB. Until recently all cx2341x
firmware images were exactly 256KB, but newer firmware is larger than
that and also appears to have arbitrary size. We still must check
against a multiple of 4 bytes (because the cx23416 itself uses a 32
bit word size).
This fix is already in the upstream driver source and has proven
itself there; this is a backport for the 2.6.20.y kernel series.
(backported from commit 90060d32ca0a941b158994f78e60d0381871c84b)
Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/media/video/pvrusb2/pvrusb2-hdw.c | 31 ++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
--- linux-2.6.20.1.orig/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ linux-2.6.20.1/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1041,7 +1041,7 @@ int pvr2_upload_firmware2(struct pvr2_hd
{
const struct firmware *fw_entry = NULL;
void *fw_ptr;
- unsigned int pipe, fw_len, fw_done;
+ unsigned int pipe, fw_len, fw_done, bcnt, icnt;
int actual_length;
int ret = 0;
int fwidx;
@@ -1093,11 +1093,11 @@ int pvr2_upload_firmware2(struct pvr2_hd
fw_len = fw_entry->size;
- if (fw_len % FIRMWARE_CHUNK_SIZE) {
+ if (fw_len % sizeof(u32)) {
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
"size of %s firmware"
- " must be a multiple of 8192B",
- fw_files[fwidx]);
+ " must be a multiple of %zu bytes",
+ fw_files[fwidx],sizeof(u32));
release_firmware(fw_entry);
return -1;
}
@@ -1112,18 +1112,21 @@ int pvr2_upload_firmware2(struct pvr2_hd
pipe = usb_sndbulkpipe(hdw->usb_dev, PVR2_FIRMWARE_ENDPOINT);
- for (fw_done = 0 ; (fw_done < fw_len) && !ret ;
- fw_done += FIRMWARE_CHUNK_SIZE ) {
- int i;
- memcpy(fw_ptr, fw_entry->data + fw_done, FIRMWARE_CHUNK_SIZE);
- /* Usbsnoop log shows that we must swap bytes... */
- for (i = 0; i < FIRMWARE_CHUNK_SIZE/4 ; i++)
- ((u32 *)fw_ptr)[i] = ___swab32(((u32 *)fw_ptr)[i]);
+ fw_done = 0;
+ for (fw_done = 0; fw_done < fw_len;) {
+ bcnt = fw_len - fw_done;
+ if (bcnt > FIRMWARE_CHUNK_SIZE) bcnt = FIRMWARE_CHUNK_SIZE;
+ memcpy(fw_ptr, fw_entry->data + fw_done, bcnt);
+ /* Usbsnoop log shows that we must swap bytes... */
+ for (icnt = 0; icnt < bcnt/4 ; icnt++)
+ ((u32 *)fw_ptr)[icnt] =
+ ___swab32(((u32 *)fw_ptr)[icnt]);
- ret |= usb_bulk_msg(hdw->usb_dev, pipe, fw_ptr,
- FIRMWARE_CHUNK_SIZE,
+ ret |= usb_bulk_msg(hdw->usb_dev, pipe, fw_ptr,bcnt,
&actual_length, HZ);
- ret |= (actual_length != FIRMWARE_CHUNK_SIZE);
+ ret |= (actual_length != bcnt);
+ if (ret) break;
+ fw_done += bcnt;
}
trace_firmware("upload of %s : %i / %i ",
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 049/101] DVB: cxusb: fix firmware patch for big endian systems
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (47 preceding siblings ...)
2007-03-07 17:11 ` [patch 048/101] V4L: pvrusb2: Handle larger cx2341x firmware images Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 050/101] DVB: digitv: open nxt6000 i2c_gate for TDED4 tuner handling Greg KH
` (53 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, v4l-dvb maintainer list,
Jin-Bong lee, Mauro Carvalho Chehab
[-- Attachment #1: dvb-cxusb-fix-firmware-patch-for-big-endian-systems.patch --]
[-- Type: text/plain, Size: 1102 bytes --]
From: Jin-Bong lee <jinbong.lee@samsung.com>
Without this patch, the device will not be detected after firmware download
on big endian systems.
(cherry picked from commit 1d1370a48ca285ebe197ecd3197a8d5f161bc291)
Signed-off-by: Jin-Bong lee <jinbong.lee@samsung.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/media/dvb/dvb-usb/cxusb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/media/dvb/dvb-usb/cxusb.c
+++ linux-2.6.20.1/drivers/media/dvb/dvb-usb/cxusb.c
@@ -469,9 +469,9 @@ static int bluebird_patch_dvico_firmware
fw->data[BLUEBIRD_01_ID_OFFSET + 1] == USB_VID_DVICO >> 8) {
fw->data[BLUEBIRD_01_ID_OFFSET + 2] =
- udev->descriptor.idProduct + 1;
+ le16_to_cpu(udev->descriptor.idProduct) + 1;
fw->data[BLUEBIRD_01_ID_OFFSET + 3] =
- udev->descriptor.idProduct >> 8;
+ le16_to_cpu(udev->descriptor.idProduct) >> 8;
return usb_cypress_load_firmware(udev, fw, CYPRESS_FX2);
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 050/101] DVB: digitv: open nxt6000 i2c_gate for TDED4 tuner handling
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (48 preceding siblings ...)
2007-03-07 17:11 ` [patch 049/101] DVB: cxusb: fix firmware patch for big endian systems Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 051/101] V4L: fix cx25840 firmware loading Greg KH
` (52 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, v4l-dvb maintainer list,
Mauro Carvalho Chehab
[-- Attachment #1: dvb-digitv-open-nxt6000-i2c_gate-for-tded4-tuner-handling.patch --]
[-- Type: text/plain, Size: 1054 bytes --]
From: Michael Krufky <mkrufky@linuxtv.org>
dvb-pll normally opens the i2c gate before attempting to communicate with
the pll, but the code for this device is not using dvb-pll. This should
be cleaned up in the future, but for now, just open the i2c gate at the
appropriate place in order to fix this driver bug.
(cherry picked from commit 2fe22dcdc79b8dd34e61a3f1231caffd6180a626)
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/media/dvb/dvb-usb/digitv.c | 2 ++
1 file changed, 2 insertions(+)
--- linux-2.6.20.1.orig/drivers/media/dvb/dvb-usb/digitv.c
+++ linux-2.6.20.1/drivers/media/dvb/dvb-usb/digitv.c
@@ -119,6 +119,8 @@ static int digitv_nxt6000_tuner_set_para
struct dvb_usb_adapter *adap = fe->dvb->priv;
u8 b[5];
dvb_usb_tuner_calc_regs(fe,fep,b, 5);
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
return digitv_ctrl_msg(adap->dev, USB_WRITE_TUNER, 0, &b[1], 4, NULL, 0);
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 051/101] V4L: fix cx25840 firmware loading
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (49 preceding siblings ...)
2007-03-07 17:11 ` [patch 050/101] DVB: digitv: open nxt6000 i2c_gate for TDED4 tuner handling Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 052/101] V4L: cx88-blackbird: allow usage of 376836 and 262144 sized firmware images Greg KH
` (51 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, v4l-dvb maintainer list,
Hans Verkuil, Mike Isely, Mauro Carvalho Chehab
[-- Attachment #1: v4l-fix-cx25840-firmware-loading.patch --]
[-- Type: text/plain, Size: 1589 bytes --]
From: Hans Verkuil <hverkuil@xs4all.nl>
Date: Thu, 15 Feb 2007 03:40:34 -0300
Subject: [patch 051/101] [PATCH] V4L: fix cx25840 firmware loading
Due to changes in the i2c handling in 2.6.20 this cx25840 bug surfaced,
causing the firmware load to fail for the ivtv driver. The correct
sequence is to first attach the i2c client, then use the client's
device to load the firmware.
(cherry picked from commit d55c7aec666658495e5b57a6b194c8c2a1ac255f)
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Acked-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/media/video/cx25840/cx25840-core.c | 4 ++--
drivers/media/video/cx25840/cx25840-firmware.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/drivers/media/video/cx25840/cx25840-core.c
+++ linux-2.6.20.1/drivers/media/video/cx25840/cx25840-core.c
@@ -907,13 +907,13 @@ static int cx25840_detect_client(struct
state->vbi_line_offset = 8;
state->id = id;
+ i2c_attach_client(client);
+
if (state->is_cx25836)
cx25836_initialize(client);
else
cx25840_initialize(client, 1);
- i2c_attach_client(client);
-
return 0;
}
--- linux-2.6.20.1.orig/drivers/media/video/cx25840/cx25840-firmware.c
+++ linux-2.6.20.1/drivers/media/video/cx25840/cx25840-firmware.c
@@ -37,7 +37,7 @@
*/
#define FWSEND 48
-#define FWDEV(x) &((x)->adapter->dev)
+#define FWDEV(x) &((x)->dev)
static char *firmware = FWFILE;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 052/101] V4L: cx88-blackbird: allow usage of 376836 and 262144 sized firmware images
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (50 preceding siblings ...)
2007-03-07 17:11 ` [patch 051/101] V4L: fix cx25840 firmware loading Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 053/101] Fix posix-cpu-timer breakage caused by stale p->last_ran value Greg KH
` (50 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, v4l-dvb maintainer list,
Mauro Carvalho Chehab
[-- Attachment #1: v4l-cx88-blackbird-allow-usage-of-376836-and-262144-sized-firmware-images.patch --]
[-- Type: text/plain, Size: 2529 bytes --]
From: Michael Krufky <mkrufky@linuxtv.org>
This updates the cx88-blackbird driver to be able to use the new cx23416
firmware image released by Hauppauge Computer Works, while retaining
compatibility with the older firmware images.
cx2341x firmware can be downloaded at: http://dl.ivtvdriver.org/ivtv/firmware/
(cherry picked from commit af70dbd3346999570db73b3bc3d4f7b7c004f2ea)
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/media/video/cx88/cx88-blackbird.c | 14 +++++++++-----
drivers/media/video/cx88/cx88.h | 1 +
2 files changed, 10 insertions(+), 5 deletions(-)
--- linux-2.6.20.1.orig/drivers/media/video/cx88/cx88-blackbird.c
+++ linux-2.6.20.1/drivers/media/video/cx88/cx88-blackbird.c
@@ -53,7 +53,8 @@ MODULE_PARM_DESC(debug,"enable debug mes
/* ------------------------------------------------------------------ */
-#define BLACKBIRD_FIRM_IMAGE_SIZE 256*1024
+#define OLD_BLACKBIRD_FIRM_IMAGE_SIZE 262144
+#define BLACKBIRD_FIRM_IMAGE_SIZE 376836
/* defines below are from ivtv-driver.h */
@@ -401,7 +402,7 @@ static int blackbird_find_mailbox(struct
u32 value;
int i;
- for (i = 0; i < BLACKBIRD_FIRM_IMAGE_SIZE; i++) {
+ for (i = 0; i < dev->fw_size; i++) {
memory_read(dev->core, i, &value);
if (value == signature[signaturecnt])
signaturecnt++;
@@ -449,12 +450,15 @@ static int blackbird_load_firmware(struc
return -1;
}
- if (firmware->size != BLACKBIRD_FIRM_IMAGE_SIZE) {
- dprintk(0, "ERROR: Firmware size mismatch (have %zd, expected %d)\n",
- firmware->size, BLACKBIRD_FIRM_IMAGE_SIZE);
+ if ((firmware->size != BLACKBIRD_FIRM_IMAGE_SIZE) &&
+ (firmware->size != OLD_BLACKBIRD_FIRM_IMAGE_SIZE)) {
+ dprintk(0, "ERROR: Firmware size mismatch (have %zd, expected %d or %d)\n",
+ firmware->size, BLACKBIRD_FIRM_IMAGE_SIZE,
+ OLD_BLACKBIRD_FIRM_IMAGE_SIZE);
release_firmware(firmware);
return -1;
}
+ dev->fw_size = firmware->size;
if (0 != memcmp(firmware->data, magic, 8)) {
dprintk(0, "ERROR: Firmware magic mismatch, wrong file?\n");
--- linux-2.6.20.1.orig/drivers/media/video/cx88/cx88.h
+++ linux-2.6.20.1/drivers/media/video/cx88/cx88.h
@@ -459,6 +459,7 @@ struct cx8802_dev {
u32 mailbox;
int width;
int height;
+ int fw_size;
/* for dvb only */
struct videobuf_dvb dvb;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 053/101] Fix posix-cpu-timer breakage caused by stale p->last_ran value
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (51 preceding siblings ...)
2007-03-07 17:11 ` [patch 052/101] V4L: cx88-blackbird: allow usage of 376836 and 262144 sized firmware images Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 054/101] swsusp: Fix possible oops in userland interface Greg KH
` (49 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Andrew Morton
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, alan, Ingo Molnar, john stultz,
Roman Zippel, Mike Galbraith, Ken Chen, balducci, Greg KH,
Thomas Gleixner
[-- Attachment #1: fix-posix-cpu-timer-breakage-caused-by-stale-p-last_ran-value.patch --]
[-- Type: text/plain, Size: 1047 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
Problem description at:
http://bugzilla.kernel.org/show_bug.cgi?id=8048
Commit b18ec80396834497933d77b81ec0918519f4e2a7
[PATCH] sched: improve migration accuracy
optimized the scheduler time calculations, but broke posix-cpu-timers.
The problem is that the p->last_ran value is not updated after a context
switch. So a subsequent call to current_sched_time() calculates with a
stale p->last_ran value, i.e. accounts the full time, which the task was
scheduled away.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
kernel/sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/kernel/sched.c
+++ linux-2.6.20.1/kernel/sched.c
@@ -3547,7 +3547,7 @@ switch_tasks:
sched_info_switch(prev, next);
if (likely(prev != next)) {
- next->timestamp = now;
+ next->timestamp = next->last_ran = now;
rq->nr_switches++;
rq->curr = next;
++*switch_count;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 054/101] swsusp: Fix possible oops in userland interface
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (52 preceding siblings ...)
2007-03-07 17:11 ` [patch 053/101] Fix posix-cpu-timer breakage caused by stale p->last_ran value Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 055/101] sata_sil: ignore and clear spurious IRQs while executing commands by polling Greg KH
` (48 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Stefan Seyfried, Pavel Machek,
Rafael J. Wysocki
[-- Attachment #1: swsusp-fix-possible-oops-in-userland-interface.patch --]
[-- Type: text/plain, Size: 1684 bytes --]
From: Stefan Seyfried <seife@suse.de>
Fix the Oops occuring when SNAPSHOT_PMOPS or SNAPSHOT_S2RAM ioctl is called on
a system without pm_ops defined (eg. a non-ACPI kernel on x86 PC).
Signed-off-by: Stefan Seyfried <seife@suse.de>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
kernel/power/user.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
--- linux-2.6.20.1.orig/kernel/power/user.c
+++ linux-2.6.20.1/kernel/power/user.c
@@ -292,7 +292,7 @@ static int snapshot_ioctl(struct inode *
break;
}
- if (pm_ops->prepare) {
+ if (pm_ops && pm_ops->prepare) {
error = pm_ops->prepare(PM_SUSPEND_MEM);
if (error)
goto OutS3;
@@ -311,7 +311,7 @@ static int snapshot_ioctl(struct inode *
device_resume();
}
resume_console();
- if (pm_ops->finish)
+ if (pm_ops && pm_ops->finish)
pm_ops->finish(PM_SUSPEND_MEM);
OutS3:
@@ -322,20 +322,25 @@ static int snapshot_ioctl(struct inode *
switch (arg) {
case PMOPS_PREPARE:
- if (pm_ops->prepare) {
+ if (pm_ops && pm_ops->prepare)
error = pm_ops->prepare(PM_SUSPEND_DISK);
- }
+ else
+ error = -ENOSYS;
break;
case PMOPS_ENTER:
kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
- error = pm_ops->enter(PM_SUSPEND_DISK);
+ if (pm_ops && pm_ops->enter)
+ error = pm_ops->enter(PM_SUSPEND_DISK);
+ else
+ error = -ENOSYS;
break;
case PMOPS_FINISH:
- if (pm_ops && pm_ops->finish) {
+ if (pm_ops && pm_ops->finish)
pm_ops->finish(PM_SUSPEND_DISK);
- }
+ else
+ error = -ENOSYS;
break;
default:
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 055/101] sata_sil: ignore and clear spurious IRQs while executing commands by polling
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (53 preceding siblings ...)
2007-03-07 17:11 ` [patch 054/101] swsusp: Fix possible oops in userland interface Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 056/101] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
` (47 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Jeff Garzik, linux-ide
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, Tejun Heo
[-- Attachment #1: sata_sil-ignore-and-clear-spurious-irqs-while-executing-commands-by-polling.patch --]
[-- Type: text/plain, Size: 1157 bytes --]
sata_sil used to trigger HSM error if IRQ occurs during polling
command. This didn't matter because polling wasn't used in sata_sil.
However, as of 2.6.20, all IDENTIFYs are performed by polling and
device detection sometimes fails due to spurious IRQ. This patch
makes sata_sil ignore and clear spurious IRQ while executing commands
by polling.
This fixes bug#7996 and IMHO should also be included in -stable.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ata/sata_sil.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/ata/sata_sil.c
+++ linux-2.6.20.1/drivers/ata/sata_sil.c
@@ -383,9 +383,15 @@ static void sil_host_intr(struct ata_por
goto freeze;
}
- if (unlikely(!qc || qc->tf.ctl & ATA_NIEN))
+ if (unlikely(!qc))
goto freeze;
+ if (unlikely(qc->tf.flags & ATA_TFLAG_POLLING)) {
+ /* this sometimes happens, just clear IRQ */
+ ata_chk_status(ap);
+ return;
+ }
+
/* Check whether we are expecting interrupt in this state */
switch (ap->hsm_task_state) {
case HSM_ST_FIRST:
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 056/101] fix umask when noACL kernel meets extN tuned for ACLs
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (54 preceding siblings ...)
2007-03-07 17:11 ` [patch 055/101] sata_sil: ignore and clear spurious IRQs while executing commands by polling Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 057/101] UML - Fix 2.6.20 hang Greg KH
` (46 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Greg KH
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, Chris Wright, Tigran Aivazian,
Andreas Gruenbacher, Hugh Dickins
[-- Attachment #1: fix-umask-when-noacl-kernel-meets-extn-tuned-for-acls.patch --]
[-- Type: text/plain, Size: 3339 bytes --]
From: Hugh Dickins <hugh@veritas.com>
Fix insecure default behaviour reported by Tigran Aivazian: if an ext2
or ext3 or ext4 filesystem is tuned to mount with "acl", but mounted by
a kernel built without ACL support, then umask was ignored when creating
inodes - though root or user has umask 022, touch creates files as 0666,
and mkdir creates directories as 0777.
This appears to have worked right until 2.6.11, when a fix to the default
mode on symlinks (always 0777) assumed VFS applies umask: which it does,
unless the mount is marked for ACLs; but ext[234] set MS_POSIXACL in
s_flags according to s_mount_opt set according to def_mount_opts.
We could revert to the 2.6.10 ext[234]_init_acl (adding an S_ISLNK test);
but other filesystems only set MS_POSIXACL when ACLs are configured. We
could fix this at another level; but it seems most robust to avoid setting
the s_mount_opt flag in the first place (at the expense of more ifdefs).
Likewise don't set the XATTR_USER flag when built without XATTR support.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
Acked-by: Andreas Gruenbacher <agruen@suse.de>
Cc: Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/ext2/super.c | 4 ++++
fs/ext3/super.c | 4 ++++
fs/ext4/super.c | 4 ++++
3 files changed, 12 insertions(+)
--- linux-2.6.20.1.orig/fs/ext2/super.c
+++ linux-2.6.20.1/fs/ext2/super.c
@@ -708,10 +708,14 @@ static int ext2_fill_super(struct super_
set_opt(sbi->s_mount_opt, GRPID);
if (def_mount_opts & EXT2_DEFM_UID16)
set_opt(sbi->s_mount_opt, NO_UID32);
+#ifdef CONFIG_EXT2_FS_XATTR
if (def_mount_opts & EXT2_DEFM_XATTR_USER)
set_opt(sbi->s_mount_opt, XATTR_USER);
+#endif
+#ifdef CONFIG_EXT2_FS_POSIX_ACL
if (def_mount_opts & EXT2_DEFM_ACL)
set_opt(sbi->s_mount_opt, POSIX_ACL);
+#endif
if (le16_to_cpu(sbi->s_es->s_errors) == EXT2_ERRORS_PANIC)
set_opt(sbi->s_mount_opt, ERRORS_PANIC);
--- linux-2.6.20.1.orig/fs/ext3/super.c
+++ linux-2.6.20.1/fs/ext3/super.c
@@ -1459,10 +1459,14 @@ static int ext3_fill_super (struct super
set_opt(sbi->s_mount_opt, GRPID);
if (def_mount_opts & EXT3_DEFM_UID16)
set_opt(sbi->s_mount_opt, NO_UID32);
+#ifdef CONFIG_EXT3_FS_XATTR
if (def_mount_opts & EXT3_DEFM_XATTR_USER)
set_opt(sbi->s_mount_opt, XATTR_USER);
+#endif
+#ifdef CONFIG_EXT3_FS_POSIX_ACL
if (def_mount_opts & EXT3_DEFM_ACL)
set_opt(sbi->s_mount_opt, POSIX_ACL);
+#endif
if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_DATA)
sbi->s_mount_opt |= EXT3_MOUNT_JOURNAL_DATA;
else if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_ORDERED)
--- linux-2.6.20.1.orig/fs/ext4/super.c
+++ linux-2.6.20.1/fs/ext4/super.c
@@ -1518,10 +1518,14 @@ static int ext4_fill_super (struct super
set_opt(sbi->s_mount_opt, GRPID);
if (def_mount_opts & EXT4_DEFM_UID16)
set_opt(sbi->s_mount_opt, NO_UID32);
+#ifdef CONFIG_EXT4DEV_FS_XATTR
if (def_mount_opts & EXT4_DEFM_XATTR_USER)
set_opt(sbi->s_mount_opt, XATTR_USER);
+#endif
+#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
if (def_mount_opts & EXT4_DEFM_ACL)
set_opt(sbi->s_mount_opt, POSIX_ACL);
+#endif
if ((def_mount_opts & EXT4_DEFM_JMODE) == EXT4_DEFM_JMODE_DATA)
sbi->s_mount_opt |= EXT4_MOUNT_JOURNAL_DATA;
else if ((def_mount_opts & EXT4_DEFM_JMODE) == EXT4_DEFM_JMODE_ORDERED)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 057/101] UML - Fix 2.6.20 hang
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (55 preceding siblings ...)
2007-03-07 17:11 ` [patch 056/101] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 058/101] mmc: Power quirk for ENE controllers Greg KH
` (45 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Blaisorblade,
user-mode-linux-devel, Jeff Dike
[-- Attachment #1: uml-fix-2.6.20-hang.patch --]
[-- Type: text/plain, Size: 3370 bytes --]
From: Jeff Dike <jdike@addtoit.com>
A previous cleanup misused need_poll, which had a fairly broken
interface. It implemented a growable array, changing the used
elements count itself, but leaving it up to the caller to fill in the
actual elements, including the entire array if the array had to be
reallocated. This worked because the previous users were switching
between two such structures, and the elements were copied from the
inactive array to the active array after making sure the active array
had enough room.
maybe_sigio_broken was made to use need_poll, but it was operating on
a single array, so when the buffer was reallocated, the previous
contents were lost.
This patch makes need_poll implement more sane semantics. It merely
assures that the array is of the proper size and that the contents are
preserved. It is up to the caller to adjust the used elements count
and to ensure that the proper elements are resent.
This manifested itself as a hang in 2.6.20 as the uninitialized buffer
convinced UML that one of its own file descriptors didn't support
SIGIO and needed to be watched by poll in a separate thread. The
result was an interrupt flood as control traffic over this descriptor
sparked interrupts, which resulted in more control traffic, ad nauseum.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/um/os-Linux/sigio.c | 38 ++++++++++++++++++++------------------
1 file changed, 20 insertions(+), 18 deletions(-)
--- linux-2.6.20.1.orig/arch/um/os-Linux/sigio.c
+++ linux-2.6.20.1/arch/um/os-Linux/sigio.c
@@ -97,20 +97,22 @@ static int write_sigio_thread(void *unus
static int need_poll(struct pollfds *polls, int n)
{
- if(n <= polls->size){
- polls->used = n;
+ struct pollfd *new;
+
+ if(n <= polls->size)
return 0;
- }
- kfree(polls->poll);
- polls->poll = um_kmalloc_atomic(n * sizeof(struct pollfd));
- if(polls->poll == NULL){
+
+ new = um_kmalloc_atomic(n * sizeof(struct pollfd));
+ if(new == NULL){
printk("need_poll : failed to allocate new pollfds\n");
- polls->size = 0;
- polls->used = 0;
return -ENOMEM;
}
+
+ memcpy(new, polls->poll, polls->used * sizeof(struct pollfd));
+ kfree(polls->poll);
+
+ polls->poll = new;
polls->size = n;
- polls->used = n;
return 0;
}
@@ -171,15 +173,15 @@ int add_sigio_fd(int fd)
goto out;
}
- n = current_poll.used + 1;
- err = need_poll(&next_poll, n);
+ n = current_poll.used;
+ err = need_poll(&next_poll, n + 1);
if(err)
goto out;
- for(i = 0; i < current_poll.used; i++)
- next_poll.poll[i] = current_poll.poll[i];
-
- next_poll.poll[n - 1] = *p;
+ memcpy(next_poll.poll, current_poll.poll,
+ current_poll.used * sizeof(struct pollfd));
+ next_poll.poll[n] = *p;
+ next_poll.used = n + 1;
update_thread();
out:
sigio_unlock();
@@ -214,6 +216,7 @@ int ignore_sigio_fd(int fd)
if(p->fd != fd)
next_poll.poll[n++] = *p;
}
+ next_poll.used = current_poll.used - 1;
update_thread();
out:
@@ -331,10 +334,9 @@ void maybe_sigio_broken(int fd, int read
sigio_lock();
err = need_poll(&all_sigio_fds, all_sigio_fds.used + 1);
- if(err){
- printk("maybe_sigio_broken - failed to add pollfd\n");
+ if(err)
goto out;
- }
+
all_sigio_fds.poll[all_sigio_fds.used++] =
((struct pollfd) { .fd = fd,
.events = read ? POLLIN : POLLOUT,
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 058/101] mmc: Power quirk for ENE controllers
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (56 preceding siblings ...)
2007-03-07 17:11 ` [patch 057/101] UML - Fix 2.6.20 hang Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 059/101] bcm43xx: Fix assertion failures in interrupt handler Greg KH
` (44 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Darren Salt, Pierre Ossman
[-- Attachment #1: mmc-power-quirk-for-ene-controllers.patch --]
[-- Type: text/plain, Size: 2802 bytes --]
From: Darren Salt <linux@youmustbejoking.demon.co.uk>
mmc: Power quirk for ENE controllers
Support for these devices was broken for 2.6.18-rc1 and later by commit
146ad66eac836c0b976c98f428d73e1f6a75270d, which added voltage level support.
This restores the previous behaviour for these devices by ensuring that when
the voltage is changed, only one write to set the voltage is performed.
It may be that both writes are needed if the voltage is being changed between
two non-zero values or that it's safe to ensure that only one write is done
if the hardware only supports one voltage; I don't know whether either is the
case nor can I test since I have only the one SD reader (1524:0550), and it
supports just the one voltage.
Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/mmc/sdhci.c | 22 +++++++++++++++++++---
include/linux/pci_ids.h | 1 +
2 files changed, 20 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/drivers/mmc/sdhci.c
+++ linux-2.6.20.1/drivers/mmc/sdhci.c
@@ -37,6 +37,7 @@ static unsigned int debug_quirks = 0;
#define SDHCI_QUIRK_FORCE_DMA (1<<1)
/* Controller doesn't like some resets when there is no card inserted. */
#define SDHCI_QUIRK_NO_CARD_NO_RESET (1<<2)
+#define SDHCI_QUIRK_SINGLE_POWER_WRITE (1<<3)
static const struct pci_device_id pci_ids[] __devinitdata = {
{
@@ -65,6 +66,14 @@ static const struct pci_device_id pci_id
.driver_data = SDHCI_QUIRK_FORCE_DMA,
},
+ {
+ .vendor = PCI_VENDOR_ID_ENE,
+ .device = PCI_DEVICE_ID_ENE_CB712_SD,
+ .subvendor = PCI_ANY_ID,
+ .subdevice = PCI_ANY_ID,
+ .driver_data = SDHCI_QUIRK_SINGLE_POWER_WRITE,
+ },
+
{ /* Generic SD host controller */
PCI_DEVICE_CLASS((PCI_CLASS_SYSTEM_SDHCI << 8), 0xFFFF00)
},
@@ -674,10 +683,17 @@ static void sdhci_set_power(struct sdhci
if (host->power == power)
return;
- writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
-
- if (power == (unsigned short)-1)
+ if (power == (unsigned short)-1) {
+ writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
goto out;
+ }
+
+ /*
+ * Spec says that we should clear the power reg before setting
+ * a new value. Some controllers don't seem to like this though.
+ */
+ if (!(host->chip->quirks & SDHCI_QUIRK_SINGLE_POWER_WRITE))
+ writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
pwr = SDHCI_POWER_ON;
--- linux-2.6.20.1.orig/include/linux/pci_ids.h
+++ linux-2.6.20.1/include/linux/pci_ids.h
@@ -1971,6 +1971,7 @@
#define PCI_DEVICE_ID_TOPIC_TP560 0x0000
#define PCI_VENDOR_ID_ENE 0x1524
+#define PCI_DEVICE_ID_ENE_CB712_SD 0x0550
#define PCI_DEVICE_ID_ENE_1211 0x1211
#define PCI_DEVICE_ID_ENE_1225 0x1225
#define PCI_DEVICE_ID_ENE_1410 0x1410
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 059/101] bcm43xx: Fix assertion failures in interrupt handler
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (57 preceding siblings ...)
2007-03-07 17:11 ` [patch 058/101] mmc: Power quirk for ENE controllers Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 060/101] libata: add missing PM callbacks Greg KH
` (43 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, linux-wireless, Bcm43xx-dev,
Michael Buesch, Pavel Roskin, Larry Finger
[-- Attachment #1: bcm43xx-fix-assertion-failures-in-interrupt-handler.patch --]
[-- Type: text/plain, Size: 1282 bytes --]
From: Pavel Roskin <proski@gnu.org>
In the bcm43xx interrupt handler, sanity checks are wrongly done before the
verification that the interrupt is for the bcm43xx.
Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/bcm43xx/bcm43xx_main.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ linux-2.6.20.1/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -1864,9 +1864,6 @@ static irqreturn_t bcm43xx_interrupt_han
spin_lock(&bcm->irq_lock);
- assert(bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED);
- assert(bcm->current_core->id == BCM43xx_COREID_80211);
-
reason = bcm43xx_read32(bcm, BCM43xx_MMIO_GEN_IRQ_REASON);
if (reason == 0xffffffff) {
/* irq not for us (shared irq) */
@@ -1877,6 +1874,9 @@ static irqreturn_t bcm43xx_interrupt_han
if (!reason)
goto out;
+ assert(bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED);
+ assert(bcm->current_core->id == BCM43xx_COREID_80211);
+
bcm->dma_reason[0] = bcm43xx_read32(bcm, BCM43xx_MMIO_DMA0_REASON)
& 0x0001DC00;
bcm->dma_reason[1] = bcm43xx_read32(bcm, BCM43xx_MMIO_DMA1_REASON)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 060/101] libata: add missing PM callbacks
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (58 preceding siblings ...)
2007-03-07 17:11 ` [patch 059/101] bcm43xx: Fix assertion failures in interrupt handler Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 061/101] libata: add missing CONFIG_PM in LLDs Greg KH
` (42 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Guennadi Liakhovetski
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, jgarzik, Tejun Heo
[-- Attachment #1: libata-add-missing-pm-callbacks.patch --]
[-- Type: text/plain, Size: 1254 bytes --]
From: Tejun Heo <htejun@gmail.com>
Some LLDs were missing scsi device PM callbacks while having host/port
suspend support. Add missing ones.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ata/pata_jmicron.c | 4 ++++
drivers/ata/pata_sil680.c | 4 ++++
2 files changed, 8 insertions(+)
--- linux-2.6.20.1.orig/drivers/ata/pata_jmicron.c
+++ linux-2.6.20.1/drivers/ata/pata_jmicron.c
@@ -137,6 +137,10 @@ static struct scsi_host_template jmicron
.slave_destroy = ata_scsi_slave_destroy,
/* Use standard CHS mapping rules */
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
+ .suspend = ata_scsi_device_suspend,
+ .resume = ata_scsi_device_resume,
+#endif
};
static const struct ata_port_operations jmicron_ops = {
--- linux-2.6.20.1.orig/drivers/ata/pata_sil680.c
+++ linux-2.6.20.1/drivers/ata/pata_sil680.c
@@ -226,6 +226,10 @@ static struct scsi_host_template sil680_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
+ .suspend = ata_scsi_device_suspend,
+ .resume = ata_scsi_device_resume,
+#endif
};
static struct ata_port_operations sil680_port_ops = {
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 061/101] libata: add missing CONFIG_PM in LLDs
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (59 preceding siblings ...)
2007-03-07 17:11 ` [patch 060/101] libata: add missing PM callbacks Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 062/101] POWERPC: Fix performance monitor exception Greg KH
` (41 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Guennadi Liakhovetski
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, jgarzik, Tejun Heo
[-- Attachment #1: libata-add-missing-config_pm-in-llds.patch --]
[-- Type: text/plain, Size: 33126 bytes --]
From: Tejun Heo <htejun@gmail.com>
Add missing #ifdef CONFIG_PM conditionals around all PM related parts
in libata LLDs.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ata/ahci.c | 14 ++++++++++++++
drivers/ata/ata_generic.c | 4 ++++
drivers/ata/ata_piix.c | 4 ++++
drivers/ata/pata_ali.c | 6 ++++++
drivers/ata/pata_amd.c | 6 ++++++
drivers/ata/pata_atiixp.c | 4 ++++
drivers/ata/pata_cmd64x.c | 6 ++++++
drivers/ata/pata_cs5520.c | 7 +++++++
drivers/ata/pata_cs5530.c | 6 ++++++
drivers/ata/pata_cs5535.c | 4 ++++
drivers/ata/pata_cypress.c | 4 ++++
drivers/ata/pata_efar.c | 4 ++++
drivers/ata/pata_hpt366.c | 7 ++++++-
drivers/ata/pata_hpt3x3.c | 6 ++++++
drivers/ata/pata_it821x.c | 6 ++++++
drivers/ata/pata_jmicron.c | 4 ++++
drivers/ata/pata_marvell.c | 4 ++++
drivers/ata/pata_mpiix.c | 4 ++++
drivers/ata/pata_netcell.c | 4 ++++
drivers/ata/pata_ns87410.c | 4 ++++
drivers/ata/pata_oldpiix.c | 4 ++++
drivers/ata/pata_opti.c | 4 ++++
drivers/ata/pata_optidma.c | 4 ++++
drivers/ata/pata_pdc202xx_old.c | 4 ++++
drivers/ata/pata_radisys.c | 4 ++++
drivers/ata/pata_rz1000.c | 6 ++++++
drivers/ata/pata_sc1200.c | 4 ++++
drivers/ata/pata_serverworks.c | 6 ++++++
drivers/ata/pata_sil680.c | 4 ++++
drivers/ata/pata_sis.c | 4 ++++
drivers/ata/pata_triflex.c | 4 ++++
drivers/ata/pata_via.c | 6 ++++++
drivers/ata/sata_sil.c | 2 ++
drivers/ata/sata_sil24.c | 2 ++
34 files changed, 165 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/ata/ahci.c
+++ linux-2.6.20.1/drivers/ata/ahci.c
@@ -225,10 +225,12 @@ static void ahci_thaw(struct ata_port *a
static void ahci_error_handler(struct ata_port *ap);
static void ahci_vt8251_error_handler(struct ata_port *ap);
static void ahci_post_internal_cmd(struct ata_queued_cmd *qc);
+#ifdef CONFIG_PM
static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg);
static int ahci_port_resume(struct ata_port *ap);
static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg);
static int ahci_pci_device_resume(struct pci_dev *pdev);
+#endif
static void ahci_remove_one (struct pci_dev *pdev);
static struct scsi_host_template ahci_sht = {
@@ -248,8 +250,10 @@ static struct scsi_host_template ahci_sh
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.suspend = ata_scsi_device_suspend,
.resume = ata_scsi_device_resume,
+#endif
};
static const struct ata_port_operations ahci_ops = {
@@ -276,8 +280,10 @@ static const struct ata_port_operations
.error_handler = ahci_error_handler,
.post_internal_cmd = ahci_post_internal_cmd,
+#ifdef CONFIG_PM
.port_suspend = ahci_port_suspend,
.port_resume = ahci_port_resume,
+#endif
.port_start = ahci_port_start,
.port_stop = ahci_port_stop,
@@ -307,8 +313,10 @@ static const struct ata_port_operations
.error_handler = ahci_vt8251_error_handler,
.post_internal_cmd = ahci_post_internal_cmd,
+#ifdef CONFIG_PM
.port_suspend = ahci_port_suspend,
.port_resume = ahci_port_resume,
+#endif
.port_start = ahci_port_start,
.port_stop = ahci_port_stop,
@@ -441,8 +449,10 @@ static struct pci_driver ahci_pci_driver
.name = DRV_NAME,
.id_table = ahci_pci_tbl,
.probe = ahci_init_one,
+#ifdef CONFIG_PM
.suspend = ahci_pci_device_suspend,
.resume = ahci_pci_device_resume,
+#endif
.remove = ahci_remove_one,
};
@@ -587,6 +597,7 @@ static void ahci_power_up(void __iomem *
writel(cmd | PORT_CMD_ICC_ACTIVE, port_mmio + PORT_CMD);
}
+#ifdef CONFIG_PM
static void ahci_power_down(void __iomem *port_mmio, u32 cap)
{
u32 cmd, scontrol;
@@ -604,6 +615,7 @@ static void ahci_power_down(void __iomem
cmd &= ~PORT_CMD_SPIN_UP;
writel(cmd, port_mmio + PORT_CMD);
}
+#endif
static void ahci_init_port(void __iomem *port_mmio, u32 cap,
dma_addr_t cmd_slot_dma, dma_addr_t rx_fis_dma)
@@ -1336,6 +1348,7 @@ static void ahci_post_internal_cmd(struc
}
}
+#ifdef CONFIG_PM
static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg)
{
struct ahci_host_priv *hpriv = ap->host->private_data;
@@ -1412,6 +1425,7 @@ static int ahci_pci_device_resume(struct
return 0;
}
+#endif
static int ahci_port_start(struct ata_port *ap)
{
--- linux-2.6.20.1.orig/drivers/ata/ata_generic.c
+++ linux-2.6.20.1/drivers/ata/ata_generic.c
@@ -119,8 +119,10 @@ static struct scsi_host_template generic
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations generic_port_ops = {
@@ -230,8 +232,10 @@ static struct pci_driver ata_generic_pci
.id_table = ata_generic,
.probe = ata_generic_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init ata_generic_init(void)
--- linux-2.6.20.1.orig/drivers/ata/ata_piix.c
+++ linux-2.6.20.1/drivers/ata/ata_piix.c
@@ -255,8 +255,10 @@ static struct pci_driver piix_pci_driver
.id_table = piix_pci_tbl,
.probe = piix_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static struct scsi_host_template piix_sht = {
@@ -275,8 +277,10 @@ static struct scsi_host_template piix_sh
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static const struct ata_port_operations piix_pata_ops = {
--- linux-2.6.20.1.orig/drivers/ata/pata_ali.c
+++ linux-2.6.20.1/drivers/ata/pata_ali.c
@@ -345,8 +345,10 @@ static struct scsi_host_template ali_sht
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
/*
@@ -667,11 +669,13 @@ static int ali_init_one(struct pci_dev *
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
static int ali_reinit_one(struct pci_dev *pdev)
{
ali_init_chipset(pdev);
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id ali[] = {
{ PCI_VDEVICE(AL, PCI_DEVICE_ID_AL_M5228), },
@@ -685,8 +689,10 @@ static struct pci_driver ali_pci_driver
.id_table = ali,
.probe = ali_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ali_reinit_one,
+#endif
};
static int __init ali_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_amd.c
+++ linux-2.6.20.1/drivers/ata/pata_amd.c
@@ -334,8 +334,10 @@ static struct scsi_host_template amd_sht
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations amd33_port_ops = {
@@ -663,6 +665,7 @@ static int amd_init_one(struct pci_dev *
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
static int amd_reinit_one(struct pci_dev *pdev)
{
if (pdev->vendor == PCI_VENDOR_ID_AMD) {
@@ -679,6 +682,7 @@ static int amd_reinit_one(struct pci_dev
}
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id amd[] = {
{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_COBRA_7401), 0 },
@@ -708,8 +712,10 @@ static struct pci_driver amd_pci_driver
.id_table = amd,
.probe = amd_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = amd_reinit_one,
+#endif
};
static int __init amd_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_atiixp.c
+++ linux-2.6.20.1/drivers/ata/pata_atiixp.c
@@ -224,8 +224,10 @@ static struct scsi_host_template atiixp_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations atiixp_port_ops = {
@@ -290,8 +292,10 @@ static struct pci_driver atiixp_pci_driv
.id_table = atiixp,
.probe = atiixp_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.resume = ata_pci_device_resume,
.suspend = ata_pci_device_suspend,
+#endif
};
static int __init atiixp_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_cmd64x.c
+++ linux-2.6.20.1/drivers/ata/pata_cmd64x.c
@@ -285,8 +285,10 @@ static struct scsi_host_template cmd64x_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations cmd64x_port_ops = {
@@ -479,6 +481,7 @@ static int cmd64x_init_one(struct pci_de
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
static int cmd64x_reinit_one(struct pci_dev *pdev)
{
u8 mrdmode;
@@ -492,6 +495,7 @@ static int cmd64x_reinit_one(struct pci_
#endif
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id cmd64x[] = {
{ PCI_VDEVICE(CMD, PCI_DEVICE_ID_CMD_643), 0 },
@@ -507,8 +511,10 @@ static struct pci_driver cmd64x_pci_driv
.id_table = cmd64x,
.probe = cmd64x_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = cmd64x_reinit_one,
+#endif
};
static int __init cmd64x_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_cs5520.c
+++ linux-2.6.20.1/drivers/ata/pata_cs5520.c
@@ -167,8 +167,10 @@ static struct scsi_host_template cs5520_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations cs5520_port_ops = {
@@ -298,6 +300,7 @@ static void __devexit cs5520_remove_one(
dev_set_drvdata(dev, NULL);
}
+#ifdef CONFIG_PM
/**
* cs5520_reinit_one - device resume
* @pdev: PCI device
@@ -314,6 +317,8 @@ static int cs5520_reinit_one(struct pci_
pci_write_config_byte(pdev, 0x60, pcicfg | 0x40);
return ata_pci_device_resume(pdev);
}
+#endif
+
/* For now keep DMA off. We can set it for all but A rev CS5510 once the
core ATA code can handle it */
@@ -329,8 +334,10 @@ static struct pci_driver cs5520_pci_driv
.id_table = pata_cs5520,
.probe = cs5520_init_one,
.remove = cs5520_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = cs5520_reinit_one,
+#endif
};
static int __init cs5520_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_cs5530.c
+++ linux-2.6.20.1/drivers/ata/pata_cs5530.c
@@ -181,8 +181,10 @@ static struct scsi_host_template cs5530_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations cs5530_port_ops = {
@@ -369,6 +371,7 @@ static int cs5530_init_one(struct pci_de
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
static int cs5530_reinit_one(struct pci_dev *pdev)
{
/* If we fail on resume we are doomed */
@@ -376,6 +379,7 @@ static int cs5530_reinit_one(struct pci_
BUG();
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id cs5530[] = {
{ PCI_VDEVICE(CYRIX, PCI_DEVICE_ID_CYRIX_5530_IDE), },
@@ -388,8 +392,10 @@ static struct pci_driver cs5530_pci_driv
.id_table = cs5530,
.probe = cs5530_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = cs5530_reinit_one,
+#endif
};
static int __init cs5530_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_cs5535.c
+++ linux-2.6.20.1/drivers/ata/pata_cs5535.c
@@ -185,8 +185,10 @@ static struct scsi_host_template cs5535_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations cs5535_port_ops = {
@@ -270,8 +272,10 @@ static struct pci_driver cs5535_pci_driv
.id_table = cs5535,
.probe = cs5535_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init cs5535_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_cypress.c
+++ linux-2.6.20.1/drivers/ata/pata_cypress.c
@@ -136,8 +136,10 @@ static struct scsi_host_template cy82c69
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations cy82c693_port_ops = {
@@ -206,8 +208,10 @@ static struct pci_driver cy82c693_pci_dr
.id_table = cy82c693,
.probe = cy82c693_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init cy82c693_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_efar.c
+++ linux-2.6.20.1/drivers/ata/pata_efar.c
@@ -234,8 +234,10 @@ static struct scsi_host_template efar_sh
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static const struct ata_port_operations efar_ops = {
@@ -317,8 +319,10 @@ static struct pci_driver efar_pci_driver
.id_table = efar_pci_tbl,
.probe = efar_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init efar_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_hpt366.c
+++ linux-2.6.20.1/drivers/ata/pata_hpt366.c
@@ -338,8 +338,10 @@ static struct scsi_host_template hpt36x_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
/*
@@ -467,12 +469,13 @@ static int hpt36x_init_one(struct pci_de
return ata_pci_init_one(dev, port_info, 2);
}
+#ifdef CONFIG_PM
static int hpt36x_reinit_one(struct pci_dev *dev)
{
hpt36x_init_chipset(dev);
return ata_pci_device_resume(dev);
}
-
+#endif
static const struct pci_device_id hpt36x[] = {
{ PCI_VDEVICE(TTI, PCI_DEVICE_ID_TTI_HPT366), },
@@ -484,8 +487,10 @@ static struct pci_driver hpt36x_pci_driv
.id_table = hpt36x,
.probe = hpt36x_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = hpt36x_reinit_one,
+#endif
};
static int __init hpt36x_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_hpt3x3.c
+++ linux-2.6.20.1/drivers/ata/pata_hpt3x3.c
@@ -119,8 +119,10 @@ static struct scsi_host_template hpt3x3_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations hpt3x3_port_ops = {
@@ -206,11 +208,13 @@ static int hpt3x3_init_one(struct pci_de
return ata_pci_init_one(dev, port_info, 2);
}
+#ifdef CONFIG_PM
static int hpt3x3_reinit_one(struct pci_dev *dev)
{
hpt3x3_init_chipset(dev);
return ata_pci_device_resume(dev);
}
+#endif
static const struct pci_device_id hpt3x3[] = {
{ PCI_VDEVICE(TTI, PCI_DEVICE_ID_TTI_HPT343), },
@@ -223,8 +227,10 @@ static struct pci_driver hpt3x3_pci_driv
.id_table = hpt3x3,
.probe = hpt3x3_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = hpt3x3_reinit_one,
+#endif
};
static int __init hpt3x3_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_it821x.c
+++ linux-2.6.20.1/drivers/ata/pata_it821x.c
@@ -676,8 +676,10 @@ static struct scsi_host_template it821x_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations it821x_smart_port_ops = {
@@ -810,6 +812,7 @@ static int it821x_init_one(struct pci_de
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
static int it821x_reinit_one(struct pci_dev *pdev)
{
/* Resume - turn raid back off if need be */
@@ -817,6 +820,7 @@ static int it821x_reinit_one(struct pci_
it821x_disable_raid(pdev);
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id it821x[] = {
{ PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), },
@@ -830,8 +834,10 @@ static struct pci_driver it821x_pci_driv
.id_table = it821x,
.probe = it821x_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = it821x_reinit_one,
+#endif
};
static int __init it821x_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_jmicron.c
+++ linux-2.6.20.1/drivers/ata/pata_jmicron.c
@@ -222,6 +222,7 @@ static int jmicron_init_one (struct pci_
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
static int jmicron_reinit_one(struct pci_dev *pdev)
{
u32 reg;
@@ -242,6 +243,7 @@ static int jmicron_reinit_one(struct pci
}
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id jmicron_pci_tbl[] = {
{ PCI_VDEVICE(JMICRON, PCI_DEVICE_ID_JMICRON_JMB361), 361},
@@ -258,8 +260,10 @@ static struct pci_driver jmicron_pci_dri
.id_table = jmicron_pci_tbl,
.probe = jmicron_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = jmicron_reinit_one,
+#endif
};
static int __init jmicron_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_marvell.c
+++ linux-2.6.20.1/drivers/ata/pata_marvell.c
@@ -103,8 +103,10 @@ static struct scsi_host_template marvell
.slave_destroy = ata_scsi_slave_destroy,
/* Use standard CHS mapping rules */
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static const struct ata_port_operations marvell_ops = {
@@ -199,8 +201,10 @@ static struct pci_driver marvell_pci_dri
.id_table = marvell_pci_tbl,
.probe = marvell_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init marvell_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_mpiix.c
+++ linux-2.6.20.1/drivers/ata/pata_mpiix.c
@@ -167,8 +167,10 @@ static struct scsi_host_template mpiix_s
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations mpiix_port_ops = {
@@ -287,8 +289,10 @@ static struct pci_driver mpiix_pci_drive
.id_table = mpiix,
.probe = mpiix_init_one,
.remove = mpiix_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init mpiix_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_netcell.c
+++ linux-2.6.20.1/drivers/ata/pata_netcell.c
@@ -63,8 +63,10 @@ static struct scsi_host_template netcell
.slave_destroy = ata_scsi_slave_destroy,
/* Use standard CHS mapping rules */
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static const struct ata_port_operations netcell_ops = {
@@ -153,8 +155,10 @@ static struct pci_driver netcell_pci_dri
.id_table = netcell_pci_tbl,
.probe = netcell_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init netcell_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_ns87410.c
+++ linux-2.6.20.1/drivers/ata/pata_ns87410.c
@@ -157,8 +157,10 @@ static struct scsi_host_template ns87410
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations ns87410_port_ops = {
@@ -212,8 +214,10 @@ static struct pci_driver ns87410_pci_dri
.id_table = ns87410,
.probe = ns87410_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init ns87410_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_oldpiix.c
+++ linux-2.6.20.1/drivers/ata/pata_oldpiix.c
@@ -232,8 +232,10 @@ static struct scsi_host_template oldpiix
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static const struct ata_port_operations oldpiix_pata_ops = {
@@ -315,8 +317,10 @@ static struct pci_driver oldpiix_pci_dri
.id_table = oldpiix_pci_tbl,
.probe = oldpiix_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init oldpiix_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_opti.c
+++ linux-2.6.20.1/drivers/ata/pata_opti.c
@@ -179,8 +179,10 @@ static struct scsi_host_template opti_sh
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations opti_port_ops = {
@@ -244,8 +246,10 @@ static struct pci_driver opti_pci_driver
.id_table = opti,
.probe = opti_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init opti_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_optidma.c
+++ linux-2.6.20.1/drivers/ata/pata_optidma.c
@@ -360,8 +360,10 @@ static struct scsi_host_template optidma
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations optidma_port_ops = {
@@ -524,8 +526,10 @@ static struct pci_driver optidma_pci_dri
.id_table = optidma,
.probe = optidma_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init optidma_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_pdc202xx_old.c
+++ linux-2.6.20.1/drivers/ata/pata_pdc202xx_old.c
@@ -270,8 +270,10 @@ static struct scsi_host_template pdc202x
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations pdc2024x_port_ops = {
@@ -402,8 +404,10 @@ static struct pci_driver pdc202xx_pci_dr
.id_table = pdc202xx,
.probe = pdc202xx_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init pdc202xx_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_radisys.c
+++ linux-2.6.20.1/drivers/ata/pata_radisys.c
@@ -228,8 +228,10 @@ static struct scsi_host_template radisys
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static const struct ata_port_operations radisys_pata_ops = {
@@ -312,8 +314,10 @@ static struct pci_driver radisys_pci_dri
.id_table = radisys_pci_tbl,
.probe = radisys_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init radisys_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_rz1000.c
+++ linux-2.6.20.1/drivers/ata/pata_rz1000.c
@@ -93,8 +93,10 @@ static struct scsi_host_template rz1000_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations rz1000_port_ops = {
@@ -177,6 +179,7 @@ static int rz1000_init_one (struct pci_d
return -ENODEV;
}
+#ifdef CONFIG_PM
static int rz1000_reinit_one(struct pci_dev *pdev)
{
/* If this fails on resume (which is a "cant happen" case), we
@@ -185,6 +188,7 @@ static int rz1000_reinit_one(struct pci_
panic("rz1000 fifo");
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id pata_rz1000[] = {
{ PCI_VDEVICE(PCTECH, PCI_DEVICE_ID_PCTECH_RZ1000), },
@@ -198,8 +202,10 @@ static struct pci_driver rz1000_pci_driv
.id_table = pata_rz1000,
.probe = rz1000_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = rz1000_reinit_one,
+#endif
};
static int __init rz1000_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_sc1200.c
+++ linux-2.6.20.1/drivers/ata/pata_sc1200.c
@@ -194,8 +194,10 @@ static struct scsi_host_template sc1200_
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations sc1200_port_ops = {
@@ -266,8 +268,10 @@ static struct pci_driver sc1200_pci_driv
.id_table = sc1200,
.probe = sc1200_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init sc1200_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_serverworks.c
+++ linux-2.6.20.1/drivers/ata/pata_serverworks.c
@@ -326,8 +326,10 @@ static struct scsi_host_template serverw
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations serverworks_osb4_port_ops = {
@@ -555,6 +557,7 @@ static int serverworks_init_one(struct p
return ata_pci_init_one(pdev, port_info, ports);
}
+#ifdef CONFIG_PM
static int serverworks_reinit_one(struct pci_dev *pdev)
{
/* Force master latency timer to 64 PCI clocks */
@@ -578,6 +581,7 @@ static int serverworks_reinit_one(struct
}
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id serverworks[] = {
{ PCI_VDEVICE(SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4IDE), 0},
@@ -594,8 +598,10 @@ static struct pci_driver serverworks_pci
.id_table = serverworks,
.probe = serverworks_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = serverworks_reinit_one,
+#endif
};
static int __init serverworks_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_sil680.c
+++ linux-2.6.20.1/drivers/ata/pata_sil680.c
@@ -371,11 +371,13 @@ static int sil680_init_one(struct pci_de
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
static int sil680_reinit_one(struct pci_dev *pdev)
{
sil680_init_chip(pdev);
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id sil680[] = {
{ PCI_VDEVICE(CMD, PCI_DEVICE_ID_SII_680), },
@@ -388,8 +390,10 @@ static struct pci_driver sil680_pci_driv
.id_table = sil680,
.probe = sil680_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = sil680_reinit_one,
+#endif
};
static int __init sil680_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_sis.c
+++ linux-2.6.20.1/drivers/ata/pata_sis.c
@@ -546,8 +546,10 @@ static struct scsi_host_template sis_sht
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static const struct ata_port_operations sis_133_ops = {
@@ -1001,8 +1003,10 @@ static struct pci_driver sis_pci_driver
.id_table = sis_pci_tbl,
.probe = sis_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init sis_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_triflex.c
+++ linux-2.6.20.1/drivers/ata/pata_triflex.c
@@ -193,8 +193,10 @@ static struct scsi_host_template triflex
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations triflex_port_ops = {
@@ -260,8 +262,10 @@ static struct pci_driver triflex_pci_dri
.id_table = triflex,
.probe = triflex_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = ata_pci_device_resume,
+#endif
};
static int __init triflex_init(void)
--- linux-2.6.20.1.orig/drivers/ata/pata_via.c
+++ linux-2.6.20.1/drivers/ata/pata_via.c
@@ -305,8 +305,10 @@ static struct scsi_host_template via_sht
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.resume = ata_scsi_device_resume,
.suspend = ata_scsi_device_suspend,
+#endif
};
static struct ata_port_operations via_port_ops = {
@@ -560,6 +562,7 @@ static int via_init_one(struct pci_dev *
return ata_pci_init_one(pdev, port_info, 2);
}
+#ifdef CONFIG_PM
/**
* via_reinit_one - reinit after resume
* @pdev; PCI device
@@ -592,6 +595,7 @@ static int via_reinit_one(struct pci_dev
}
return ata_pci_device_resume(pdev);
}
+#endif
static const struct pci_device_id via[] = {
{ PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_82C576_1), },
@@ -607,8 +611,10 @@ static struct pci_driver via_pci_driver
.id_table = via,
.probe = via_init_one,
.remove = ata_pci_remove_one,
+#ifdef CONFIG_PM
.suspend = ata_pci_device_suspend,
.resume = via_reinit_one,
+#endif
};
static int __init via_init(void)
--- linux-2.6.20.1.orig/drivers/ata/sata_sil.c
+++ linux-2.6.20.1/drivers/ata/sata_sil.c
@@ -181,8 +181,10 @@ static struct scsi_host_template sil_sht
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.suspend = ata_scsi_device_suspend,
.resume = ata_scsi_device_resume,
+#endif
};
static const struct ata_port_operations sil_ops = {
--- linux-2.6.20.1.orig/drivers/ata/sata_sil24.c
+++ linux-2.6.20.1/drivers/ata/sata_sil24.c
@@ -386,8 +386,10 @@ static struct scsi_host_template sil24_s
.slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param,
+#ifdef CONFIG_PM
.suspend = ata_scsi_device_suspend,
.resume = ata_scsi_device_resume,
+#endif
};
static const struct ata_port_operations sil24_ops = {
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 062/101] POWERPC: Fix performance monitor exception
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (60 preceding siblings ...)
2007-03-07 17:11 ` [patch 061/101] libata: add missing CONFIG_PM in LLDs Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 063/101] HID: fix possible double-free on error path in hid parser Greg KH
` (40 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Paul Mackerras
[-- Attachment #1: powerpc-fix-performance-monitor-exception.patch --]
[-- Type: text/plain, Size: 2515 bytes --]
From: Livio Soares <livio@eecg.toronto.edu>
To the issue: some point during 2.6.20 development, Paul Mackerras
introduced the "lazy IRQ disabling" patch (very cool work, BTW).
In that patch, the performance monitor unit exception was marked as
"maskable", in the sense that if interrupts were soft-disabled, that
exception could be ignored. This broke my PowerPC profiling code.
The symptom that I see is that a varying number of interrupts
(from 0 to $n$, typically closer to 0) get delivered, when, in
reality, it should always be very close to $n$.
The issue stems from the way masking is being done. Masking in
this fashion seems to work well with the decrementer and external
interrupts, because they are raised again until "really" handled.
For the PMU, however, this does not apply (at least on my Xserver
machine with a 970FX processor). If the PMU exception is not handled,
it will _not_ be re-raised (at least on my machine). The documentation
states that the PMXE bit in MMCR0 is set to 0 when the PMU exception
is raised. However, software must re-set the bit to re-enable PMU
exceptions. If the exception is ignored (as currently) not only is
that interrupt lost, but because software does not re-set PMXE, the
PMU registers are "frozen" forever.
[This patch means that performance monitor exceptions are taken and
handled even if irqs are off, as long as some other interrupt hasn't
come along and caused interrupts to be hard-disabled. In this sense
the PMU exception becomes like an NMI. The oprofile code for most
powerpc processors does nothing that is unsafe in an NMI context, but
the Cell oprofile code does a spin_lock_irqsave. However, that turns
out to be OK because Cell doesn't actually use the performance
monitor exception; performance monitor interrupts come in as a
regular interrupt on Cell, so will be disabled when irqs are off.
-- paulus.]
From: Livio Soares <livio@eecg.toronto.edu>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/powerpc/kernel/head_64.S | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/arch/powerpc/kernel/head_64.S
+++ linux-2.6.20.1/arch/powerpc/kernel/head_64.S
@@ -613,7 +613,7 @@ system_call_pSeries:
/*** pSeries interrupt support ***/
/* moved from 0xf00 */
- MASKABLE_EXCEPTION_PSERIES(., performance_monitor)
+ STD_EXCEPTION_PSERIES(., performance_monitor)
/*
* An interrupt came in while soft-disabled; clear EE in SRR1,
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 063/101] HID: fix possible double-free on error path in hid parser
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (61 preceding siblings ...)
2007-03-07 17:11 ` [patch 062/101] POWERPC: Fix performance monitor exception Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 064/101] Fix interrupt probing on E450 sparc64 systems Greg KH
` (39 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Jiri Kosina
[-- Attachment #1: hid-fix-possible-double-free-on-error-path-in-hid-parser.patch --]
[-- Type: text/plain, Size: 1935 bytes --]
From: Jiri Kosina <jkosina@suse.cz>
HID: fix possible double-free on error path in hid parser
Freeing of device->collection is properly done in hid_free_device() (as
this function is supposed to free all the device resources and could be
called from transport specific code, e.g. usb_hid_configure()).
Remove all kfree() calls preceeding the hid_free_device() call.
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/hid/hid-core.c | 5 -----
1 file changed, 5 deletions(-)
--- linux-2.6.20.1.orig/drivers/hid/hid-core.c
+++ linux-2.6.20.1/drivers/hid/hid-core.c
@@ -670,7 +670,6 @@ struct hid_device *hid_parse_report(__u8
if (item.format != HID_ITEM_FORMAT_SHORT) {
dbg("unexpected long global item");
- kfree(device->collection);
hid_free_device(device);
kfree(parser);
return NULL;
@@ -679,7 +678,6 @@ struct hid_device *hid_parse_report(__u8
if (dispatch_type[item.type](parser, &item)) {
dbg("item %u %u %u %u parsing failed\n",
item.format, (unsigned)item.size, (unsigned)item.type, (unsigned)item.tag);
- kfree(device->collection);
hid_free_device(device);
kfree(parser);
return NULL;
@@ -688,14 +686,12 @@ struct hid_device *hid_parse_report(__u8
if (start == end) {
if (parser->collection_stack_ptr) {
dbg("unbalanced collection at end of report description");
- kfree(device->collection);
hid_free_device(device);
kfree(parser);
return NULL;
}
if (parser->local.delimiter_depth) {
dbg("unbalanced delimiter at end of report description");
- kfree(device->collection);
hid_free_device(device);
kfree(parser);
return NULL;
@@ -706,7 +702,6 @@ struct hid_device *hid_parse_report(__u8
}
dbg("item fetching failed at offset %d\n", (int)(end - start));
- kfree(device->collection);
hid_free_device(device);
kfree(parser);
return NULL;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 064/101] Fix interrupt probing on E450 sparc64 systems
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (62 preceding siblings ...)
2007-03-07 17:11 ` [patch 063/101] HID: fix possible double-free on error path in hid parser Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 065/101] Fix xfrm_add_sa_expire() return value Greg KH
` (38 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, fabbione, bunk,
David S. Miller
[-- Attachment #1: fix-interrupt-probing-on-e450-sparc64-systems.patch --]
[-- Type: text/plain, Size: 2330 bytes --]
From: David Miller <davem@davemloft.net>
[SPARC64]: Fix PCI interrupts on E450 et al.
When the PCI controller OBP node lacks an interrupt-map
and interrupt-map-mask property, we need to form the
INO by hand. The PCI swizzle logic was not doing that
properly.
This was a regression added by the of_device code.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/sparc64/kernel/of_device.c | 40 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 38 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/arch/sparc64/kernel/of_device.c
+++ linux-2.6.20.1/arch/sparc64/kernel/of_device.c
@@ -708,7 +708,7 @@ static unsigned int __init pci_irq_swizz
unsigned int irq)
{
struct linux_prom_pci_registers *regs;
- unsigned int devfn, slot, ret;
+ unsigned int bus, devfn, slot, ret;
if (irq < 1 || irq > 4)
return irq;
@@ -717,10 +717,46 @@ static unsigned int __init pci_irq_swizz
if (!regs)
return irq;
+ bus = (regs->phys_hi >> 16) & 0xff;
devfn = (regs->phys_hi >> 8) & 0xff;
slot = (devfn >> 3) & 0x1f;
- ret = ((irq - 1 + (slot & 3)) & 3) + 1;
+ if (pp->irq_trans) {
+ /* Derived from Table 8-3, U2P User's Manual. This branch
+ * is handling a PCI controller that lacks a proper set of
+ * interrupt-map and interrupt-map-mask properties. The
+ * Ultra-E450 is one example.
+ *
+ * The bit layout is BSSLL, where:
+ * B: 0 on bus A, 1 on bus B
+ * D: 2-bit slot number, derived from PCI device number as
+ * (dev - 1) for bus A, or (dev - 2) for bus B
+ * L: 2-bit line number
+ *
+ * Actually, more "portable" way to calculate the funky
+ * slot number is to subtract pbm->pci_first_slot from the
+ * device number, and that's exactly what the pre-OF
+ * sparc64 code did, but we're building this stuff generically
+ * using the OBP tree, not in the PCI controller layer.
+ */
+ if (bus & 0x80) {
+ /* PBM-A */
+ bus = 0x00;
+ slot = (slot - 1) << 2;
+ } else {
+ /* PBM-B */
+ bus = 0x10;
+ slot = (slot - 2) << 2;
+ }
+ irq -= 1;
+
+ ret = (bus | slot | irq);
+ } else {
+ /* Going through a PCI-PCI bridge that lacks a set of
+ * interrupt-map and interrupt-map-mask properties.
+ */
+ ret = ((irq - 1 + (slot & 3)) & 3) + 1;
+ }
return ret;
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 065/101] Fix xfrm_add_sa_expire() return value
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (63 preceding siblings ...)
2007-03-07 17:11 ` [patch 064/101] Fix interrupt probing on E450 sparc64 systems Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 066/101] Fix skb data reallocation handling in IPSEC Greg KH
` (37 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, David S. Miller
[-- Attachment #1: fix-xfrm_add_sa_expire-return-value.patch --]
[-- Type: text/plain, Size: 1154 bytes --]
From: David Miller <davem@davemloft.net>
[XFRM] xfrm_user: Fix return values of xfrm_add_sa_expire.
As noted by Kent Yoder, this function will always return an
error. Make sure it returns zero on success.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/xfrm/xfrm_user.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/net/xfrm/xfrm_user.c
+++ linux-2.6.20.1/net/xfrm/xfrm_user.c
@@ -1557,14 +1557,13 @@ static int xfrm_add_sa_expire(struct sk_
struct xfrm_usersa_info *p = &ue->state;
x = xfrm_state_lookup(&p->id.daddr, p->id.spi, p->id.proto, p->family);
- err = -ENOENT;
+ err = -ENOENT;
if (x == NULL)
return err;
- err = -EINVAL;
-
spin_lock_bh(&x->lock);
+ err = -EINVAL;
if (x->km.state != XFRM_STATE_VALID)
goto out;
km_state_expired(x, ue->hard, current->pid);
@@ -1574,6 +1573,7 @@ static int xfrm_add_sa_expire(struct sk_
xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid,
AUDIT_MAC_IPSEC_DELSA, 1, NULL, x);
}
+ err = 0;
out:
spin_unlock_bh(&x->lock);
xfrm_state_put(x);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 066/101] Fix skb data reallocation handling in IPSEC
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (64 preceding siblings ...)
2007-03-07 17:11 ` [patch 065/101] Fix xfrm_add_sa_expire() return value Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 067/101] Fix %100 cpu spinning on sparc64 Greg KH
` (36 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk,
Arnaldo Carvalho de Melo, David S. Miller
[-- Attachment #1: fix-skb-data-reallocation-handling-in-ipsec.patch --]
[-- Type: text/plain, Size: 919 bytes --]
From: Arnaldo Carvalho de Melo <acme@redhat.com>
[XFRM_TUNNEL]: Reload header pointer after pskb_may_pull/pskb_expand_head
Please consider applying, this was found on your latest
net-2.6 tree while playing around with that ip_hdr() + turn
skb->nh/h/mac pointers as offsets on 64 bits idea :-)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv4/xfrm4_mode_tunnel.c | 1 +
1 file changed, 1 insertion(+)
--- linux-2.6.20.1.orig/net/ipv4/xfrm4_mode_tunnel.c
+++ linux-2.6.20.1/net/ipv4/xfrm4_mode_tunnel.c
@@ -84,6 +84,7 @@ static int xfrm4_tunnel_input(struct xfr
(err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC)))
goto out;
+ iph = skb->nh.iph;
if (x->props.flags & XFRM_STATE_DECAP_DSCP)
ipv4_copy_dscp(iph, skb->h.ipiph);
if (!(x->props.flags & XFRM_STATE_NOECN))
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 067/101] Fix %100 cpu spinning on sparc64
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (65 preceding siblings ...)
2007-03-07 17:11 ` [patch 066/101] Fix skb data reallocation handling in IPSEC Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 068/101] Fix TCP MD5 locking Greg KH
` (35 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, David S. Miller
[-- Attachment #1: fix-100-cpu-spinning-on-sparc64.patch --]
[-- Type: text/plain, Size: 1298 bytes --]
From: David Miller <davem@davemloft.net>
[SPARC64] bbc_i2c: Fix kenvctrld eating %100 cpu.
Based almost entirely upon a patch by Joerg Friedrich
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/sbus/char/bbc_i2c.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
--- linux-2.6.20.1.orig/drivers/sbus/char/bbc_i2c.c
+++ linux-2.6.20.1/drivers/sbus/char/bbc_i2c.c
@@ -187,19 +187,20 @@ static int wait_for_pin(struct bbc_i2c_b
bp->waiting = 1;
add_wait_queue(&bp->wq, &wait);
while (limit-- > 0) {
- u8 val;
+ unsigned long val;
- set_current_state(TASK_INTERRUPTIBLE);
- *status = val = readb(bp->i2c_control_regs + 0);
- if ((val & I2C_PCF_PIN) == 0) {
+ val = wait_event_interruptible_timeout(
+ bp->wq,
+ (((*status = readb(bp->i2c_control_regs + 0))
+ & I2C_PCF_PIN) == 0),
+ msecs_to_jiffies(250));
+ if (val > 0) {
ret = 0;
break;
}
- msleep_interruptible(250);
}
remove_wait_queue(&bp->wq, &wait);
bp->waiting = 0;
- current->state = TASK_RUNNING;
return ret;
}
@@ -340,7 +341,7 @@ static irqreturn_t bbc_i2c_interrupt(int
*/
if (bp->waiting &&
!(readb(bp->i2c_control_regs + 0x0) & I2C_PCF_PIN))
- wake_up(&bp->wq);
+ wake_up_interruptible(&bp->wq);
return IRQ_HANDLED;
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 068/101] Fix TCP MD5 locking.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (66 preceding siblings ...)
2007-03-07 17:11 ` [patch 067/101] Fix %100 cpu spinning on sparc64 Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 069/101] Dont add anycast reference to device multiple times Greg KH
` (34 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, David S. Miller
[-- Attachment #1: fix-tcp-md5-locking.patch --]
[-- Type: text/plain, Size: 2630 bytes --]
From: David Miller <davem@davemloft.net>
[TCP]: Fix MD5 signature pool locking.
The locking calls assumed that these code paths were only
invoked in software interrupt context, but that isn't true.
Therefore we need to use spin_{lock,unlock}_bh() throughout.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv4/tcp.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
--- linux-2.6.20.1.orig/net/ipv4/tcp.c
+++ linux-2.6.20.1/net/ipv4/tcp.c
@@ -2266,12 +2266,12 @@ void tcp_free_md5sig_pool(void)
{
struct tcp_md5sig_pool **pool = NULL;
- spin_lock(&tcp_md5sig_pool_lock);
+ spin_lock_bh(&tcp_md5sig_pool_lock);
if (--tcp_md5sig_users == 0) {
pool = tcp_md5sig_pool;
tcp_md5sig_pool = NULL;
}
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
if (pool)
__tcp_free_md5sig_pool(pool);
}
@@ -2314,36 +2314,36 @@ struct tcp_md5sig_pool **tcp_alloc_md5si
int alloc = 0;
retry:
- spin_lock(&tcp_md5sig_pool_lock);
+ spin_lock_bh(&tcp_md5sig_pool_lock);
pool = tcp_md5sig_pool;
if (tcp_md5sig_users++ == 0) {
alloc = 1;
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
} else if (!pool) {
tcp_md5sig_users--;
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
cpu_relax();
goto retry;
} else
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
if (alloc) {
/* we cannot hold spinlock here because this may sleep. */
struct tcp_md5sig_pool **p = __tcp_alloc_md5sig_pool();
- spin_lock(&tcp_md5sig_pool_lock);
+ spin_lock_bh(&tcp_md5sig_pool_lock);
if (!p) {
tcp_md5sig_users--;
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
return NULL;
}
pool = tcp_md5sig_pool;
if (pool) {
/* oops, it has already been assigned. */
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
__tcp_free_md5sig_pool(p);
} else {
tcp_md5sig_pool = pool = p;
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
}
}
return pool;
@@ -2354,11 +2354,11 @@ EXPORT_SYMBOL(tcp_alloc_md5sig_pool);
struct tcp_md5sig_pool *__tcp_get_md5sig_pool(int cpu)
{
struct tcp_md5sig_pool **p;
- spin_lock(&tcp_md5sig_pool_lock);
+ spin_lock_bh(&tcp_md5sig_pool_lock);
p = tcp_md5sig_pool;
if (p)
tcp_md5sig_users++;
- spin_unlock(&tcp_md5sig_pool_lock);
+ spin_unlock_bh(&tcp_md5sig_pool_lock);
return (p ? *per_cpu_ptr(p, cpu) : NULL);
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 069/101] Dont add anycast reference to device multiple times
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (67 preceding siblings ...)
2007-03-07 17:11 ` [patch 068/101] Fix TCP MD5 locking Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 070/101] Fix anycast procfs device leak Greg KH
` (33 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, Michal Wrobel,
David S. Miller
[-- Attachment #1: don-t-add-anycast-reference-to-device-multiple-times.patch --]
[-- Type: text/plain, Size: 893 bytes --]
From: Michal Wrobel <xmxwx@asn.pl>
[IPV6]: anycast refcnt fix
This patch fixes a bug in Linux IPv6 stack which caused anycast address
to be added to a device prior DAD has been completed. This led to
incorrect reference count which resulted in infinite wait for
unregister_netdevice completion on interface removal.
Signed-off-by: Michal Wrobel <xmxwx@asn.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv6/addrconf.c | 2 ++
1 file changed, 2 insertions(+)
--- linux-2.6.20.1.orig/net/ipv6/addrconf.c
+++ linux-2.6.20.1/net/ipv6/addrconf.c
@@ -469,6 +469,8 @@ static void dev_forward_change(struct in
ipv6_dev_mc_dec(dev, &addr);
}
for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) {
+ if (ifa->flags&IFA_F_TENTATIVE)
+ continue;
if (idev->cnf.forwarding)
addrconf_join_anycast(ifa);
else
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 070/101] Fix anycast procfs device leak
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (68 preceding siblings ...)
2007-03-07 17:11 ` [patch 069/101] Dont add anycast reference to device multiple times Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 071/101] Fix reference counting (memory leak) problem in __nfulnl_send() and callers related to packet queueing Greg KH
` (32 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, bunk, David S. Miller
[-- Attachment #1: fix-anycast-procfs-device-leak.patch --]
[-- Type: text/plain, Size: 790 bytes --]
From: David Stevens <dlstevens@us.ibm.com>
[IPV6]: /proc/net/anycast6 unbalanced inet6_dev refcnt
From: David Stevens <dlstevens@us.ibm.com>
Reading /proc/net/anycast6 when there is no anycast address
on an interface results in an ever-increasing inet6_dev reference
count, as well as a reference to the netdevice you can't get rid of.
From: David Stevens <dlstevens@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/ipv6/anycast.c | 1 +
1 file changed, 1 insertion(+)
--- linux-2.6.20.1.orig/net/ipv6/anycast.c
+++ linux-2.6.20.1/net/ipv6/anycast.c
@@ -462,6 +462,7 @@ static inline struct ifacaddr6 *ac6_get_
break;
}
read_unlock_bh(&idev->lock);
+ in6_dev_put(idev);
}
return im;
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 071/101] Fix reference counting (memory leak) problem in __nfulnl_send() and callers related to packet queueing.
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (69 preceding siblings ...)
2007-03-07 17:11 ` [patch 070/101] Fix anycast procfs device leak Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 072/101] export blk_recount_segments Greg KH
` (31 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan,
MichaÅ MirosÅaw
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: nfnetlink_log_refcounting_fix.patch.patch --]
[-- Type: text/plain, Size: 1545 bytes --]
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/netfilter/nfnetlink_log.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/net/netfilter/nfnetlink_log.c
+++ linux-2.6.20.1/net/netfilter/nfnetlink_log.c
@@ -217,6 +217,11 @@ _instance_destroy2(struct nfulnl_instanc
spin_lock_bh(&inst->lock);
if (inst->skb) {
+ /* timer "holds" one reference (we have one more) */
+ if (timer_pending(&inst->timer)) {
+ del_timer(&inst->timer);
+ instance_put(inst);
+ }
if (inst->qlen)
__nfulnl_send(inst);
if (inst->skb) {
@@ -363,9 +368,6 @@ __nfulnl_send(struct nfulnl_instance *in
{
int status;
- if (timer_pending(&inst->timer))
- del_timer(&inst->timer);
-
if (!inst->skb)
return 0;
@@ -392,6 +394,8 @@ static void nfulnl_timer(unsigned long d
UDEBUG("timer function called, flushing buffer\n");
spin_lock_bh(&inst->lock);
+ if (timer_pending(&inst->timer)) /* is it always true or false here? */
+ del_timer(&inst->timer);
__nfulnl_send(inst);
instance_put(inst);
spin_unlock_bh(&inst->lock);
@@ -689,6 +693,11 @@ nfulnl_log_packet(unsigned int pf,
* enough room in the skb left. flush to userspace. */
UDEBUG("flushing old skb\n");
+ /* timer "holds" one reference (we have another one) */
+ if (timer_pending(&inst->timer)) {
+ del_timer(&inst->timer);
+ instance_put(inst);
+ }
__nfulnl_send(inst);
if (!(inst->skb = nfulnl_alloc_skb(nlbufsiz, size))) {
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 072/101] export blk_recount_segments
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (70 preceding siblings ...)
2007-03-07 17:11 ` [patch 071/101] Fix reference counting (memory leak) problem in __nfulnl_send() and callers related to packet queueing Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 073/101] forcedeth: disable msix Greg KH
` (30 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Neil Brown
[-- Attachment #1: md_md5_6_bio_too_big_fix_fix.patch --]
[-- Type: text/plain, Size: 894 bytes --]
On Monday February 12, marcm@liquid-nexus.net wrote:
> >
> > Thanks for the quick response Neil unfortunately the kernel doesn't build with
> > this patch due to a missing symbol:
> >
> > WARNING: "blk_recount_segments" [drivers/md/raid456.ko] undefined!
> >
> > Is that in another file that needs patching or within raid5.c?
Yes. I keep forgetting about that bit. Sorry.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
block/ll_rw_blk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/block/ll_rw_blk.c
+++ linux-2.6.20.1/block/ll_rw_blk.c
@@ -1264,7 +1264,7 @@ new_hw_segment:
bio->bi_hw_segments = nr_hw_segs;
bio->bi_flags |= (1 << BIO_SEG_VALID);
}
-
+EXPORT_SYMBOL(blk_recount_segments);
static int blk_phys_contig_segment(request_queue_t *q, struct bio *bio,
struct bio *nxt)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 073/101] forcedeth: disable msix
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (71 preceding siblings ...)
2007-03-07 17:11 ` [patch 072/101] export blk_recount_segments Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 074/101] tty_io: fix race in master pty close/slave pty close path Greg KH
` (29 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Ayaz Abdulla, Jeff Garzik
[-- Attachment #1: forcedeth-disable-msix.patch --]
[-- Type: text/plain, Size: 749 bytes --]
From: Ayaz Abdulla <aabdulla@nvidia.com>
forcedeth: disable msix
There seems to be an issue when both MSI-X is enabled and NAPI is
configured. This patch disables MSI-X until the issue is root caused.
Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/forcedeth.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/net/forcedeth.c
+++ linux-2.6.20.1/drivers/net/forcedeth.c
@@ -825,7 +825,7 @@ enum {
NV_MSIX_INT_DISABLED,
NV_MSIX_INT_ENABLED
};
-static int msix = NV_MSIX_INT_ENABLED;
+static int msix = NV_MSIX_INT_DISABLED;
/*
* DMA 64bit
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 074/101] tty_io: fix race in master pty close/slave pty close path
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (72 preceding siblings ...)
2007-03-07 17:11 ` [patch 073/101] forcedeth: disable msix Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 075/101] sched: fix SMT scheduler bug Greg KH
` (28 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Aristeu Sergio Rozanski Filho,
H. Peter Anvin
[-- Attachment #1: tty_io-fix-race-in-master-pty-close-slave-pty-close-path.patch --]
[-- Type: text/plain, Size: 5658 bytes --]
From: Aristeu Sergio Rozanski Filho <aristeu.sergio@gmail.com>
[PATCH] tty_io: fix race in master pty close/slave pty close path
This patch fixes a possible race that leads to double freeing an idr index.
When the master begin to close, release_dev() is called and then
pty_close() is called:
if (tty->driver->close)
tty->driver->close(tty, filp);
This is done without helding any locks other than BKL. Inside pty_close(),
being a master close, the devpts entry will be removed:
#ifdef CONFIG_UNIX98_PTYS
if (tty->driver == ptm_driver)
devpts_pty_kill(tty->index);
#endif
But devpts_pty_kill() will call get_node() that may sleep while waiting for
&devpts_root->d_inode->i_sem. When this happens and the slave is being
opened, tty_open() just found the driver and index:
driver = get_tty_driver(device, &index);
if (!driver) {
mutex_unlock(&tty_mutex);
return -ENODEV;
}
This part of the code is already protected under tty_mute. The problem is
that the slave close already got an index. Then init_dev() is called and
blocks waiting for the same &devpts_root->d_inode->i_sem.
When the master close resumes, it removes the devpts entry, and the
relation between idr index and the tty is gone. The master then sleeps
waiting for the tty_mutex on release_dev().
Slave open resumes and found no tty for that index. As result, a NULL tty
is returned and init_dev() doesn't flow to fast_track:
/* check whether we're reopening an existing tty */
if (driver->flags & TTY_DRIVER_DEVPTS_MEM) {
tty = devpts_get_tty(idx);
if (tty && driver->subtype == PTY_TYPE_MASTER)
tty = tty->link;
} else {
tty = driver->ttys[idx];
}
if (tty) goto fast_track;
The result of this, is that a new tty will be created and init_dev() returns
sucessfull. After returning, tty_mutex is dropped and master close may resume.
Master close finds it's the only use and both sides are closing, then releases
the tty and the index. At this point, the idr index is free, but slave still
has it.
Slave open then calls pty_open() and finds that tty->link->count is 0,
because there's no master and returns error. Then tty_open() calls
release_dev() which executes without any warning, as it was a case of last
slave close when the master is already closed (master->count == 0,
slave->count == 1). The tty is then released with the already released idr
index.
This normally would only issue a warning on idr_remove() but in case of a
customer's critical application, it's never too simple:
thread1: opens master, gets index X
thread1: begin closing master
thread2: begin opening slave with index X
thread1: finishes closing master, index X released
thread3: opens master, gets index X, just released
thread2: fails opening slave, releases index X <----
thread4: opens master, gets index X, init_dev() then find an already in use
and healthy tty and fails
If no more indexes are released, ptmx_open() will keep failing, as the
first free index available is X, and it will make init_dev() fail because
you're trying to "reopen a master" which isn't valid.
The patch notices when this race happens and make init_dev() fail
imediately. The init_dev() function is called with tty_mutex held, so it's
safe to continue with tty till the end of function because release_dev()
won't make any further changes without grabbing the tty_mutex.
Without the patch, on some machines it's possible get easily idr warnings
like this one:
idr_remove called for id=15 which is not allocated.
[<c02555b9>] idr_remove+0x139/0x170
[<c02a1b62>] release_mem+0x182/0x230
[<c02a28e7>] release_dev+0x4b7/0x700
[<c02a0ea7>] tty_ldisc_enable+0x27/0x30
[<c02a1e64>] init_dev+0x254/0x580
[<c02a0d64>] check_tty_count+0x14/0xb0
[<c02a4f05>] tty_open+0x1c5/0x340
[<c02a4d40>] tty_open+0x0/0x340
[<c017388f>] chrdev_open+0xaf/0x180
[<c017c2ac>] open_namei+0x8c/0x760
[<c01737e0>] chrdev_open+0x0/0x180
[<c0167bc9>] __dentry_open+0xc9/0x210
[<c0167e2c>] do_filp_open+0x5c/0x70
[<c0167a91>] get_unused_fd+0x61/0xd0
[<c0167e93>] do_sys_open+0x53/0x100
[<c0167f97>] sys_open+0x27/0x30
[<c010303b>] syscall_call+0x7/0xb
using this test application available on:
http://www.ruivo.org/~aris/pty_sodomizer.c
Signed-off-by: Aristeu Sergio Rozanski Filho <aris@ruivo.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Chuck Ebbert <cebbert@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>
---
drivers/char/tty_io.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
--- linux-2.6.20.1.orig/drivers/char/tty_io.c
+++ linux-2.6.20.1/drivers/char/tty_io.c
@@ -1891,6 +1891,20 @@ static int init_dev(struct tty_driver *d
/* check whether we're reopening an existing tty */
if (driver->flags & TTY_DRIVER_DEVPTS_MEM) {
tty = devpts_get_tty(idx);
+ /*
+ * If we don't have a tty here on a slave open, it's because
+ * the master already started the close process and there's
+ * no relation between devpts file and tty anymore.
+ */
+ if (!tty && driver->subtype == PTY_TYPE_SLAVE) {
+ retval = -EIO;
+ goto end_init;
+ }
+ /*
+ * It's safe from now on because init_dev() is called with
+ * tty_mutex held and release_dev() won't change tty->count
+ * or tty->flags without having to grab tty_mutex
+ */
if (tty && driver->subtype == PTY_TYPE_MASTER)
tty = tty->link;
} else {
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 075/101] sched: fix SMT scheduler bug
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (73 preceding siblings ...)
2007-03-07 17:11 ` [patch 074/101] tty_io: fix race in master pty close/slave pty close path Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 076/101] USB: usbnet driver bugfix Greg KH
` (27 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Ingo Molnar,
Michal Piotrowski, Nick Piggin, Thomas Gleixner
[-- Attachment #1: sched-fix-smt-scheduler-bug.patch --]
[-- Type: text/plain, Size: 1341 bytes --]
From: Ingo Molnar <mingo@elte.hu>
[PATCH] sched: fix SMT scheduler bug
The SMT scheduler incorrectly skips kernel threads even if they are
runnable (but they are preempted by a higher-prio user-space task which got
SMT-delayed by an even higher-priority task running on a sibling CPU).
Fix this for now by only doing the SMT-nice optimization if the
to-be-delayed task is the only runnable task. (This should cover most of
the real-life cases anyway.)
This bug has been in the SMT scheduler since 2.6.17 or so, but has only
been noticed now by the active check in the dynticks code.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
kernel/sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/kernel/sched.c
+++ linux-2.6.20.1/kernel/sched.c
@@ -3528,7 +3528,7 @@ need_resched_nonpreemptible:
}
}
next->sleep_type = SLEEP_NORMAL;
- if (dependent_sleeper(cpu, rq, next))
+ if (rq->nr_running == 1 && dependent_sleeper(cpu, rq, next))
next = rq->idle;
switch_tasks:
if (next == rq->idle)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 076/101] USB: usbnet driver bugfix
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (74 preceding siblings ...)
2007-03-07 17:11 ` [patch 075/101] sched: fix SMT scheduler bug Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 077/101] Backport of psmouse suspend/shutdown cleanups Greg KH
` (26 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, Greg KH
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, David Brownell
[-- Attachment #1: usb-usbnet-driver-bugfix.patch --]
[-- Type: text/plain, Size: 1242 bytes --]
From: David Brownell <david-b@pacbell.net>
The attached fixes an oops in the usbnet driver. The same patch is
in 2.6.21-rc1, but that one has many whitespace changes. This is much
smaller.
Signed-off-by: David Brownell <david-b@pacbell.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/net/usbnet.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/usb/net/usbnet.c
+++ linux-2.6.20.1/drivers/usb/net/usbnet.c
@@ -1182,6 +1182,9 @@ usbnet_probe (struct usb_interface *udev
// NOTE net->name still not usable ...
if (info->bind) {
status = info->bind (dev, udev);
+ if (status < 0)
+ goto out1;
+
// heuristic: "usb%d" for links we know are two-host,
// else "eth%d" when there's reasonable doubt. userspace
// can rename the link if it knows better.
@@ -1208,12 +1211,12 @@ usbnet_probe (struct usb_interface *udev
if (status == 0 && dev->status)
status = init_status (dev, udev);
if (status < 0)
- goto out1;
+ goto out3;
if (!dev->rx_urb_size)
dev->rx_urb_size = dev->hard_mtu;
dev->maxpacket = usb_maxpacket (dev->udev, dev->out, 1);
-
+
SET_NETDEV_DEV(net, &udev->dev);
status = register_netdev (net);
if (status)
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 077/101] Backport of psmouse suspend/shutdown cleanups
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (75 preceding siblings ...)
2007-03-07 17:11 ` [patch 076/101] USB: usbnet driver bugfix Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 078/101] Revert "LOG2: Alter get_order() so that it can make use of ilog2() on a constant" Greg KH
` (25 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, Dmitry Torokhov,
Dmitry Torokhov, Thomas Renninger
[-- Attachment #1: backport-of-psmouse-suspend-shutdown-cleanups.patch --]
[-- Type: text/plain, Size: 2562 bytes --]
From: Thomas Renninger <trenn@suse.de>
This patch works back to 2.6.17 (earlier kernels seem to
need up/down operations on mutex/semaphore).
psmouse - properly reset mouse on shutdown/suspend
Some people report that they need psmouse module unloaded
for suspend to ram/disk to work properly. Let's make port
cleanup behave the same way as driver unload.
This fixes "bad state" problem on various HP laptops, such
as nx7400.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/input/mouse/psmouse-base.c | 28 ++++++++++++++++++++++++++++
drivers/input/mouse/psmouse.h | 1 +
drivers/input/mouse/synaptics.c | 1 +
3 files changed, 30 insertions(+)
--- linux-2.6.20.1.orig/drivers/input/mouse/psmouse-base.c
+++ linux-2.6.20.1/drivers/input/mouse/psmouse-base.c
@@ -987,8 +987,36 @@ static void psmouse_resync(struct work_s
static void psmouse_cleanup(struct serio *serio)
{
struct psmouse *psmouse = serio_get_drvdata(serio);
+ struct psmouse *parent = NULL;
+
+ mutex_lock(&psmouse_mutex);
+
+ if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) {
+ parent = serio_get_drvdata(serio->parent);
+ psmouse_deactivate(parent);
+ }
+
+ psmouse_deactivate(psmouse);
+
+ if (psmouse->cleanup)
+ psmouse->cleanup(psmouse);
psmouse_reset(psmouse);
+
+/*
+ * Some boxes, such as HP nx7400, get terribly confused if mouse
+ * is not fully enabled before suspending/shutting down.
+ */
+ ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE);
+
+ if (parent) {
+ if (parent->pt_deactivate)
+ parent->pt_deactivate(parent);
+
+ psmouse_activate(parent);
+ }
+
+ mutex_unlock(&psmouse_mutex);
}
/*
--- linux-2.6.20.1.orig/drivers/input/mouse/psmouse.h
+++ linux-2.6.20.1/drivers/input/mouse/psmouse.h
@@ -68,6 +68,7 @@ struct psmouse {
int (*reconnect)(struct psmouse *psmouse);
void (*disconnect)(struct psmouse *psmouse);
+ void (*cleanup)(struct psmouse *psmouse);
int (*poll)(struct psmouse *psmouse);
void (*pt_activate)(struct psmouse *psmouse);
--- linux-2.6.20.1.orig/drivers/input/mouse/synaptics.c
+++ linux-2.6.20.1/drivers/input/mouse/synaptics.c
@@ -652,6 +652,7 @@ int synaptics_init(struct psmouse *psmou
psmouse->set_rate = synaptics_set_rate;
psmouse->disconnect = synaptics_disconnect;
psmouse->reconnect = synaptics_reconnect;
+ psmouse->cleanup = synaptics_reset;
psmouse->pktsize = 6;
/* Synaptics can usually stay in sync without extra help */
psmouse->resync_time = 0;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 078/101] Revert "LOG2: Alter get_order() so that it can make use of ilog2() on a constant"
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (76 preceding siblings ...)
2007-03-07 17:11 ` [patch 077/101] Backport of psmouse suspend/shutdown cleanups Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 079/101] RPM: fix double free in portmapper code Greg KH
` (24 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, David Howells,
Benjamin Herrenschmidt, Paul Mackerras, Andrew Morton,
David Woodhouse
[-- Attachment #1: revert-log2-alter-get_order-so-that-it-can-make-use-of-ilog2-on-a-constant.patch --]
[-- Type: text/plain, Size: 2945 bytes --]
From: Linus Torvalds <torvalds@linux-foundation.org>
Revert "[PATCH] LOG2: Alter get_order() so that it can make use of ilog2() on a constant"
This reverts commit 39d61db0edb34d60b83c5e0d62d0e906578cc707.
The commit was buggy in multiple ways:
- the conversion to ilog2() was incorrect to begin with
- it tested the wrong #defines, so on all architectures but FRV you'd
never see the bug except for constant arguments.
- the new "get_order()" macro used its arguments multiple times, and
didn't even parenthesize them properly
- despite the comments, it was not true that you could use it for
constant initializers, since not all architectures even use the
generic page.h header file.
All of the problems are individually fixable, but it all boils down to:
better just revert it, and re-do it from scratch.
Cc: David Howells <dhowells@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Andrew Morton <akpm@osdl.org>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/asm-generic/page.h | 38 ++++----------------------------------
1 file changed, 4 insertions(+), 34 deletions(-)
--- linux-2.6.20.1.orig/include/asm-generic/page.h
+++ linux-2.6.20.1/include/asm-generic/page.h
@@ -4,51 +4,21 @@
#ifdef __KERNEL__
#ifndef __ASSEMBLY__
-#include <linux/log2.h>
+#include <linux/compiler.h>
-/*
- * non-const pure 2^n version of get_order
- * - the arch may override these in asm/bitops.h if they can be implemented
- * more efficiently than using the arch log2 routines
- * - we use the non-const log2() instead if the arch has defined one suitable
- */
-#ifndef ARCH_HAS_GET_ORDER
-static inline __attribute__((const))
-int __get_order(unsigned long size, int page_shift)
+/* Pure 2^n version of get_order */
+static __inline__ __attribute_const__ int get_order(unsigned long size)
{
-#if BITS_PER_LONG == 32 && defined(ARCH_HAS_ILOG2_U32)
- int order = __ilog2_u32(size) - page_shift;
- return order >= 0 ? order : 0;
-#elif BITS_PER_LONG == 64 && defined(ARCH_HAS_ILOG2_U64)
- int order = __ilog2_u64(size) - page_shift;
- return order >= 0 ? order : 0;
-#else
int order;
- size = (size - 1) >> (page_shift - 1);
+ size = (size - 1) >> (PAGE_SHIFT - 1);
order = -1;
do {
size >>= 1;
order++;
} while (size);
return order;
-#endif
}
-#endif
-
-/**
- * get_order - calculate log2(pages) to hold a block of the specified size
- * @n - size
- *
- * calculate allocation order based on the current page size
- * - this can be used to initialise global variables from constant data
- */
-#define get_order(n) \
-( \
- __builtin_constant_p(n) ? \
- ((n < (1UL << PAGE_SHIFT)) ? 0 : ilog2(n) - PAGE_SHIFT) : \
- __get_order(n, PAGE_SHIFT) \
- )
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 079/101] RPM: fix double free in portmapper code
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (77 preceding siblings ...)
2007-03-07 17:11 ` [patch 078/101] Revert "LOG2: Alter get_order() so that it can make use of ilog2() on a constant" Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 080/101] NLM: Fix double free in __nlm_async_call Greg KH
` (23 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, neilb, kas, Trond.Myklebust
[-- Attachment #1: rpm-fix-double-free-in-portmapper-code.patch --]
[-- Type: text/plain, Size: 1267 bytes --]
From: Trond Myklebust <Trond.Myklebust@netapp.com>
rpc_run_task is guaranteed to always call ->rpc_release.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Neil Brown <neilb@suse.de>
Cc: Jan "Yenya" Kasprzak <kas@fi.muni.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
net/sunrpc/pmap_clnt.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/net/sunrpc/pmap_clnt.c
+++ linux-2.6.20.1/net/sunrpc/pmap_clnt.c
@@ -62,7 +62,10 @@ static inline void pmap_map_free(struct
static void pmap_map_release(void *data)
{
- pmap_map_free(data);
+ struct portmap_args *map = data;
+
+ xprt_put(map->pm_xprt);
+ pmap_map_free(map);
}
static const struct rpc_call_ops pmap_getport_ops = {
@@ -133,7 +136,7 @@ void rpc_getport(struct rpc_task *task)
status = -EIO;
child = rpc_run_task(pmap_clnt, RPC_TASK_ASYNC, &pmap_getport_ops, map);
if (IS_ERR(child))
- goto bailout;
+ goto bailout_nofree;
rpc_put_task(child);
task->tk_xprt->stat.bind_count++;
@@ -222,7 +225,6 @@ static void pmap_getport_done(struct rpc
child->tk_pid, status, map->pm_port);
pmap_wake_portmap_waiters(xprt, status);
- xprt_put(xprt);
}
/**
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 080/101] NLM: Fix double free in __nlm_async_call
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (78 preceding siblings ...)
2007-03-07 17:11 ` [patch 079/101] RPM: fix double free in portmapper code Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 081/101] kexec: Fix CONFIG_SMP=n compilation V2 (ia64) Greg KH
` (22 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 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, torvalds, akpm, alan, neilb, kas, Trond.Myklebust,
Andrew Morton
[-- Attachment #1: nlm-fix-double-free-in-__nlm_async_call.patch --]
[-- Type: text/plain, Size: 1813 bytes --]
From: Trond Myklebust <Trond.Myklebust@netapp.com>
rpc_call_async() will always call rpc_release_calldata(), so it is an
error for __nlm_async_call() to do so as well.
Addresses http://bugzilla.kernel.org/show_bug.cgi?id=7923
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Jan "Yenya" Kasprzak <kas@fi.muni.cz>
Cc: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/lockd/clntproc.c | 9 +++------
fs/lockd/svclock.c | 4 +---
2 files changed, 4 insertions(+), 9 deletions(-)
--- linux-2.6.20.1.orig/fs/lockd/clntproc.c
+++ linux-2.6.20.1/fs/lockd/clntproc.c
@@ -361,7 +361,6 @@ static int __nlm_async_call(struct nlm_r
{
struct nlm_host *host = req->a_host;
struct rpc_clnt *clnt;
- int status = -ENOLCK;
dprintk("lockd: call procedure %d on %s (async)\n",
(int)proc, host->h_name);
@@ -373,12 +372,10 @@ static int __nlm_async_call(struct nlm_r
msg->rpc_proc = &clnt->cl_procinfo[proc];
/* bootstrap and kick off the async RPC call */
- status = rpc_call_async(clnt, msg, RPC_TASK_ASYNC, tk_ops, req);
- if (status == 0)
- return 0;
+ return rpc_call_async(clnt, msg, RPC_TASK_ASYNC, tk_ops, req);
out_err:
- nlm_release_call(req);
- return status;
+ tk_ops->rpc_release(req);
+ return -ENOLCK;
}
int nlm_async_call(struct nlm_rqst *req, u32 proc, const struct rpc_call_ops *tk_ops)
--- linux-2.6.20.1.orig/fs/lockd/svclock.c
+++ linux-2.6.20.1/fs/lockd/svclock.c
@@ -593,9 +593,7 @@ callback:
/* Call the client */
kref_get(&block->b_count);
- if (nlm_async_call(block->b_call, NLMPROC_GRANTED_MSG,
- &nlmsvc_grant_ops) < 0)
- nlmsvc_release_block(block);
+ nlm_async_call(block->b_call, NLMPROC_GRANTED_MSG, &nlmsvc_grant_ops);
}
/*
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 081/101] kexec: Fix CONFIG_SMP=n compilation V2 (ia64)
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (79 preceding siblings ...)
2007-03-07 17:11 ` [patch 080/101] NLM: Fix double free in __nlm_async_call Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 082/101] Fix MTRR compat ioctl Greg KH
` (21 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, tony.luck
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, linux-ia64, jlan, magnus,
horms
[-- Attachment #1: kexec-fix-config_smp-n-compilation-v2.patch --]
[-- Type: text/plain, Size: 2544 bytes --]
From: Magnus Damm <magnus@valinux.co.jp>
Kexec support for 2.6.20 on ia64 does not build properly using a config
made up by CONFIG_SMP=n and CONFIG_HOTPLUG_CPU=n:
CC arch/ia64/kernel/machine_kexec.o
arch/ia64/kernel/machine_kexec.c: In function `machine_shutdown':
arch/ia64/kernel/machine_kexec.c:77: warning: implicit declaration of function `cpu_down'
AS arch/ia64/kernel/relocate_kernel.o
CC arch/ia64/kernel/crash.o
arch/ia64/kernel/crash.c: In function `kdump_cpu_freeze':
arch/ia64/kernel/crash.c:139: warning: implicit declaration of function `ia64_jump_to_sal'
arch/ia64/kernel/crash.c:139: error: `sal_boot_rendez_state' undeclared (first use in this function)
arch/ia64/kernel/crash.c:139: error: (Each undeclared identifier is reported only once
arch/ia64/kernel/crash.c:139: error: for each function it appears in.)
arch/ia64/kernel/crash.c: At top level:
arch/ia64/kernel/crash.c:84: warning: 'kdump_wait_cpu_freeze' defined but not used
make[1]: *** [arch/ia64/kernel/crash.o] Error 1
make: *** [arch/ia64/kernel] Error 2
Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Acked-by: Simon Horman <horms@verge.net.au>
Acked-by: Jay Lan <jlan@sgi.com>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/ia64/kernel/crash.c | 11 +++++++----
arch/ia64/kernel/machine_kexec.c | 2 ++
2 files changed, 9 insertions(+), 4 deletions(-)
--- linux-2.6.20.1.orig/arch/ia64/kernel/crash.c
+++ linux-2.6.20.1/arch/ia64/kernel/crash.c
@@ -79,6 +79,7 @@ crash_save_this_cpu()
final_note(buf);
}
+#ifdef CONFIG_SMP
static int
kdump_wait_cpu_freeze(void)
{
@@ -91,6 +92,7 @@ kdump_wait_cpu_freeze(void)
}
return 1;
}
+#endif
void
machine_crash_shutdown(struct pt_regs *pt)
@@ -132,11 +134,12 @@ kdump_cpu_freeze(struct unw_frame_info *
atomic_inc(&kdump_cpu_freezed);
kdump_status[cpuid] = 1;
mb();
- if (cpuid == 0) {
- for (;;)
- cpu_relax();
- } else
+#ifdef CONFIG_HOTPLUG_CPU
+ if (cpuid != 0)
ia64_jump_to_sal(&sal_boot_rendez_state[cpuid]);
+#endif
+ for (;;)
+ cpu_relax();
}
static int
--- linux-2.6.20.1.orig/arch/ia64/kernel/machine_kexec.c
+++ linux-2.6.20.1/arch/ia64/kernel/machine_kexec.c
@@ -70,12 +70,14 @@ void machine_kexec_cleanup(struct kimage
void machine_shutdown(void)
{
+#ifdef CONFIG_HOTPLUG_CPU
int cpu;
for_each_online_cpu(cpu) {
if (cpu != smp_processor_id())
cpu_down(cpu);
}
+#endif
kexec_disable_iosapic();
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 082/101] Fix MTRR compat ioctl
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (80 preceding siblings ...)
2007-03-07 17:11 ` [patch 081/101] kexec: Fix CONFIG_SMP=n compilation V2 (ia64) Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 083/101] ufs: restore back support of openstep Greg KH
` (20 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, ak
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, zwane
[-- Attachment #1: fix-mtrr-compat-ioctl.patch --]
[-- Type: text/plain, Size: 3099 bytes --]
From: Zwane Mwaikambo <zwane@infradead.org>
The MTRR compat code wasn't calling the lowlevel MTRR setup due to a switch
block not handling the compat case.
Before:
(WW) I810(0): Failed to set up write-combining range (0xd0000000,0x10000000)
After:
reg00: base=0x00000000 ( 0MB), size=1024MB: write-back, count=1
reg01: base=0x40000000 (1024MB), size= 512MB: write-back, count=1
reg02: base=0x5f700000 (1527MB), size= 1MB: uncachable, count=1
reg03: base=0x5f800000 (1528MB), size= 8MB: uncachable, count=1
reg04: base=0xd0000000 (3328MB), size= 256MB: write-combining, count=1
Signed-off-by: Zwane Mwaikambo <zwane@infradead.org>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/i386/kernel/cpu/mtrr/if.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
--- linux-2.6.20.1.orig/arch/i386/kernel/cpu/mtrr/if.c
+++ linux-2.6.20.1/arch/i386/kernel/cpu/mtrr/if.c
@@ -158,8 +158,9 @@ mtrr_ioctl(struct file *file, unsigned i
struct mtrr_sentry sentry;
struct mtrr_gentry gentry;
void __user *arg = (void __user *) __arg;
+ unsigned int compat_cmd = cmd;
- switch (cmd) {
+ switch (compat_cmd) {
case MTRRIOC_ADD_ENTRY:
case MTRRIOC_SET_ENTRY:
case MTRRIOC_DEL_ENTRY:
@@ -177,14 +178,20 @@ mtrr_ioctl(struct file *file, unsigned i
return -EFAULT;
break;
#ifdef CONFIG_COMPAT
- case MTRRIOC32_ADD_ENTRY:
- case MTRRIOC32_SET_ENTRY:
- case MTRRIOC32_DEL_ENTRY:
- case MTRRIOC32_KILL_ENTRY:
- case MTRRIOC32_ADD_PAGE_ENTRY:
- case MTRRIOC32_SET_PAGE_ENTRY:
- case MTRRIOC32_DEL_PAGE_ENTRY:
- case MTRRIOC32_KILL_PAGE_ENTRY: {
+#define MTRR_COMPAT_OP(op, type)\
+ case MTRRIOC32_##op: \
+ cmd = MTRRIOC_##op; \
+ goto compat_get_##type
+
+ MTRR_COMPAT_OP(ADD_ENTRY, sentry);
+ MTRR_COMPAT_OP(SET_ENTRY, sentry);
+ MTRR_COMPAT_OP(DEL_ENTRY, sentry);
+ MTRR_COMPAT_OP(KILL_ENTRY, sentry);
+ MTRR_COMPAT_OP(ADD_PAGE_ENTRY, sentry);
+ MTRR_COMPAT_OP(SET_PAGE_ENTRY, sentry);
+ MTRR_COMPAT_OP(DEL_PAGE_ENTRY, sentry);
+ MTRR_COMPAT_OP(KILL_PAGE_ENTRY, sentry);
+compat_get_sentry: {
struct mtrr_sentry32 __user *s32 = (struct mtrr_sentry32 __user *)__arg;
err = get_user(sentry.base, &s32->base);
err |= get_user(sentry.size, &s32->size);
@@ -193,8 +200,9 @@ mtrr_ioctl(struct file *file, unsigned i
return err;
break;
}
- case MTRRIOC32_GET_ENTRY:
- case MTRRIOC32_GET_PAGE_ENTRY: {
+ MTRR_COMPAT_OP(GET_ENTRY, gentry);
+ MTRR_COMPAT_OP(GET_PAGE_ENTRY, gentry);
+compat_get_gentry: {
struct mtrr_gentry32 __user *g32 = (struct mtrr_gentry32 __user *)__arg;
err = get_user(gentry.regnum, &g32->regnum);
err |= get_user(gentry.base, &g32->base);
@@ -204,6 +212,7 @@ mtrr_ioctl(struct file *file, unsigned i
return err;
break;
}
+#undef MTRR_COMPAT_OP
#endif
}
@@ -287,7 +296,7 @@ mtrr_ioctl(struct file *file, unsigned i
if (err)
return err;
- switch(cmd) {
+ switch(compat_cmd) {
case MTRRIOC_GET_ENTRY:
case MTRRIOC_GET_PAGE_ENTRY:
if (copy_to_user(arg, &gentry, sizeof gentry))
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 083/101] ufs: restore back support of openstep
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (81 preceding siblings ...)
2007-03-07 17:11 ` [patch 082/101] Fix MTRR compat ioctl Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:11 ` [patch 084/101] v9fs_vfs_mkdir(): fix a double free Greg KH
` (19 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, dushistov
[-- Attachment #1: ufs-restore-back-support-of-openstep.patch --]
[-- Type: text/plain, Size: 6248 bytes --]
From: Evgeniy Dushistov <dushistov@mail.ru>
This is a fix of regression, which triggered by ~2.6.16.
Patch with name ufs-directory-and-page-cache-from-blocks-to-pages.patch: in
additional to conversation from block to page cache mechanism added new
checks of directory integrity, one of them that directory entry do not
across directory chunks.
But some kinds of UFS: OpenStep UFS and Apple UFS (looks like these are the
same filesystems) have different directory chunk size, then common
UFSes(BSD and Solaris UFS).
So this patch adds ability to works with variable size of directory chunks,
and set it for ufstype=openstep to right size.
Tested on darwin ufs.
Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/ufs/dir.c | 21 ++++++++++++---------
fs/ufs/super.c | 5 ++++-
include/linux/ufs_fs.h | 1 +
3 files changed, 17 insertions(+), 10 deletions(-)
--- linux-2.6.20.1.orig/fs/ufs/dir.c
+++ linux-2.6.20.1/fs/ufs/dir.c
@@ -106,12 +106,13 @@ static void ufs_check_page(struct page *
char *kaddr = page_address(page);
unsigned offs, rec_len;
unsigned limit = PAGE_CACHE_SIZE;
+ const unsigned chunk_mask = UFS_SB(sb)->s_uspi->s_dirblksize - 1;
struct ufs_dir_entry *p;
char *error;
if ((dir->i_size >> PAGE_CACHE_SHIFT) == page->index) {
limit = dir->i_size & ~PAGE_CACHE_MASK;
- if (limit & (UFS_SECTOR_SIZE - 1))
+ if (limit & chunk_mask)
goto Ebadsize;
if (!limit)
goto out;
@@ -126,7 +127,7 @@ static void ufs_check_page(struct page *
goto Ealign;
if (rec_len < UFS_DIR_REC_LEN(ufs_get_de_namlen(sb, p)))
goto Enamelen;
- if (((offs + rec_len - 1) ^ offs) & ~(UFS_SECTOR_SIZE-1))
+ if (((offs + rec_len - 1) ^ offs) & ~chunk_mask)
goto Espan;
if (fs32_to_cpu(sb, p->d_ino) > (UFS_SB(sb)->s_uspi->s_ipg *
UFS_SB(sb)->s_uspi->s_ncg))
@@ -310,6 +311,7 @@ int ufs_add_link(struct dentry *dentry,
int namelen = dentry->d_name.len;
struct super_block *sb = dir->i_sb;
unsigned reclen = UFS_DIR_REC_LEN(namelen);
+ const unsigned int chunk_size = UFS_SB(sb)->s_uspi->s_dirblksize;
unsigned short rec_len, name_len;
struct page *page = NULL;
struct ufs_dir_entry *de;
@@ -342,8 +344,8 @@ int ufs_add_link(struct dentry *dentry,
if ((char *)de == dir_end) {
/* We hit i_size */
name_len = 0;
- rec_len = UFS_SECTOR_SIZE;
- de->d_reclen = cpu_to_fs16(sb, UFS_SECTOR_SIZE);
+ rec_len = chunk_size;
+ de->d_reclen = cpu_to_fs16(sb, chunk_size);
de->d_ino = 0;
goto got_it;
}
@@ -431,7 +433,7 @@ ufs_readdir(struct file *filp, void *dir
unsigned int offset = pos & ~PAGE_CACHE_MASK;
unsigned long n = pos >> PAGE_CACHE_SHIFT;
unsigned long npages = ufs_dir_pages(inode);
- unsigned chunk_mask = ~(UFS_SECTOR_SIZE - 1);
+ unsigned chunk_mask = ~(UFS_SB(sb)->s_uspi->s_dirblksize - 1);
int need_revalidate = filp->f_version != inode->i_version;
unsigned flags = UFS_SB(sb)->s_flags;
@@ -511,7 +513,7 @@ int ufs_delete_entry(struct inode *inode
struct super_block *sb = inode->i_sb;
struct address_space *mapping = page->mapping;
char *kaddr = page_address(page);
- unsigned from = ((char*)dir - kaddr) & ~(UFS_SECTOR_SIZE - 1);
+ unsigned from = ((char*)dir - kaddr) & ~(UFS_SB(sb)->s_uspi->s_dirblksize - 1);
unsigned to = ((char*)dir - kaddr) + fs16_to_cpu(sb, dir->d_reclen);
struct ufs_dir_entry *pde = NULL;
struct ufs_dir_entry *de = (struct ufs_dir_entry *) (kaddr + from);
@@ -556,6 +558,7 @@ int ufs_make_empty(struct inode * inode,
struct super_block * sb = dir->i_sb;
struct address_space *mapping = inode->i_mapping;
struct page *page = grab_cache_page(mapping, 0);
+ const unsigned int chunk_size = UFS_SB(sb)->s_uspi->s_dirblksize;
struct ufs_dir_entry * de;
char *base;
int err;
@@ -563,7 +566,7 @@ int ufs_make_empty(struct inode * inode,
if (!page)
return -ENOMEM;
kmap(page);
- err = mapping->a_ops->prepare_write(NULL, page, 0, UFS_SECTOR_SIZE);
+ err = mapping->a_ops->prepare_write(NULL, page, 0, chunk_size);
if (err) {
unlock_page(page);
goto fail;
@@ -584,11 +587,11 @@ int ufs_make_empty(struct inode * inode,
((char *)de + fs16_to_cpu(sb, de->d_reclen));
de->d_ino = cpu_to_fs32(sb, dir->i_ino);
ufs_set_de_type(sb, de, dir->i_mode);
- de->d_reclen = cpu_to_fs16(sb, UFS_SECTOR_SIZE - UFS_DIR_REC_LEN(1));
+ de->d_reclen = cpu_to_fs16(sb, chunk_size - UFS_DIR_REC_LEN(1));
ufs_set_de_namlen(sb, de, 2);
strcpy (de->d_name, "..");
- err = ufs_commit_chunk(page, 0, UFS_SECTOR_SIZE);
+ err = ufs_commit_chunk(page, 0, chunk_size);
fail:
kunmap(page);
page_cache_release(page);
--- linux-2.6.20.1.orig/fs/ufs/super.c
+++ linux-2.6.20.1/fs/ufs/super.c
@@ -649,7 +649,7 @@ static int ufs_fill_super(struct super_b
kmalloc (sizeof(struct ufs_sb_private_info), GFP_KERNEL);
if (!uspi)
goto failed;
-
+ uspi->s_dirblksize = UFS_SECTOR_SIZE;
super_block_offset=UFS_SBLOCK;
/* Keep 2Gig file limit. Some UFS variants need to override
@@ -718,6 +718,7 @@ static int ufs_fill_super(struct super_b
break;
case UFS_MOUNT_UFSTYPE_NEXTSTEP:
+ /*TODO: check may be we need set special dir block size?*/
UFSD("ufstype=nextstep\n");
uspi->s_fsize = block_size = 1024;
uspi->s_fmask = ~(1024 - 1);
@@ -733,6 +734,7 @@ static int ufs_fill_super(struct super_b
break;
case UFS_MOUNT_UFSTYPE_NEXTSTEP_CD:
+ /*TODO: check may be we need set special dir block size?*/
UFSD("ufstype=nextstep-cd\n");
uspi->s_fsize = block_size = 2048;
uspi->s_fmask = ~(2048 - 1);
@@ -754,6 +756,7 @@ static int ufs_fill_super(struct super_b
uspi->s_fshift = 10;
uspi->s_sbsize = super_block_size = 2048;
uspi->s_sbbase = 0;
+ uspi->s_dirblksize = 1024;
flags |= UFS_DE_44BSD | UFS_UID_44BSD | UFS_ST_44BSD | UFS_CG_44BSD;
if (!(sb->s_flags & MS_RDONLY)) {
if (!silent)
--- linux-2.6.20.1.orig/include/linux/ufs_fs.h
+++ linux-2.6.20.1/include/linux/ufs_fs.h
@@ -789,6 +789,7 @@ struct ufs_sb_private_info {
__u32 s_maxsymlinklen;/* upper limit on fast symlinks' size */
__s32 fs_magic; /* filesystem magic */
+ unsigned int s_dirblksize;
};
/*
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 084/101] v9fs_vfs_mkdir(): fix a double free
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (82 preceding siblings ...)
2007-03-07 17:11 ` [patch 083/101] ufs: restore back support of openstep Greg KH
@ 2007-03-07 17:11 ` Greg KH
2007-03-07 17:12 ` [patch 085/101] enable mouse button 2+3 emulation for x86 macs Greg KH
` (18 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:11 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, ericvh, bunk
[-- Attachment #1: v9fs_vfs_mkdir-fix-a-double-free.patch --]
[-- Type: text/plain, Size: 925 bytes --]
From: Adrian Bunk <bunk@stusta.de>
Fix a double free of "dfid" introduced by commit
da977b2c7eb4d6312f063a7b486f2aad99809710 and spotted by the Coverity
checker.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Cc: Eric Van Hensbergen <ericvh@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/9p/vfs_inode.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
--- linux-2.6.20.1.orig/fs/9p/vfs_inode.c
+++ linux-2.6.20.1/fs/9p/vfs_inode.c
@@ -585,17 +585,14 @@ static int v9fs_vfs_mkdir(struct inode *
if (IS_ERR(inode)) {
err = PTR_ERR(inode);
inode = NULL;
- goto clean_up_fids;
+ v9fs_fid_destroy(vfid);
+ goto error;
}
dentry->d_op = &v9fs_dentry_operations;
d_instantiate(dentry, inode);
return 0;
-clean_up_fids:
- if (vfid)
- v9fs_fid_destroy(vfid);
-
clean_up_dfid:
v9fs_fid_clunk(v9ses, dfid);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 085/101] enable mouse button 2+3 emulation for x86 macs
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (83 preceding siblings ...)
2007-03-07 17:11 ` [patch 084/101] v9fs_vfs_mkdir(): fix a double free Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 086/101] hugetlb: preserve hugetlb pte dirty state Greg KH
` (17 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, kernel, benh, paulus, dtor
[-- Attachment #1: enable-mouse-button-2-3-emulation-for-x86-macs.patch --]
[-- Type: text/plain, Size: 1359 bytes --]
From: Soeren Sonnenburg <kernel@nn7.de>
As macbook/macbook pro's also have to live with a single mouse button the
following patch just enables the Macintosh device drivers menu in Kconfig +
adds the macintosh dir to the obj-* to make macbook* users happy (who use
exactly that since months....
Signed-off-by: Soeren Sonnenburg <kernel@nn7.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/Makefile | 2 +-
drivers/macintosh/Kconfig | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/Makefile
+++ linux-2.6.20.1/drivers/Makefile
@@ -30,7 +30,7 @@ obj-$(CONFIG_PARPORT) += parport/
obj-y += base/ block/ misc/ mfd/ net/ media/
obj-$(CONFIG_NUBUS) += nubus/
obj-$(CONFIG_ATM) += atm/
-obj-$(CONFIG_PPC_PMAC) += macintosh/
+obj-y += macintosh/
obj-$(CONFIG_IDE) += ide/
obj-$(CONFIG_FC4) += fc4/
obj-$(CONFIG_SCSI) += scsi/
--- linux-2.6.20.1.orig/drivers/macintosh/Kconfig
+++ linux-2.6.20.1/drivers/macintosh/Kconfig
@@ -1,6 +1,6 @@
menu "Macintosh device drivers"
- depends on PPC || MAC
+ depends on PPC || MAC || X86
config ADB
bool "Apple Desktop Bus (ADB) support"
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 086/101] hugetlb: preserve hugetlb pte dirty state
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (84 preceding siblings ...)
2007-03-07 17:12 ` [patch 085/101] enable mouse button 2+3 emulation for x86 macs Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 087/101] m32r: build fix for processors without ISA_DSP_LEVEL2 Greg KH
` (16 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, nish.aravamudan, wli, kenchen, agl,
hugh, david, William Irwin
[-- Attachment #1: hugetlb-preserve-hugetlb-pte-dirty-state.patch --]
[-- Type: text/plain, Size: 1964 bytes --]
From: "Ken Chen" <kenchen@google.com>
__unmap_hugepage_range() is buggy that it does not preserve dirty state of
huge_pte when unmapping hugepage range. It causes data corruption in the
event of dop_caches being used by sys admin. For example, an application
creates a hugetlb file, modify pages, then unmap it. While leaving the
hugetlb file alive, comes along sys admin doing a "echo 3 >
/proc/sys/vm/drop_caches".
drop_pagecache_sb() will happily free all pages that aren't marked dirty if
there are no active mapping. Later when application remaps the hugetlb
file back and all data are gone, triggering catastrophic flip over on
application.
Not only that, the internal resv_huge_pages count will also get all messed
up. Fix it up by marking page dirty appropriately.
Signed-off-by: Ken Chen <kenchen@google.com>
Cc: "Nish Aravamudan" <nish.aravamudan@gmail.com>
Cc: Adam Litke <agl@us.ibm.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Acked-by: William Irwin <bill.irwin@oracle.com>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/hugetlbfs/inode.c | 5 ++++-
mm/hugetlb.c | 2 ++
2 files changed, 6 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/fs/hugetlbfs/inode.c
+++ linux-2.6.20.1/fs/hugetlbfs/inode.c
@@ -449,10 +449,13 @@ static int hugetlbfs_symlink(struct inod
}
/*
- * For direct-IO reads into hugetlb pages
+ * mark the head page dirty
*/
static int hugetlbfs_set_page_dirty(struct page *page)
{
+ struct page *head = (struct page *)page_private(page);
+
+ SetPageDirty(head);
return 0;
}
--- linux-2.6.20.1.orig/mm/hugetlb.c
+++ linux-2.6.20.1/mm/hugetlb.c
@@ -389,6 +389,8 @@ void __unmap_hugepage_range(struct vm_ar
continue;
page = pte_page(pte);
+ if (pte_dirty(pte))
+ set_page_dirty(page);
list_add(&page->lru, &page_list);
}
spin_unlock(&mm->page_table_lock);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 087/101] m32r: build fix for processors without ISA_DSP_LEVEL2
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (85 preceding siblings ...)
2007-03-07 17:12 ` [patch 086/101] hugetlb: preserve hugetlb pte dirty state Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 088/101] kernel/time/clocksource.c needs struct task_struct on m68k Greg KH
` (15 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, takata
[-- Attachment #1: m32r-build-fix-for-processors-without-isa_dsp_level2.patch --]
[-- Type: text/plain, Size: 2057 bytes --]
From: Hirokazu Takata <takata@linux-m32r.org>
Additional fixes for processors without ISA_DSP_LEVEL2. sigcontext_t does not
have dummy_acc1h, dummy_acc1l members any longer.
Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/m32r/kernel/process.c | 2 +-
arch/m32r/kernel/signal.c | 26 ++++----------------------
2 files changed, 5 insertions(+), 23 deletions(-)
--- linux-2.6.20.1.orig/arch/m32r/kernel/process.c
+++ linux-2.6.20.1/arch/m32r/kernel/process.c
@@ -174,7 +174,7 @@ void show_regs(struct pt_regs * regs)
regs->acc1h, regs->acc1l);
#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
printk("ACCH[%08lx]:ACCL[%08lx]\n", \
- regs->acch, regs->accl);
+ regs->acc0h, regs->acc0l);
#else
#error unknown isa configuration
#endif
--- linux-2.6.20.1.orig/arch/m32r/kernel/signal.c
+++ linux-2.6.20.1/arch/m32r/kernel/signal.c
@@ -109,19 +109,10 @@ restore_sigcontext(struct pt_regs *regs,
COPY(r10);
COPY(r11);
COPY(r12);
-#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
COPY(acc0h);
COPY(acc0l);
- COPY(acc1h);
- COPY(acc1l);
-#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
- COPY(acch);
- COPY(accl);
- COPY(dummy_acc1h);
- COPY(dummy_acc1l);
-#else
-#error unknown isa configuration
-#endif
+ COPY(acc1h); /* ISA_DSP_LEVEL2 only */
+ COPY(acc1l); /* ISA_DSP_LEVEL2 only */
COPY(psw);
COPY(bpc);
COPY(bbpsw);
@@ -196,19 +187,10 @@ setup_sigcontext(struct sigcontext __use
COPY(r10);
COPY(r11);
COPY(r12);
-#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
COPY(acc0h);
COPY(acc0l);
- COPY(acc1h);
- COPY(acc1l);
-#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
- COPY(acch);
- COPY(accl);
- COPY(dummy_acc1h);
- COPY(dummy_acc1l);
-#else
-#error unknown isa configuration
-#endif
+ COPY(acc1h); /* ISA_DSP_LEVEL2 only */
+ COPY(acc1l); /* ISA_DSP_LEVEL2 only */
COPY(psw);
COPY(bpc);
COPY(bbpsw);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 088/101] kernel/time/clocksource.c needs struct task_struct on m68k
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (86 preceding siblings ...)
2007-03-07 17:12 ` [patch 087/101] m32r: build fix for processors without ISA_DSP_LEVEL2 Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 089/101] buffer: memorder fix Greg KH
` (14 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, mathieu.desnoyers, zippel, tglx, mingo
[-- Attachment #1: kernel-time-clocksource.c-needs-struct-task_struct-on-m68k.patch --]
[-- Type: text/plain, Size: 1265 bytes --]
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
kernel/time/clocksource.c needs struct task_struct on m68k.
Because it uses spin_unlock_irq(), which, on m68k, uses hardirq_count(), which
uses preempt_count(), which needs to dereference struct task_struct, we
have to include sched.h. Because it would cause a loop inclusion, we
cannot include sched.h in any other of asm-m68k/system.h,
linux/thread_info.h, linux/hardirq.h, which leaves this ugly include in
a C file as the only simple solution.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
kernel/time/clocksource.c | 1 +
1 file changed, 1 insertion(+)
--- linux-2.6.20.1.orig/kernel/time/clocksource.c
+++ linux-2.6.20.1/kernel/time/clocksource.c
@@ -28,6 +28,7 @@
#include <linux/sysdev.h>
#include <linux/init.h>
#include <linux/module.h>
+#include <linux/sched.h> /* for spin_unlock_irq() using preempt_count() m68k */
/* XXX - Would like a better way for initializing curr_clocksource */
extern struct clocksource clocksource_jiffies;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 089/101] buffer: memorder fix
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (87 preceding siblings ...)
2007-03-07 17:12 ` [patch 088/101] kernel/time/clocksource.c needs struct task_struct on m68k Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 090/101] Char: specialix, isr have 2 params Greg KH
` (13 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, npiggin, cmm
[-- Attachment #1: buffer-memorder-fix.patch --]
[-- Type: text/plain, Size: 2273 bytes --]
From: Nick Piggin <npiggin@suse.de>
unlock_buffer(), like unlock_page(), must not clear the lock without
ensuring that the critical section is closed.
Mingming later sent the same patch, saying:
We are running SDET benchmark and saw double free issue for ext3 extended
attributes block, which complains the same xattr block already being freed (in
ext3_xattr_release_block()). The problem could also been triggered by
multiple threads loop untar/rm a kernel tree.
The race is caused by missing a memory barrier at unlock_buffer() before the
lock bit being cleared, resulting in possible concurrent h_refcounter update.
That causes a reference counter leak, then later leads to the double free that
we have seen.
Inside unlock_buffer(), there is a memory barrier is placed *after* the lock
bit is being cleared, however, there is no memory barrier *before* the bit is
cleared. On some arch the h_refcount update instruction and the clear bit
instruction could be reordered, thus leave the critical section re-entered.
The race is like this: For example, if the h_refcount is initialized as 1,
cpu 0: cpu1
-------------------------------------- -----------------------------------
lock_buffer() /* test_and_set_bit */
clear_buffer_locked(bh);
lock_buffer() /* test_and_set_bit */
h_refcount = h_refcount+1; /* = 2*/ h_refcount = h_refcount + 1; /*= 2 */
clear_buffer_locked(bh);
.... ......
We lost a h_refcount here. We need a memory barrier before the buffer head
lock bit being cleared to force the order of the two writes. Please apply.
Signed-off-by: Nick Piggin <npiggin@suse.de>
Cc: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/buffer.c | 1 +
1 file changed, 1 insertion(+)
--- linux-2.6.20.1.orig/fs/buffer.c
+++ linux-2.6.20.1/fs/buffer.c
@@ -78,6 +78,7 @@ EXPORT_SYMBOL(__lock_buffer);
void fastcall unlock_buffer(struct buffer_head *bh)
{
+ smp_mb__before_clear_bit();
clear_buffer_locked(bh);
smp_mb__after_clear_bit();
wake_up_bit(&bh->b_state, BH_Lock);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 090/101] Char: specialix, isr have 2 params
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (88 preceding siblings ...)
2007-03-07 17:12 ` [patch 089/101] buffer: memorder fix Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 091/101] lockdep: forward declare struct task_struct Greg KH
` (12 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, jirislaby
[-- Attachment #1: char-specialix-isr-have-2-params.patch --]
[-- Type: text/plain, Size: 833 bytes --]
From: Jiri Slaby <jirislaby@gmail.com>
specialix, isr have 2 params
pt_regs are no longer the third parameter of isr, call sx_interrupt without
it.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/char/specialix.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/char/specialix.c
+++ linux-2.6.20.1/drivers/char/specialix.c
@@ -459,7 +459,7 @@ void missed_irq (unsigned long data)
if (irq) {
printk (KERN_INFO "Missed interrupt... Calling int from timer. \n");
sx_interrupt (((struct specialix_board *)data)->irq,
- (void*)data, NULL);
+ (void*)data);
}
missed_irq_timer.expires = jiffies + sx_poll;
add_timer (&missed_irq_timer);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 091/101] lockdep: forward declare struct task_struct
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (89 preceding siblings ...)
2007-03-07 17:12 ` [patch 090/101] Char: specialix, isr have 2 params Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 092/101] kvm: Fix asm constraint for lldt instruction Greg KH
` (11 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, schwidefsky, heiko.carstens, mingo
[-- Attachment #1: lockdep-forward-declare-struct-task_struct.patch --]
[-- Type: text/plain, Size: 947 bytes --]
From: Heiko Carstens <heiko.carstens@de.ibm.com>
3117df0453828bd045c16244e6f50e5714667a8a causes this:
In file included from arch/s390/kernel/early.c:13:
include/linux/lockdep.h:300: warning:
"struct task_struct" declared inside parameter list
include/linux/lockdep.h:300:
warning: its scope is only this definition or
declaration, which is probably not what you want
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/linux/lockdep.h | 2 ++
1 file changed, 2 insertions(+)
--- linux-2.6.20.1.orig/include/linux/lockdep.h
+++ linux-2.6.20.1/include/linux/lockdep.h
@@ -8,6 +8,8 @@
#ifndef __LINUX_LOCKDEP_H
#define __LINUX_LOCKDEP_H
+struct task_struct;
+
#ifdef CONFIG_LOCKDEP
#include <linux/linkage.h>
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 092/101] kvm: Fix asm constraint for lldt instruction
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (90 preceding siblings ...)
2007-03-07 17:12 ` [patch 091/101] lockdep: forward declare struct task_struct Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 093/101] ueagle-atm.c needs sched.h Greg KH
` (10 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, caglar, mingo, avi
[-- Attachment #1: kvm-fix-asm-constraint-for-lldt-instruction.patch --]
[-- Type: text/plain, Size: 700 bytes --]
From: S.Caglar Onur <caglar@pardus.org.tr>
lldt does not accept immediate operands, which "g" allows.
Signed-off-by: S.Caglar Onur <caglar@pardus.org.tr>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/kvm/kvm.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/kvm/kvm.h
+++ linux-2.6.20.1/drivers/kvm/kvm.h
@@ -558,7 +558,7 @@ static inline void load_gs(u16 sel)
#ifndef load_ldt
static inline void load_ldt(u16 sel)
{
- asm ("lldt %0" : : "g"(sel));
+ asm ("lldt %0" : : "rm"(sel));
}
#endif
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 093/101] ueagle-atm.c needs sched.h
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (91 preceding siblings ...)
2007-03-07 17:12 ` [patch 092/101] kvm: Fix asm constraint for lldt instruction Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 094/101] fix section mismatch warning in lockdep Greg KH
` (9 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, greg
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, randy.dunlap
[-- Attachment #1: ueagle-atm.c-needs-sched.h.patch --]
[-- Type: text/plain, Size: 668 bytes --]
From: Randy Dunlap <randy.dunlap@oracle.com>
Driver needs sched.h for try_to_freeze().
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/atm/ueagle-atm.c | 1 +
1 file changed, 1 insertion(+)
--- linux-2.6.20.1.orig/drivers/usb/atm/ueagle-atm.c
+++ linux-2.6.20.1/drivers/usb/atm/ueagle-atm.c
@@ -61,6 +61,7 @@
#include <linux/usb.h>
#include <linux/firmware.h>
#include <linux/ctype.h>
+#include <linux/sched.h>
#include <linux/kthread.h>
#include <linux/version.h>
#include <linux/mutex.h>
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 094/101] fix section mismatch warning in lockdep
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (92 preceding siblings ...)
2007-03-07 17:12 ` [patch 093/101] ueagle-atm.c needs sched.h Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 095/101] throttle_vm_writeout(): dont loop on GFP_NOFS and GFP_NOIO allocations Greg KH
` (8 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, sam, mingo
[-- Attachment #1: fix-section-mismatch-warning-in-lockdep.patch --]
[-- Type: text/plain, Size: 1334 bytes --]
From: Sam Ravnborg <sam@ravnborg.org>
lockdep_init() is marked __init but used in several places
outside __init code. This causes following warnings:
$ scripts/mod/modpost kernel/lockdep.o
WARNING: kernel/built-in.o - Section mismatch: reference to .init.text:lockdep_init from .text.lockdep_init_map after 'lockdep_init_map' (at offset 0x105)
WARNING: kernel/built-in.o - Section mismatch: reference to .init.text:lockdep_init from .text.lockdep_reset_lock after 'lockdep_reset_lock' (at offset 0x35)
WARNING: kernel/built-in.o - Section mismatch: reference to .init.text:lockdep_init from .text.__lock_acquire after '__lock_acquire' (at offset 0xb2)
The warnings are less obviously due to heavy inlining by gcc - this is not
altered.
Fix the section mismatch warnings by removing the __init marking, which
seems obviously wrong.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
kernel/lockdep.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/kernel/lockdep.c
+++ linux-2.6.20.1/kernel/lockdep.c
@@ -2577,7 +2577,7 @@ out_restore:
raw_local_irq_restore(flags);
}
-void __init lockdep_init(void)
+void lockdep_init(void)
{
int i;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 095/101] throttle_vm_writeout(): dont loop on GFP_NOFS and GFP_NOIO allocations
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (93 preceding siblings ...)
2007-03-07 17:12 ` [patch 094/101] fix section mismatch warning in lockdep Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 096/101] bug in gdth.c crashing machine Greg KH
` (7 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, torvalds
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, nickpiggin, galak, zaitcev, hirofumi
[-- Attachment #1: throttle_vm_writeout-don-t-loop-on-gfp_nofs-and-gfp_noio-allocations.patch --]
[-- Type: text/plain, Size: 2393 bytes --]
From: Andrew Morton <akpm@linux-foundation.org>
throttle_vm_writeout() is designed to wait for the dirty levels to subside.
But if the caller holds IO or FS locks, we might be holding up that writeout.
So change it to take a single nap to give other devices a chance to clean some
memory, then return.
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Kumar Gala <galak@kernel.crashing.org>
Cc: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/linux/writeback.h | 2 +-
mm/page-writeback.c | 13 +++++++++++--
mm/vmscan.c | 2 +-
3 files changed, 13 insertions(+), 4 deletions(-)
--- linux-2.6.20.1.orig/include/linux/writeback.h
+++ linux-2.6.20.1/include/linux/writeback.h
@@ -84,7 +84,7 @@ static inline void wait_on_inode(struct
int wakeup_pdflush(long nr_pages);
void laptop_io_completion(void);
void laptop_sync_completion(void);
-void throttle_vm_writeout(void);
+void throttle_vm_writeout(gfp_t gfp_mask);
/* These are exported to sysctl. */
extern int dirty_background_ratio;
--- linux-2.6.20.1.orig/mm/page-writeback.c
+++ linux-2.6.20.1/mm/page-writeback.c
@@ -296,11 +296,21 @@ void balance_dirty_pages_ratelimited_nr(
}
EXPORT_SYMBOL(balance_dirty_pages_ratelimited_nr);
-void throttle_vm_writeout(void)
+void throttle_vm_writeout(gfp_t gfp_mask)
{
long background_thresh;
long dirty_thresh;
+ if ((gfp_mask & (__GFP_FS|__GFP_IO)) != (__GFP_FS|__GFP_IO)) {
+ /*
+ * The caller might hold locks which can prevent IO completion
+ * or progress in the filesystem. So we cannot just sit here
+ * waiting for IO to complete.
+ */
+ congestion_wait(WRITE, HZ/10);
+ return;
+ }
+
for ( ; ; ) {
get_dirty_limits(&background_thresh, &dirty_thresh, NULL);
@@ -317,7 +327,6 @@ void throttle_vm_writeout(void)
}
}
-
/*
* writeback at least _min_pages, and keep writing until the amount of dirty
* memory is less than the background threshold, or until we're all clean.
--- linux-2.6.20.1.orig/mm/vmscan.c
+++ linux-2.6.20.1/mm/vmscan.c
@@ -949,7 +949,7 @@ static unsigned long shrink_zone(int pri
}
}
- throttle_vm_writeout();
+ throttle_vm_writeout(sc->gfp_mask);
atomic_dec(&zone->reclaim_in_progress);
return nr_reclaimed;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 096/101] bug in gdth.c crashing machine
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (94 preceding siblings ...)
2007-03-07 17:12 ` [patch 095/101] throttle_vm_writeout(): dont loop on GFP_NOFS and GFP_NOIO allocations Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection" Greg KH
` (6 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, James.Bottomley
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, Achim_Leubner, joerg,
linux-scsi
[-- Attachment #1: bug-in-gdth.c-crashing-machine.patch --]
[-- Type: text/plain, Size: 1185 bytes --]
From: Joerg Dorchain <joerg@dorchain.net>
Undocumented...
Signed-off-by: Joerg Dorchain <joerg@dorchain.net>
Acked-by: Achim Leubner <Achim_Leubner@adaptec.com>
Cc: James Bottomley <James.Bottomley@steeleye.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/scsi/gdth.c | 2 ++
1 file changed, 2 insertions(+)
--- linux-2.6.20.1.orig/drivers/scsi/gdth.c
+++ linux-2.6.20.1/drivers/scsi/gdth.c
@@ -3092,6 +3092,7 @@ static int gdth_fill_raw_cmd(int hanum,S
cmdp->u.raw64.direction =
gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN;
memcpy(cmdp->u.raw64.cmd,scp->cmnd,16);
+ cmdp->u.raw64.sg_ranz = 0;
} else {
cmdp->u.raw.reserved = 0;
cmdp->u.raw.mdisc_time = 0;
@@ -3108,6 +3109,7 @@ static int gdth_fill_raw_cmd(int hanum,S
cmdp->u.raw.direction =
gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN;
memcpy(cmdp->u.raw.cmd,scp->cmnd,12);
+ cmdp->u.raw.sg_ranz = 0;
}
if (scp->use_sg) {
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection"
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (95 preceding siblings ...)
2007-03-07 17:12 ` [patch 096/101] bug in gdth.c crashing machine Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 18:14 ` Stephen Hemminger
2007-03-07 17:12 ` [patch 098/101] video/aty/mach64_ct.c: fix bogus delay loop Greg KH
` (5 subsequent siblings)
102 siblings, 1 reply; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, jeff
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, netdev, thomas, val_henson,
samuel.thibault
[-- Attachment #1: revert-drivers-net-tulip-dmfe-support-basic-carrier-detection.patch --]
[-- Type: text/plain, Size: 2644 bytes --]
From: Andrew Morton <akpm@linux-foundation.org>
Revert 7628b0a8c01a02966d2228bdf741ddedb128e8f8. Thomas Bachler
reports:
Commit 7628b0a8c01a02966d2228bdf741ddedb128e8f8 (drivers/net/tulip/dmfe:
support basic carrier detection) breaks networking on my Davicom DM9009.
ethtool always reports there is no link. tcpdump shows incoming packets,
but TX is disabled. Reverting the above patch fixes the problem.
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Valerie Henson <val_henson@linux.intel.com>
Cc: Thomas Bachler <thomas@archlinux.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/tulip/dmfe.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
--- linux-2.6.20.1.orig/drivers/net/tulip/dmfe.c
+++ linux-2.6.20.1/drivers/net/tulip/dmfe.c
@@ -187,7 +187,7 @@ struct rx_desc {
struct dmfe_board_info {
u32 chip_id; /* Chip vendor/Device ID */
u32 chip_revision; /* Chip revision */
- struct DEVICE *dev; /* net device */
+ struct DEVICE *next_dev; /* next device */
struct pci_dev *pdev; /* PCI device */
spinlock_t lock;
@@ -399,8 +399,6 @@ static int __devinit dmfe_init_one (stru
/* Init system & device */
db = netdev_priv(dev);
- db->dev = dev;
-
/* Allocate Tx/Rx descriptor memory */
db->desc_pool_ptr = pci_alloc_consistent(pdev, sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20, &db->desc_pool_dma_ptr);
db->buf_pool_ptr = pci_alloc_consistent(pdev, TX_BUF_ALLOC * TX_DESC_CNT + 4, &db->buf_pool_dma_ptr);
@@ -428,7 +426,6 @@ static int __devinit dmfe_init_one (stru
dev->poll_controller = &poll_dmfe;
#endif
dev->ethtool_ops = &netdev_ethtool_ops;
- netif_carrier_off(db->dev);
spin_lock_init(&db->lock);
pci_read_config_dword(pdev, 0x50, &pci_pmr);
@@ -1053,7 +1050,6 @@ static void netdev_get_drvinfo(struct ne
static const struct ethtool_ops netdev_ethtool_ops = {
.get_drvinfo = netdev_get_drvinfo,
- .get_link = ethtool_op_get_link,
};
/*
@@ -1148,7 +1144,6 @@ static void dmfe_timer(unsigned long dat
/* Link Failed */
DMFE_DBUG(0, "Link Failed", tmp_cr12);
db->link_failed = 1;
- netif_carrier_off(db->dev);
/* For Force 10/100M Half/Full mode: Enable Auto-Nego mode */
/* AUTO or force 1M Homerun/Longrun don't need */
@@ -1171,8 +1166,6 @@ static void dmfe_timer(unsigned long dat
if ( (db->media_mode & DMFE_AUTO) &&
dmfe_sense_speed(db) )
db->link_failed = 1;
- else
- netif_carrier_on(db->dev);
dmfe_process_mode(db);
/* SHOW_MEDIA_TYPE(db->op_mode); */
}
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 098/101] video/aty/mach64_ct.c: fix bogus delay loop
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (96 preceding siblings ...)
2007-03-07 17:12 ` [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection" Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 099/101] pktcdvd: Correctly set cmd_len field in pkt_generic_packet Greg KH
` (4 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 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, torvalds, akpm, alan, Antonino A. Daplas,
David S. Miller
[-- Attachment #1: video-aty-mach64_ct.c-fix-bogus-delay-loop.patch --]
[-- Type: text/plain, Size: 1467 bytes --]
From: David Miller <davem@davemloft.net>
[PATCH] video/aty/mach64_ct.c: fix bogus delay loop
CT based mach64 cards were reported to hang on sparc64 boxes when
compiled with gcc-4.1.x and later.
Looking at this piece of code, it's no surprise. A critical
delay was implemented as an empty for() loop, and gcc 4.0.x
and previous did not optimize it away, so we did get a delay.
But gcc-4.1.x and later can optimize it away, and we get crashes.
Use a real udelay() to fix this. Fix verified on SunBlade100.
Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
drivers/video/aty/mach64_ct.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- linux-2.6.20.1.orig/drivers/video/aty/mach64_ct.c
+++ linux-2.6.20.1/drivers/video/aty/mach64_ct.c
@@ -598,7 +598,6 @@ static void aty_resume_pll_ct(const stru
struct atyfb_par *par = info->par;
if (par->mclk_per != par->xclk_per) {
- int i;
/*
* This disables the sclk, crashes the computer as reported:
* aty_st_pll_ct(SPLL_CNTL2, 3, info);
@@ -614,7 +613,7 @@ static void aty_resume_pll_ct(const stru
* helps for Rage Mobilities that sometimes crash when
* we switch to sclk. (Daniel Mantione, 13-05-2003)
*/
- for (i=0;i<=0x1ffff;i++);
+ udelay(500);
}
aty_st_pll_ct(PLL_REF_DIV, pll->ct.pll_ref_div, par);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 099/101] pktcdvd: Correctly set cmd_len field in pkt_generic_packet
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (97 preceding siblings ...)
2007-03-07 17:12 ` [patch 098/101] video/aty/mach64_ct.c: fix bogus delay loop Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 100/101] ATA: convert GSI to irq on ia64 Greg KH
` (3 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, mm-commits
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, petero2, gd
[-- Attachment #1: pktcdvd-correctly-set-cmd_len-field-in-pkt_generic_packet.patch --]
[-- Type: text/plain, Size: 872 bytes --]
From: Gerhard Dirschl <gd@spherenet.de>
Fixes http://bugzilla.kernel.org/show_bug.cgi?id=7810 - a silly
copy-paste bug introduced by the latest change.
Signed-off-by: Gerhard Dirschl <gd@spherenet.de>
Cc: Peter Osterlund <petero2@telia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/block/pktcdvd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/block/pktcdvd.c
+++ linux-2.6.20.1/drivers/block/pktcdvd.c
@@ -777,7 +777,7 @@ static int pkt_generic_packet(struct pkt
goto out;
}
- rq->cmd_len = COMMAND_SIZE(rq->cmd[0]);
+ rq->cmd_len = COMMAND_SIZE(cgc->cmd[0]);
memcpy(rq->cmd, cgc->cmd, CDROM_PACKET_SIZE);
if (sizeof(rq->cmd) > CDROM_PACKET_SIZE)
memset(rq->cmd + CDROM_PACKET_SIZE, 0, sizeof(rq->cmd) - CDROM_PACKET_SIZE);
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 100/101] ATA: convert GSI to irq on ia64
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (98 preceding siblings ...)
2007-03-07 17:12 ` [patch 099/101] pktcdvd: Correctly set cmd_len field in pkt_generic_packet Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:12 ` [patch 101/101] gfs2: fix locking mistake Greg KH
` (2 subsequent siblings)
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, mm-commits
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, yanmin.zhang, yanmin_zhang,
tony.luck, jeff
[-- Attachment #1: ata-convert-gsi-to-irq-on-ia64.patch --]
[-- Type: text/plain, Size: 1279 bytes --]
From: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
If an ATA drive uses legacy mode, ata driver will choose 14 and 15 as the
fixed irq number. On ia64 platform, such numbers are GSI and should be
converted to irq vector.
Signed-off-by: Zhang Yanmin <yanmin.zhang@intel.com>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/ia64/Kconfig | 1 +
include/asm-ia64/libata-portmap.h | 12 ++++++++++++
2 files changed, 13 insertions(+)
--- linux-2.6.20.1.orig/arch/ia64/Kconfig
+++ linux-2.6.20.1/arch/ia64/Kconfig
@@ -11,6 +11,7 @@ menu "Processor type and features"
config IA64
bool
+ select ATA_NONSTANDARD if ATA
default y
help
The Itanium Processor Family is Intel's 64-bit successor to
--- /dev/null
+++ linux-2.6.20.1/include/asm-ia64/libata-portmap.h
@@ -0,0 +1,12 @@
+#ifndef __ASM_IA64_LIBATA_PORTMAP_H
+#define __ASM_IA64_LIBATA_PORTMAP_H
+
+#define ATA_PRIMARY_CMD 0x1F0
+#define ATA_PRIMARY_CTL 0x3F6
+#define ATA_PRIMARY_IRQ(dev) isa_irq_to_vector(14)
+
+#define ATA_SECONDARY_CMD 0x170
+#define ATA_SECONDARY_CTL 0x376
+#define ATA_SECONDARY_IRQ(dev) isa_irq_to_vector(15)
+
+#endif
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 101/101] gfs2: fix locking mistake
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (99 preceding siblings ...)
2007-03-07 17:12 ` [patch 100/101] ATA: convert GSI to irq on ia64 Greg KH
@ 2007-03-07 17:12 ` Greg KH
2007-03-07 17:34 ` [stable] [patch 000/101] 2.6.20-stable review Greg KH
2007-03-07 18:41 ` [patch 000/101] 2.6.20-stable review Chuck Ebbert
102 siblings, 0 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:12 UTC (permalink / raw)
To: linux-kernel, stable, mm-commits
Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, torvalds, akpm, alan, jwhiter, swhiteho
[-- Attachment #1: gfs2-fix-locking-mistake.patch --]
[-- Type: text/plain, Size: 741 bytes --]
From: Josef Whiter <jwhiter@redhat.com>
Fix a locking mistake in the quota code, we do a mutex_lock instead of a
mutex_unlock.
Signed-off-by: Josef Whiter <jwhiter@redhat.com>
Cc: Steven Whitehouse <swhiteho@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/gfs2/quota.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/fs/gfs2/quota.c
+++ linux-2.6.20.1/fs/gfs2/quota.c
@@ -279,7 +279,7 @@ static int bh_get(struct gfs2_quota_data
(bh->b_data + sizeof(struct gfs2_meta_header) +
offset * sizeof(struct gfs2_quota_change));
- mutex_lock(&sdp->sd_quota_mutex);
+ mutex_unlock(&sdp->sd_quota_mutex);
return 0;
--
^ permalink raw reply [flat|nested] 112+ messages in thread
* Re: [stable] [patch 000/101] 2.6.20-stable review
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (100 preceding siblings ...)
2007-03-07 17:12 ` [patch 101/101] gfs2: fix locking mistake Greg KH
@ 2007-03-07 17:34 ` Greg KH
2007-03-07 23:12 ` [patch 102/101] TCP: Fix minisock tcp_create_openreq_child() typo Chris Wright
` (2 more replies)
2007-03-07 18:41 ` [patch 000/101] 2.6.20-stable review Chuck Ebbert
102 siblings, 3 replies; 112+ messages in thread
From: Greg KH @ 2007-03-07 17:34 UTC (permalink / raw)
To: linux-kernel, stable, Theodore Ts'o, Zwane Mwaikambo,
Justin Forbes, Chris Wedgwood, Randy Dunlap, Michael Krufky,
Chuck Ebbert, Dave Jones, Chuck Wolber, akpm, torvalds, alan
On Wed, Mar 07, 2007 at 09:10:35AM -0800, Greg KH wrote:
> After many weeks of backlogs, I've finally flushed out all of the
> pending -stable patches, bringing this series to a whopping 101 patches
> pending for the next 2.6.20.2 release.
Oh, forgot to announce, but the whole thing can be found in a patch at:
kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.20.2-rc1.gz
And here's the diffstat below if anyone is curious.
thanks,
greg k-h
------------
Makefile | 2
arch/i386/kernel/cpu/mtrr/if.c | 33 +++++++-----
arch/i386/kernel/signal.c | 6 +-
arch/i386/kernel/sysenter.c | 2
arch/ia64/Kconfig | 1
arch/ia64/kernel/crash.c | 11 ++--
arch/ia64/kernel/machine_kexec.c | 2
arch/m32r/kernel/process.c | 2
arch/m32r/kernel/signal.c | 26 +--------
arch/powerpc/kernel/head_64.S | 2
arch/ppc/kernel/ppc_ksyms.c | 2
arch/sparc64/kernel/of_device.c | 40 ++++++++++++++-
arch/um/os-Linux/sigio.c | 38 +++++++-------
arch/x86_64/ia32/ia32_signal.c | 7 ++
arch/x86_64/ia32/ptrace32.c | 1
block/ll_rw_blk.c | 2
drivers/Makefile | 2
drivers/ata/ahci.c | 14 +++++
drivers/ata/ata_generic.c | 4 +
drivers/ata/ata_piix.c | 4 +
drivers/ata/pata_ali.c | 6 ++
drivers/ata/pata_amd.c | 10 +++
drivers/ata/pata_atiixp.c | 4 +
drivers/ata/pata_cmd64x.c | 6 ++
drivers/ata/pata_cs5520.c | 7 ++
drivers/ata/pata_cs5530.c | 6 ++
drivers/ata/pata_cs5535.c | 4 +
drivers/ata/pata_cypress.c | 4 +
drivers/ata/pata_efar.c | 4 +
drivers/ata/pata_hpt366.c | 7 ++
drivers/ata/pata_hpt3x3.c | 6 ++
drivers/ata/pata_it821x.c | 6 ++
drivers/ata/pata_jmicron.c | 8 +++
drivers/ata/pata_marvell.c | 4 +
drivers/ata/pata_mpiix.c | 4 +
drivers/ata/pata_netcell.c | 4 +
drivers/ata/pata_ns87410.c | 4 +
drivers/ata/pata_oldpiix.c | 4 +
drivers/ata/pata_opti.c | 4 +
drivers/ata/pata_optidma.c | 4 +
drivers/ata/pata_pdc202xx_old.c | 4 +
drivers/ata/pata_radisys.c | 4 +
drivers/ata/pata_rz1000.c | 6 ++
drivers/ata/pata_sc1200.c | 4 +
drivers/ata/pata_serverworks.c | 6 ++
drivers/ata/pata_sil680.c | 8 +++
drivers/ata/pata_sis.c | 4 +
drivers/ata/pata_triflex.c | 4 +
drivers/ata/pata_via.c | 6 ++
drivers/ata/sata_sil.c | 10 +++
drivers/ata/sata_sil24.c | 2
drivers/block/pktcdvd.c | 2
drivers/char/agp/intel-agp.c | 14 +++--
drivers/char/specialix.c | 2
drivers/char/tty_io.c | 14 +++++
drivers/hid/hid-core.c | 5 -
drivers/ide/ide-iops.c | 2
drivers/ieee1394/nodemgr.c | 24 ++++++---
drivers/ieee1394/video1394.c | 8 +++
drivers/input/mouse/psmouse-base.c | 28 ++++++++++
drivers/input/mouse/psmouse.h | 1
drivers/input/mouse/synaptics.c | 1
drivers/kvm/kvm.h | 2
drivers/macintosh/Kconfig | 2
drivers/md/bitmap.c | 22 +++++++-
drivers/md/raid10.c | 38 +++++++-------
drivers/md/raid5.c | 42 ++++++++++++++-
drivers/media/dvb/dvb-core/dvbdev.c | 13 ++++
drivers/media/dvb/dvb-usb/cxusb.c | 4 -
drivers/media/dvb/dvb-usb/digitv.c | 2
drivers/media/video/cx25840/cx25840-core.c | 4 -
drivers/media/video/cx25840/cx25840-firmware.c | 2
drivers/media/video/cx88/cx88-blackbird.c | 14 +++--
drivers/media/video/cx88/cx88.h | 1
drivers/media/video/pvrusb2/pvrusb2-encoder.c | 40 +++++++++++++++
drivers/media/video/pvrusb2/pvrusb2-hdw.c | 33 ++++++------
drivers/mmc/sdhci.c | 22 +++++++-
drivers/mtd/redboot.c | 19 +++++--
drivers/net/forcedeth.c | 2
drivers/net/sky2.c | 6 --
drivers/net/sky2.h | 2
drivers/net/tulip/dmfe.c | 9 ---
drivers/net/wireless/bcm43xx/bcm43xx.h | 2
drivers/net/wireless/bcm43xx/bcm43xx_main.c | 19 +++----
drivers/net/wireless/bcm43xx/bcm43xx_xmit.h | 10 ---
drivers/net/wireless/prism54/isl_ioctl.c | 8 ++-
drivers/rtc/rtc-pcf8563.c | 40 ++++++++++++---
drivers/sbus/char/bbc_i2c.c | 17 +++---
drivers/scsi/gdth.c | 2
drivers/usb/atm/ueagle-atm.c | 1
drivers/usb/core/hub.c | 6 ++
drivers/usb/host/ehci-hcd.c | 16 ++++++
drivers/usb/host/uhci-hub.c | 11 ++--
drivers/usb/input/hid-core.c | 4 -
drivers/usb/misc/appledisplay.c | 4 -
drivers/usb/net/usbnet.c | 7 +-
drivers/video/aty/mach64_ct.c | 3 -
fs/9p/vfs_inode.c | 7 --
fs/binfmt_elf.c | 3 -
fs/buffer.c | 1
fs/ext2/super.c | 4 +
fs/ext3/super.c | 4 +
fs/ext4/super.c | 4 +
fs/gfs2/quota.c | 2
fs/hugetlbfs/inode.c | 5 +
fs/lockd/clntproc.c | 9 +--
fs/lockd/svclock.c | 4 -
fs/ocfs2/journal.h | 4 -
fs/ufs/dir.c | 21 ++++---
fs/ufs/super.c | 5 +
include/asm-generic/page.h | 38 +-------------
include/asm-x86_64/bitops.h | 2
include/linux/atmarp.h | 2
include/linux/binfmts.h | 1
include/linux/lockdep.h | 2
include/linux/pci_ids.h | 1
include/linux/raid/bitmap.h | 1
include/linux/sunrpc/svcsock.h | 2
include/linux/ufs_fs.h | 1
include/linux/writeback.h | 2
kernel/lockdep.c | 2
kernel/power/user.c | 19 ++++---
kernel/sched.c | 4 -
kernel/time/clocksource.c | 1
lib/Kconfig.debug | 2
lib/swiotlb.c | 2
mm/hugetlb.c | 2
mm/page-writeback.c | 13 ++++
mm/vmscan.c | 2
net/atm/common.c | 3 -
net/ipv4/igmp.c | 2
net/ipv4/netfilter/ipt_REJECT.c | 4 +
net/ipv4/tcp.c | 24 ++++-----
net/ipv4/tcp_output.c | 7 +-
net/ipv4/xfrm4_mode_tunnel.c | 1
net/ipv6/addrconf.c | 2
net/ipv6/anycast.c | 1
net/ipv6/inet6_hashtables.c | 2
net/ipv6/mcast.c | 2
net/ipx/af_ipx.c | 24 ++++++---
net/key/af_key.c | 11 ++--
net/netfilter/nfnetlink_log.c | 15 ++++-
net/sunrpc/pmap_clnt.c | 8 +--
net/sunrpc/svc.c | 29 +++++-----
net/sunrpc/svcsock.c | 66 +++++++++++++++++++------
net/xfrm/xfrm_policy.c | 7 ++
net/xfrm/xfrm_user.c | 18 +++---
security/keys/key.c | 33 +++++-------
sound/pci/hda/hda_intel.c | 2
sound/usb/usbaudio.c | 51 ++++++++++++-------
150 files changed, 976 insertions(+), 403 deletions(-)
^ permalink raw reply [flat|nested] 112+ messages in thread
* Re: [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection"
2007-03-07 17:12 ` [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection" Greg KH
@ 2007-03-07 18:14 ` Stephen Hemminger
2007-03-08 2:41 ` Dan Williams
0 siblings, 1 reply; 112+ messages in thread
From: Stephen Hemminger @ 2007-03-07 18:14 UTC (permalink / raw)
To: Greg KH
Cc: linux-kernel, stable, jeff, Justin Forbes, Zwane Mwaikambo,
Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
Chris Wedgwood, Michael Krufky, Chuck Ebbert, torvalds, akpm,
alan, netdev, thomas, val_henson, samuel.thibault
On Wed, 07 Mar 2007 09:12:12 -0800
Greg KH <gregkh@suse.de> wrote:
>
> From: Andrew Morton <akpm@linux-foundation.org>
>
> Revert 7628b0a8c01a02966d2228bdf741ddedb128e8f8. Thomas Bachler
> reports:
>
> Commit 7628b0a8c01a02966d2228bdf741ddedb128e8f8 (drivers/net/tulip/dmfe:
> support basic carrier detection) breaks networking on my Davicom DM9009.
> ethtool always reports there is no link. tcpdump shows incoming packets,
> but TX is disabled. Reverting the above patch fixes the problem.
>
Carrier detection support is important and should be fixed rather than removed.
--
Stephen Hemminger <shemminger@linux-foundation.org>
^ permalink raw reply [flat|nested] 112+ messages in thread
* Re: [patch 000/101] 2.6.20-stable review
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
` (101 preceding siblings ...)
2007-03-07 17:34 ` [stable] [patch 000/101] 2.6.20-stable review Greg KH
@ 2007-03-07 18:41 ` Chuck Ebbert
2007-03-07 21:05 ` [stable] " Chris Wright
102 siblings, 1 reply; 112+ messages in thread
From: Chuck Ebbert @ 2007-03-07 18:41 UTC (permalink / raw)
To: Greg KH
Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo,
Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
Chris Wedgwood, Michael Krufky, torvalds, akpm, alan
Greg KH wrote:
> After many weeks of backlogs, I've finally flushed out all of the
> pending -stable patches, bringing this series to a whopping 101 patches
> pending for the next 2.6.20.2 release.
>
> If everyone could please take the time to review them and let me know if
> there are any issues with any of these being applied.
>
> Also, if there are any patches that I am somehow missing that should go
> into the 2.6.20-stable tree, please forward them on to the
> stable@kernel.org alias.
>
What happened to jfs_fix_deadlock.patch?
It was there in the git tree and then it was deleted:
delete mode 100644 queue-2.6.20/jfs_fix_deadlock.patch
^ permalink raw reply [flat|nested] 112+ messages in thread
* Re: [stable] [patch 000/101] 2.6.20-stable review
2007-03-07 18:41 ` [patch 000/101] 2.6.20-stable review Chuck Ebbert
@ 2007-03-07 21:05 ` Chris Wright
0 siblings, 0 replies; 112+ messages in thread
From: Chris Wright @ 2007-03-07 21:05 UTC (permalink / raw)
To: Chuck Ebbert
Cc: Greg KH, Theodore Ts'o, Zwane Mwaikambo, torvalds,
Justin Forbes, linux-kernel, Chris Wedgwood, Randy Dunlap,
Michael Krufky, Dave Jones, akpm, Chuck Wolber, stable, alan
* Chuck Ebbert (cebbert@redhat.com) wrote:
> What happened to jfs_fix_deadlock.patch?
Dave Kleikamp suggested it was not appropriate for -stable.
thanks,
-chris
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 102/101] TCP: Fix minisock tcp_create_openreq_child() typo.
2007-03-07 17:34 ` [stable] [patch 000/101] 2.6.20-stable review Greg KH
@ 2007-03-07 23:12 ` Chris Wright
2007-03-07 23:12 ` [patch 103/101] Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005) Chris Wright
2007-03-07 23:13 ` [patch 104/101] x86-64: survive having no irq mapping for a vector Chris Wright
2 siblings, 0 replies; 112+ messages in thread
From: Chris Wright @ 2007-03-07 23:12 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Theodore Ts'o, Zwane Mwaikambo, Justin Forbes, Chris Wedgwood,
Randy Dunlap, Michael Krufky, Chuck Ebbert, Dave Jones,
Chuck Wolber, akpm, torvalds, alan, David Miller,
Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <acme@redhat.com>
On 2/28/07, KOVACS Krisztian <hidden@balabit.hu> wrote:
>
> Hi,
>
> While reading TCP minisock code I've found this suspiciously looking
> code fragment:
>
> - 8< -
> struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req, struct sk_buff *skb)
> {
> struct sock *newsk = inet_csk_clone(sk, req, GFP_ATOMIC);
>
> if (newsk != NULL) {
> const struct inet_request_sock *ireq = inet_rsk(req);
> struct tcp_request_sock *treq = tcp_rsk(req);
> struct inet_connection_sock *newicsk = inet_csk(sk);
> struct tcp_sock *newtp;
> - 8< -
>
> The above code initializes newicsk to inet_csk(sk), isn't that supposed
> to be inet_csk(newsk)? As far as I can tell this might leave
> icsk_ack.last_seg_size zero even if we do have received data.
Good catch!
David, please apply the attached patch.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
net/ipv4/tcp_minisocks.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20.1.orig/net/ipv4/tcp_minisocks.c
+++ linux-2.6.20.1/net/ipv4/tcp_minisocks.c
@@ -381,7 +381,7 @@ struct sock *tcp_create_openreq_child(st
if (newsk != NULL) {
const struct inet_request_sock *ireq = inet_rsk(req);
struct tcp_request_sock *treq = tcp_rsk(req);
- struct inet_connection_sock *newicsk = inet_csk(sk);
+ struct inet_connection_sock *newicsk = inet_csk(newsk);
struct tcp_sock *newtp;
/* Now setup tcp_sock */
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 103/101] Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005)
2007-03-07 17:34 ` [stable] [patch 000/101] 2.6.20-stable review Greg KH
2007-03-07 23:12 ` [patch 102/101] TCP: Fix minisock tcp_create_openreq_child() typo Chris Wright
@ 2007-03-07 23:12 ` Chris Wright
2007-03-07 23:13 ` [patch 104/101] x86-64: survive having no irq mapping for a vector Chris Wright
2 siblings, 0 replies; 112+ messages in thread
From: Chris Wright @ 2007-03-07 23:12 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Theodore Ts'o, Zwane Mwaikambo, Justin Forbes, Chris Wedgwood,
Randy Dunlap, Michael Krufky, Chuck Ebbert, Dave Jones,
Chuck Wolber, akpm, torvalds, alan, Marcel Holtmann, Don Howard,
Harald Welte
From: Marcel Holtmann <marcel@holtmann.org>
Based on a patch from Don Howard <dhoward@redhat.com>
When calling write() with a buffer larger than 512 bytes, the
driver's write buffer overflows, allowing to overwrite the EIP and
execute arbitrary code with kernel privileges.
In read(), there exists a similar problem, but coming from the device.
A malicous or buggy device sending more than 512 bytes can overflow
of the driver's read buffer, with the same effects as above.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Harald Welte <laforge@gnumonks.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
drivers/char/pcmcia/cm4040_cs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- linux-2.6.20.1.orig/drivers/char/pcmcia/cm4040_cs.c
+++ linux-2.6.20.1/drivers/char/pcmcia/cm4040_cs.c
@@ -273,6 +273,7 @@ static ssize_t cm4040_read(struct file *
DEBUGP(6, dev, "BytesToRead=%lu\n", bytes_to_read);
min_bytes_to_read = min(count, bytes_to_read + 5);
+ min_bytes_to_read = min_t(size_t, min_bytes_to_read, READ_WRITE_BUFFER_SIZE);
DEBUGP(6, dev, "Min=%lu\n", min_bytes_to_read);
@@ -340,7 +341,7 @@ static ssize_t cm4040_write(struct file
return 0;
}
- if (count < 5) {
+ if ((count < 5) || (count > READ_WRITE_BUFFER_SIZE)) {
DEBUGP(2, dev, "<- cm4040_write buffersize=%Zd < 5\n", count);
return -EIO;
}
^ permalink raw reply [flat|nested] 112+ messages in thread
* [patch 104/101] x86-64: survive having no irq mapping for a vector
2007-03-07 17:34 ` [stable] [patch 000/101] 2.6.20-stable review Greg KH
2007-03-07 23:12 ` [patch 102/101] TCP: Fix minisock tcp_create_openreq_child() typo Chris Wright
2007-03-07 23:12 ` [patch 103/101] Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005) Chris Wright
@ 2007-03-07 23:13 ` Chris Wright
2 siblings, 0 replies; 112+ messages in thread
From: Chris Wright @ 2007-03-07 23:13 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Theodore Ts'o, Zwane Mwaikambo, Justin Forbes, Chris Wedgwood,
Randy Dunlap, Michael Krufky, Chuck Ebbert, Dave Jones,
Chuck Wolber, akpm, torvalds, alan, Eric W. Biederman, Andi Kleen,
Luigi Genoni
From: Eric W. Biederman <ebiederm@xmission.com>
Occasionally the kernel has bugs that result in no irq being found for a
given cpu vector. If we acknowledge the irq the system has a good chance
of continuing even though we dropped an irq message. If we continue to
simply print a message and not acknowledge the irq the system is likely to
become non-responsive shortly there after.
AK: Fixed compilation for UP kernels
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: "Luigi Genoni" <luigi.genoni@pirelli.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
arch/x86_64/kernel/irq.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
--- linux-2.6.20.1.orig/arch/x86_64/kernel/irq.c
+++ linux-2.6.20.1/arch/x86_64/kernel/irq.c
@@ -18,6 +18,7 @@
#include <asm/uaccess.h>
#include <asm/io_apic.h>
#include <asm/idle.h>
+#include <asm/smp.h>
atomic_t irq_err_count;
@@ -120,9 +121,14 @@ asmlinkage unsigned int do_IRQ(struct pt
if (likely(irq < NR_IRQS))
generic_handle_irq(irq);
- else if (printk_ratelimit())
- printk(KERN_EMERG "%s: %d.%d No irq handler for vector\n",
- __func__, smp_processor_id(), vector);
+ else {
+ if (!disable_apic)
+ ack_APIC_irq();
+
+ if (printk_ratelimit())
+ printk(KERN_EMERG "%s: %d.%d No irq handler for vector\n",
+ __func__, smp_processor_id(), vector);
+ }
irq_exit();
^ permalink raw reply [flat|nested] 112+ messages in thread
* Re: [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection"
2007-03-07 18:14 ` Stephen Hemminger
@ 2007-03-08 2:41 ` Dan Williams
2007-03-08 3:06 ` Linus Torvalds
0 siblings, 1 reply; 112+ messages in thread
From: Dan Williams @ 2007-03-08 2:41 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Greg KH, linux-kernel, stable, jeff, Justin Forbes,
Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap, Dave Jones,
Chuck Wolber, Chris Wedgwood, Michael Krufky, Chuck Ebbert,
torvalds, akpm, alan, netdev, thomas, val_henson, samuel.thibault
On Wed, 2007-03-07 at 10:14 -0800, Stephen Hemminger wrote:
> On Wed, 07 Mar 2007 09:12:12 -0800
> Greg KH <gregkh@suse.de> wrote:
>
> >
> > From: Andrew Morton <akpm@linux-foundation.org>
> >
> > Revert 7628b0a8c01a02966d2228bdf741ddedb128e8f8. Thomas Bachler
> > reports:
> >
> > Commit 7628b0a8c01a02966d2228bdf741ddedb128e8f8 (drivers/net/tulip/dmfe:
> > support basic carrier detection) breaks networking on my Davicom DM9009.
> > ethtool always reports there is no link. tcpdump shows incoming packets,
> > but TX is disabled. Reverting the above patch fixes the problem.
> >
>
> Carrier detection support is important and should be fixed rather than removed.
Definitely right. If it doesn't work for your card, it needs to be
fixed for your card.
Dan
^ permalink raw reply [flat|nested] 112+ messages in thread
* Re: [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection"
2007-03-08 2:41 ` Dan Williams
@ 2007-03-08 3:06 ` Linus Torvalds
0 siblings, 0 replies; 112+ messages in thread
From: Linus Torvalds @ 2007-03-08 3:06 UTC (permalink / raw)
To: Dan Williams
Cc: Stephen Hemminger, Greg KH, linux-kernel, stable, jeff,
Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
Chuck Ebbert, akpm, alan, netdev, thomas, val_henson,
samuel.thibault
On Wed, 7 Mar 2007, Dan Williams wrote:
>
> Definitely right. If it doesn't work for your card, it needs to be
> fixed for your card.
Well, regressions are regressions. And they are a *lot* more important
than any new features. If it doesn't work, it gets reverted.
Linus
^ permalink raw reply [flat|nested] 112+ messages in thread
* Re: [patch 027/101] Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled.
2007-03-07 17:11 ` [patch 027/101] Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled Greg KH
@ 2007-03-08 12:17 ` Blaisorblade
0 siblings, 0 replies; 112+ messages in thread
From: Blaisorblade @ 2007-03-08 12:17 UTC (permalink / raw)
To: Greg KH
Cc: linux-kernel, stable, Andrew Morton, Justin Forbes,
Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap, Dave Jones,
Chuck Wolber, Chris Wedgwood, Michael Krufky, Chuck Ebbert,
torvalds, akpm, alan
[-- Attachment #1: Type: text/plain, Size: 1251 bytes --]
On Wednesday 07 March 2007 18:11, Greg KH wrote:
> From: "Paolo 'Blaisorblade' Giarrusso" <blaisorblade@yahoo.it>
>
> There is no prompt for STACKTRACE, so it is enabled only when 'select'ed.
> FAULT_INJECTION depends on it, while LOCKDEP selects it. So FAULT_INJECTION
> becomes visible in Kconfig only when LOCKDEP is enabled.
Please replace with the attached patch, sorry for being late (I thought it had
been dropped). Otherwise a regression would be caused for archs like ia64 on
allyesconfig; the change is needed, as discussed with Roman Zippel.
> Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
>
> ---
> lib/Kconfig.debug | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-2.6.20.1.orig/lib/Kconfig.debug
> +++ linux-2.6.20.1/lib/Kconfig.debug
> @@ -400,7 +400,7 @@ config LKDTM
> config FAULT_INJECTION
> bool "Fault-injection framework"
> depends on DEBUG_KERNEL
> - depends on STACKTRACE
> + select STACKTRACE
> select FRAME_POINTER
> help
> Provide fault-injection framework.
>
> --
--
Inform me of my mistakes, so I can add them to my list!
Paolo Giarrusso, aka Blaisorblade
http://www.user-mode-linux.org/~blaisorblade
[-- Attachment #2: fix-dependency-to-select-fault-inject.diff --]
[-- Type: text/x-diff, Size: 889 bytes --]
[PATCH] Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled.
There is no prompt for STACKTRACE, so it is enabled only when 'select'ed.
FAULT_INJECTION depends on it, while LOCKDEP selects it. So FAULT_INJECTION
becomes visible in Kconfig only when LOCKDEP is enabled.
Update: fixed for architectures not supporting STACKTRACE_SUPPORT.
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Index: linux-2.6.git/lib/Kconfig.debug
===================================================================
--- linux-2.6.git.orig/lib/Kconfig.debug
+++ linux-2.6.git/lib/Kconfig.debug
@@ -399,8 +399,8 @@ config LKDTM
config FAULT_INJECTION
bool "Fault-injection framework"
- depends on DEBUG_KERNEL
- depends on STACKTRACE
+ depends on DEBUG_KERNEL && STACKTRACE_SUPPORT
+ select STACKTRACE
select FRAME_POINTER
help
Provide fault-injection framework.
^ permalink raw reply [flat|nested] 112+ messages in thread
end of thread, other threads:[~2007-03-08 12:18 UTC | newest]
Thread overview: 112+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-07 17:10 [patch 000/101] 2.6.20-stable review Greg KH
2007-03-07 17:10 ` [patch 001/101] ocfs2: ocfs2_link() journal credits update Greg KH
2007-03-07 17:10 ` [patch 002/101] x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted Greg KH
2007-03-07 17:10 ` [patch 003/101] rtc-pcf8563: detect polarity of century bit automatically Greg KH
2007-03-07 17:10 ` [patch 004/101] prism54: correct assignment of DOT1XENABLE in WE-19 codepaths Greg KH
2007-03-07 17:10 ` [patch 005/101] pata_amd: fix an obvious bug in cable detection Greg KH
2007-03-07 17:10 ` [patch 006/101] knfsd: Fix a race in closing NFSd connections Greg KH
2007-03-07 17:10 ` [patch 007/101] Keys: Fix key serial number collision handling Greg KH
2007-03-07 17:10 ` [patch 008/101] ide: fix drive side 80c cable check Greg KH
2007-03-07 17:10 ` [patch 009/101] bcm43xx: Fix for oops on resume Greg KH
2007-03-07 17:10 ` [patch 010/101] bcm43xx: Fix for oops on ampdu status Greg KH
2007-03-07 17:10 ` [patch 011/101] AGP: intel-agp bugfix Greg KH
2007-03-07 17:10 ` [patch 012/101] Missing critical phys_to_virt in lib/swiotlb.c Greg KH
2007-03-07 17:10 ` [patch 013/101] USB: fix concurrent buffer access in the hub driver Greg KH
2007-03-07 17:10 ` [patch 014/101] USB audio fixes 1 Greg KH
2007-03-07 17:10 ` [patch 015/101] USB audio fixes 2 Greg KH
2007-03-07 17:10 ` [patch 016/101] hda-intel - Dont try to probe invalid codecs Greg KH
2007-03-07 17:10 ` [patch 017/101] Fix various bugs with aligned reads in RAID5 Greg KH
2007-03-07 17:10 ` [patch 018/101] Fix ATM initcall ordering Greg KH
2007-03-07 17:10 ` [patch 019/101] Fix TCP FIN handling Greg KH
2007-03-07 17:10 ` [patch 020/101] Fix allocation failure handling in multicast Greg KH
2007-03-07 17:10 ` [patch 021/101] md: Avoid possible BUG_ON in md bitmap handling Greg KH
2007-03-07 17:10 ` [patch 022/101] Fix compile error for e500 core based processors Greg KH
2007-03-07 17:10 ` [patch 023/101] ieee1394: video1394: DMA fix Greg KH
2007-03-07 17:10 ` [patch 024/101] ieee1394: fix host device registering when nodemgr disabled Greg KH
2007-03-07 17:11 ` [patch 025/101] Fix null pointer dereference in appledisplay driver Greg KH
2007-03-07 17:11 ` [patch 026/101] USB HID: Fix USB vendor and product IDs endianness for USB HID devices Greg KH
2007-03-07 17:11 ` [patch 027/101] Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled Greg KH
2007-03-08 12:17 ` Blaisorblade
2007-03-07 17:11 ` [patch 028/101] MTD: Fatal regression in drivers/mtd/redboot.c in 2.6.20 Greg KH
2007-03-07 17:11 ` [patch 029/101] IPV6: HASHTABLES: Use appropriate seed for caluculating ehash index Greg KH
2007-03-07 17:11 ` [patch 030/101] EHCI: turn off remote wakeup during shutdown Greg KH
2007-03-07 17:11 ` [patch 031/101] Avoid using nfsd process pools on SMP machines Greg KH
2007-03-07 17:11 ` [patch 032/101] Fix recently introduced problem with shutting down a busy NFS server Greg KH
2007-03-07 17:11 ` [patch 033/101] UHCI: fix port resume problem Greg KH
2007-03-07 17:11 ` [patch 034/101] Fix atmarp.h for userspace Greg KH
2007-03-07 17:11 ` [patch 035/101] Clear TCP segmentation offload state in ipt_REJECT Greg KH
2007-03-07 17:11 ` [patch 036/101] Fix IPX module unload Greg KH
2007-03-07 17:11 ` [patch 037/101] : Prevent pseudo garbage in SYNs advertized window Greg KH
2007-03-07 17:11 ` [patch 038/101] Fix oops in xfrm_audit_log() Greg KH
2007-03-07 17:11 ` [patch 039/101] sky2: dont flush good pause frames Greg KH
2007-03-07 17:11 ` [patch 040/101] sky2: transmit timeout deadlock Greg KH
2007-03-07 17:11 ` [patch 041/101] x86_64: Fix wrong gcc check in bitops.h Greg KH
2007-03-07 17:11 ` [patch 042/101] x86: Dont require the vDSO for handling a.out signals Greg KH
2007-03-07 17:11 ` [patch 043/101] i386: Fix broken CONFIG_COMPAT_VDSO on i386 Greg KH
2007-03-07 17:11 ` [patch 044/101] bcm43xx: fix for 4309 Greg KH
2007-03-07 17:11 ` [patch 045/101] md: Fix raid10 recovery problem Greg KH
2007-03-07 17:11 ` [patch 046/101] dvbdev: fix illegal re-usage of fileoperations struct Greg KH
2007-03-07 17:11 ` [patch 047/101] V4L: pvrusb2: Fix video corruption on stream start Greg KH
2007-03-07 17:11 ` [patch 048/101] V4L: pvrusb2: Handle larger cx2341x firmware images Greg KH
2007-03-07 17:11 ` [patch 049/101] DVB: cxusb: fix firmware patch for big endian systems Greg KH
2007-03-07 17:11 ` [patch 050/101] DVB: digitv: open nxt6000 i2c_gate for TDED4 tuner handling Greg KH
2007-03-07 17:11 ` [patch 051/101] V4L: fix cx25840 firmware loading Greg KH
2007-03-07 17:11 ` [patch 052/101] V4L: cx88-blackbird: allow usage of 376836 and 262144 sized firmware images Greg KH
2007-03-07 17:11 ` [patch 053/101] Fix posix-cpu-timer breakage caused by stale p->last_ran value Greg KH
2007-03-07 17:11 ` [patch 054/101] swsusp: Fix possible oops in userland interface Greg KH
2007-03-07 17:11 ` [patch 055/101] sata_sil: ignore and clear spurious IRQs while executing commands by polling Greg KH
2007-03-07 17:11 ` [patch 056/101] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
2007-03-07 17:11 ` [patch 057/101] UML - Fix 2.6.20 hang Greg KH
2007-03-07 17:11 ` [patch 058/101] mmc: Power quirk for ENE controllers Greg KH
2007-03-07 17:11 ` [patch 059/101] bcm43xx: Fix assertion failures in interrupt handler Greg KH
2007-03-07 17:11 ` [patch 060/101] libata: add missing PM callbacks Greg KH
2007-03-07 17:11 ` [patch 061/101] libata: add missing CONFIG_PM in LLDs Greg KH
2007-03-07 17:11 ` [patch 062/101] POWERPC: Fix performance monitor exception Greg KH
2007-03-07 17:11 ` [patch 063/101] HID: fix possible double-free on error path in hid parser Greg KH
2007-03-07 17:11 ` [patch 064/101] Fix interrupt probing on E450 sparc64 systems Greg KH
2007-03-07 17:11 ` [patch 065/101] Fix xfrm_add_sa_expire() return value Greg KH
2007-03-07 17:11 ` [patch 066/101] Fix skb data reallocation handling in IPSEC Greg KH
2007-03-07 17:11 ` [patch 067/101] Fix %100 cpu spinning on sparc64 Greg KH
2007-03-07 17:11 ` [patch 068/101] Fix TCP MD5 locking Greg KH
2007-03-07 17:11 ` [patch 069/101] Dont add anycast reference to device multiple times Greg KH
2007-03-07 17:11 ` [patch 070/101] Fix anycast procfs device leak Greg KH
2007-03-07 17:11 ` [patch 071/101] Fix reference counting (memory leak) problem in __nfulnl_send() and callers related to packet queueing Greg KH
2007-03-07 17:11 ` [patch 072/101] export blk_recount_segments Greg KH
2007-03-07 17:11 ` [patch 073/101] forcedeth: disable msix Greg KH
2007-03-07 17:11 ` [patch 074/101] tty_io: fix race in master pty close/slave pty close path Greg KH
2007-03-07 17:11 ` [patch 075/101] sched: fix SMT scheduler bug Greg KH
2007-03-07 17:11 ` [patch 076/101] USB: usbnet driver bugfix Greg KH
2007-03-07 17:11 ` [patch 077/101] Backport of psmouse suspend/shutdown cleanups Greg KH
2007-03-07 17:11 ` [patch 078/101] Revert "LOG2: Alter get_order() so that it can make use of ilog2() on a constant" Greg KH
2007-03-07 17:11 ` [patch 079/101] RPM: fix double free in portmapper code Greg KH
2007-03-07 17:11 ` [patch 080/101] NLM: Fix double free in __nlm_async_call Greg KH
2007-03-07 17:11 ` [patch 081/101] kexec: Fix CONFIG_SMP=n compilation V2 (ia64) Greg KH
2007-03-07 17:11 ` [patch 082/101] Fix MTRR compat ioctl Greg KH
2007-03-07 17:11 ` [patch 083/101] ufs: restore back support of openstep Greg KH
2007-03-07 17:11 ` [patch 084/101] v9fs_vfs_mkdir(): fix a double free Greg KH
2007-03-07 17:12 ` [patch 085/101] enable mouse button 2+3 emulation for x86 macs Greg KH
2007-03-07 17:12 ` [patch 086/101] hugetlb: preserve hugetlb pte dirty state Greg KH
2007-03-07 17:12 ` [patch 087/101] m32r: build fix for processors without ISA_DSP_LEVEL2 Greg KH
2007-03-07 17:12 ` [patch 088/101] kernel/time/clocksource.c needs struct task_struct on m68k Greg KH
2007-03-07 17:12 ` [patch 089/101] buffer: memorder fix Greg KH
2007-03-07 17:12 ` [patch 090/101] Char: specialix, isr have 2 params Greg KH
2007-03-07 17:12 ` [patch 091/101] lockdep: forward declare struct task_struct Greg KH
2007-03-07 17:12 ` [patch 092/101] kvm: Fix asm constraint for lldt instruction Greg KH
2007-03-07 17:12 ` [patch 093/101] ueagle-atm.c needs sched.h Greg KH
2007-03-07 17:12 ` [patch 094/101] fix section mismatch warning in lockdep Greg KH
2007-03-07 17:12 ` [patch 095/101] throttle_vm_writeout(): dont loop on GFP_NOFS and GFP_NOIO allocations Greg KH
2007-03-07 17:12 ` [patch 096/101] bug in gdth.c crashing machine Greg KH
2007-03-07 17:12 ` [patch 097/101] revert "drivers/net/tulip/dmfe: support basic carrier detection" Greg KH
2007-03-07 18:14 ` Stephen Hemminger
2007-03-08 2:41 ` Dan Williams
2007-03-08 3:06 ` Linus Torvalds
2007-03-07 17:12 ` [patch 098/101] video/aty/mach64_ct.c: fix bogus delay loop Greg KH
2007-03-07 17:12 ` [patch 099/101] pktcdvd: Correctly set cmd_len field in pkt_generic_packet Greg KH
2007-03-07 17:12 ` [patch 100/101] ATA: convert GSI to irq on ia64 Greg KH
2007-03-07 17:12 ` [patch 101/101] gfs2: fix locking mistake Greg KH
2007-03-07 17:34 ` [stable] [patch 000/101] 2.6.20-stable review Greg KH
2007-03-07 23:12 ` [patch 102/101] TCP: Fix minisock tcp_create_openreq_child() typo Chris Wright
2007-03-07 23:12 ` [patch 103/101] Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005) Chris Wright
2007-03-07 23:13 ` [patch 104/101] x86-64: survive having no irq mapping for a vector Chris Wright
2007-03-07 18:41 ` [patch 000/101] 2.6.20-stable review Chuck Ebbert
2007-03-07 21:05 ` [stable] " Chris Wright
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox