2005-03-19 07:16:01

by Greg KH

[permalink] [raw]
Subject: Linux 2.6.11.5

As the -stable patch review cycle is now over, I've released the
2.6.11.5 kernel in the normal kernel.org places. One patch was deemed
incorrect, so it was dropped. Another one was added, within the review
email thread. So it seems like the process is working so far, which is
refreshing :)

The diffstat and short summary of the fixes are below.

I'll also be replying to this message with a copy of the patch between
2.6.11.4 and 2.6.11.5, as it is small enough to do so.

thanks,

greg k-h

------
Makefile | 2 +-
drivers/net/amd8111e.c | 2 ++
drivers/net/tun.c | 2 +-
drivers/net/via-rhine.c | 4 +++-
drivers/net/wan/hd6457x.c | 2 +-
kernel/signal.c | 1 +
net/ipv4/fib_hash.c | 12 +++++++++++-
net/netrom/nr_in.c | 9 ---------
net/xfrm/xfrm_state.c | 2 +-
sound/pci/ac97/ac97_codec.c | 13 ++++++++-----
10 files changed, 29 insertions(+), 20 deletions(-)


Summary of changes from v2.6.11.4 to v2.6.11.5
==============================================

<dilinger:debian.org>:
o Possible AMD8111e free irq issue
o Possible VIA-Rhine free irq issue

Daniel Drake:
o Fix stereo mutes on Surround volume control

David S. Miller:
o [IPSEC]: Fix __xfrm_find_acq_byseq()

Greg Kroah-Hartman:
o Linux 2.6.11.5

Hugh Dickins:
o tasklist left locked

Krzysztof Halasa:
o Fix kernel panic on receive with WAN Hitachi SCA HD6457x

Patrick McHardy:
o Fix crash while reading /proc/net/route

Ralf B?chle:
o NetROM locking

Stephen Hemminger:
o Fix check for underflow


2005-03-19 07:16:42

by Greg KH

[permalink] [raw]
Subject: Re: Linux 2.6.11.5

diff -Nru a/Makefile b/Makefile
--- a/Makefile 2005-03-18 22:35:14 -08:00
+++ b/Makefile 2005-03-18 22:35:14 -08:00
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 11
-EXTRAVERSION = .4
+EXTRAVERSION = .5
NAME=Woozy Numbat

# *DOCUMENTATION*
diff -Nru a/drivers/net/amd8111e.c b/drivers/net/amd8111e.c
--- a/drivers/net/amd8111e.c 2005-03-18 22:35:14 -08:00
+++ b/drivers/net/amd8111e.c 2005-03-18 22:35:14 -08:00
@@ -1381,6 +1381,8 @@

if(amd8111e_restart(dev)){
spin_unlock_irq(&lp->lock);
+ if (dev->irq)
+ free_irq(dev->irq, dev);
return -ENOMEM;
}
/* Start ipg timer */
diff -Nru a/drivers/net/tun.c b/drivers/net/tun.c
--- a/drivers/net/tun.c 2005-03-18 22:35:14 -08:00
+++ b/drivers/net/tun.c 2005-03-18 22:35:14 -08:00
@@ -229,7 +229,7 @@
size_t len = count;

if (!(tun->flags & TUN_NO_PI)) {
- if ((len -= sizeof(pi)) > len)
+ if ((len -= sizeof(pi)) > count)
return -EINVAL;

if(memcpy_fromiovec((void *)&pi, iv, sizeof(pi)))
diff -Nru a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
--- a/drivers/net/via-rhine.c 2005-03-18 22:35:14 -08:00
+++ b/drivers/net/via-rhine.c 2005-03-18 22:35:14 -08:00
@@ -1197,8 +1197,10 @@
dev->name, rp->pdev->irq);

rc = alloc_ring(dev);
- if (rc)
+ if (rc) {
+ free_irq(rp->pdev->irq, dev);
return rc;
+ }
alloc_rbufs(dev);
alloc_tbufs(dev);
rhine_chip_reset(dev);
diff -Nru a/drivers/net/wan/hd6457x.c b/drivers/net/wan/hd6457x.c
--- a/drivers/net/wan/hd6457x.c 2005-03-18 22:35:14 -08:00
+++ b/drivers/net/wan/hd6457x.c 2005-03-18 22:35:14 -08:00
@@ -315,7 +315,7 @@
#endif
stats->rx_packets++;
stats->rx_bytes += skb->len;
- skb->dev->last_rx = jiffies;
+ dev->last_rx = jiffies;
skb->protocol = hdlc_type_trans(skb, dev);
netif_rx(skb);
}
diff -Nru a/kernel/signal.c b/kernel/signal.c
--- a/kernel/signal.c 2005-03-18 22:35:14 -08:00
+++ b/kernel/signal.c 2005-03-18 22:35:14 -08:00
@@ -1728,6 +1728,7 @@
* with another processor delivering a stop signal,
* then the SIGCONT that wakes us up should clear it.
*/
+ read_unlock(&tasklist_lock);
return 0;
}

diff -Nru a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
--- a/net/ipv4/fib_hash.c 2005-03-18 22:35:14 -08:00
+++ b/net/ipv4/fib_hash.c 2005-03-18 22:35:14 -08:00
@@ -919,13 +919,23 @@
return fa;
}

+static struct fib_alias *fib_get_idx(struct seq_file *seq, loff_t pos)
+{
+ struct fib_alias *fa = fib_get_first(seq);
+
+ if (fa)
+ while (pos && (fa = fib_get_next(seq)))
+ --pos;
+ return pos ? NULL : fa;
+}
+
static void *fib_seq_start(struct seq_file *seq, loff_t *pos)
{
void *v = NULL;

read_lock(&fib_hash_lock);
if (ip_fib_main_table)
- v = *pos ? fib_get_next(seq) : SEQ_START_TOKEN;
+ v = *pos ? fib_get_idx(seq, *pos - 1) : SEQ_START_TOKEN;
return v;
}

diff -Nru a/net/netrom/nr_in.c b/net/netrom/nr_in.c
--- a/net/netrom/nr_in.c 2005-03-18 22:35:14 -08:00
+++ b/net/netrom/nr_in.c 2005-03-18 22:35:14 -08:00
@@ -74,7 +74,6 @@
static int nr_state1_machine(struct sock *sk, struct sk_buff *skb,
int frametype)
{
- bh_lock_sock(sk);
switch (frametype) {
case NR_CONNACK: {
nr_cb *nr = nr_sk(sk);
@@ -103,8 +102,6 @@
default:
break;
}
- bh_unlock_sock(sk);
-
return 0;
}

@@ -116,7 +113,6 @@
static int nr_state2_machine(struct sock *sk, struct sk_buff *skb,
int frametype)
{
- bh_lock_sock(sk);
switch (frametype) {
case NR_CONNACK | NR_CHOKE_FLAG:
nr_disconnect(sk, ECONNRESET);
@@ -132,8 +128,6 @@
default:
break;
}
- bh_unlock_sock(sk);
-
return 0;
}

@@ -154,7 +148,6 @@
nr = skb->data[18];
ns = skb->data[17];

- bh_lock_sock(sk);
switch (frametype) {
case NR_CONNREQ:
nr_write_internal(sk, NR_CONNACK);
@@ -265,8 +258,6 @@
default:
break;
}
- bh_unlock_sock(sk);
-
return queued;
}

diff -Nru a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
--- a/net/xfrm/xfrm_state.c 2005-03-18 22:35:14 -08:00
+++ b/net/xfrm/xfrm_state.c 2005-03-18 22:35:14 -08:00
@@ -609,7 +609,7 @@

for (i = 0; i < XFRM_DST_HSIZE; i++) {
list_for_each_entry(x, xfrm_state_bydst+i, bydst) {
- if (x->km.seq == seq) {
+ if (x->km.seq == seq && x->km.state == XFRM_STATE_ACQ) {
xfrm_state_hold(x);
return x;
}
diff -Nru a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
--- a/sound/pci/ac97/ac97_codec.c 2005-03-18 22:35:14 -08:00
+++ b/sound/pci/ac97/ac97_codec.c 2005-03-18 22:35:14 -08:00
@@ -1185,7 +1185,7 @@
/*
* create mute switch(es) for normal stereo controls
*/
-static int snd_ac97_cmute_new(snd_card_t *card, char *name, int reg, ac97_t *ac97)
+static int snd_ac97_cmute_new_stereo(snd_card_t *card, char *name, int reg, int check_stereo, ac97_t *ac97)
{
snd_kcontrol_t *kctl;
int err;
@@ -1196,7 +1196,7 @@

mute_mask = 0x8000;
val = snd_ac97_read(ac97, reg);
- if (ac97->flags & AC97_STEREO_MUTES) {
+ if (check_stereo || (ac97->flags & AC97_STEREO_MUTES)) {
/* check whether both mute bits work */
val1 = val | 0x8080;
snd_ac97_write(ac97, reg, val1);
@@ -1254,7 +1254,7 @@
/*
* create a mute-switch and a volume for normal stereo/mono controls
*/
-static int snd_ac97_cmix_new(snd_card_t *card, const char *pfx, int reg, ac97_t *ac97)
+static int snd_ac97_cmix_new_stereo(snd_card_t *card, const char *pfx, int reg, int check_stereo, ac97_t *ac97)
{
int err;
char name[44];
@@ -1265,7 +1265,7 @@

if (snd_ac97_try_bit(ac97, reg, 15)) {
sprintf(name, "%s Switch", pfx);
- if ((err = snd_ac97_cmute_new(card, name, reg, ac97)) < 0)
+ if ((err = snd_ac97_cmute_new_stereo(card, name, reg, check_stereo, ac97)) < 0)
return err;
}
check_volume_resolution(ac97, reg, &lo_max, &hi_max);
@@ -1277,6 +1277,8 @@
return 0;
}

+#define snd_ac97_cmix_new(card, pfx, reg, ac97) snd_ac97_cmix_new_stereo(card, pfx, reg, 0, ac97)
+#define snd_ac97_cmute_new(card, name, reg, ac97) snd_ac97_cmute_new_stereo(card, name, reg, 0, ac97)

static unsigned int snd_ac97_determine_spdif_rates(ac97_t *ac97);

@@ -1327,7 +1329,8 @@

/* build surround controls */
if (snd_ac97_try_volume_mix(ac97, AC97_SURROUND_MASTER)) {
- if ((err = snd_ac97_cmix_new(card, "Surround Playback", AC97_SURROUND_MASTER, ac97)) < 0)
+ /* Surround Master (0x38) is with stereo mutes */
+ if ((err = snd_ac97_cmix_new_stereo(card, "Surround Playback", AC97_SURROUND_MASTER, 1, ac97)) < 0)
return err;
}

2005-03-19 22:32:25

by Panagiotis Issaris

[permalink] [raw]
Subject: Re: Linux 2.6.11.5

Hi Greg,

The changelog states that the patches for the AMD8111e and VIA-Rhine
originated from dilinger<at>debian.org although I was the one who they
originated from.

http://article.gmane.org/gmane.linux.kernel/282245
http://article.gmane.org/gmane.linux.kernel/282263

<dilinger:debian.org>:
o Possible AMD8111e free irq issue
o Possible VIA-Rhine free irq issue

With friendly regards,
Takis

--
OpenPGP key: http://lumumba.luc.ac.be/takis/takis_public_key.txt
fingerprint: 6571 13A3 33D9 3726 F728 AA98 F643 B12E ECF3 E029

2005-03-20 10:02:10

by Greg KH

[permalink] [raw]
Subject: Re: Linux 2.6.11.5

On Sat, Mar 19, 2005 at 11:32:09PM +0100, Panagiotis Issaris wrote:
> Hi Greg,
>
> The changelog states that the patches for the AMD8111e and VIA-Rhine
> originated from dilinger<at>debian.org although I was the one who they
> originated from.
>
> http://article.gmane.org/gmane.linux.kernel/282245
> http://article.gmane.org/gmane.linux.kernel/282263
>
> <dilinger:debian.org>:
> o Possible AMD8111e free irq issue
> o Possible VIA-Rhine free irq issue

Sorry about that. Trying to properly reference original authors when
patches are forwarded from different sources is a tough task.

thanks for being understanding about it.

greg k-h