* Re: 2.6.24 regression: reference count leak in PPPoE
From: Pavel Machek @ 2008-01-20 22:59 UTC (permalink / raw)
To: Andi Kleen; +Cc: netdev, linux-kernel
In-Reply-To: <200801202053.30386.ak@suse.de>
Hi!
> My workstation running 2.6.24-rc8 just hung during shutdown with an endless
> (or rather I didn't wait more than a few minutes) loop of
>
> unregister_netdev: waiting for ppp-device to become free. Usage count = 1
>
> ppp-device was an active PPPoE device.
>
> No more information currently.
Actually, I'm getting something similar:
usb 2-2: USB disconnect, address 23
PM: Removing info for No Bus:usbdev2.23_ep83
usb0: unregister 'cdc_ether' usb-0000:00:1d.0-2, CDC Ethernet Device
PM: Removing info for No Bus:usb0
unregister_netdevice: waiting for usb0 to become free. Usage count = 1
unregister_netdevice: waiting for usb0 to become free. Usage count = 1
unregister_netdevice: waiting for usb0 to become free. Usage count = 1
unregister_netdevice: waiting for usb0 to become free. Usage count = 1
unregister_netdevice: waiting for usb0 to become free. Usage count = 1
unregister_netdevice: waiting for usb0 to become free. Usage count = 1
PM: Removing info for usb:2-2:1.0
PM: Removing info for No Bus:usbdev2.23_ep81
PM: Removing info for No Bus:usbdev2.23_ep02
The unregister_netdevice made it onto console, that means pretty
severe log level. Happened while playing with openmoko connected with
USB cable.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply
* [PATCH] net: add sparse annotation to ptype_seq_start/stop
From: Stephen Hemminger @ 2008-01-20 23:21 UTC (permalink / raw)
To: David Miller; +Cc: netdev
Get rid of some more sparse warnings.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
--- a/net/core/dev.c 2008-01-20 14:25:00.000000000 -0800
+++ b/net/core/dev.c 2008-01-20 14:25:48.000000000 -0800
@@ -2543,6 +2543,7 @@ static void *ptype_get_idx(loff_t pos)
}
static void *ptype_seq_start(struct seq_file *seq, loff_t *pos)
+ __acquires(rcu)
{
rcu_read_lock();
return *pos ? ptype_get_idx(*pos - 1) : SEQ_START_TOKEN;
@@ -2578,6 +2579,7 @@ found:
}
static void ptype_seq_stop(struct seq_file *seq, void *v)
+ __releases(rcu)
{
rcu_read_unlock();
}
^ permalink raw reply
* [PATCH 1/3][NET] gen_estimator: faster gen_kill_estimator
From: Jarek Poplawski @ 2008-01-20 23:46 UTC (permalink / raw)
To: netdev; +Cc: Badalian Vyacheslav, Patrick McHardy, jamal, David Miller
gen_kill_estimator() is called during qdisc_destroy() with BHs disabled,
and each time does searching for each list member. This can block soft
interrupts for quite a long time when many classes are used. This patch
changes this by storing a pointer to internal gen_estimator structures
with gnet_stats_rate_est structures used by clients of gen_estimator.
This method removes currently possibile registering in gen_estimator the
same structures more than once, but it isn't used after all. (There is
added a warning if gen_new_estimator() is called with structures being
used by gen_estimator already.)
Reported-by: Badalian Vyacheslav <slavon@bigtelecom.ru>
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
[needs more testing]
---
include/linux/gen_stats.h | 2 ++
net/core/gen_estimator.c | 36 +++++++++++++++++++++++++++++++++---
2 files changed, 35 insertions(+), 3 deletions(-)
diff -Nurp 2.6.24-rc8-mm1-/include/linux/gen_stats.h 2.6.24-rc8-mm1+/include/linux/gen_stats.h
--- 2.6.24-rc8-mm1-/include/linux/gen_stats.h 2007-10-09 22:31:38.000000000 +0200
+++ 2.6.24-rc8-mm1+/include/linux/gen_stats.h 2008-01-20 20:37:08.000000000 +0100
@@ -28,11 +28,13 @@ struct gnet_stats_basic
* struct gnet_stats_rate_est - rate estimator
* @bps: current byte rate
* @pps: current packet rate
+ * @gen_estimator: internal data
*/
struct gnet_stats_rate_est
{
__u32 bps;
__u32 pps;
+ unsigned long gen_estimator;
};
/**
diff -Nurp 2.6.24-rc8-mm1-/net/core/gen_estimator.c 2.6.24-rc8-mm1+/net/core/gen_estimator.c
--- 2.6.24-rc8-mm1-/net/core/gen_estimator.c 2008-01-19 17:54:45.000000000 +0100
+++ 2.6.24-rc8-mm1+/net/core/gen_estimator.c 2008-01-20 20:58:35.000000000 +0100
@@ -139,6 +139,9 @@ skip:
rcu_read_unlock();
}
+static void gen_kill_estimator_find(struct gnet_stats_basic *bstats,
+ struct gnet_stats_rate_est *rate_est);
+
/**
* gen_new_estimator - create a new rate estimator
* @bstats: basic statistics
@@ -171,6 +174,10 @@ int gen_new_estimator(struct gnet_stats_
if (parm->interval < -2 || parm->interval > 3)
return -EINVAL;
+ if (rate_est->gen_estimator)
+ /* not sure: not zeroed in alloc or reused */
+ gen_kill_estimator_find(bstats, rate_est);
+
est = kzalloc(sizeof(*est), GFP_KERNEL);
if (est == NULL)
return -ENOBUFS;
@@ -184,6 +191,7 @@ int gen_new_estimator(struct gnet_stats_
est->avbps = rate_est->bps<<5;
est->last_packets = bstats->packets;
est->avpps = rate_est->pps<<10;
+ rate_est->gen_estimator = (unsigned long)est;
if (!elist[idx].timer.function) {
INIT_LIST_HEAD(&elist[idx].list);
@@ -209,13 +217,30 @@ static void __gen_kill_estimator(struct
* @bstats: basic statistics
* @rate_est: rate estimator statistics
*
- * Removes the rate estimator specified by &bstats and &rate_est
- * and deletes the timer.
+ * Removes the rate estimator specified by &bstats and &rate_est.
*
* NOTE: Called under rtnl_mutex
*/
void gen_kill_estimator(struct gnet_stats_basic *bstats,
- struct gnet_stats_rate_est *rate_est)
+ struct gnet_stats_rate_est *rate_est)
+{
+ if (rate_est && rate_est->gen_estimator) {
+ struct gen_estimator *e;
+
+ e = (struct gen_estimator *)rate_est->gen_estimator;
+
+ rate_est->gen_estimator = 0;
+ write_lock_bh(&est_lock);
+ e->bstats = NULL;
+ write_unlock_bh(&est_lock);
+
+ list_del_rcu(&e->list);
+ call_rcu(&e->e_rcu, __gen_kill_estimator);
+ }
+}
+
+static void gen_kill_estimator_find(struct gnet_stats_basic *bstats,
+ struct gnet_stats_rate_est *rate_est)
{
int idx;
struct gen_estimator *e, *n;
@@ -236,6 +261,11 @@ void gen_kill_estimator(struct gnet_stat
list_del_rcu(&e->list);
call_rcu(&e->e_rcu, __gen_kill_estimator);
+
+ WARN_ON_ONCE(1); /* gen_new_estimator() repeated? */
+ rate_est->gen_estimator = 0;
+
+ return;
}
}
}
^ permalink raw reply
* [PATCH 2/3][NET] gen_estimator: list_empty() check in est_timer() fixed
From: Jarek Poplawski @ 2008-01-20 23:49 UTC (permalink / raw)
To: netdev; +Cc: Badalian Vyacheslav, Patrick McHardy, jamal, David Miller
This patch changes the method of checking for empty list in est_timer():
list_empty() is not recommended for RCU protected lists. Now, it's simply
a variable used for this.
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
---
diff -Nurp 2.6.24-rc8-mm1-p1-/net/core/gen_estimator.c 2.6.24-rc8-mm1-p1+/net/core/gen_estimator.c
--- 2.6.24-rc8-mm1-p1-/net/core/gen_estimator.c 2008-01-20 20:58:35.000000000 +0100
+++ 2.6.24-rc8-mm1-p1+/net/core/gen_estimator.c 2008-01-20 21:07:42.000000000 +0100
@@ -106,6 +106,7 @@ static void est_timer(unsigned long arg)
{
int idx = (int)arg;
struct gen_estimator *e;
+ int list_not_empty = 0;
rcu_read_lock();
list_for_each_entry_rcu(e, &elist[idx].list, list) {
@@ -118,6 +119,9 @@ static void est_timer(unsigned long arg)
if (e->bstats == NULL)
goto skip;
+ if (list_not_empty == 0)
+ list_not_empty = 1;
+
nbytes = e->bstats->bytes;
npackets = e->bstats->packets;
rate = (nbytes - e->last_bytes)<<(7 - idx);
@@ -134,7 +138,7 @@ skip:
spin_unlock(e->stats_lock);
}
- if (!list_empty(&elist[idx].list))
+ if (list_not_empty)
mod_timer(&elist[idx].timer, jiffies + ((HZ/4) << idx));
rcu_read_unlock();
}
^ permalink raw reply
* [PATCH 3/3][NET] gen_estimator: gen_replace_estimator() cosmetic changes
From: Jarek Poplawski @ 2008-01-20 23:51 UTC (permalink / raw)
To: netdev; +Cc: Badalian Vyacheslav, Patrick McHardy, jamal, David Miller
White spaces etc. are changed in gen_replace_estimator() to make it similar
to others in a file.
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
---
diff -Nurp 2.6.24-rc8-mm1-p2-/net/core/gen_estimator.c 2.6.24-rc8-mm1-p2+/net/core/gen_estimator.c
--- 2.6.24-rc8-mm1-p2-/net/core/gen_estimator.c 2008-01-20 21:07:42.000000000 +0100
+++ 2.6.24-rc8-mm1-p2+/net/core/gen_estimator.c 2008-01-20 21:15:36.000000000 +0100
@@ -275,7 +275,7 @@ static void gen_kill_estimator_find(stru
}
/**
- * gen_replace_estimator - replace rate estimator configruation
+ * gen_replace_estimator - replace rate estimator configuration
* @bstats: basic statistics
* @rate_est: rate estimator statistics
* @stats_lock: statistics lock
@@ -286,13 +286,12 @@ static void gen_kill_estimator_find(stru
*
* Returns 0 on success or a negative error code.
*/
-int
-gen_replace_estimator(struct gnet_stats_basic *bstats,
- struct gnet_stats_rate_est *rate_est, spinlock_t *stats_lock,
- struct rtattr *opt)
+int gen_replace_estimator(struct gnet_stats_basic *bstats,
+ struct gnet_stats_rate_est *rate_est,
+ spinlock_t *stats_lock, struct rtattr *opt)
{
- gen_kill_estimator(bstats, rate_est);
- return gen_new_estimator(bstats, rate_est, stats_lock, opt);
+ gen_kill_estimator(bstats, rate_est);
+ return gen_new_estimator(bstats, rate_est, stats_lock, opt);
}
^ permalink raw reply
* Re: [PATCH 2/3][NET] gen_estimator: list_empty() check in est_timer() fixed
From: Stephen Hemminger @ 2008-01-20 23:55 UTC (permalink / raw)
To: netdev
In-Reply-To: <20080120234959.GB2691@ami.dom.local>
On Mon, 21 Jan 2008 00:49:59 +0100
Jarek Poplawski <jarkao2@gmail.com> wrote:
> This patch changes the method of checking for empty list in est_timer():
> list_empty() is not recommended for RCU protected lists. Now, it's simply
> a variable used for this.
>
> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
>
> ---
>
> diff -Nurp 2.6.24-rc8-mm1-p1-/net/core/gen_estimator.c 2.6.24-rc8-mm1-p1+/net/core/gen_estimator.c
> --- 2.6.24-rc8-mm1-p1-/net/core/gen_estimator.c 2008-01-20 20:58:35.000000000 +0100
> +++ 2.6.24-rc8-mm1-p1+/net/core/gen_estimator.c 2008-01-20 21:07:42.000000000 +0100
> @@ -106,6 +106,7 @@ static void est_timer(unsigned long arg)
> {
> int idx = (int)arg;
> struct gen_estimator *e;
> + int list_not_empty = 0;
Using a negative name for what is a boolean value leads
to code that reads like a double negative sentence. Better to choose
a variable name that is direct, can't use list_empty because that
is a macro, so how about "estimator_found".
>
> rcu_read_lock();
> list_for_each_entry_rcu(e, &elist[idx].list, list) {
> @@ -118,6 +119,9 @@ static void est_timer(unsigned long arg)
> if (e->bstats == NULL)
> goto skip;
>
> + if (list_not_empty == 0)
> + list_not_empty = 1;
> +
> nbytes = e->bstats->bytes;
> npackets = e->bstats->packets;
> rate = (nbytes - e->last_bytes)<<(7 - idx);
> @@ -134,7 +138,7 @@ skip:
> spin_unlock(e->stats_lock);
> }
>
> - if (!list_empty(&elist[idx].list))
> + if (list_not_empty)
> mod_timer(&elist[idx].timer, jiffies + ((HZ/4) << idx));
> rcu_read_unlock();
> }
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
Stephen Hemminger <stephen.hemminger@vyatta.com>
^ permalink raw reply
* Re: 2.6.24 regression: reference count leak in PPPoE
From: David Miller @ 2008-01-21 0:07 UTC (permalink / raw)
To: ak; +Cc: netdev, linux-kernel
In-Reply-To: <200801202053.30386.ak@suse.de>
From: Andi Kleen <ak@suse.de>
Date: Sun, 20 Jan 2008 20:53:30 +0100
>
> My workstation running 2.6.24-rc8 just hung during shutdown with an endless
> (or rather I didn't wait more than a few minutes) loop of
>
> unregister_netdev: waiting for ppp-device to become free. Usage count = 1
>
> ppp-device was an active PPPoE device.
>
> No more information currently.
http://bugzilla.kernel.org/show_bug.cgi?id=9778
^ permalink raw reply
* Re: 2.6.24 regression: reference count leak in PPPoE
From: David Miller @ 2008-01-21 0:08 UTC (permalink / raw)
To: mingo; +Cc: ak, netdev, linux-kernel, torvalds
In-Reply-To: <20080120200109.GA31876@elte.hu>
From: Ingo Molnar <mingo@elte.hu>
Date: Sun, 20 Jan 2008 21:01:09 +0100
>
> * Andi Kleen <ak@suse.de> wrote:
>
> > My workstation running 2.6.24-rc8 just hung during shutdown with an
> > endless (or rather I didn't wait more than a few minutes) loop of
> >
> > unregister_netdev: waiting for ppp-device to become free. Usage count
> > = 1
> >
> > ppp-device was an active PPPoE device.
> >
> > No more information currently.
>
> i've seen such problems (locked up box with endless loop of usage count
> == 1) with pppoe in the past, and it seemed to be related to dynamic
> IPs. (i saw that well before 2.6.24 - reported it once to davem)
No, this is a different bug Andi is seeing and it was
recently introduced:
http://bugzilla.kernel.org/show_bug.cgi?id=9778
^ permalink raw reply
* Re: [PATCH 2/4] dsmark: get rid of trivial function
From: Patrick McHardy @ 2008-01-21 0:16 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David Miller, netdev
In-Reply-To: <20080120132550.056370c0@deepthought>
Stephen Hemminger wrote:
> Replace loop in dsmark_valid_indices with equivalent bit math.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
>
> --- a/net/sched/sch_dsmark.c 2008-01-20 13:07:58.000000000 -0800
> +++ b/net/sched/sch_dsmark.c 2008-01-20 13:22:54.000000000 -0800
> @@ -45,13 +45,8 @@ struct dsmark_qdisc_data {
>
> static inline int dsmark_valid_indices(u16 indices)
> {
> - while (indices != 1) {
> - if (indices & 1)
> - return 0;
> - indices >>= 1;
> - }
> -
> - return 1;
> + /* Must have only one bit set */
> + return (indices & (indices - 1)) == 0;
hweight seems easier to understand, it took me a bit
to realize that the comment matches the code :)
^ permalink raw reply
* post 2.6.24-rc7 regression: unregister_netdevice: waiting for eth1 to become free
From: Mariusz Kozlowski @ 2008-01-21 0:09 UTC (permalink / raw)
To: Andrew Morton; +Cc: davem, netdev, lkml, Jeff Garzik
[-- Attachment #1: Type: text/plain, Size: 7377 bytes --]
Hello,
I found that on current Linus tree unplugging my pcmcia wifi
card (Cabletron RoamAbout) causes part of the system to hang. I.e. mouse works
but keyboard is frozen until reboot. Actually only sysrq works but I can not
type in any terminal.
Syslog shows:
kernel: pccard: card ejected from slot 1
kernel: hermes @ 00010100: Card removed while issuing command 0x0002.
kernel: eth1: Error -19 disabling MAC port
kernel: unregister_netdevice: waiting for eth1 to become free. Usage count = 1
last message repeated 2 times
sysrq-d:
Showing all locks held in the system:
3 locks held by events/0/5:
#0: (events){--..}, at: [<c0126956>] run_workqueue+0xd2/0x1c9
#1: ((linkwatch_work).work){--..}, at: [<c012697c>] run_workqueue+0xf8/0x1c9
#2: (net_todo_run_mutex){--..}, at: [<c02d6c7a>] netdev_run_todo+0x15/0x23f
2 locks held by pccardd/1189:
#0: (&socket->skt_mutex){--..}, at: [<c0286918>] pccardd+0x129/0x227
#1: (net_todo_run_mutex){--..}, at: [<c02d6c7a>] netdev_run_todo+0x15/0x23f
1 lock held by agetty/5204:
#0: (&tty->atomic_read_lock){--..}, at: [<c022bb0f>] read_chan+0x3da/0x5bb
1 lock held by agetty/5206:
#0: (&tty->atomic_read_lock){--..}, at: [<c022bb0f>] read_chan+0x3da/0x5bb
1 lock held by agetty/5207:
#0: (&tty->atomic_read_lock){--..}, at: [<c022bb0f>] read_chan+0x3da/0x5bb
1 lock held by agetty/5208:
#0: (&tty->atomic_read_lock){--..}, at: [<c022bb0f>] read_chan+0x3da/0x5bb
1 lock held by agetty/5209:
#0: (&tty->atomic_read_lock){--..}, at: [<c022bb0f>] read_chan+0x3da/0x5bb
1 lock held by ifconfig/5581:
#0: (net_todo_run_mutex){--..}, at: [<c02d6c7a>] netdev_run_todo+0x15/0x23f
sysrq-w:
SysRq : Show Blocked State
task PC stack pid father
events/0 D dcd62780 0 5 2
dd834ee0 00000096 c033f2e0 dcd62780 00000000 c043f500 00000246 dd846000
dd834f28 c033547a 00000000 00000002 c02d6c7a dd834f0c c043f538 c043f524
c02d6c7a 00000000 dcfa5e54 c043f524 dd846000 c043f500 dd834f08 c043f744
Call Trace:
[<c033547a>] mutex_lock_nested+0xe6/0x306
[<c02d6c7a>] netdev_run_todo+0x15/0x23f
[<c02de559>] rtnl_unlock+0x12/0x14
[<c02df907>] linkwatch_event+0x25/0x27
[<c01269a4>] run_workqueue+0x120/0x1c9
[<c01272f6>] worker_thread+0x71/0xab
[<c0129dbd>] kthread+0x36/0x58
[<c0103507>] kernel_thread_helper+0x7/0x10
=======================
pccardd D dccaaa00 0 1189 2
dce33e00 00000096 c033f260 dccaaa00 00000282 dce33e10 ffff4f93 ffff4f53
dce33e30 c0334b38 c043f6c0 dce33e30 c04dc740 c04dc740 ffff4f93 c01202e9
dce16000 c04dc280 dcc09060 ffff4811 dce33e38 c0334bab dce33e40 c01207ae
Call Trace:
[<c0334b38>] schedule_timeout+0x43/0xa2
[<c0334bab>] schedule_timeout_uninterruptible+0x14/0x16
[<c01207ae>] msleep+0x12/0x18
[<c02d6d2e>] netdev_run_todo+0xc9/0x23f
[<c02de559>] rtnl_unlock+0x12/0x14
[<c02d54ad>] unregister_netdev+0x17/0x1b
[<ded1c111>] orinoco_cs_detach+0x1b/0x2d [orinoco_cs]
[<ded0873b>] pcmcia_device_remove+0x37/0xc6 [pcmcia]
[<c0258080>] __device_release_driver+0x6a/0x92
[<c0258493>] device_release_driver+0x2f/0x45
[<c025798f>] bus_remove_device+0x53/0x75
[<c0256194>] device_del+0x146/0x257
[<c02562b0>] device_unregister+0xb/0x15
[<ded08683>] pcmcia_card_remove+0x71/0x87 [pcmcia]
[<ded091ec>] ds_event+0x54/0x99 [pcmcia]
[<c0285f5a>] send_event+0x78/0xa4
[<c0286175>] socket_remove_drivers+0x12/0x14
[<c0286185>] socket_shutdown+0xe/0xc7
[<c0286264>] socket_remove+0x26/0x2c
[<c02869e7>] pccardd+0x1f8/0x227
[<c0129dbd>] kthread+0x36/0x58
[<c0103507>] kernel_thread_helper+0x7/0x10
=======================
ifconfig D ddb5ea00 0 5581 5580
dcfa5e2c 00000096 c033f2e0 ddb5ea00 00000000 c043f500 00000246 dce94000
dcfa5e74 c033547a 00000000 00000002 c02d6c7a dce9456c c043f538 c043f524
c02d6c7a 00000000 c043f524 dd834f08 dce94000 c043f500 dcfa5e54 00000000
Call Trace:
[<c033547a>] mutex_lock_nested+0xe6/0x306
[<c02d6c7a>] netdev_run_todo+0x15/0x23f
[<c02de559>] rtnl_unlock+0x12/0x14
[<c02d614c>] dev_ioctl+0x165/0x4f5
[<c02c9967>] sock_ioctl+0xe2/0x211
[<c016e3c2>] do_ioctl+0x22/0x71
[<c016e466>] vfs_ioctl+0x55/0x28a
[<c016e6ce>] sys_ioctl+0x33/0x51
[<c01028ca>] sysenter_past_esp+0x5f/0xa5
=======================
I run bisection three times but it doesn't give a clear answer which commit is the culprit.
First bisection: current Linus bad - v2.6.23 good. First bad commit:
ecd2ebdea350c40e73c00d400d74c8a09c072082 is first bad commit
commit ecd2ebdea350c40e73c00d400d74c8a09c072082
Author: Jarek Poplawski <jarkao2@gmail.com>
Date: Thu Jan 10 21:21:20 2008 -0800
[AX25] af_ax25: Possible circular locking.
Which is bogus because I don't even have ax25 compiled into the kernel.
Next two (to be sure) times I run bisection: current Linus bad - v2.6.24-rc7 good.
Two times I got the same result, first bad commit:
9cd40029423701c376391da59d2c6469672b4bed is first bad commit
commit 9cd40029423701c376391da59d2c6469672b4bed
Author: Pavel Emelyanov <xemul@openvz.org>
Date: Thu Jan 10 03:48:38 2008 -0800
[NEIGH]: Fix race between neigh_parms_release and neightbl_fill_parms
But this also seems wrong. When I apply this patch the problem doesn't show.
Good thing is that both commits are very close to each other so I guess the culprit
is somewhere there near to them. All I can say for sure now is that v2.6.24-rc7 is good
and current Linus is bad.
Box is x86 32bit. Config is attached. If I can provide you with any more info just let me know.
My plan is to apply patches, one at a time, starting from 9cd4002942 and see what happens
unless someone knows already which one is bad.
Regards,
Mariusz
This is the last bisection log:
git-bisect start
# bad: [a7da60f41551abb3c520b03d42ec05dd7decfc7f] Remove bogus duplicate CONFIG_LGUEST_GUEST entry.
git-bisect bad a7da60f41551abb3c520b03d42ec05dd7decfc7f
# good: [3ce54450461bad18bbe1f9f5aa3ecd2f8e8d1235] Linux 2.6.24-rc7
git-bisect good 3ce54450461bad18bbe1f9f5aa3ecd2f8e8d1235
# good: [d72ec9e20e4de995aa957f171cf84b136689e4c0] Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
git-bisect good d72ec9e20e4de995aa957f171cf84b136689e4c0
# bad: [0938e7586440ac97cedc0f5528a8684ebfa4ce43] Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
git-bisect bad 0938e7586440ac97cedc0f5528a8684ebfa4ce43
# good: [d8cf5389bd9d1f0ac9fea51796c274ba64b83d80] libata: relocate sdev->manage_start_stop configuration
git-bisect good d8cf5389bd9d1f0ac9fea51796c274ba64b83d80
# bad: [1b310fca30ac9851f79337ca72b1cf6a0f58064a] [TOKENRING]: rif_timer not initialized properly
git-bisect bad 1b310fca30ac9851f79337ca72b1cf6a0f58064a
# bad: [5c5482266537fdb24d6b8462540d8f65a6007a97] [BLUETOOTH]: Always send explicit hci_ll wake-up acks.
git-bisect bad 5c5482266537fdb24d6b8462540d8f65a6007a97
# bad: [0bcceadceb0907094ba4e40bf9a7cd9b080f13fb] [IPV4] ROUTE: fix rcu_dereference() uses in /proc/net/rt_cache
git-bisect bad 0bcceadceb0907094ba4e40bf9a7cd9b080f13fb
# bad: [9cd40029423701c376391da59d2c6469672b4bed] [NEIGH]: Fix race between neigh_parms_release and neightbl_fill_parms
git-bisect bad 9cd40029423701c376391da59d2c6469672b4bed
# good: [b0de8e402dc5d3ee04f4d0f669ae492a3e569933] [NIU]: Support for Marvell PHY
git-bisect good b0de8e402dc5d3ee04f4d0f669ae492a3e569933
[-- Attachment #2: config.gz --]
[-- Type: application/x-gzip, Size: 9827 bytes --]
^ permalink raw reply
* Re: post 2.6.24-rc7 regression: unregister_netdevice: waiting for eth1 to become free
From: David Miller @ 2008-01-21 0:32 UTC (permalink / raw)
To: m.kozlowski; +Cc: akpm, netdev, linux-kernel, jgarzik
In-Reply-To: <200801210109.42153.m.kozlowski@tuxland.pl>
From: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Date: Mon, 21 Jan 2008 01:09:41 +0100
> kernel: unregister_netdevice: waiting for eth1 to become free. Usage count = 1
Known problem:
http://bugzilla.kernel.org/show_bug.cgi?id=9778
^ permalink raw reply
* Re: [2.6 patch] atm/idt77105.c: fix section mismatch
From: Roel Kluin @ 2008-01-21 0:37 UTC (permalink / raw)
To: Adrian Bunk; +Cc: chas, jgarzik, netdev, linux-kernel
In-Reply-To: <20080119131849.GA8669@does.not.exist>
Adrian Bunk wrote:
> EXPORT_SYMBOL'ed code mustn't be __*init.
>
Is it correct that the cases below are section mismatches as well?
If required I'll send separate patches to the respective maintainers
& lists.
__init
arch/arm/mach-imx/generic.c:330:EXPORT_SYMBOL(set_imx_fb_info);
__devinit
arch/parisc/kernel/pci.c:245:EXPORT_SYMBOL(pcibios_resource_to_bus);
arch/powerpc/kernel/pci_64.c:371:EXPORT_SYMBOL(of_scan_bus);
arch/powerpc/kernel/pci_64.c:460:EXPORT_SYMBOL(of_scan_pci_bridge);
arch/powerpc/kernel/pci_64.c:842:EXPORT_SYMBOL(pcibios_fixup_device_resources);
arch/powerpc/kernel/pci_64.c:862:EXPORT_SYMBOL(pcibios_setup_new_device);
arch/powerpc/kernel/pci_64.c:908:EXPORT_SYMBOL(pcibios_fixup_bus);
arch/ia64/pci/pci.c:477:EXPORT_SYMBOL_GPL(pcibios_fixup_device_resources);
arch/powerpc/kernel/vio.c:240:EXPORT_SYMBOL(vio_register_device_node);
arch/powerpc/kernel/vio.c:309:EXPORT_SYMBOL(vio_unregister_device);
__cpu_init
arch/x86/kernel/topology.c:60:EXPORT_SYMBOL(arch_register_cpu);
--
EXPORT_SYMBOL'ed code mustn't be __*init.
Signed-off-by: Roel Kluin <12o3l@tiscali.nl>
---
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c
index 4cfc9d3..92e098a 100644
--- a/arch/arm/mach-imx/generic.c
+++ b/arch/arm/mach-imx/generic.c
@@ -323,7 +323,7 @@ void __init imx_set_mmc_info(struct imxmmc_platform_data *info)
static struct imxfb_mach_info imx_fb_info;
-void __init set_imx_fb_info(struct imxfb_mach_info *hard_imx_fb_info)
+void set_imx_fb_info(struct imxfb_mach_info *hard_imx_fb_info)
{
memcpy(&imx_fb_info,hard_imx_fb_info,sizeof(struct imxfb_mach_info));
}
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 488e48a..8c200a8 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -470,7 +470,7 @@ pcibios_fixup_resources(struct pci_dev *dev, int start, int limit)
}
}
-void __devinit pcibios_fixup_device_resources(struct pci_dev *dev)
+void pcibios_fixup_device_resources(struct pci_dev *dev)
{
pcibios_fixup_resources(dev, 0, PCI_BRIDGE_RESOURCES);
}
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c
index 507d0ac..9cf3cfc 100644
--- a/arch/parisc/kernel/pci.c
+++ b/arch/parisc/kernel/pci.c
@@ -195,7 +195,7 @@ void __init pcibios_init_bus(struct pci_bus *bus)
}
/* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */
-void __devinit pcibios_resource_to_bus(struct pci_dev *dev,
+void pcibios_resource_to_bus(struct pci_dev *dev,
struct pci_bus_region *region, struct resource *res)
{
#ifdef CONFIG_64BIT
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 9f63bdc..5f1151a 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -338,7 +338,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
}
EXPORT_SYMBOL(of_create_pci_dev);
-void __devinit of_scan_bus(struct device_node *node,
+void of_scan_bus(struct device_node *node,
struct pci_bus *bus)
{
struct device_node *child = NULL;
@@ -370,7 +370,7 @@ void __devinit of_scan_bus(struct device_node *node,
}
EXPORT_SYMBOL(of_scan_bus);
-void __devinit of_scan_pci_bridge(struct device_node *node,
+void of_scan_pci_bridge(struct device_node *node,
struct pci_dev *dev)
{
struct pci_bus *bus;
@@ -818,7 +818,7 @@ static void __devinit fixup_resource(struct resource *res, struct pci_dev *dev)
}
}
-void __devinit pcibios_fixup_device_resources(struct pci_dev *dev,
+void pcibios_fixup_device_resources(struct pci_dev *dev,
struct pci_bus *bus)
{
/* Update device resources. */
@@ -841,7 +841,7 @@ void __devinit pcibios_fixup_device_resources(struct pci_dev *dev,
}
EXPORT_SYMBOL(pcibios_fixup_device_resources);
-void __devinit pcibios_setup_new_device(struct pci_dev *dev)
+void pcibios_setup_new_device(struct pci_dev *dev)
{
struct dev_archdata *sd = &dev->dev.archdata;
@@ -879,7 +879,7 @@ static void __devinit do_bus_setup(struct pci_bus *bus)
}
}
-void __devinit pcibios_fixup_bus(struct pci_bus *bus)
+void pcibios_fixup_bus(struct pci_bus *bus)
{
struct pci_dev *dev = bus->self;
struct device_node *np;
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index 19a5656..70a2ce4 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -178,7 +178,7 @@ static void __devinit vio_dev_release(struct device *dev)
* Returns a pointer to the created vio_dev or NULL if node has
* NULL device_type or compatible fields.
*/
-struct vio_dev * __devinit vio_register_device_node(struct device_node *of_node)
+struct vio_dev * vio_register_device_node(struct device_node *of_node)
{
struct vio_dev *viodev;
const unsigned int *unit_address;
@@ -302,7 +302,7 @@ static struct device_attribute vio_dev_attrs[] = {
__ATTR_NULL
};
-void __devinit vio_unregister_device(struct vio_dev *viodev)
+void vio_unregister_device(struct vio_dev *viodev)
{
device_unregister(&viodev->dev);
}
diff --git a/arch/x86/kernel/topology.c b/arch/x86/kernel/topology.c
index 7e16d67..561acc0 100644
--- a/arch/x86/kernel/topology.c
+++ b/arch/x86/kernel/topology.c
@@ -33,7 +33,7 @@
static struct i386_cpu cpu_devices[NR_CPUS];
-int __cpuinit arch_register_cpu(int num)
+int arch_register_cpu(int num)
{
/*
* CPU0 cannot be offlined due to several
^ permalink raw reply related
* Re: 2.6.24 regression: reference count leak in PPPoE
From: nigel @ 2008-01-21 0:33 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Andi Kleen, netdev, linux-kernel, Linus Torvalds
In-Reply-To: <20080120200109.GA31876@elte.hu>
Hi.
Quoting Ingo Molnar <mingo@elte.hu>:
>
> * Andi Kleen <ak@suse.de> wrote:
>
>> My workstation running 2.6.24-rc8 just hung during shutdown with an
>> endless (or rather I didn't wait more than a few minutes) loop of
>>
>> unregister_netdev: waiting for ppp-device to become free. Usage count
>> = 1
>>
>> ppp-device was an active PPPoE device.
>>
>> No more information currently.
>
> i've seen such problems (locked up box with endless loop of usage count
> == 1) with pppoe in the past, and it seemed to be related to dynamic
> IPs. (i saw that well before 2.6.24 - reported it once to davem)
>
> It seems to have stopped when i stopped using ipsec and started using
> vpnc. (but no firm info - this was sporadic - happened every few months
> or so) Are you using ipsec and dynamic IPs by any chance?
This isn't PPPoE specific. It has also been seen with e1000, madwifi
and an intel based card. It was introduced by a Jan 10 commit post rc7
(sorry, don't have the details right now - my laptop died yesterday).
A bugzilla has already been opened.
Nigel
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
^ permalink raw reply
* Re: [PATCH 0/3 net-2.6.25] call FIB rule->action in the correct namespace
From: David Miller @ 2008-01-21 0:47 UTC (permalink / raw)
To: den; +Cc: dlezcano, netdev, containers, devel
In-Reply-To: <478F2933.1000007@openvz.org>
From: "Denis V. Lunev" <den@openvz.org>
Date: Thu, 17 Jan 2008 13:08:51 +0300
> FIB rule->action should operate in the same namespace as fib_lookup.
> This is definitely missed right now.
>
> There are two ways to implement this: pass struct net into another rules
> API call (2 levels) or place netns into rule struct directly. The second
> approach seems better as the code will grow less.
>
> Additionally, the patchset cleanups struct net from
> fib_rules_register/unregister to have network namespace context at the
> time of default rules creation.
>
> Signed-off-by: Denis V. Lunev <den@openvz.org>
All 3 patches applied, thanks.
^ permalink raw reply
* Re: [patch for 2.6.24? 1/1] bonding: locking fix
From: David Miller @ 2008-01-21 0:57 UTC (permalink / raw)
To: akpm; +Cc: fubar, olel, jeff, shemminger, netdev
In-Reply-To: <20080117154243.9ee4265c.akpm@linux-foundation.org>
From: Andrew Morton <akpm@linux-foundation.org>
Date: Thu, 17 Jan 2008 15:42:43 -0800
> Applying this:
>
> --- a/drivers/net/bonding/bond_sysfs.c~bonding-locking-fix
> +++ a/drivers/net/bonding/bond_sysfs.c
> @@ -1111,8 +1111,6 @@ static ssize_t bonding_store_primary(str
> out:
> write_unlock_bh(&bond->lock);
>
> - rtnl_unlock();
> -
> return count;
> }
> static DEVICE_ATTR(primary, S_IRUGO | S_IWUSR, bonding_show_primary, bonding_store_primary);
>
>
> is better than doing nothing.
If you look at the change that introduced this:
commit 6603a6f25e4bca922a7dfbf0bf03072d98850176
Author: Jay Vosburgh <fubar@us.ibm.com>
Date: Wed Oct 17 17:37:50 2007 -0700
bonding: Convert more locks to _bh, acquire rtnl, for new locking
Convert more lock acquisitions to _bh flavor to avoid deadlock
with workqueue activity and add acquisition of RTNL in appropriate places.
Affects ALB mode, as well as core bonding functions and sysfs.
Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
It is clearly the author's intent to surround the execution
of this function (and also bonding_show_active_slave() which
was done correctly) with RTNL semaphore holding.
Therefore the correct fix, which I'll push, is:
commit 991a15cb1cd60a918bd864bb79e7649c30aab275
Author: David S. Miller <davem@davemloft.net>
Date: Sun Jan 20 16:55:20 2008 -0800
[BONDING]: Fix rtnl locking in bonding_store_primary().
Changeset 6603a6f25e4bca922a7dfbf0bf03072d98850176 (Convert more locks
to _bh, acquire rtnl, for new locking) added a regression.
A rtnl_unlock() was added but a rtnl_lock() was not.
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
index 11b76b3..4845c01 100644
--- a/drivers/net/bonding/bond_sysfs.c
+++ b/drivers/net/bonding/bond_sysfs.c
@@ -1075,6 +1075,7 @@ static ssize_t bonding_store_primary(struct device *d,
struct slave *slave;
struct bonding *bond = to_bond(d);
+ rtnl_lock();
write_lock_bh(&bond->lock);
if (!USES_PRIMARY(bond->params.mode)) {
printk(KERN_INFO DRV_NAME
^ permalink raw reply related
* Re: [PATCH] [IrDA] af_irda memory leak fixes
From: David Miller @ 2008-01-21 0:58 UTC (permalink / raw)
To: samuel-jcdQHdrhKHMdnm+yROfE0A
Cc: irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
jesper.juhl-Re5JQEeQqe8AvxtiuMwx3w, netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20080118075322.GB3063-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
From: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
Date: Fri, 18 Jan 2008 08:53:22 +0100
> Hi Dave,
>
> Here goes an IrDA patch against your latest net-2.6 tree.
>
> This patch fixes some af_irda memory leaks.
> It also checks for irias_new_obect() return value.
>
> Signed-off-by: Jesper Juhl <jesper.juhl-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
Applied, thanks Sam.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply
* Re: [PATCH 0/7] bonding: 7 fixes for 2.6.24
From: David Miller @ 2008-01-21 1:15 UTC (permalink / raw)
To: fubar; +Cc: netdev, jgarzik, andy, akpm
In-Reply-To: <12006159033257-git-send-email-fubar@us.ibm.com>
From: Jay Vosburgh <fubar@us.ibm.com>
Date: Thu, 17 Jan 2008 16:24:56 -0800
> Following are seven patches to fix locking problems,
> silence locking-related warnings and resolve one recent regression
> in the current 2.6.24-rc.
Jeff, are you going to merge this stuff in?
I'll drop that rtnl_lock() one-liner if so...
^ permalink raw reply
* Re: [PATCH 1/3] sfq: timer is deferrable
From: David Miller @ 2008-01-21 1:18 UTC (permalink / raw)
To: paulmck; +Cc: shemminger, stephen.hemminger, netdev
In-Reply-To: <20080119055700.GC24840@linux.vnet.ibm.com>
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date: Fri, 18 Jan 2008 21:57:00 -0800
> On Fri, Jan 18, 2008 at 08:36:55PM -0800, Stephen Hemminger wrote:
> > On Fri, 18 Jan 2008 20:34:46 -0800
> > "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:
> >
> > > On Fri, Jan 18, 2008 at 02:49:00PM -0800, Stephen Hemminger wrote:
> > > > The perturbation timer used for re-keying can be deferred, it doesn't
> > > > need to be deterministic.
> > >
> > > The only concern that I can come up with is that the sfq_perturbation
> > > timer might be on one CPU, and all the operations using the corresponding
> > > SFQ on another. This could in theory allow a nearly omniscient attacker
> > > to exploit an SFQ imbalance while preventing perturbation of the hash
> > > function.
> > >
> > > This does not seem to be a valid concern at this point, since there are
> > > very few uses of init_timer_deferrable(). And if it should become a
> > > problem, one approach would be to have some sort of per-timer limit to
> > > the deferral. Of course, at that point one would need to figure out
> > > what this limit should be!
> > >
> > > Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> >
> > But the only threat is getting more bandwidth for a longer interval.
> > It is all kind of moot anyway because the bandwidth hogs all open
> > multiple connections anyway, so SFQ is of no use.
>
> Good point, and an additional reason for my Acked-by above. ;-)
I've applied this patch, thanks :-)
^ permalink raw reply
* Re: [PATCH 2/2] SFQ: use net_random
From: David Miller @ 2008-01-21 1:19 UTC (permalink / raw)
To: paulmck; +Cc: stephen.hemminger, netdev
In-Reply-To: <20080119041820.GA24840@linux.vnet.ibm.com>
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date: Fri, 18 Jan 2008 20:18:20 -0800
> On Fri, Jan 18, 2008 at 02:47:30PM -0800, Stephen Hemminger wrote:
> > SFQ doesn't need true random numbers, it is only using them to salt
> > a hash. Therefore it is better to use net_random() and avoid any possible
> > problems with depleting the entropy pool.
>
> The random-number algorithm used by net_random() certainly does appear
> to be considerably stronger than the one I used to generate the results
> in the 1990 paper. ;-)
>
> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Also applied, thanks.
^ permalink raw reply
* Re: [PATCH 3/3] sfq: whitespace cleanup
From: David Miller @ 2008-01-21 1:21 UTC (permalink / raw)
To: stephen.hemminger; +Cc: paulmck, netdev
In-Reply-To: <20080118144837.0a3593c5@deepthought>
From: Stephen Hemminger <stephen.hemminger@vyatta.com>
Date: Fri, 18 Jan 2008 14:48:37 -0800
> Add whitespace around operators, and add a few blank lines
> to improve readability.
>
> Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
Applied.
^ permalink raw reply
* Re: [2.6 patch] atm/idt77105.c: fix section mismatch
From: David Miller @ 2008-01-21 1:22 UTC (permalink / raw)
To: sam; +Cc: bunk, chas, jgarzik, netdev, linux-kernel
In-Reply-To: <20080119132852.GB26615@uranus.ravnborg.org>
From: Sam Ravnborg <sam@ravnborg.org>
Date: Sat, 19 Jan 2008 14:28:52 +0100
> On Sat, Jan 19, 2008 at 03:18:49PM +0200, Adrian Bunk wrote:
> > EXPORT_SYMBOL'ed code mustn't be __*init.
> >
> > Signed-off-by: Adrian Bunk <bunk@kernel.org>
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
Applied.
^ permalink raw reply
* Re: [2.6 patch] atm/suni.c: fix section mismatch
From: David Miller @ 2008-01-21 1:23 UTC (permalink / raw)
To: sam; +Cc: bunk, chas, jgarzik, netdev, linux-kernel
In-Reply-To: <20080119132904.GC26615@uranus.ravnborg.org>
From: Sam Ravnborg <sam@ravnborg.org>
Date: Sat, 19 Jan 2008 14:29:04 +0100
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
Applied.
^ permalink raw reply
* Re: [AF_KEY]: Fix skb leak on pfkey_send_migrate() error
From: David Miller @ 2008-01-21 1:24 UTC (permalink / raw)
To: kaber; +Cc: netdev
In-Reply-To: <479364DC.40604@trash.net>
From: Patrick McHardy <kaber@trash.net>
Date: Sun, 20 Jan 2008 16:12:28 +0100
> commit 4dd3440faa345731c27337ee041c0e9abf2b70dc
> Author: Patrick McHardy <kaber@trash.net>
> Date: Sun Jan 20 16:10:04 2008 +0100
>
> [AF_KEY]: Fix skb leak on pfkey_send_migrate() error
>
> Signed-off-by: Patrick McHardy <kaber@trash.net>
Applied, thanks Patrick.
^ permalink raw reply
* Re: [NET]: rtnl_link: fix use-after-free
From: David Miller @ 2008-01-21 1:25 UTC (permalink / raw)
To: kaber; +Cc: xemul, netdev
In-Reply-To: <47938317.1070906@trash.net>
From: Patrick McHardy <kaber@trash.net>
Date: Sun, 20 Jan 2008 18:21:27 +0100
> commit 6e470bd53fb50632fe1878bb74bb8531a21b6731
> Author: Patrick McHardy <kaber@trash.net>
> Date: Sun Jan 20 18:19:15 2008 +0100
>
> [NET]: rtnl_link: fix use-after-free
>
> When unregistering the rtnl_link_ops, all existing devices using
> the ops are destroyed. With nested devices this may lead to a
> use-after-free despite the use of for_each_netdev_safe() in case
> the upper device is next in the device list and is destroyed
> by the NETDEV_UNREGISTER notifier.
>
> The easy fix is to restart scanning the device list after removing
> a device. Alternatively we could add new devices to the front of
> the list to avoid having dependant devices follow the device they
> depend on. A third option would be to only restart scanning if
> dev->iflink of the next device matches dev->ifindex of the current
> one. For now this seems like the safest solution.
>
> With this patch, the veth rtnl_link_ops unregistration can use
> rtnl_link_unregister() directly since it now also handles destruction
> of multiple devices at once.
>
> Signed-off-by: Patrick McHardy <kaber@trash.net>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH 0/7] bonding: 7 fixes for 2.6.24
From: Andrew Morton @ 2008-01-21 1:36 UTC (permalink / raw)
To: David Miller; +Cc: fubar, netdev, jgarzik, andy
In-Reply-To: <20080120.171538.12566715.davem@davemloft.net>
On Sun, 20 Jan 2008 17:15:38 -0800 (PST) David Miller <davem@davemloft.net> wrote:
> From: Jay Vosburgh <fubar@us.ibm.com>
> Date: Thu, 17 Jan 2008 16:24:56 -0800
>
> > Following are seven patches to fix locking problems,
> > silence locking-related warnings and resolve one recent regression
> > in the current 2.6.24-rc.
>
> Jeff, are you going to merge this stuff in?
>
> I'll drop that rtnl_lock() one-liner if so...
It's all in mainline. The one-liner should be unneeded.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox