* reg IFF_RUNNING behaviour
From: durgam@it.iitb.ac.in phani @ 2009-08-03 9:26 UTC (permalink / raw)
To: netdev
when the interface operational status goes down (IFF_RUNNING) why
linux ip stack is not flushing routing/neighbour (arp) entries
related to the interface . I have the following doubt .
If there are two routes to the destiantion, one route is more
specific and points to the eth0 and another one points to the another
interface eth1. If eth0 goes down operationally , linux kernel has
not removed the specific route which points eth0. When the traffic
came for this destination, specific route was getting exercised and
traffic was getting dropped . Why is this behaviour supported in
linux.
This is exampe.
eth0 Link encap:Ethernet HWaddr 00:05:1E:76:42:A1
inet addr:4.4.4.2 Bcast:4.4.4.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:9018 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:5 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
eth1 Link encap:Ethernet HWaddr 00:05:1E:76:42:80
inet addr:10.32.152.16 Bcast:10.32.159.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:115582 errors:1 dropped:0 overruns:0 frame:0
TX packets:1472 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
Routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.2.2.52 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
4.4.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.32.144.0 0.0.0.0 255.255.240.0 U 0 0 0 eth1
0.0.0.0 10.32.144.1 0.0.0.0 UG 0 0 0 eth1
Thanks
Pani.
^ permalink raw reply
* Re: [PATCH 6/10] drivers/net/wireless/iwlwifi: introduce missing kfree
From: Zhu Yi @ 2009-08-03 9:13 UTC (permalink / raw)
To: Julia Lawall
Cc: Chatre, Reinette, linux-wireless@vger.kernel.org,
ipw3945-devel@lists.sourceforge.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
In-Reply-To: <Pine.LNX.4.64.0908031109590.8435@pc-004.diku.dk>
On Mon, 2009-08-03 at 17:11 +0800, Julia Lawall wrote:
> From: Julia Lawall <julia@diku.dk>
>
> Move orthogonal error handling code up before a kzalloc, so that it
> doesn't have to free the allocated data.
Acked-by: Zhu Yi <yi.zhu@intel.com>
Thanks,
-yi
> The semantic match that finds the problem is as follows:
> (http://www.emn.fr/x-info/coccinelle/)
>
> // <smpl>
> @r exists@
> local idexpression x;
> statement S;
> expression E;
> identifier f,f1,l;
> position p1,p2;
> expression *ptr != NULL;
> @@
>
> x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
> ...
> if (x == NULL) S
> <... when != x
> when != if (...) { <+...x...+> }
> (
> x->f1 = E
> |
> (x->f1 == NULL || ...)
> |
> f(...,x->f1,...)
> )
> ...>
> (
> return \(0\|<+...x...+>\|ptr\);
> |
> return@p2 ...;
> )
>
> @script:python@
> p1 << r.p1;
> p2 << r.p2;
> @@
>
> print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
> // </smpl>
>
> Signed-off-by: Julia Lawall <julia@diku.dk>
> ---
> drivers/net/wireless/iwlwifi/iwl-debugfs.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> index 7707a26..6748a3f 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> @@ -310,18 +310,18 @@ static ssize_t iwl_dbgfs_nvm_read(struct file *file,
> return -ENODATA;
> }
>
> + ptr = priv->eeprom;
> + if (!ptr) {
> + IWL_ERR(priv, "Invalid EEPROM/OTP memory\n");
> + return -ENOMEM;
> + }
> +
> /* 4 characters for byte 0xYY */
> buf = kzalloc(buf_size, GFP_KERNEL);
> if (!buf) {
> IWL_ERR(priv, "Can not allocate Buffer\n");
> return -ENOMEM;
> }
> -
> - ptr = priv->eeprom;
> - if (!ptr) {
> - IWL_ERR(priv, "Invalid EEPROM/OTP memory\n");
> - return -ENOMEM;
> - }
> pos += scnprintf(buf + pos, buf_size - pos, "NVM Type: %s\n",
> (priv->nvm_device_type == NVM_DEVICE_TYPE_OTP)
> ? "OTP" : "EEPROM");
^ permalink raw reply
* Re: [PATCH 6/10] drivers/net/wireless/iwlwifi: introduce missing kfree
From: Julia Lawall @ 2009-08-03 9:11 UTC (permalink / raw)
To: Zhu Yi
Cc: Chatre, Reinette, linux-wireless@vger.kernel.org,
ipw3945-devel@lists.sourceforge.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
In-Reply-To: <1249260246.4069.26.camel@debian>
From: Julia Lawall <julia@diku.dk>
Move orthogonal error handling code up before a kzalloc, so that it
doesn't have to free the allocated data.
The semantic match that finds the problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)
// <smpl>
@r exists@
local idexpression x;
statement S;
expression E;
identifier f,f1,l;
position p1,p2;
expression *ptr != NULL;
@@
x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
...
if (x == NULL) S
<... when != x
when != if (...) { <+...x...+> }
(
x->f1 = E
|
(x->f1 == NULL || ...)
|
f(...,x->f1,...)
)
...>
(
return \(0\|<+...x...+>\|ptr\);
|
return@p2 ...;
)
@script:python@
p1 << r.p1;
p2 << r.p2;
@@
print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
---
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
index 7707a26..6748a3f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
@@ -310,18 +310,18 @@ static ssize_t iwl_dbgfs_nvm_read(struct file *file,
return -ENODATA;
}
+ ptr = priv->eeprom;
+ if (!ptr) {
+ IWL_ERR(priv, "Invalid EEPROM/OTP memory\n");
+ return -ENOMEM;
+ }
+
/* 4 characters for byte 0xYY */
buf = kzalloc(buf_size, GFP_KERNEL);
if (!buf) {
IWL_ERR(priv, "Can not allocate Buffer\n");
return -ENOMEM;
}
-
- ptr = priv->eeprom;
- if (!ptr) {
- IWL_ERR(priv, "Invalid EEPROM/OTP memory\n");
- return -ENOMEM;
- }
pos += scnprintf(buf + pos, buf_size - pos, "NVM Type: %s\n",
(priv->nvm_device_type == NVM_DEVICE_TYPE_OTP)
? "OTP" : "EEPROM");
^ permalink raw reply related
* Re: [PATCH 6/10] drivers/net/wireless/iwlwifi: introduce missing kfree
From: Julia Lawall @ 2009-08-03 9:09 UTC (permalink / raw)
To: Zhu Yi
Cc: Chatre, Reinette, linux-wireless@vger.kernel.org,
ipw3945-devel@lists.sourceforge.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
In-Reply-To: <1249260246.4069.26.camel@debian>
On Mon, 3 Aug 2009, Zhu Yi wrote:
> On Sat, 2009-08-01 at 16:54 +0800, Julia Lawall wrote:
> > From: Julia Lawall <julia@diku.dk>
> >
> > Error handling code following a kzalloc should free the allocated data.
> >
> > The semantic match that finds the problem is as follows:
> > (http://www.emn.fr/x-info/coccinelle/)
> >
> > // <smpl>
> > @r exists@
> > local idexpression x;
> > statement S;
> > expression E;
> > identifier f,f1,l;
> > position p1,p2;
> > expression *ptr != NULL;
> > @@
> >
> > x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
> > ...
> > if (x == NULL) S
> > <... when != x
> > when != if (...) { <+...x...+> }
> > (
> > x->f1 = E
> > |
> > (x->f1 == NULL || ...)
> > |
> > f(...,x->f1,...)
> > )
> > ...>
> > (
> > return \(0\|<+...x...+>\|ptr\);
> > |
> > return@p2 ...;
> > )
> >
> > @script:python@
> > p1 << r.p1;
> > p2 << r.p2;
> > @@
> >
> > print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
> > // </smpl>
> >
> > Signed-off-by: Julia Lawall <julia@diku.dk>
> > ---
> > drivers/net/wireless/iwlwifi/iwl-debugfs.c | 1 +
> > 1 files changed, 1 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> > index 7707a26..c2106d0 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> > @@ -320,6 +320,7 @@ static ssize_t iwl_dbgfs_nvm_read(struct file *file,
> > ptr = priv->eeprom;
> > if (!ptr) {
> > IWL_ERR(priv, "Invalid EEPROM/OTP memory\n");
> > + kfree(buf);
> > return -ENOMEM;
> > }
> > pos += scnprintf(buf + pos, buf_size - pos, "NVM Type: %s\n",
>
> Probably moving !priv->eeprom check prior to buf kzalloc is better.
OK, I will do that instead.
julia
^ permalink raw reply
* WARNING: at net/ipv4/af_inet.c:155 inet_sock_destruct+0x122/0x13a()
From: Tomasz Chmielewski @ 2009-08-03 8:30 UTC (permalink / raw)
To: netdev
After upgrading from 2.6.29.1 to 2.6.30.4, I'm getting these warnings in dmesg.
Let me know if you need more info.
Other than that, the device seems to work stable.
------------[ cut here ]------------
WARNING: at net/ipv4/af_inet.c:155 inet_sock_destruct+0x122/0x13a()
Hardware name: Altos G510
Modules linked in: nfs nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs tun bitrev crc32 bonding lm75 adm9240 adm1026 hwmon_vid hwmon i2c_piix4 i2c_core dm_crypt dm_mirror dm_region_hash dm_log dm_snapshot dm_mod e1000 tg3 libphy
Pid: 2222, comm: openvpn Not tainted 2.6.30.4-1 #4
Call Trace:
[<4011f018>] ? warn_slowpath_common+0x5e/0x8a
[<4011f04e>] ? warn_slowpath_null+0xa/0xc
[<402b5d64>] ? inet_sock_destruct+0x122/0x13a
[<402796a4>] ? sk_free+0x10/0xa7
[<402b5964>] ? inet_release+0x3f/0x44
[<4027751b>] ? sock_release+0x11/0x52
[<40277575>] ? sock_close+0x19/0x1c
[<40164026>] ? __fput+0xa6/0x149
[<40161989>] ? filp_close+0x4e/0x54
[<401619f5>] ? sys_close+0x66/0x9c
[<401027c8>] ? sysenter_do_call+0x12/0x26
---[ end trace bdfe445acbab5307 ]---
------------[ cut here ]------------
WARNING: at net/ipv4/af_inet.c:155 inet_sock_destruct+0x122/0x13a()
Hardware name: Altos G510
Modules linked in: nfs nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs tun bitrev crc32 bonding lm75 adm9240 adm1026 hwmon_vid hwmon i2c_piix4 i2c_core dm_crypt dm_mirror dm_region_hash dm_log dm_snapshot dm_mod e1000 tg3 libphy
Pid: 2222, comm: openvpn Tainted: G W 2.6.30.4-1 #4
Call Trace:
[<4011f018>] ? warn_slowpath_common+0x5e/0x8a
[<4011f04e>] ? warn_slowpath_null+0xa/0xc
[<402b5d64>] ? inet_sock_destruct+0x122/0x13a
[<402796a4>] ? sk_free+0x10/0xa7
[<402b5964>] ? inet_release+0x3f/0x44
[<4027751b>] ? sock_release+0x11/0x52
[<40277575>] ? sock_close+0x19/0x1c
[<40164026>] ? __fput+0xa6/0x149
[<40161989>] ? filp_close+0x4e/0x54
[<401619f5>] ? sys_close+0x66/0x9c
[<401027c8>] ? sysenter_do_call+0x12/0x26
---[ end trace bdfe445acbab5308 ]---
------------[ cut here ]------------
WARNING: at net/ipv4/af_inet.c:155 inet_sock_destruct+0x122/0x13a()
Hardware name: Altos G510
Modules linked in: nfs nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs tun bitrev crc32 bonding lm75 adm9240 adm1026 hwmon_vid hwmon i2c_piix4 i2c_core dm_crypt dm_mirror dm_region_hash dm_log dm_snapshot dm_mod e1000 tg3 libphy
Pid: 2222, comm: openvpn Tainted: G W 2.6.30.4-1 #4
Call Trace:
[<4011f018>] ? warn_slowpath_common+0x5e/0x8a
[<4011f04e>] ? warn_slowpath_null+0xa/0xc
[<402b5d64>] ? inet_sock_destruct+0x122/0x13a
[<402796a4>] ? sk_free+0x10/0xa7
[<402b5964>] ? inet_release+0x3f/0x44
[<4027751b>] ? sock_release+0x11/0x52
[<40277575>] ? sock_close+0x19/0x1c
[<40164026>] ? __fput+0xa6/0x149
[<40161989>] ? filp_close+0x4e/0x54
[<401619f5>] ? sys_close+0x66/0x9c
[<401027c8>] ? sysenter_do_call+0x12/0x26
---[ end trace bdfe445acbab5309 ]---
--
Tomasz Chmielewski
http://wpkg.org
^ permalink raw reply
* Re: [RFC] [PATCH] Avoid enqueuing skb for default qdiscs
From: Krishna Kumar2 @ 2009-08-03 8:09 UTC (permalink / raw)
To: Jarek Poplawski; +Cc: davem, herbert, kaber, netdev
In-Reply-To: <20090803071539.GA5506@ff.dom.local>
Jarek Poplawski <jarkao2@gmail.com> wrote on 08/03/2009 12:45:39 PM:
> > Any comments on this patch?
>
> Maybe I missed something, but I didn't get this patch, and can't see
> it e.g. in the patchwork.
>
> Jarek P.
That is strange, I too do not find it :) But after I sent the patch, I
got a copy of the mail which says:
Krishna
Kumar2/India/IBM@
IBMIN To
davem@davemloft.net
07/28/2009 09:20 cc
PM Krishna Kumar2/India/IBM@IBMIN,
herbert@gondor.apana.org.au,
kaber@trash.net, jarkao2@gmail.com,
netdev@vger.kernel.org
Subject
[RFC] [PATCH] Avoid enqueuing skb
for default qdiscs
I will try to send it out once again. Thanks for letting me know.
thanks,
- KK
^ permalink raw reply
* Re: [RFC] [PATCH] Avoid enqueuing skb for default qdiscs
From: Jarek Poplawski @ 2009-08-03 7:15 UTC (permalink / raw)
To: Krishna Kumar2; +Cc: davem, herbert, kaber, netdev
In-Reply-To: <OF4A7A6701.1BD183E8-ON65257604.0024A9E1-65257606.0030A90D@in.ibm.com>
On Sun, Aug 02, 2009 at 02:21:30PM +0530, Krishna Kumar2 wrote:
> Krishna Kumar2/India/IBM@IBMIN wrote on 07/28/2009 09:20:55 PM:
>
> > Subject [RFC] [PATCH] Avoid enqueuing skb for default qdiscs
> >
> > From: Krishna Kumar <krkumar2@in.ibm.com>
> >
> > dev_queue_xmit enqueue's a skb and calls qdisc_run which
> > dequeue's the skb and xmits it. In most cases (after
> > instrumenting the code), the skb that is enqueue'd is the
> > same one that is dequeue'd (unless the queue gets stopped
> > or multiple cpu's write to the same queue and ends in a
> > race with qdisc_run). For default qdiscs, we can remove
> > this path and simply xmit the skb since this is a work
> > conserving queue.
>
> Any comments on this patch?
Maybe I missed something, but I didn't get this patch, and can't see
it e.g. in the patchwork.
Jarek P.
> Thanks,
>
> - KK
>
> > The patch uses a new flag - TCQ_F_CAN_BYPASS to identify
> > the default fast queue. I plan to use this flag for the
> > previous patch also (rename if required). The controversial
> > part of the patch is incrementing qlen when a skb is
> > requeued, this is to avoid checks like the second line below:
> >
> > + } else if ((q->flags & TCQ_F_CAN_BYPASS) && !qdisc_qlen(q) &&
> > >> THIS LINE: !q->gso_skb &&
> > + !test_and_set_bit(__QDISC_STATE_RUNNING, &q->state)) {
> >
> > Results of a 4 hour testing for multiple netperf sessions
> > (1, 2, 4, 8, 12 sessions on a 4 cpu system-X and 1, 2, 4,
> > 8, 16, 32 sessions on a 16 cpu P6). Aggregate Mb/s across
> > the iterations:
> >
> > -----------------------------------------------------------------
> > | System-X | P6
> > -----------------------------------------------------------------
> > Size | ORG BW NEW BW | ORG BW NEW BW
> > -----|---------------------------|-------------------------------
> > 16K | 154264 156234 | 155350 157569
> > 64K | 154364 154825 | 155790 158845
> > 128K | 154644 154803 | 153418 155572
> > 256K | 153882 152007 | 154784 154596
> > -----------------------------------------------------------------
> >
> > Netperf reported Service demand reduced by 15% on the P6 but
> > no noticeable difference on the system-X box.
> >
> > Please review.
> >
> > Thanks,
> >
> > - KK
>
^ permalink raw reply
* [Patch net-next]atl11:set MAX_TX_OFFLOAD_THRESH to 6k from 9k and fix spelling error
From: jie.yang @ 2009-08-03 5:43 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-kernel
1. Set MAX_TX_OFFLOAD_THRESH to 6k from 9k, when mtu large then MAX_TX_OFFLOAD_THRESH
just disable NETIF_F_TSO6, NETIF_F_TSO, NETIF_F_HW_CSUM.
2. Fix spelling error, change REG_TWSI_CTRL to REG_TXQ_CTRL.
Signed-off-by: jie yang <jie.yang>@atheros.com
---
diff --git a/drivers/net/atl1c/atl1c.h b/drivers/net/atl1c/atl1c.h
index 2a1120a..07b2880 100644
--- a/drivers/net/atl1c/atl1c.h
+++ b/drivers/net/atl1c/atl1c.h
@@ -74,7 +74,7 @@
#define AT_RX_BUF_SIZE (ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN)
#define MAX_JUMBO_FRAME_SIZE (9*1024)
-#define MAX_TX_OFFLOAD_THRESH (9*1024)
+#define MAX_TX_OFFLOAD_THRESH (6*1024)
#define AT_MAX_RECEIVE_QUEUE 4
#define AT_DEF_RECEIVE_QUEUE 1
diff --git a/drivers/net/atl1c/atl1c_main.c b/drivers/net/atl1c/atl1c_main.c
index 1d601ce..13cb551 100644
--- a/drivers/net/atl1c/atl1c_main.c
+++ b/drivers/net/atl1c/atl1c_main.c
@@ -474,15 +474,19 @@ static int atl1c_change_mtu(struct net_device *netdev, int new_mtu)
netdev->mtu = new_mtu;
adapter->hw.max_frame_size = new_mtu;
atl1c_set_rxbufsize(adapter, netdev);
+ if (max_frame >= MAX_TX_OFFLOAD_THRESH)
+ netdev->features &= ~(NETIF_F_TSO6 | NETIF_F_TSO | NETIF_F_HW_CSUM);
+ else
+ netdev->features |= (NETIF_F_TSO6 | NETIF_F_TSO | NETIF_F_HW_CSUM);
atl1c_down(adapter);
atl1c_up(adapter);
clear_bit(__AT_RESETTING, &adapter->flags);
if (adapter->hw.ctrl_flags & ATL1C_FPGA_VERSION) {
u32 phy_data;
- AT_READ_REG(&adapter->hw, 0x1414, &phy_data);
- phy_data |= 0x10000000;
- AT_WRITE_REG(&adapter->hw, 0x1414, phy_data);
+ AT_READ_REG(&adapter->hw, REG_MDIO_CTRL, &phy_data);
+ phy_data |= MDIO_AP_EN;
+ AT_WRITE_REG(&adapter->hw, REG_MDIO_CTRL, phy_data);
}
}
@@ -1132,7 +1136,7 @@ static int atl1c_stop_mac(struct atl1c_hw *hw)
AT_READ_REG(hw, REG_TXQ_CTRL, &data);
data &= ~TXQ_CTRL_EN;
- AT_WRITE_REG(hw, REG_TWSI_CTRL, data);
+ AT_WRITE_REG(hw, REG_TXQ_CTRL, data);
atl1c_wait_until_idle(hw);
@@ -1265,8 +1269,9 @@ static void atl1c_set_aspm(struct atl1c_hw *hw, bool linkup)
else
pm_ctrl_data &= ~PM_CTRL_ASPM_L1_EN;
}
-
AT_WRITE_REG(hw, REG_PM_CTRL, pm_ctrl_data);
+
+ return;
}
static void atl1c_setup_mac_ctrl(struct atl1c_adapter *adapter)
^ permalink raw reply related
* [Patch net-next]atl1c: Do not call cancel_work_sync from the work itself
From: jie.yang @ 2009-08-03 5:37 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-kernel
Do not call cancel_work_sync from the work itself
Signed-off-by: jie yang <jie.yang>@atheros.com
---
diff --git a/drivers/net/atl1c/atl1c.h b/drivers/net/atl1c/atl1c.h
index 2a1120a..53242dc 100644
--- a/drivers/net/atl1c/atl1c.h
+++ b/drivers/net/atl1c/atl1c.h
@@ -427,6 +427,7 @@ struct atl1c_hw {
#define ATL1C_ASPM_CTRL_MON 0x0200
#define ATL1C_HIB_DISABLE 0x0400
#define ATL1C_LINK_CAP_1000M 0x0800
+#define ATL1C_RESET_IN_WORK 0x1000
#define ATL1C_FPGA_VERSION 0x8000
u16 cmb_tpd;
u16 cmb_rrd;
diff --git a/drivers/net/atl1c/atl1c_main.c b/drivers/net/atl1c/atl1c_main.c
index 1d601ce..dec88fa 100644
--- a/drivers/net/atl1c/atl1c_main.c
+++ b/drivers/net/atl1c/atl1c_main.c
@@ -321,7 +321,10 @@ static void atl1c_del_timer(struct atl1c_adapter *adapter)
static void atl1c_cancel_work(struct atl1c_adapter *adapter)
{
- cancel_work_sync(&adapter->reset_task);
+ if (adapter->hw.ctrl_flags & ATL1C_RESET_IN_WORK)
+ adapter->hw.ctrl_flags &= ~ATL1C_RESET_IN_WORK;/* clear the flag */
+ else
+ cancel_work_sync(&adapter->reset_task);
cancel_work_sync(&adapter->link_chg_task);
}
@@ -1544,6 +1547,7 @@ static irqreturn_t atl1c_intr(int irq, void *data)
/* reset MAC */
hw->intr_mask &= ~ISR_ERROR;
AT_WRITE_REG(hw, REG_IMR, hw->intr_mask);
+ adapter->hw.ctrl_flags |= ATL1C_RESET_IN_WORK;
schedule_work(&adapter->reset_task);
break;
}
^ permalink raw reply related
* atl1c: Do not call cancel_work_sync from the work itself
From: jie.yang @ 2009-08-03 5:32 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-kernel
Signed-off-by: jie yang <jie.yang>@atheros.com
---
diff --git a/drivers/net/atl1c/atl1c.h b/drivers/net/atl1c/atl1c.h
index 2a1120a..53242dc 100644
--- a/drivers/net/atl1c/atl1c.h
+++ b/drivers/net/atl1c/atl1c.h
@@ -427,6 +427,7 @@ struct atl1c_hw {
#define ATL1C_ASPM_CTRL_MON 0x0200
#define ATL1C_HIB_DISABLE 0x0400
#define ATL1C_LINK_CAP_1000M 0x0800
+#define ATL1C_RESET_IN_WORK 0x1000
#define ATL1C_FPGA_VERSION 0x8000
u16 cmb_tpd;
u16 cmb_rrd;
diff --git a/drivers/net/atl1c/atl1c_main.c b/drivers/net/atl1c/atl1c_main.c
index 1d601ce..dec88fa 100644
--- a/drivers/net/atl1c/atl1c_main.c
+++ b/drivers/net/atl1c/atl1c_main.c
@@ -321,7 +321,10 @@ static void atl1c_del_timer(struct atl1c_adapter *adapter)
static void atl1c_cancel_work(struct atl1c_adapter *adapter)
{
- cancel_work_sync(&adapter->reset_task);
+ if (adapter->hw.ctrl_flags & ATL1C_RESET_IN_WORK)
+ adapter->hw.ctrl_flags &= ~ATL1C_RESET_IN_WORK;/* clear the flag */
+ else
+ cancel_work_sync(&adapter->reset_task);
cancel_work_sync(&adapter->link_chg_task);
}
@@ -1544,6 +1547,7 @@ static irqreturn_t atl1c_intr(int irq, void *data)
/* reset MAC */
hw->intr_mask &= ~ISR_ERROR;
AT_WRITE_REG(hw, REG_IMR, hw->intr_mask);
+ adapter->hw.ctrl_flags |= ATL1C_RESET_IN_WORK;
schedule_work(&adapter->reset_task);
break;
}
^ permalink raw reply related
* Re: [PATCH] mlx4_en: Fix double pci unmapping.
From: Roland Dreier @ 2009-08-03 5:10 UTC (permalink / raw)
To: David Miller; +Cc: yevgenyp, netdev
In-Reply-To: <20090802.202305.119004003.davem@davemloft.net>
> Ok, I'm just going to apply this. Waiting more than a week to get
> feedback from Roland for a bug fix like this is not reasonable.
Dave, for the mlx4 ethernet (mlx4_en) driver patches you can go ahead
and apply them without worrying about me -- Yevgeny was the original
author of that code and I consider him more than qualified to handle
that. It's the mlx4_core changes that I prefer to handle, since I wrote
the original driver there, and mlx4_core changes potentially hit the
mlx4_ib InfiniBand driver too.
I realize that it's one more annoying thing to keep track of (although
Yevgeny has been great about sending mlx4_en patches to you and
mlx4_core patches to me -- but I understand your workflow makes looking
at the "To:" line hard). That's why I suggested moving the mlx4_core
driver out of drivers/net/mlx4. So that the two drivers are physically
separate, to make things clearer.
- R.
^ permalink raw reply
* Re: [PATCH] mlx4_en: Fix double pci unmapping.
From: David Miller @ 2009-08-03 3:23 UTC (permalink / raw)
To: yevgenyp; +Cc: netdev
In-Reply-To: <4A62C9DD.8040506@mellanox.co.il>
From: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Date: Sun, 19 Jul 2009 10:23:09 +0300
>
> In cases of fragmented skb, with the data pointers being wrapped around
> the TX buffer, the completion handling code would not forward the data
> pointer and the firs fragment was unmapped several times, while others
> were not unmapped at all.
>
> Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Ok, I'm just going to apply this. Waiting more than a week to get
feedback from Roland for a bug fix like this is not reasonable.
Thanks Yevgeny.
^ permalink raw reply
* Re: [PATCH] Phonet: sockets list through proc_fs
From: Arnaldo Carvalho de Melo @ 2009-08-03 2:42 UTC (permalink / raw)
To: Eric Dumazet
Cc: Marcel Holtmann, Rémi Denis-Courmont, netdev@vger.kernel.org
In-Reply-To: <4A64478D.9030008@gmail.com>
Em Mon, Jul 20, 2009 at 12:31:41PM +0200, Eric Dumazet escreveu:
> Marcel Holtmann a écrit :
> > Hi Remi,
> >
> >>>>>> From: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
> >>>>> isn't there are proper explaining commit message missing here?
> >>>> AFAIK, a one-liners stick to the Subject line.
> >>>>
> >>>> (I use explicit From: due to my broken Microsoft-provided MTA).
> >>> the From: is not the problem here. However it would be nice to have a
> >>> description of the change. Especially details like this is for debugging
> >>> or this is a public API or etc.
> >> It's just like most network protocols exposing their sockets list in
> >> /proc/net. Debugging/monitoring indeed.
> >
> > I think that for new protocols, we should not do this anymore and just
> > use debugfs. Since that is exactly its job.
>
> netstat uses /proc/net
>
> iproute2 uses netlink
>
> Now you suggest adding debugfs support ?
>
> What a mess...
Exactly, the proper way to do that is to have a base class for
inet_diag, net_diag, from where phone would be derived. But yeah, that
requires more work than cut'n'pasting from the old, /proc based way of
doing things 8-)
- Arnaldo
^ permalink raw reply
* Re: [PATCH] sch_teql: should not dereference skb after ndo_start_xmit
From: David Miller @ 2009-08-03 1:59 UTC (permalink / raw)
To: dada1; +Cc: netdev, jussi.kivilinna
In-Reply-To: <4A120C8B.80108@cosmosbay.com>
From: Eric Dumazet <dada1@cosmosbay.com>
Date: Tue, 19 May 2009 03:34:03 +0200
> Looking again at teql_master_xmit(), I wonder if there is another
> problem in it.
>
> int subq = skb_get_queue_mapping(skb);
>
> But as a matter of fact, following code assumes subq is 0
I looked into this again, and damn this is tough to deal with.
The code works as-is, since teql devices have only 1 queue we
can assume queue 0 and we only end up using one of the slave
devices queues too.
I tried to export dev_pick_tx() (renaming it to netdev_pick_tx()
to avoid global namespace pollution) but then I realized that
we can't just whack the subq here.
If this gets punted back to the caller and we don't actually
send out the packet, we can't leave the new skb->queue_index
in there as teql's multiqueue parameters are what will be
checked and used against this SKB again.
I suppose we could restore the old queue index value when we
exhaust the slaves and can't transmit, but is getting messy for
sure.
Since the code works properly, and this is merely a performance
issue, I'm deferring this again.
^ permalink raw reply
* Re: neigh_periodic_timer expires too often
From: David Miller @ 2009-08-03 1:35 UTC (permalink / raw)
To: eric.dumazet; +Cc: luciano.coelho, netdev, tero.kristo
In-Reply-To: <4A719CDB.3060004@gmail.com>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Thu, 30 Jul 2009 15:15:07 +0200
> [PATCH net-next-2.6] neigh: Convert garbage collection from softirq to workqueue
>
> Current neigh_periodic_timer() function is fired by timer IRQ, and
> scans one hash bucket each round (very litle work in fact)
>
> As we are supposed to scan whole hash table in 15 seconds, this means
> neigh_periodic_timer() can be fired very often. (depending on the number
> of concurrent hash entries we stored in this table)
>
> Converting this to a workqueue permits scanning whole table, minimizing
> icache pollution, and firing this work every 15 seconds, independantly
> of hash table size.
>
> This 15 seconds delay is not a hard number, as work is a deferrable one.
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Applied to net-next-2.6, thanks!
^ permalink raw reply
* Re: [PATCH v4 2/2] IPVS: use pr_err and friends instead of IP_VS_ERR and friends
From: David Miller @ 2009-08-03 1:29 UTC (permalink / raw)
To: horms; +Cc: heder, lvs-devel, netdev, linux-kernel, joe, jengelh
In-Reply-To: <20090803003658.GQ6177@verge.net.au>
From: Simon Horman <horms@verge.net.au>
Date: Mon, 3 Aug 2009 10:36:59 +1000
> On Sun, Aug 02, 2009 at 11:05:41PM +0200, Hannes Eder wrote:
>> Since pr_err and friends are used instead of printk there is no point
>> in keeping IP_VS_ERR and friends. Furthermore make use of '__func__'
>> instead of hard coded function names.
>>
>> Signed-off-by: Hannes Eder <heder@google.com>
>
> Acked-by: Simon Horman <horms@verge.net.au>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH 6/10] drivers/net/wireless/iwlwifi: introduce missing kfree
From: Zhu Yi @ 2009-08-03 0:44 UTC (permalink / raw)
To: Julia Lawall
Cc: Chatre, Reinette, linux-wireless@vger.kernel.org,
ipw3945-devel@lists.sourceforge.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
In-Reply-To: <Pine.LNX.4.64.0908011054010.23408@ask.diku.dk>
On Sat, 2009-08-01 at 16:54 +0800, Julia Lawall wrote:
> From: Julia Lawall <julia@diku.dk>
>
> Error handling code following a kzalloc should free the allocated data.
>
> The semantic match that finds the problem is as follows:
> (http://www.emn.fr/x-info/coccinelle/)
>
> // <smpl>
> @r exists@
> local idexpression x;
> statement S;
> expression E;
> identifier f,f1,l;
> position p1,p2;
> expression *ptr != NULL;
> @@
>
> x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
> ...
> if (x == NULL) S
> <... when != x
> when != if (...) { <+...x...+> }
> (
> x->f1 = E
> |
> (x->f1 == NULL || ...)
> |
> f(...,x->f1,...)
> )
> ...>
> (
> return \(0\|<+...x...+>\|ptr\);
> |
> return@p2 ...;
> )
>
> @script:python@
> p1 << r.p1;
> p2 << r.p2;
> @@
>
> print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
> // </smpl>
>
> Signed-off-by: Julia Lawall <julia@diku.dk>
> ---
> drivers/net/wireless/iwlwifi/iwl-debugfs.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> index 7707a26..c2106d0 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
> @@ -320,6 +320,7 @@ static ssize_t iwl_dbgfs_nvm_read(struct file *file,
> ptr = priv->eeprom;
> if (!ptr) {
> IWL_ERR(priv, "Invalid EEPROM/OTP memory\n");
> + kfree(buf);
> return -ENOMEM;
> }
> pos += scnprintf(buf + pos, buf_size - pos, "NVM Type: %s\n",
Probably moving !priv->eeprom check prior to buf kzalloc is better.
Thanks,
-yi
^ permalink raw reply
* Re: [PATCH v4 2/2] IPVS: use pr_err and friends instead of IP_VS_ERR and friends
From: Simon Horman @ 2009-08-03 0:36 UTC (permalink / raw)
To: Hannes Eder
Cc: lvs-devel, netdev, linux-kernel, Joe Perches, Jan Engelhardt,
David Miller
In-Reply-To: <20090802210530.14843.62378.stgit@jazzy.zrh.corp.google.com>
On Sun, Aug 02, 2009 at 11:05:41PM +0200, Hannes Eder wrote:
> Since pr_err and friends are used instead of printk there is no point
> in keeping IP_VS_ERR and friends. Furthermore make use of '__func__'
> instead of hard coded function names.
>
> Signed-off-by: Hannes Eder <heder@google.com>
Acked-by: Simon Horman <horms@verge.net.au>
> ---
>
> changes for v4: rebase to next-20090731
>
> changes for v3:
>
> On Tue, Jul 28, 2009 at 22:56, Joe Perches<joe@perches.com> wrote:
> > On Tue, 2009-07-28 at 22:35 +0200, Hannes Eder wrote:
> >> Since pr_err and friends is used instead of printk there is not point
> >> in keeping IP_VS_ERR and friends.
> >> + pr_err("Schedule: port zero only supported "
> >> + "in persistent services, "
> >> + "check your ipvs configuration\n");
> >
> > You might consider ignoring the checkpatch 80 char limit here
> > and consolidate the message into a single string.
> >
> > It helps when grepping.
>
> I did not change this, because obeying the 80 characters limit is IMHO
> a good idea.
>
> >> @@ -377,8 +377,8 @@ static int ip_vs_svc_hash(struct ip_vs_service *svc)
> >> static int ip_vs_svc_unhash(struct ip_vs_service *svc)
> >> {
> >> if (!(svc->flags & IP_VS_SVC_F_HASHED)) {
> >> - IP_VS_ERR("ip_vs_svc_unhash(): request for unhash flagged, "
> >> - "called from %p\n", __builtin_return_address(0));
> >> + pr_err("ip_vs_svc_unhash(): request for unhash flagged, "
> >> + "called from %p\n", __builtin_return_address(0));
> >
> > Maybe use something like:
> > "%s(): <foo> called from %pf",
> > __func__, __builtin_return_address(0)
>
> Done. Although I am using %pF instead of %pf. First %pf ist not yet
> in 2.6.30.y and might never be and second the offset might actually be
> interesting, as at least one of these functions has multiple call
> sites within one function, did not check the others.
>
> Cheers,
> Hannes
>
> include/net/ip_vs.h | 7 +---
> net/netfilter/ipvs/ip_vs_app.c | 16 ++++-----
> net/netfilter/ipvs/ip_vs_conn.c | 14 ++++----
> net/netfilter/ipvs/ip_vs_core.c | 24 +++++++------
> net/netfilter/ipvs/ip_vs_ctl.c | 62 ++++++++++++++++------------------
> net/netfilter/ipvs/ip_vs_dh.c | 4 +-
> net/netfilter/ipvs/ip_vs_ftp.c | 4 +-
> net/netfilter/ipvs/ip_vs_lblc.c | 6 ++-
> net/netfilter/ipvs/ip_vs_lblcr.c | 14 ++++----
> net/netfilter/ipvs/ip_vs_lc.c | 2 +
> net/netfilter/ipvs/ip_vs_nq.c | 2 +
> net/netfilter/ipvs/ip_vs_proto.c | 2 +
> net/netfilter/ipvs/ip_vs_proto_tcp.c | 2 +
> net/netfilter/ipvs/ip_vs_proto_udp.c | 2 +
> net/netfilter/ipvs/ip_vs_rr.c | 2 +
> net/netfilter/ipvs/ip_vs_sched.c | 38 ++++++++++-----------
> net/netfilter/ipvs/ip_vs_sed.c | 2 +
> net/netfilter/ipvs/ip_vs_sh.c | 2 +
> net/netfilter/ipvs/ip_vs_sync.c | 50 ++++++++++++++-------------
> net/netfilter/ipvs/ip_vs_wrr.c | 4 +-
> net/netfilter/ipvs/ip_vs_xmit.c | 40 +++++++++++-----------
> 21 files changed, 147 insertions(+), 152 deletions(-)
>
> diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
> index 9108203..1c8ee1b 100644
> --- a/include/net/ip_vs.h
> +++ b/include/net/ip_vs.h
> @@ -150,13 +150,10 @@ static inline const char *ip_vs_dbg_addr(int af, char *buf, size_t buf_len,
> #endif
>
> #define IP_VS_BUG() BUG()
> -#define IP_VS_ERR(msg...) pr_err(msg)
> -#define IP_VS_INFO(msg...) pr_info(msg)
> -#define IP_VS_WARNING(msg...) pr_warning(msg)
> -#define IP_VS_ERR_RL(msg...) \
> +#define IP_VS_ERR_RL(msg, ...) \
> do { \
> if (net_ratelimit()) \
> - pr_err(msg); \
> + pr_err(msg, ##__VA_ARGS__); \
> } while (0)
>
> #ifdef CONFIG_IP_VS_DEBUG
> diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c
> index c1781f8..3c7e427 100644
> --- a/net/netfilter/ipvs/ip_vs_app.c
> +++ b/net/netfilter/ipvs/ip_vs_app.c
> @@ -265,12 +265,12 @@ static inline void vs_fix_seq(const struct ip_vs_seq *vseq, struct tcphdr *th)
> if (vseq->delta || vseq->previous_delta) {
> if(after(seq, vseq->init_seq)) {
> th->seq = htonl(seq + vseq->delta);
> - IP_VS_DBG(9, "vs_fix_seq(): added delta (%d) to seq\n",
> - vseq->delta);
> + IP_VS_DBG(9, "%s(): added delta (%d) to seq\n",
> + __func__, vseq->delta);
> } else {
> th->seq = htonl(seq + vseq->previous_delta);
> - IP_VS_DBG(9, "vs_fix_seq(): added previous_delta "
> - "(%d) to seq\n", vseq->previous_delta);
> + IP_VS_DBG(9, "%s(): added previous_delta (%d) to seq\n",
> + __func__, vseq->previous_delta);
> }
> }
> }
> @@ -294,14 +294,14 @@ vs_fix_ack_seq(const struct ip_vs_seq *vseq, struct tcphdr *th)
> to receive next, so compare it with init_seq+delta */
> if(after(ack_seq, vseq->init_seq+vseq->delta)) {
> th->ack_seq = htonl(ack_seq - vseq->delta);
> - IP_VS_DBG(9, "vs_fix_ack_seq(): subtracted delta "
> - "(%d) from ack_seq\n", vseq->delta);
> + IP_VS_DBG(9, "%s(): subtracted delta "
> + "(%d) from ack_seq\n", __func__, vseq->delta);
>
> } else {
> th->ack_seq = htonl(ack_seq - vseq->previous_delta);
> - IP_VS_DBG(9, "vs_fix_ack_seq(): subtracted "
> + IP_VS_DBG(9, "%s(): subtracted "
> "previous_delta (%d) from ack_seq\n",
> - vseq->previous_delta);
> + __func__, vseq->previous_delta);
> }
> }
> }
> diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
> index 4173d7b..27c30cf 100644
> --- a/net/netfilter/ipvs/ip_vs_conn.c
> +++ b/net/netfilter/ipvs/ip_vs_conn.c
> @@ -153,8 +153,8 @@ static inline int ip_vs_conn_hash(struct ip_vs_conn *cp)
> atomic_inc(&cp->refcnt);
> ret = 1;
> } else {
> - IP_VS_ERR("ip_vs_conn_hash(): request for already hashed, "
> - "called from %p\n", __builtin_return_address(0));
> + pr_err("%s(): request for already hashed, called from %pF\n",
> + __func__, __builtin_return_address(0));
> ret = 0;
> }
>
> @@ -692,7 +692,7 @@ ip_vs_conn_new(int af, int proto, const union nf_inet_addr *caddr, __be16 cport,
>
> cp = kmem_cache_zalloc(ip_vs_conn_cachep, GFP_ATOMIC);
> if (cp == NULL) {
> - IP_VS_ERR_RL("ip_vs_conn_new: no memory available.\n");
> + IP_VS_ERR_RL("%s(): no memory\n", __func__);
> return NULL;
> }
>
> @@ -1076,10 +1076,10 @@ int __init ip_vs_conn_init(void)
> return -ENOMEM;
> }
>
> - IP_VS_INFO("Connection hash table configured "
> - "(size=%d, memory=%ldKbytes)\n",
> - IP_VS_CONN_TAB_SIZE,
> - (long)(IP_VS_CONN_TAB_SIZE*sizeof(struct list_head))/1024);
> + pr_info("Connection hash table configured "
> + "(size=%d, memory=%ldKbytes)\n",
> + IP_VS_CONN_TAB_SIZE,
> + (long)(IP_VS_CONN_TAB_SIZE*sizeof(struct list_head))/1024);
> IP_VS_DBG(0, "Each connection entry needs %Zd bytes at least\n",
> sizeof(struct ip_vs_conn));
>
> diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
> index 6811dca..b227750 100644
> --- a/net/netfilter/ipvs/ip_vs_core.c
> +++ b/net/netfilter/ipvs/ip_vs_core.c
> @@ -391,9 +391,9 @@ ip_vs_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> */
> if (!svc->fwmark && pptr[1] != svc->port) {
> if (!svc->port)
> - IP_VS_ERR("Schedule: port zero only supported "
> - "in persistent services, "
> - "check your ipvs configuration\n");
> + pr_err("Schedule: port zero only supported "
> + "in persistent services, "
> + "check your ipvs configuration\n");
> return NULL;
> }
>
> @@ -465,7 +465,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
> ip_vs_service_put(svc);
>
> /* create a new connection entry */
> - IP_VS_DBG(6, "ip_vs_leave: create a cache_bypass entry\n");
> + IP_VS_DBG(6, "%s(): create a cache_bypass entry\n", __func__);
> cp = ip_vs_conn_new(svc->af, iph.protocol,
> &iph.saddr, pptr[0],
> &iph.daddr, pptr[1],
> @@ -667,8 +667,8 @@ static int handle_response_icmp(int af, struct sk_buff *skb,
> unsigned int verdict = NF_DROP;
>
> if (IP_VS_FWD_METHOD(cp) != 0) {
> - IP_VS_ERR("shouldn't reach here, because the box is on the "
> - "half connection in the tun/dr module.\n");
> + pr_err("shouldn't reach here, because the box is on the "
> + "half connection in the tun/dr module.\n");
> }
>
> /* Ensure the checksum is correct */
> @@ -1490,7 +1490,7 @@ static int __init ip_vs_init(void)
>
> ret = ip_vs_control_init();
> if (ret < 0) {
> - IP_VS_ERR("can't setup control.\n");
> + pr_err("can't setup control.\n");
> goto cleanup_estimator;
> }
>
> @@ -1498,23 +1498,23 @@ static int __init ip_vs_init(void)
>
> ret = ip_vs_app_init();
> if (ret < 0) {
> - IP_VS_ERR("can't setup application helper.\n");
> + pr_err("can't setup application helper.\n");
> goto cleanup_protocol;
> }
>
> ret = ip_vs_conn_init();
> if (ret < 0) {
> - IP_VS_ERR("can't setup connection table.\n");
> + pr_err("can't setup connection table.\n");
> goto cleanup_app;
> }
>
> ret = nf_register_hooks(ip_vs_ops, ARRAY_SIZE(ip_vs_ops));
> if (ret < 0) {
> - IP_VS_ERR("can't register hooks.\n");
> + pr_err("can't register hooks.\n");
> goto cleanup_conn;
> }
>
> - IP_VS_INFO("ipvs loaded.\n");
> + pr_info("ipvs loaded.\n");
> return ret;
>
> cleanup_conn:
> @@ -1537,7 +1537,7 @@ static void __exit ip_vs_cleanup(void)
> ip_vs_protocol_cleanup();
> ip_vs_control_cleanup();
> ip_vs_estimator_cleanup();
> - IP_VS_INFO("ipvs unloaded.\n");
> + pr_info("ipvs unloaded.\n");
> }
>
> module_init(ip_vs_init);
> diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
> index e6133ea..fba2892 100644
> --- a/net/netfilter/ipvs/ip_vs_ctl.c
> +++ b/net/netfilter/ipvs/ip_vs_ctl.c
> @@ -343,8 +343,8 @@ static int ip_vs_svc_hash(struct ip_vs_service *svc)
> unsigned hash;
>
> if (svc->flags & IP_VS_SVC_F_HASHED) {
> - IP_VS_ERR("ip_vs_svc_hash(): request for already hashed, "
> - "called from %p\n", __builtin_return_address(0));
> + pr_err("%s(): request for already hashed, called from %pF\n",
> + __func__, __builtin_return_address(0));
> return 0;
> }
>
> @@ -377,8 +377,8 @@ static int ip_vs_svc_hash(struct ip_vs_service *svc)
> static int ip_vs_svc_unhash(struct ip_vs_service *svc)
> {
> if (!(svc->flags & IP_VS_SVC_F_HASHED)) {
> - IP_VS_ERR("ip_vs_svc_unhash(): request for unhash flagged, "
> - "called from %p\n", __builtin_return_address(0));
> + pr_err("%s(): request for unhash flagged, called from %pF\n",
> + __func__, __builtin_return_address(0));
> return 0;
> }
>
> @@ -844,7 +844,7 @@ ip_vs_new_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest,
>
> dest = kzalloc(sizeof(struct ip_vs_dest), GFP_ATOMIC);
> if (dest == NULL) {
> - IP_VS_ERR("ip_vs_new_dest: kmalloc failed.\n");
> + pr_err("%s(): no memory.\n", __func__);
> return -ENOMEM;
> }
>
> @@ -888,13 +888,13 @@ ip_vs_add_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> EnterFunction(2);
>
> if (udest->weight < 0) {
> - IP_VS_ERR("ip_vs_add_dest(): server weight less than zero\n");
> + pr_err("%s(): server weight less than zero\n", __func__);
> return -ERANGE;
> }
>
> if (udest->l_threshold > udest->u_threshold) {
> - IP_VS_ERR("ip_vs_add_dest(): lower threshold is higher than "
> - "upper threshold\n");
> + pr_err("%s(): lower threshold is higher than upper threshold\n",
> + __func__);
> return -ERANGE;
> }
>
> @@ -906,7 +906,7 @@ ip_vs_add_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> dest = ip_vs_lookup_dest(svc, &daddr, dport);
>
> if (dest != NULL) {
> - IP_VS_DBG(1, "ip_vs_add_dest(): dest already exists\n");
> + IP_VS_DBG(1, "%s(): dest already exists\n", __func__);
> return -EEXIST;
> }
>
> @@ -1000,13 +1000,13 @@ ip_vs_edit_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> EnterFunction(2);
>
> if (udest->weight < 0) {
> - IP_VS_ERR("ip_vs_edit_dest(): server weight less than zero\n");
> + pr_err("%s(): server weight less than zero\n", __func__);
> return -ERANGE;
> }
>
> if (udest->l_threshold > udest->u_threshold) {
> - IP_VS_ERR("ip_vs_edit_dest(): lower threshold is higher than "
> - "upper threshold\n");
> + pr_err("%s(): lower threshold is higher than upper threshold\n",
> + __func__);
> return -ERANGE;
> }
>
> @@ -1018,7 +1018,7 @@ ip_vs_edit_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> dest = ip_vs_lookup_dest(svc, &daddr, dport);
>
> if (dest == NULL) {
> - IP_VS_DBG(1, "ip_vs_edit_dest(): dest doesn't exist\n");
> + IP_VS_DBG(1, "%s(): dest doesn't exist\n", __func__);
> return -ENOENT;
> }
>
> @@ -1118,7 +1118,7 @@ ip_vs_del_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> dest = ip_vs_lookup_dest(svc, &udest->addr, dport);
>
> if (dest == NULL) {
> - IP_VS_DBG(1, "ip_vs_del_dest(): destination not found!\n");
> + IP_VS_DBG(1, "%s(): destination not found!\n", __func__);
> return -ENOENT;
> }
>
> @@ -1164,8 +1164,7 @@ ip_vs_add_service(struct ip_vs_service_user_kern *u,
> /* Lookup the scheduler by 'u->sched_name' */
> sched = ip_vs_scheduler_get(u->sched_name);
> if (sched == NULL) {
> - IP_VS_INFO("Scheduler module ip_vs_%s not found\n",
> - u->sched_name);
> + pr_info("Scheduler module ip_vs_%s not found\n", u->sched_name);
> ret = -ENOENT;
> goto out_mod_dec;
> }
> @@ -1179,7 +1178,7 @@ ip_vs_add_service(struct ip_vs_service_user_kern *u,
>
> svc = kzalloc(sizeof(struct ip_vs_service), GFP_ATOMIC);
> if (svc == NULL) {
> - IP_VS_DBG(1, "ip_vs_add_service: kmalloc failed.\n");
> + IP_VS_DBG(1, "%s(): no memory\n", __func__);
> ret = -ENOMEM;
> goto out_err;
> }
> @@ -1262,8 +1261,7 @@ ip_vs_edit_service(struct ip_vs_service *svc, struct ip_vs_service_user_kern *u)
> */
> sched = ip_vs_scheduler_get(u->sched_name);
> if (sched == NULL) {
> - IP_VS_INFO("Scheduler module ip_vs_%s not found\n",
> - u->sched_name);
> + pr_info("Scheduler module ip_vs_%s not found\n", u->sched_name);
> return -ENOENT;
> }
> old_sched = sched;
> @@ -2080,8 +2078,8 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
> return -EPERM;
>
> if (len != set_arglen[SET_CMDID(cmd)]) {
> - IP_VS_ERR("set_ctl: len %u != %u\n",
> - len, set_arglen[SET_CMDID(cmd)]);
> + pr_err("set_ctl: len %u != %u\n",
> + len, set_arglen[SET_CMDID(cmd)]);
> return -EINVAL;
> }
>
> @@ -2132,9 +2130,9 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
>
> /* Check for valid protocol: TCP or UDP, even for fwmark!=0 */
> if (usvc.protocol != IPPROTO_TCP && usvc.protocol != IPPROTO_UDP) {
> - IP_VS_ERR("set_ctl: invalid protocol: %d %pI4:%d %s\n",
> - usvc.protocol, &usvc.addr.ip,
> - ntohs(usvc.port), usvc.sched_name);
> + pr_err("set_ctl: invalid protocol: %d %pI4:%d %s\n",
> + usvc.protocol, &usvc.addr.ip,
> + ntohs(usvc.port), usvc.sched_name);
> ret = -EFAULT;
> goto out_unlock;
> }
> @@ -2359,8 +2357,8 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
> return -EPERM;
>
> if (*len < get_arglen[GET_CMDID(cmd)]) {
> - IP_VS_ERR("get_ctl: len %u < %u\n",
> - *len, get_arglen[GET_CMDID(cmd)]);
> + pr_err("get_ctl: len %u < %u\n",
> + *len, get_arglen[GET_CMDID(cmd)]);
> return -EINVAL;
> }
>
> @@ -2405,7 +2403,7 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
> size = sizeof(*get) +
> sizeof(struct ip_vs_service_entry) * get->num_services;
> if (*len != size) {
> - IP_VS_ERR("length: %u != %u\n", *len, size);
> + pr_err("length: %u != %u\n", *len, size);
> ret = -EINVAL;
> goto out;
> }
> @@ -2445,7 +2443,7 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
> size = sizeof(*get) +
> sizeof(struct ip_vs_dest_entry) * get->num_dests;
> if (*len != size) {
> - IP_VS_ERR("length: %u != %u\n", *len, size);
> + pr_err("length: %u != %u\n", *len, size);
> ret = -EINVAL;
> goto out;
> }
> @@ -3173,7 +3171,7 @@ static int ip_vs_genl_get_cmd(struct sk_buff *skb, struct genl_info *info)
> else if (cmd == IPVS_CMD_GET_CONFIG)
> reply_cmd = IPVS_CMD_SET_CONFIG;
> else {
> - IP_VS_ERR("unknown Generic Netlink command\n");
> + pr_err("unknown Generic Netlink command\n");
> return -EINVAL;
> }
>
> @@ -3238,7 +3236,7 @@ static int ip_vs_genl_get_cmd(struct sk_buff *skb, struct genl_info *info)
> goto out;
>
> nla_put_failure:
> - IP_VS_ERR("not enough space in Netlink message\n");
> + pr_err("not enough space in Netlink message\n");
> ret = -EMSGSIZE;
>
> out_err:
> @@ -3369,13 +3367,13 @@ int __init ip_vs_control_init(void)
>
> ret = nf_register_sockopt(&ip_vs_sockopts);
> if (ret) {
> - IP_VS_ERR("cannot register sockopt.\n");
> + pr_err("cannot register sockopt.\n");
> return ret;
> }
>
> ret = ip_vs_genl_register();
> if (ret) {
> - IP_VS_ERR("cannot register Generic Netlink interface.\n");
> + pr_err("cannot register Generic Netlink interface.\n");
> nf_unregister_sockopt(&ip_vs_sockopts);
> return ret;
> }
> diff --git a/net/netfilter/ipvs/ip_vs_dh.c b/net/netfilter/ipvs/ip_vs_dh.c
> index d0c0594..fe3e188 100644
> --- a/net/netfilter/ipvs/ip_vs_dh.c
> +++ b/net/netfilter/ipvs/ip_vs_dh.c
> @@ -150,7 +150,7 @@ static int ip_vs_dh_init_svc(struct ip_vs_service *svc)
> tbl = kmalloc(sizeof(struct ip_vs_dh_bucket)*IP_VS_DH_TAB_SIZE,
> GFP_ATOMIC);
> if (tbl == NULL) {
> - IP_VS_ERR("ip_vs_dh_init_svc(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return -ENOMEM;
> }
> svc->sched_data = tbl;
> @@ -217,7 +217,7 @@ ip_vs_dh_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
>
> ip_vs_fill_iphdr(svc->af, skb_network_header(skb), &iph);
>
> - IP_VS_DBG(6, "ip_vs_dh_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> tbl = (struct ip_vs_dh_bucket *)svc->sched_data;
> dest = ip_vs_dh_get(svc->af, tbl, &iph.daddr);
> diff --git a/net/netfilter/ipvs/ip_vs_ftp.c b/net/netfilter/ipvs/ip_vs_ftp.c
> index 9c16a3f..33e2c79 100644
> --- a/net/netfilter/ipvs/ip_vs_ftp.c
> +++ b/net/netfilter/ipvs/ip_vs_ftp.c
> @@ -385,8 +385,8 @@ static int __init ip_vs_ftp_init(void)
> ret = register_ip_vs_app_inc(app, app->protocol, ports[i]);
> if (ret)
> break;
> - IP_VS_INFO("%s: loaded support on port[%d] = %d\n",
> - app->name, i, ports[i]);
> + pr_info("%s: loaded support on port[%d] = %d\n",
> + app->name, i, ports[i]);
> }
>
> if (ret)
> diff --git a/net/netfilter/ipvs/ip_vs_lblc.c b/net/netfilter/ipvs/ip_vs_lblc.c
> index 98fb185..c1757f3 100644
> --- a/net/netfilter/ipvs/ip_vs_lblc.c
> +++ b/net/netfilter/ipvs/ip_vs_lblc.c
> @@ -202,7 +202,7 @@ ip_vs_lblc_new(struct ip_vs_lblc_table *tbl, const union nf_inet_addr *daddr,
> if (!en) {
> en = kmalloc(sizeof(*en), GFP_ATOMIC);
> if (!en) {
> - IP_VS_ERR("ip_vs_lblc_new(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return NULL;
> }
>
> @@ -335,7 +335,7 @@ static int ip_vs_lblc_init_svc(struct ip_vs_service *svc)
> */
> tbl = kmalloc(sizeof(*tbl), GFP_ATOMIC);
> if (tbl == NULL) {
> - IP_VS_ERR("ip_vs_lblc_init_svc(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return -ENOMEM;
> }
> svc->sched_data = tbl;
> @@ -480,7 +480,7 @@ ip_vs_lblc_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
>
> ip_vs_fill_iphdr(svc->af, skb_network_header(skb), &iph);
>
> - IP_VS_DBG(6, "ip_vs_lblc_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> /* First look in our cache */
> read_lock(&svc->sched_lock);
> diff --git a/net/netfilter/ipvs/ip_vs_lblcr.c b/net/netfilter/ipvs/ip_vs_lblcr.c
> index 5f5e5f4..715b57f 100644
> --- a/net/netfilter/ipvs/ip_vs_lblcr.c
> +++ b/net/netfilter/ipvs/ip_vs_lblcr.c
> @@ -111,7 +111,7 @@ ip_vs_dest_set_insert(struct ip_vs_dest_set *set, struct ip_vs_dest *dest)
>
> e = kmalloc(sizeof(*e), GFP_ATOMIC);
> if (e == NULL) {
> - IP_VS_ERR("ip_vs_dest_set_insert(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return NULL;
> }
>
> @@ -205,8 +205,9 @@ static inline struct ip_vs_dest *ip_vs_dest_set_min(struct ip_vs_dest_set *set)
> }
> }
>
> - IP_VS_DBG_BUF(6, "ip_vs_dest_set_min: server %s:%d "
> + IP_VS_DBG_BUF(6, "%s(): server %s:%d "
> "activeconns %d refcnt %d weight %d overhead %d\n",
> + __func__,
> IP_VS_DBG_ADDR(least->af, &least->addr),
> ntohs(least->port),
> atomic_read(&least->activeconns),
> @@ -252,8 +253,9 @@ static inline struct ip_vs_dest *ip_vs_dest_set_max(struct ip_vs_dest_set *set)
> }
> }
>
> - IP_VS_DBG_BUF(6, "ip_vs_dest_set_max: server %s:%d "
> + IP_VS_DBG_BUF(6, "%s(): server %s:%d "
> "activeconns %d refcnt %d weight %d overhead %d\n",
> + __func__,
> IP_VS_DBG_ADDR(most->af, &most->addr), ntohs(most->port),
> atomic_read(&most->activeconns),
> atomic_read(&most->refcnt),
> @@ -377,7 +379,7 @@ ip_vs_lblcr_new(struct ip_vs_lblcr_table *tbl, const union nf_inet_addr *daddr,
> if (!en) {
> en = kmalloc(sizeof(*en), GFP_ATOMIC);
> if (!en) {
> - IP_VS_ERR("ip_vs_lblcr_new(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return NULL;
> }
>
> @@ -511,7 +513,7 @@ static int ip_vs_lblcr_init_svc(struct ip_vs_service *svc)
> */
> tbl = kmalloc(sizeof(*tbl), GFP_ATOMIC);
> if (tbl == NULL) {
> - IP_VS_ERR("ip_vs_lblcr_init_svc(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return -ENOMEM;
> }
> svc->sched_data = tbl;
> @@ -657,7 +659,7 @@ ip_vs_lblcr_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
>
> ip_vs_fill_iphdr(svc->af, skb_network_header(skb), &iph);
>
> - IP_VS_DBG(6, "ip_vs_lblcr_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> /* First look in our cache */
> read_lock(&svc->sched_lock);
> diff --git a/net/netfilter/ipvs/ip_vs_lc.c b/net/netfilter/ipvs/ip_vs_lc.c
> index 4ecd5e1..4f69db1 100644
> --- a/net/netfilter/ipvs/ip_vs_lc.c
> +++ b/net/netfilter/ipvs/ip_vs_lc.c
> @@ -47,7 +47,7 @@ ip_vs_lc_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> struct ip_vs_dest *dest, *least = NULL;
> unsigned int loh = 0, doh;
>
> - IP_VS_DBG(6, "ip_vs_lc_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> /*
> * Simply select the server with the least number of
> diff --git a/net/netfilter/ipvs/ip_vs_nq.c b/net/netfilter/ipvs/ip_vs_nq.c
> index 2224478..c413e18 100644
> --- a/net/netfilter/ipvs/ip_vs_nq.c
> +++ b/net/netfilter/ipvs/ip_vs_nq.c
> @@ -60,7 +60,7 @@ ip_vs_nq_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> struct ip_vs_dest *dest, *least = NULL;
> unsigned int loh = 0, doh;
>
> - IP_VS_DBG(6, "ip_vs_nq_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> /*
> * We calculate the load of each dest server as follows:
> diff --git a/net/netfilter/ipvs/ip_vs_proto.c b/net/netfilter/ipvs/ip_vs_proto.c
> index a95bc40..85c8892 100644
> --- a/net/netfilter/ipvs/ip_vs_proto.c
> +++ b/net/netfilter/ipvs/ip_vs_proto.c
> @@ -262,7 +262,7 @@ int __init ip_vs_protocol_init(void)
> #ifdef CONFIG_IP_VS_PROTO_ESP
> REGISTER_PROTOCOL(&ip_vs_protocol_esp);
> #endif
> - IP_VS_INFO("Registered protocols (%s)\n", &protocols[2]);
> + pr_info("Registered protocols (%s)\n", &protocols[2]);
>
> return 0;
> }
> diff --git a/net/netfilter/ipvs/ip_vs_proto_tcp.c b/net/netfilter/ipvs/ip_vs_proto_tcp.c
> index c36c80d..2278e14 100644
> --- a/net/netfilter/ipvs/ip_vs_proto_tcp.c
> +++ b/net/netfilter/ipvs/ip_vs_proto_tcp.c
> @@ -664,7 +664,7 @@ tcp_app_conn_bind(struct ip_vs_conn *cp)
> break;
> spin_unlock(&tcp_app_lock);
>
> - IP_VS_DBG_BUF(9, "%s: Binding conn %s:%u->"
> + IP_VS_DBG_BUF(9, "%s(): Binding conn %s:%u->"
> "%s:%u to app %s on port %u\n",
> __func__,
> IP_VS_DBG_ADDR(cp->af, &cp->caddr),
> diff --git a/net/netfilter/ipvs/ip_vs_proto_udp.c b/net/netfilter/ipvs/ip_vs_proto_udp.c
> index 96ebe40..33a05d3 100644
> --- a/net/netfilter/ipvs/ip_vs_proto_udp.c
> +++ b/net/netfilter/ipvs/ip_vs_proto_udp.c
> @@ -445,7 +445,7 @@ static int udp_app_conn_bind(struct ip_vs_conn *cp)
> break;
> spin_unlock(&udp_app_lock);
>
> - IP_VS_DBG_BUF(9, "%s: Binding conn %s:%u->"
> + IP_VS_DBG_BUF(9, "%s(): Binding conn %s:%u->"
> "%s:%u to app %s on port %u\n",
> __func__,
> IP_VS_DBG_ADDR(cp->af, &cp->caddr),
> diff --git a/net/netfilter/ipvs/ip_vs_rr.c b/net/netfilter/ipvs/ip_vs_rr.c
> index b01007e..e210f37 100644
> --- a/net/netfilter/ipvs/ip_vs_rr.c
> +++ b/net/netfilter/ipvs/ip_vs_rr.c
> @@ -51,7 +51,7 @@ ip_vs_rr_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> struct list_head *p, *q;
> struct ip_vs_dest *dest;
>
> - IP_VS_DBG(6, "ip_vs_rr_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> write_lock(&svc->sched_lock);
> p = (struct list_head *)svc->sched_data;
> diff --git a/net/netfilter/ipvs/ip_vs_sched.c b/net/netfilter/ipvs/ip_vs_sched.c
> index 87bc5ea..bbc1ac7 100644
> --- a/net/netfilter/ipvs/ip_vs_sched.c
> +++ b/net/netfilter/ipvs/ip_vs_sched.c
> @@ -47,11 +47,11 @@ int ip_vs_bind_scheduler(struct ip_vs_service *svc,
> int ret;
>
> if (svc == NULL) {
> - IP_VS_ERR("ip_vs_bind_scheduler(): svc arg NULL\n");
> + pr_err("%s(): svc arg NULL\n", __func__);
> return -EINVAL;
> }
> if (scheduler == NULL) {
> - IP_VS_ERR("ip_vs_bind_scheduler(): scheduler arg NULL\n");
> + pr_err("%s(): scheduler arg NULL\n", __func__);
> return -EINVAL;
> }
>
> @@ -60,7 +60,7 @@ int ip_vs_bind_scheduler(struct ip_vs_service *svc,
> if (scheduler->init_service) {
> ret = scheduler->init_service(svc);
> if (ret) {
> - IP_VS_ERR("ip_vs_bind_scheduler(): init error\n");
> + pr_err("%s(): init error\n", __func__);
> return ret;
> }
> }
> @@ -77,19 +77,19 @@ int ip_vs_unbind_scheduler(struct ip_vs_service *svc)
> struct ip_vs_scheduler *sched;
>
> if (svc == NULL) {
> - IP_VS_ERR("ip_vs_unbind_scheduler(): svc arg NULL\n");
> + pr_err("%s(): svc arg NULL\n", __func__);
> return -EINVAL;
> }
>
> sched = svc->scheduler;
> if (sched == NULL) {
> - IP_VS_ERR("ip_vs_unbind_scheduler(): svc isn't bound\n");
> + pr_err("%s(): svc isn't bound\n", __func__);
> return -EINVAL;
> }
>
> if (sched->done_service) {
> if (sched->done_service(svc) != 0) {
> - IP_VS_ERR("ip_vs_unbind_scheduler(): done error\n");
> + pr_err("%s(): done error\n", __func__);
> return -EINVAL;
> }
> }
> @@ -106,8 +106,7 @@ static struct ip_vs_scheduler *ip_vs_sched_getbyname(const char *sched_name)
> {
> struct ip_vs_scheduler *sched;
>
> - IP_VS_DBG(2, "ip_vs_sched_getbyname(): sched_name \"%s\"\n",
> - sched_name);
> + IP_VS_DBG(2, "%s(): sched_name \"%s\"\n", __func__, sched_name);
>
> read_lock_bh(&__ip_vs_sched_lock);
>
> @@ -173,12 +172,12 @@ int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
> struct ip_vs_scheduler *sched;
>
> if (!scheduler) {
> - IP_VS_ERR("register_ip_vs_scheduler(): NULL arg\n");
> + pr_err("%s(): NULL arg\n", __func__);
> return -EINVAL;
> }
>
> if (!scheduler->name) {
> - IP_VS_ERR("register_ip_vs_scheduler(): NULL scheduler_name\n");
> + pr_err("%s(): NULL scheduler_name\n", __func__);
> return -EINVAL;
> }
>
> @@ -190,8 +189,8 @@ int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
> if (!list_empty(&scheduler->n_list)) {
> write_unlock_bh(&__ip_vs_sched_lock);
> ip_vs_use_count_dec();
> - IP_VS_ERR("register_ip_vs_scheduler(): [%s] scheduler "
> - "already linked\n", scheduler->name);
> + pr_err("%s(): [%s] scheduler already linked\n",
> + __func__, scheduler->name);
> return -EINVAL;
> }
>
> @@ -203,9 +202,8 @@ int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
> if (strcmp(scheduler->name, sched->name) == 0) {
> write_unlock_bh(&__ip_vs_sched_lock);
> ip_vs_use_count_dec();
> - IP_VS_ERR("register_ip_vs_scheduler(): [%s] scheduler "
> - "already existed in the system\n",
> - scheduler->name);
> + pr_err("%s(): [%s] scheduler already existed "
> + "in the system\n", __func__, scheduler->name);
> return -EINVAL;
> }
> }
> @@ -215,7 +213,7 @@ int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
> list_add(&scheduler->n_list, &ip_vs_schedulers);
> write_unlock_bh(&__ip_vs_sched_lock);
>
> - IP_VS_INFO("[%s] scheduler registered.\n", scheduler->name);
> + pr_info("[%s] scheduler registered.\n", scheduler->name);
>
> return 0;
> }
> @@ -227,15 +225,15 @@ int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
> int unregister_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
> {
> if (!scheduler) {
> - IP_VS_ERR( "unregister_ip_vs_scheduler(): NULL arg\n");
> + pr_err("%s(): NULL arg\n", __func__);
> return -EINVAL;
> }
>
> write_lock_bh(&__ip_vs_sched_lock);
> if (list_empty(&scheduler->n_list)) {
> write_unlock_bh(&__ip_vs_sched_lock);
> - IP_VS_ERR("unregister_ip_vs_scheduler(): [%s] scheduler "
> - "is not in the list. failed\n", scheduler->name);
> + pr_err("%s(): [%s] scheduler is not in the list. failed\n",
> + __func__, scheduler->name);
> return -EINVAL;
> }
>
> @@ -248,7 +246,7 @@ int unregister_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
> /* decrease the module use count */
> ip_vs_use_count_dec();
>
> - IP_VS_INFO("[%s] scheduler unregistered.\n", scheduler->name);
> + pr_info("[%s] scheduler unregistered.\n", scheduler->name);
>
> return 0;
> }
> diff --git a/net/netfilter/ipvs/ip_vs_sed.c b/net/netfilter/ipvs/ip_vs_sed.c
> index 4f745dd..1ab75a9 100644
> --- a/net/netfilter/ipvs/ip_vs_sed.c
> +++ b/net/netfilter/ipvs/ip_vs_sed.c
> @@ -64,7 +64,7 @@ ip_vs_sed_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> struct ip_vs_dest *dest, *least;
> unsigned int loh, doh;
>
> - IP_VS_DBG(6, "ip_vs_sed_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> /*
> * We calculate the load of each dest server as follows:
> diff --git a/net/netfilter/ipvs/ip_vs_sh.c b/net/netfilter/ipvs/ip_vs_sh.c
> index fb4d2d2..8e6cfd3 100644
> --- a/net/netfilter/ipvs/ip_vs_sh.c
> +++ b/net/netfilter/ipvs/ip_vs_sh.c
> @@ -147,7 +147,7 @@ static int ip_vs_sh_init_svc(struct ip_vs_service *svc)
> tbl = kmalloc(sizeof(struct ip_vs_sh_bucket)*IP_VS_SH_TAB_SIZE,
> GFP_ATOMIC);
> if (tbl == NULL) {
> - IP_VS_ERR("ip_vs_sh_init_svc(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return -ENOMEM;
> }
> svc->sched_data = tbl;
> diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
> index cc04c99..e177f0d 100644
> --- a/net/netfilter/ipvs/ip_vs_sync.c
> +++ b/net/netfilter/ipvs/ip_vs_sync.c
> @@ -246,7 +246,7 @@ void ip_vs_sync_conn(struct ip_vs_conn *cp)
> if (!curr_sb) {
> if (!(curr_sb=ip_vs_sync_buff_create())) {
> spin_unlock(&curr_sb_lock);
> - IP_VS_ERR("ip_vs_sync_buff_create failed.\n");
> + pr_err("ip_vs_sync_buff_create failed.\n");
> return;
> }
> }
> @@ -412,7 +412,7 @@ static void ip_vs_process_message(const char *buffer, const size_t buflen)
> if (dest)
> atomic_dec(&dest->refcnt);
> if (!cp) {
> - IP_VS_ERR("ip_vs_conn_new failed\n");
> + pr_err("ip_vs_conn_new failed\n");
> return;
> }
> } else if (!cp->dest) {
> @@ -580,8 +580,8 @@ static int bind_mcastif_addr(struct socket *sock, char *ifname)
>
> addr = inet_select_addr(dev, 0, RT_SCOPE_UNIVERSE);
> if (!addr)
> - IP_VS_ERR("You probably need to specify IP address on "
> - "multicast interface.\n");
> + pr_err("You probably need to specify IP address on "
> + "multicast interface.\n");
>
> IP_VS_DBG(7, "binding socket with (%s) %pI4\n",
> ifname, &addr);
> @@ -605,13 +605,13 @@ static struct socket * make_send_sock(void)
> /* First create a socket */
> result = sock_create_kern(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
> if (result < 0) {
> - IP_VS_ERR("Error during creation of socket; terminating\n");
> + pr_err("Error during creation of socket; terminating\n");
> return ERR_PTR(result);
> }
>
> result = set_mcast_if(sock->sk, ip_vs_master_mcast_ifn);
> if (result < 0) {
> - IP_VS_ERR("Error setting outbound mcast interface\n");
> + pr_err("Error setting outbound mcast interface\n");
> goto error;
> }
>
> @@ -620,14 +620,14 @@ static struct socket * make_send_sock(void)
>
> result = bind_mcastif_addr(sock, ip_vs_master_mcast_ifn);
> if (result < 0) {
> - IP_VS_ERR("Error binding address of the mcast interface\n");
> + pr_err("Error binding address of the mcast interface\n");
> goto error;
> }
>
> result = sock->ops->connect(sock, (struct sockaddr *) &mcast_addr,
> sizeof(struct sockaddr), 0);
> if (result < 0) {
> - IP_VS_ERR("Error connecting to the multicast addr\n");
> + pr_err("Error connecting to the multicast addr\n");
> goto error;
> }
>
> @@ -650,7 +650,7 @@ static struct socket * make_receive_sock(void)
> /* First create a socket */
> result = sock_create_kern(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
> if (result < 0) {
> - IP_VS_ERR("Error during creation of socket; terminating\n");
> + pr_err("Error during creation of socket; terminating\n");
> return ERR_PTR(result);
> }
>
> @@ -660,7 +660,7 @@ static struct socket * make_receive_sock(void)
> result = sock->ops->bind(sock, (struct sockaddr *) &mcast_addr,
> sizeof(struct sockaddr));
> if (result < 0) {
> - IP_VS_ERR("Error binding to the multicast addr\n");
> + pr_err("Error binding to the multicast addr\n");
> goto error;
> }
>
> @@ -669,7 +669,7 @@ static struct socket * make_receive_sock(void)
> (struct in_addr *) &mcast_addr.sin_addr,
> ip_vs_backup_mcast_ifn);
> if (result < 0) {
> - IP_VS_ERR("Error joining to the multicast group\n");
> + pr_err("Error joining to the multicast group\n");
> goto error;
> }
>
> @@ -709,7 +709,7 @@ ip_vs_send_sync_msg(struct socket *sock, struct ip_vs_sync_mesg *msg)
> msg->size = htons(msg->size);
>
> if (ip_vs_send_async(sock, (char *)msg, msize) != msize)
> - IP_VS_ERR("ip_vs_send_async error\n");
> + pr_err("ip_vs_send_async error\n");
> }
>
> static int
> @@ -740,9 +740,9 @@ static int sync_thread_master(void *data)
> struct ip_vs_sync_thread_data *tinfo = data;
> struct ip_vs_sync_buff *sb;
>
> - IP_VS_INFO("sync thread started: state = MASTER, mcast_ifn = %s, "
> - "syncid = %d\n",
> - ip_vs_master_mcast_ifn, ip_vs_master_syncid);
> + pr_info("sync thread started: state = MASTER, mcast_ifn = %s, "
> + "syncid = %d\n",
> + ip_vs_master_mcast_ifn, ip_vs_master_syncid);
>
> while (!kthread_should_stop()) {
> while ((sb = sb_dequeue())) {
> @@ -783,9 +783,9 @@ static int sync_thread_backup(void *data)
> struct ip_vs_sync_thread_data *tinfo = data;
> int len;
>
> - IP_VS_INFO("sync thread started: state = BACKUP, mcast_ifn = %s, "
> - "syncid = %d\n",
> - ip_vs_backup_mcast_ifn, ip_vs_backup_syncid);
> + pr_info("sync thread started: state = BACKUP, mcast_ifn = %s, "
> + "syncid = %d\n",
> + ip_vs_backup_mcast_ifn, ip_vs_backup_syncid);
>
> while (!kthread_should_stop()) {
> wait_event_interruptible(*tinfo->sock->sk->sk_sleep,
> @@ -797,7 +797,7 @@ static int sync_thread_backup(void *data)
> len = ip_vs_receive(tinfo->sock, tinfo->buf,
> sync_recv_mesg_maxlen);
> if (len <= 0) {
> - IP_VS_ERR("receiving message error\n");
> + pr_err("receiving message error\n");
> break;
> }
>
> @@ -827,7 +827,7 @@ int start_sync_thread(int state, char *mcast_ifn, __u8 syncid)
> int (*threadfn)(void *data);
> int result = -ENOMEM;
>
> - IP_VS_DBG(7, "%s: pid %d\n", __func__, task_pid_nr(current));
> + IP_VS_DBG(7, "%s(): pid %d\n", __func__, task_pid_nr(current));
> IP_VS_DBG(7, "Each ip_vs_sync_conn entry needs %Zd bytes\n",
> sizeof(struct ip_vs_sync_conn));
>
> @@ -904,14 +904,14 @@ out:
>
> int stop_sync_thread(int state)
> {
> - IP_VS_DBG(7, "%s: pid %d\n", __func__, task_pid_nr(current));
> + IP_VS_DBG(7, "%s(): pid %d\n", __func__, task_pid_nr(current));
>
> if (state == IP_VS_STATE_MASTER) {
> if (!sync_master_thread)
> return -ESRCH;
>
> - IP_VS_INFO("stopping master sync thread %d ...\n",
> - task_pid_nr(sync_master_thread));
> + pr_info("stopping master sync thread %d ...\n",
> + task_pid_nr(sync_master_thread));
>
> /*
> * The lock synchronizes with sb_queue_tail(), so that we don't
> @@ -928,8 +928,8 @@ int stop_sync_thread(int state)
> if (!sync_backup_thread)
> return -ESRCH;
>
> - IP_VS_INFO("stopping backup sync thread %d ...\n",
> - task_pid_nr(sync_backup_thread));
> + pr_info("stopping backup sync thread %d ...\n",
> + task_pid_nr(sync_backup_thread));
>
> ip_vs_sync_state &= ~IP_VS_STATE_BACKUP;
> kthread_stop(sync_backup_thread);
> diff --git a/net/netfilter/ipvs/ip_vs_wrr.c b/net/netfilter/ipvs/ip_vs_wrr.c
> index c39ebb6..70ff82c 100644
> --- a/net/netfilter/ipvs/ip_vs_wrr.c
> +++ b/net/netfilter/ipvs/ip_vs_wrr.c
> @@ -97,7 +97,7 @@ static int ip_vs_wrr_init_svc(struct ip_vs_service *svc)
> */
> mark = kmalloc(sizeof(struct ip_vs_wrr_mark), GFP_ATOMIC);
> if (mark == NULL) {
> - IP_VS_ERR("ip_vs_wrr_init_svc(): no memory\n");
> + pr_err("%s(): no memory\n", __func__);
> return -ENOMEM;
> }
> mark->cl = &svc->destinations;
> @@ -144,7 +144,7 @@ ip_vs_wrr_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
> struct ip_vs_wrr_mark *mark = svc->sched_data;
> struct list_head *p;
>
> - IP_VS_DBG(6, "ip_vs_wrr_schedule(): Scheduling...\n");
> + IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
>
> /*
> * This loop will always terminate, because mark->cw in (0, max_weight]
> diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
> index 061e76d..30b3189 100644
> --- a/net/netfilter/ipvs/ip_vs_xmit.c
> +++ b/net/netfilter/ipvs/ip_vs_xmit.c
> @@ -238,8 +238,8 @@ ip_vs_bypass_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> EnterFunction(10);
>
> if (ip_route_output_key(&init_net, &rt, &fl)) {
> - IP_VS_DBG_RL("ip_vs_bypass_xmit(): ip_route_output error, dest: %pI4\n",
> - &iph->daddr);
> + IP_VS_DBG_RL("%s(): ip_route_output error, dest: %pI4\n",
> + __func__, &iph->daddr);
> goto tx_error_icmp;
> }
>
> @@ -248,7 +248,7 @@ ip_vs_bypass_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> if ((skb->len > mtu) && (iph->frag_off & htons(IP_DF))) {
> ip_rt_put(rt);
> icmp_send(skb, ICMP_DEST_UNREACH,ICMP_FRAG_NEEDED, htonl(mtu));
> - IP_VS_DBG_RL("ip_vs_bypass_xmit(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
> @@ -302,8 +302,8 @@ ip_vs_bypass_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
>
> rt = (struct rt6_info *)ip6_route_output(&init_net, NULL, &fl);
> if (!rt) {
> - IP_VS_DBG_RL("ip_vs_bypass_xmit_v6(): ip6_route_output error, dest: %pI6\n",
> - &iph->daddr);
> + IP_VS_DBG_RL("%s(): ip6_route_output error, dest: %pI6\n",
> + __func__, &iph->daddr);
> goto tx_error_icmp;
> }
>
> @@ -312,7 +312,7 @@ ip_vs_bypass_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> if (skb->len > mtu) {
> dst_release(&rt->u.dst);
> icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev);
> - IP_VS_DBG_RL("ip_vs_bypass_xmit_v6(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
> @@ -539,9 +539,9 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> EnterFunction(10);
>
> if (skb->protocol != htons(ETH_P_IP)) {
> - IP_VS_DBG_RL("ip_vs_tunnel_xmit(): protocol error, "
> + IP_VS_DBG_RL("%s(): protocol error, "
> "ETH_P_IP: %d, skb protocol: %d\n",
> - htons(ETH_P_IP), skb->protocol);
> + __func__, htons(ETH_P_IP), skb->protocol);
> goto tx_error;
> }
>
> @@ -553,7 +553,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> mtu = dst_mtu(&rt->u.dst) - sizeof(struct iphdr);
> if (mtu < 68) {
> ip_rt_put(rt);
> - IP_VS_DBG_RL("ip_vs_tunnel_xmit(): mtu less than 68\n");
> + IP_VS_DBG_RL("%s(): mtu less than 68\n", __func__);
> goto tx_error;
> }
> if (skb_dst(skb))
> @@ -565,7 +565,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> && mtu < ntohs(old_iph->tot_len)) {
> icmp_send(skb, ICMP_DEST_UNREACH,ICMP_FRAG_NEEDED, htonl(mtu));
> ip_rt_put(rt);
> - IP_VS_DBG_RL("ip_vs_tunnel_xmit(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
> @@ -581,7 +581,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> if (!new_skb) {
> ip_rt_put(rt);
> kfree_skb(skb);
> - IP_VS_ERR_RL("ip_vs_tunnel_xmit(): no memory\n");
> + IP_VS_ERR_RL("%s(): no memory\n", __func__);
> return NF_STOLEN;
> }
> kfree_skb(skb);
> @@ -649,9 +649,9 @@ ip_vs_tunnel_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> EnterFunction(10);
>
> if (skb->protocol != htons(ETH_P_IPV6)) {
> - IP_VS_DBG_RL("ip_vs_tunnel_xmit_v6(): protocol error, "
> + IP_VS_DBG_RL("%s(): protocol error, "
> "ETH_P_IPV6: %d, skb protocol: %d\n",
> - htons(ETH_P_IPV6), skb->protocol);
> + __func__, htons(ETH_P_IPV6), skb->protocol);
> goto tx_error;
> }
>
> @@ -665,7 +665,7 @@ ip_vs_tunnel_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> /* TODO IPv6: do we need this check in IPv6? */
> if (mtu < 1280) {
> dst_release(&rt->u.dst);
> - IP_VS_DBG_RL("ip_vs_tunnel_xmit_v6(): mtu less than 1280\n");
> + IP_VS_DBG_RL("%s(): mtu less than 1280\n", __func__);
> goto tx_error;
> }
> if (skb_dst(skb))
> @@ -674,7 +674,7 @@ ip_vs_tunnel_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> if (mtu < ntohs(old_iph->payload_len) + sizeof(struct ipv6hdr)) {
> icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev);
> dst_release(&rt->u.dst);
> - IP_VS_DBG_RL("ip_vs_tunnel_xmit_v6(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
> @@ -690,7 +690,7 @@ ip_vs_tunnel_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> if (!new_skb) {
> dst_release(&rt->u.dst);
> kfree_skb(skb);
> - IP_VS_ERR_RL("ip_vs_tunnel_xmit_v6(): no memory\n");
> + IP_VS_ERR_RL("%s(): no memory\n", __func__);
> return NF_STOLEN;
> }
> kfree_skb(skb);
> @@ -763,7 +763,7 @@ ip_vs_dr_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> if ((iph->frag_off & htons(IP_DF)) && skb->len > mtu) {
> icmp_send(skb, ICMP_DEST_UNREACH,ICMP_FRAG_NEEDED, htonl(mtu));
> ip_rt_put(rt);
> - IP_VS_DBG_RL("ip_vs_dr_xmit(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
> @@ -816,7 +816,7 @@ ip_vs_dr_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> if (skb->len > mtu) {
> icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev);
> dst_release(&rt->u.dst);
> - IP_VS_DBG_RL("ip_vs_dr_xmit_v6(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
> @@ -891,7 +891,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> if ((skb->len > mtu) && (ip_hdr(skb)->frag_off & htons(IP_DF))) {
> ip_rt_put(rt);
> icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu));
> - IP_VS_DBG_RL("ip_vs_in_icmp(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
> @@ -966,7 +966,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> if (skb->len > mtu) {
> dst_release(&rt->u.dst);
> icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev);
> - IP_VS_DBG_RL("ip_vs_in_icmp(): frag needed\n");
> + IP_VS_DBG_RL("%s(): frag needed\n", __func__);
> goto tx_error;
> }
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply
* Re: 2.6.31-rc5: Reported regressions from 2.6.30
From: Linus Torvalds @ 2009-08-02 22:22 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Adrian Bunk, DRI, Linux SCSI List, Network Development,
Linux Wireless List, Linux Kernel Mailing List,
Natalie Protasevich, Linux ACPI, Mikael Pettersson, Andrew Morton,
Kernel Testers List, Linux PM List
In-Reply-To: <Su1q3S6JjyO.A.jeB.hcgdKB@chimera>
On Sun, 2 Aug 2009, Rafael J. Wysocki wrote:
>
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13896
> Subject : 2.6.31-rc4 broke expect and gcc's testsuite
> Submitter : Mikael Pettersson <mikpe@it.uu.se>
> Date : 2009-07-29 11:00 (5 days old)
> References : http://marc.info/?l=linux-kernel&m=124885806406520&w=4
I bet this is the same tty bug that got fixed by Ogawa in commit
e043e42bdb. -rc5 has that fix. Mikael?
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13842
> Subject : Oops when writing to /sys/block/ram0/queue/max_sectors_kb
> Submitter : Jens Rosenboom <jens@mcbone.net>
> Date : 2009-07-23 15:30 (11 days old)
> References : http://marc.info/?l=linux-kernel&m=124836574403032&w=4
Commit a4e7d46407d73f35d217013b363b79a8f8eafcaa fixed this one.
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13826
> Subject : thinkpad boots with backlight low
> Submitter : Pavel Machek <pavel@ucw.cz>
> Date : 2009-07-15 15:13 (19 days old)
> References : http://marc.info/?l=linux-kernel&m=124756359126830&w=4
> Handled-By : Henrique de Moraes Holschuh <hmh@hmh.eng.br>
This should be commit 59fe4fe34d7afdf63208124f313be9056feaa2f4.
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13815
> Subject : emacs -nw compilation doesn't show the error message
> Submitter : Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> Date : 2009-07-23 06:22 (11 days old)
> First-Bad-Commit: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d945cb9cce20ac7143c2de8d88b187f62db99bdc
Same old pty bug, same fix: commit e043e42bdb.
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13813
> Subject : Hangups in n_tty_read()
> Submitter : Johannes Weiner <hannes@cmpxchg.org>
> Date : 2009-07-16 18:48 (18 days old)
> References : http://marc.info/?l=linux-kernel&m=124777019920579&w=4
Hmm. Worth testing that same fix, although the symptoms here are not
exactly the same.
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13812
> Subject : Ooops on uplug
> Submitter : Daniel Mack <daniel@caiaq.de>
> Date : 2009-07-20 17:51 (14 days old)
> References : http://marc.info/?l=linux-kernel&m=124811234302786&w=4
> Handled-By : Alan Stern <stern@rowland.harvard.edu>
> Alan Cox <alan@linux.intel.com>
Commit c56d3000861 should fix this.
> Regressions with patches
> ------------------------
>
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13891
> Subject : PCI resources allocation problem on HP nx6325
> Submitter : Rafael J. Wysocki <rjw@sisk.pl>
> Date : 2009-08-02 13:37 (1 days old)
> Handled-By : Linus Torvalds <torvalds@linux-foundation.org>
> Patch : http://patchwork.kernel.org/patch/38774/
Ok, this is committed as 79896cf42f6a96d7e14f2dc3473443d68d74031d.
> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=13825
> Subject : eeepc-laptop: fix hot-unplug on resume
> Submitter : Alan Jenkins <alan-jenkins@tuffmail.co.uk>
> Date : 2009-06-29 13:12 (35 days old)
> References : http://lkml.org/lkml/2009/6/29/150
> Handled-By : Alan Jenkins <alan-jenkins@tuffmail.co.uk>
> Patch : http://patchwork.kernel.org/patch/32926/
commit 7334546a52c6764df120459509b1f803a073eacc
Linus
^ permalink raw reply
* Re: [PATCH] pcnet32: remove superfluous NULL pointer check in pcnet32_probe1()
From: David Miller @ 2009-08-02 20:12 UTC (permalink / raw)
To: bzolnier; +Cc: pcnet32, netdev, linux-kernel, error27, corbet, eteo, julia
In-Reply-To: <200908022207.29942.bzolnier@gmail.com>
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date: Sun, 2 Aug 2009 22:07:29 +0200
> netdev@vger.kernel.org was on cc: for all patches...
>
> http://marc.info/?l=linux-netdev&m=124898901714229&w=2
> http://marc.info/?l=linux-netdev&m=124898901714236&w=2
>
> maybe there is some problem with a patchwork setup..
My bad, I misread the CC: list, sorry.
^ permalink raw reply
* Re: [PATCH] sky2: Avoid transmits during sky2_down()
From: David Miller @ 2009-08-02 20:09 UTC (permalink / raw)
To: mikem; +Cc: shemminger, netdev
In-Reply-To: <392fb48f0907310457t15d8f9bbmdf77f062c423a475@mail.gmail.com>
From: Mike McCormack <mikem@ring3k.org>
Date: Fri, 31 Jul 2009 20:57:42 +0900
> I am aware you object to storing extra state, but I can't see a way
> around this. Without remembering that we're restarting,
> netif_wake_queue() is called in the ISR from sky2_tx_complete(), and
> netif_tx_lock() is used in sky2_tx_done(). If anybody can see a way
> around this, please let me know.
Stephen please do something about this, soon.
Michael has been trying to get this fixed for more than a month, and
if you don't have a better fix like right now then we should put his
fix in for the time being.
Sky2 patches are ones that consistently rot in patchwork and I'd
appreciate if it that trend would cease, thanks.
^ permalink raw reply
* Re: [PATCH] pcnet32: remove superfluous NULL pointer check in pcnet32_probe1()
From: Bartlomiej Zolnierkiewicz @ 2009-08-02 20:07 UTC (permalink / raw)
To: David Miller; +Cc: pcnet32, netdev, linux-kernel, error27, corbet, eteo, julia
In-Reply-To: <20090802.123022.148176905.davem@davemloft.net>
On Sunday 02 August 2009 21:30:22 David Miller wrote:
> From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> Date: Thu, 30 Jul 2009 23:19:17 +0200
>
> > From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> > Subject: [PATCH] pcnet32: remove superfluous NULL pointer check in pcnet32_probe1()
> >
> > Move the debug printk() into the proper place and remove superfluous
> > NULL pointer check in pcnet32_probe1().
> >
> > This takes care of the following entry from Dan's list:
> >
> > drivers/net/pcnet32.c +1889 pcnet32_probe1(298) warning: variable derefenced before check 'pdev'
> >
> > Reported-by: Dan Carpenter <error27@gmail.com>
> > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
>
> Applied, but please CC: netdev@vger.kernel.org for all future
> network driver patches so that it gets properly tracked in
> patchwork. Thanks!
netdev@vger.kernel.org was on cc: for all patches...
http://marc.info/?l=linux-netdev&m=124898901714229&w=2
http://marc.info/?l=linux-netdev&m=124898901714236&w=2
maybe there is some problem with a patchwork setup..
^ permalink raw reply
* Re: netpoll + xmit_lock == deadlock
From: David Miller @ 2009-08-02 20:07 UTC (permalink / raw)
To: herbert; +Cc: mpm, netdev, mcarlson
In-Reply-To: <20090729073523.GA4515@gondor.apana.org.au>
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Wed, 29 Jul 2009 15:35:23 +0800
> So if a driver is in the TX path, and a printk occurs, then a
> recursive dead lock can occur if that driver tries to take the
> xmit lock in its poll function to clean up descriptors.
My position has always been that such printk's are simply
not allowed. (check archives if you don't believe me :-)
The locking is going to get rediculious if we start having
to account for this.
^ permalink raw reply
* Re: [PATCH 1/1] mISDN: Fix handling of receive buffer size in L1oIP
From: David Miller @ 2009-08-02 20:02 UTC (permalink / raw)
To: keil; +Cc: torvalds, linux-kernel, netdev, i4ldeveloper, andreas, acme
In-Reply-To: <467d0b871314c60818f541024fcacca686f3e354.1248781021.git.keil@b1-systems.de>
From: Karsten Keil <keil@b1-systems.de>
Date: Mon, 27 Jul 2009 19:24:04 +0200
> From: Andreas Eversberg <andreas@eversberg.eu>
>
> The size of receive buffer pointer was used to get size of
> receive buffer instead of recvbuf_size itself, so only 4/8
> bytes could be transfered.
>
> This is a regression to 2.6.30 introduced by commit 8c90e11e3543d7de612194a042a148caeaab5f1d
> mISDN: Use kernel_{send,recv}msg instead of open coding
>
> Signed-off-by: Andreas Eversberg <andreas@eversberg.eu>
> Signed-off-by: Karsten Keil <keil@b1-systems.de>
Applied to net-2.6, thanks.
^ permalink raw reply
* Re: [PATCH 0/1] mISDN: Fix handling of receive buffer size in L1oIP
From: David Miller @ 2009-08-02 20:02 UTC (permalink / raw)
To: keil; +Cc: torvalds, linux-kernel, netdev, i4ldeveloper, andreas, acme
In-Reply-To: <cover.1248781021.git.keil@b1-systems.de>
From: Karsten Keil <keil@b1-systems.de>
Date: Tue, 28 Jul 2009 13:37:01 +0200
> This patch fix a regression introduced in 2.6.31 with the commit
> 8c90e11e3543d7de612194a042a148caeaab5f1d "mISDN: Use kernel_{send,recv}msg instead of open coding".
>
> Linus: you can pull the fix from
> git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6-net-next for_linus
>
> David for net-next-2.6 you can get it from:
> git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6-net-next for_david
Karsten, please don't send fix incusion requests like this. Either
send them via me always, or bypass me and go straight to Linus
always.
Asking two people to pull the fix in via two different means only
will make for confusion.
If it's a fix, get it into net-2.6 via me, otherwise submit it to
net-next-2.6 if it is not an important fix. Sending it to Linus
and my net-next-2.6 at the same time makes %100 no sense. One
tree is for fixes, and the other is for new development.
If you're worried about fixes propagating and merging properly,
I take care of that completely. When a fix gets into net-2.6
eventually I will merge net-2.6 into net-next-2.6 and that's how
it will show up there. If there is a dependency on new work that
this fix creates, tell me, and I'll do the merge more quickly
for you.
^ 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