* Re: [PATCH] can: ti_hecc: Fix unintialized variable
From: David Miller @ 2011-08-26 16:51 UTC (permalink / raw)
To: abhilash.kv; +Cc: netdev, wg, linux-kernel, =linux-omap
In-Reply-To: <1314104748-16424-1-git-send-email-abhilash.kv@ti.com>
From: Abhilash K V <abhilash.kv@ti.com>
Date: Tue, 23 Aug 2011 18:35:48 +0530
> In ti_hecc_xmit(), local variable "data" is not initialized before
> being used.
> This initialization got inadvertently removed in the following patch:
>
> can: Unify droping of invalid tx skbs and netdev stats
>
> Acked-by: Anant Gole <anantgole@ti.com>
> Signed-off-by: Abhilash K V <abhilash.kv@ti.com>
Applied.
^ permalink raw reply
* Re: [PATCH] can: ti_hecc: Fix uninitialized spinlock in probe
From: David Miller @ 2011-08-26 16:51 UTC (permalink / raw)
To: abhilash.kv; +Cc: netdev, wg, linux-kernel, =linux-omap
In-Reply-To: <1314104757-16462-1-git-send-email-abhilash.kv@ti.com>
From: Abhilash K V <abhilash.kv@ti.com>
Date: Tue, 23 Aug 2011 18:35:57 +0530
> In ti_hecc_probe(), the spinlock priv->mbx_lock is not
> inited, causing a spinlock lockup BUG.
>
> Acked-by: Anant Gole <anantgole@ti.com>
> Signed-off-by: Abhilash K V <abhilash.kv@ti.com>
Applied.
^ permalink raw reply
* Re: [PATCH] net/phy: fix DP83865 phy interrupt handler
From: David Miller @ 2011-08-26 16:50 UTC (permalink / raw)
To: peppe.cavallaro; +Cc: netdev, tshu
In-Reply-To: <1314083234-20361-1-git-send-email-peppe.cavallaro@st.com>
From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Tue, 23 Aug 2011 09:07:14 +0200
> According to the DP83865 datasheet we need to clear
> the interrupt status bit by writing a 1 to the
> corresponding bit in INT_CLEAR (2:0 are reserved).
>
> Proposed and tested by Thorsten.
>
> Signed-off-by: Thorsten Schubert <tshu@msc-ge.com>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Applied.
^ permalink raw reply
* Re: [PATCH] net: sh_eth: fix the compile error
From: David Miller @ 2011-08-26 16:50 UTC (permalink / raw)
To: yoshihiro.shimoda.uh; +Cc: netdev, linux-sh
In-Reply-To: <4E537249.8050806@renesas.com>
From: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date: Tue, 23 Aug 2011 18:26:33 +0900
> Fix the following build error:
>
> CC drivers/net/sh_eth.o
> drivers/net/sh_eth.c:1115: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘sh_eth_interrupt’
> drivers/net/sh_eth.c: In function ‘sh_eth_open’:
> drivers/net/sh_eth.c:1387: error: implicit declaration of function ‘request_irq’
> drivers/net/sh_eth.c:1387: error: ‘sh_eth_interrupt’ undeclared (first use in this function)
> drivers/net/sh_eth.c:1387: error: (Each undeclared identifier is reported only once
> drivers/net/sh_eth.c:1387: error: for each function it appears in.)
> drivers/net/sh_eth.c:1391: error: ‘IRQF_SHARED’ undeclared (first use in this function)
> drivers/net/sh_eth.c:1424: error: implicit declaration of function ‘free_irq’
> make[2]: *** [drivers/net/sh_eth.o] Error 1
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Applied.
^ permalink raw reply
* Re: [PATCH] netpoll: fix incorrect access to skb data in __netpoll_rx
From: David Miller @ 2011-08-26 16:50 UTC (permalink / raw)
To: eric.dumazet; +Cc: netdev
In-Reply-To: <1314375975.2563.8.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri, 26 Aug 2011 18:26:15 +0200
> __netpoll_rx() doesnt properly handle skbs with small header
>
> pskb_may_pull() or pskb_trim_rcsum() can change skb->data, we must
> reload it.
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Applied, thanks Eric.
^ permalink raw reply
* Re: [RFT PATCH v3 00/12] Cleanup and extension of netdev features
From: David Miller @ 2011-08-26 16:47 UTC (permalink / raw)
To: greearb; +Cc: mirq-linux, netdev, bhutchings
In-Reply-To: <4E57CD27.8090500@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
Date: Fri, 26 Aug 2011 09:43:19 -0700
> On 08/26/2011 09:41 AM, David Miller wrote:
>> From: Ben Greear<greearb@candelatech.com>
>> Date: Thu, 25 Aug 2011 12:04:40 -0700
>>
>>> On 06/22/2011 09:04 AM, Michał Mirosław wrote:
>>>> v3 of a feature handling cleanup and extension series. For testing,
>>>> you
>>>> might want user-space ethtool patched with:
>>>>
>>>> http://patchwork.ozlabs.org/patch/96374/
>>>
>>> It looks like this is not in net-next yet...any hope of this
>>> going in soon?
>>
>> Why would it go into net-next? It's not a kernel patch, it's a patch
>> for the ethool userland utility.
>
> I meant the kernel bits in that patch series, not the link.
It's possible that if you go look at the threads about those kernel
patches you're find out the reason.
^ permalink raw reply
* Re: [RFT PATCH v3 00/12] Cleanup and extension of netdev features
From: Ben Greear @ 2011-08-26 16:43 UTC (permalink / raw)
To: David Miller; +Cc: mirq-linux, netdev, bhutchings
In-Reply-To: <20110826.124107.1302583595703798441.davem@davemloft.net>
On 08/26/2011 09:41 AM, David Miller wrote:
> From: Ben Greear<greearb@candelatech.com>
> Date: Thu, 25 Aug 2011 12:04:40 -0700
>
>> On 06/22/2011 09:04 AM, Michał Mirosław wrote:
>>> v3 of a feature handling cleanup and extension series. For testing,
>>> you
>>> might want user-space ethtool patched with:
>>>
>>> http://patchwork.ozlabs.org/patch/96374/
>>
>> It looks like this is not in net-next yet...any hope of this
>> going in soon?
>
> Why would it go into net-next? It's not a kernel patch, it's a patch
> for the ethool userland utility.
I meant the kernel bits in that patch series, not the link.
Sorry for not snipping enough.
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Re: [RFT PATCH v3 00/12] Cleanup and extension of netdev features
From: David Miller @ 2011-08-26 16:41 UTC (permalink / raw)
To: greearb; +Cc: mirq-linux, netdev, bhutchings
In-Reply-To: <4E569CC8.9040605@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
Date: Thu, 25 Aug 2011 12:04:40 -0700
> On 06/22/2011 09:04 AM, Michał Mirosław wrote:
>> v3 of a feature handling cleanup and extension series. For testing,
>> you
>> might want user-space ethtool patched with:
>>
>> http://patchwork.ozlabs.org/patch/96374/
>
> It looks like this is not in net-next yet...any hope of this
> going in soon?
Why would it go into net-next? It's not a kernel patch, it's a patch
for the ethool userland utility.
^ permalink raw reply
* Re: bridge: accept bridge own MAC address as local
From: Stephen Hemminger @ 2011-08-26 16:42 UTC (permalink / raw)
To: David Miller; +Cc: ulrich.weber, netdev
In-Reply-To: <20110826.122917.294108473242938413.davem@davemloft.net>
On Fri, 26 Aug 2011 12:29:17 -0400 (EDT)
David Miller <davem@davemloft.net> wrote:
> From: Ulrich Weber <ulrich.weber@sophos.com>
> Date: Fri, 12 Aug 2011 13:30:24 +0200
>
> > bridge: accept bridge own MAC address as local
> > if MAC address of bridge is manually set (BR_SET_MAC_ADDR). Otherwise
> > only MAC addresses of bridge members will work if manually set.
> >
> > Signed-off-by: Ulrich Weber <ulrich.weber@sophos.com>
>
> As Stephen mentioned, the real bug is that we don't create a local
> FDB entry (and get rid of the old one) when the MAC address changes.
> --
> 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
Another alternative is going back to restricting the mac address of
the bridge to be the same as one of the existing ports. This was how
it used to be, but some people wanted to set arbitrary addresses
(probably to deal with start up ordering issues).
^ permalink raw reply
* Re: [PATCH net-next 1/1] af_packet: Prefixed tpacket_v3 structs to avoid name space collision
From: David Miller @ 2011-08-26 16:39 UTC (permalink / raw)
To: loke.chetan; +Cc: netdev
In-Reply-To: <1314305010-1154-1-git-send-email-loke.chetan@gmail.com>
From: Chetan Loke <loke.chetan@gmail.com>
Date: Thu, 25 Aug 2011 16:43:30 -0400
> structs introduced in tpacket_v3 implementation are prefixed with 'tpacket'
> to avoid namespace collision.
>
> Compile tested.
>
> Signed-off-by: Chetan Loke <loke.chetan@gmail.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH 0/9] skb fragment API: convert non-network drivers
From: David Miller @ 2011-08-26 16:39 UTC (permalink / raw)
To: Ian.Campbell; +Cc: netdev, linux-atm-general, linux-rdma, linux-scsi, devel
In-Reply-To: <1314260881.10283.48.camel@zakaz.uk.xensource.com>
From: Ian Campbell <Ian.Campbell@citrix.com>
Date: Thu, 25 Aug 2011 09:28:01 +0100
> The following series converts some non-network drivers to the SKB pages
> fragment API introduced in 131ea6675c76. Included are ATM, Infiniband,
> and FibreChannel. I also included the broadcom network drivers since I
> was touching the related FC driver.
>
> This is part of my series to enable visibility into SKB paged fragment's
> lifecycles, [0] contains some more background and rationale but
> basically the completed series will allow entities which inject pages
> into the networking stack to receive a notification when the stack has
> really finished with those pages (i.e. including retransmissions,
> clones, pull-ups etc) and not just when the original skb is finished
> with, which is beneficial to many subsystems which wish to inject pages
> into the network stack without giving up full ownership of those page's
> lifecycle. It implements something broadly along the lines of what was
> described in [1].
All applied, thanks Ian.
^ permalink raw reply
* Re: pull request: wireless 2011-08-26
From: David Miller @ 2011-08-26 16:36 UTC (permalink / raw)
To: linville-2XuSBdqkA4R54TAoqtyWWQ
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20110826151758.GH2579-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
From: "John W. Linville" <linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Date: Fri, 26 Aug 2011 11:17:58 -0400
> Here is a round of fixes intended for 3.1...
>
> The biggest portion are Bluetooth fixes. Gustavo describes them
> thusly:
>
> Some fixes for 3.1! It looks a lot of fixes but some of them
> are the same fix applied to different files. Here we have a
> fix for a wrong timer value from Chen Ganir, a lock balance
> fix from Dan Carpenter, regression fix with the HCI Reset
> command from Szymon Janc, a fix to not show error messages on
> btusb device disconnect from Paul Bolle. Support for Toshiba
> AR30XX from Ricardo Mendoza. And finally a bunch of fixes
> from Peter Hurley, there are some lost wake up, deadlocks and
> memort leaks fixes. Most of them fixes regressions introduced
> by the move to the kthread API.
>
> In addition, we have a locking fix for carl9170, a bcma fix to enable
> driver loading via udev, a wl12xx fix to properly advertise the
> maximum number of SSIDs for scanning, another wl12xx fix to properly
> check a return code in order to avoid a possible oops, and a third
> wl12xx fix to remove a broken testmode function with locking problems
> (among others). Also included is a suspend/resume fix for ath9k,
> a fix for reading improper MAC addresses on ath9k, a suspend/resume
> fix for mac80211, and a suspend/resume fix for rt2x00 as well.
Pulled, thanks John!
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: bridge: accept bridge own MAC address as local
From: David Miller @ 2011-08-26 16:29 UTC (permalink / raw)
To: ulrich.weber; +Cc: netdev
In-Reply-To: <20110812113024.GA8900@babylon>
From: Ulrich Weber <ulrich.weber@sophos.com>
Date: Fri, 12 Aug 2011 13:30:24 +0200
> bridge: accept bridge own MAC address as local
> if MAC address of bridge is manually set (BR_SET_MAC_ADDR). Otherwise
> only MAC addresses of bridge members will work if manually set.
>
> Signed-off-by: Ulrich Weber <ulrich.weber@sophos.com>
As Stephen mentioned, the real bug is that we don't create a local
FDB entry (and get rid of the old one) when the MAC address changes.
^ permalink raw reply
* [PATCH] netpoll: fix incorrect access to skb data in __netpoll_rx
From: Eric Dumazet @ 2011-08-26 16:26 UTC (permalink / raw)
To: David Miller; +Cc: netdev
__netpoll_rx() doesnt properly handle skbs with small header
pskb_may_pull() or pskb_trim_rcsum() can change skb->data, we must
reload it.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
---
net/core/netpoll.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index adf84dd..5262251 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -558,13 +558,14 @@ int __netpoll_rx(struct sk_buff *skb)
if (skb_shared(skb))
goto out;
- iph = (struct iphdr *)skb->data;
if (!pskb_may_pull(skb, sizeof(struct iphdr)))
goto out;
+ iph = (struct iphdr *)skb->data;
if (iph->ihl < 5 || iph->version != 4)
goto out;
if (!pskb_may_pull(skb, iph->ihl*4))
goto out;
+ iph = (struct iphdr *)skb->data;
if (ip_fast_csum((u8 *)iph, iph->ihl) != 0)
goto out;
@@ -579,6 +580,7 @@ int __netpoll_rx(struct sk_buff *skb)
if (pskb_trim_rcsum(skb, len))
goto out;
+ iph = (struct iphdr *)skb->data;
if (iph->protocol != IPPROTO_UDP)
goto out;
^ permalink raw reply related
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: David Miller @ 2011-08-26 16:20 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <20110826.120451.1765083060493659307.davem@davemloft.net>
From: David Miller <davem@davemloft.net>
Date: Fri, 26 Aug 2011 12:04:51 -0400 (EDT)
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Fri, 26 Aug 2011 16:42:48 +0100
>
>> This #define is in the #ifdef __KERNEL__ section. I don't want t
>> change all the in-kernel users to say __kernel_sockaddr. This is
>> just the same as the preceding 'typedef __kernel_sa_family_t
>> sa_family_t' except that you can't create struct aliases that way.
>
> Aha, I didn't catch that part. Then this is fine, thanks for
> explaining Ben.
Actually, this patch breaks the build, specifically of ifenslave.c
I'll leave the other patches in, but you'll need to respin this one.
Documentation/networking/ifenslave.c: In function ‘if_getconfig’:
Documentation/networking/ifenslave.c:553:11: error: incompatible types when assigning to type ‘struct sockaddr’ from type ‘struct __kernel_sockaddr’
Documentation/networking/ifenslave.c:559:13: error: incompatible types when assigning to type ‘struct sockaddr’ from type ‘struct __kernel_sockaddr’
Documentation/networking/ifenslave.c:565:11: error: incompatible types when assigning to type ‘struct sockaddr’ from type ‘struct __kernel_sockaddr’
Documentation/networking/ifenslave.c: In function ‘enslave’:
Documentation/networking/ifenslave.c:727:13: warning: passing argument 2 of ‘set_slave_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:230:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
Documentation/networking/ifenslave.c:772:6: warning: passing argument 2 of ‘set_master_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:229:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
Documentation/networking/ifenslave.c:817:2: warning: passing argument 2 of ‘set_master_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:229:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
Documentation/networking/ifenslave.c:821:2: warning: passing argument 2 of ‘set_slave_hwaddr’ from incompatible pointer type
Documentation/networking/ifenslave.c:230:12: note: expected ‘struct sockaddr *’ but argument is of type ‘struct __kernel_sockaddr *’
make[2]: *** [Documentation/networking/ifenslave] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [Documentation/networking] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [vmlinux] Error 2
^ permalink raw reply
* Re: [PATCH 3/9] stmmac: add MMC supports exported via debugfs.
From: David Miller @ 2011-08-26 16:12 UTC (permalink / raw)
To: peppe.cavallaro; +Cc: netdev
In-Reply-To: <1314259229-13767-4-git-send-email-peppe.cavallaro@st.com>
From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Thu, 25 Aug 2011 10:00:23 +0200
> This patch adds the MMC management counters support.
> MMC module is an extension of the register address
> space and all the hardware counters can be accessed
> via debugfs.
> Below an example of the output:
This is not the appropriate way to expose internal chip counters.
Please use ethtool statistics for this.
^ permalink raw reply
* Re: [PATCH net-next v2 00/10] Fix net header dependencies
From: David Miller @ 2011-08-26 16:09 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <1314247131.27179.116.camel@deadeye>
From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 25 Aug 2011 05:38:44 +0100
> Various networking headers depend on definitions from others which they
> don't include. We can't fix all of these, because some definitions are
> duplicated between kernel headers and glibc headers and we cannot tell
> which is the right one to include. We also have to be wary of
> introducing a dependency cycle.
>
> Since v1, I've dropped the patches to <linux/scc.h> and <linux/if_ppp.h>
> and added the acknowledgements I got last time.
All applied, thanks!
^ permalink raw reply
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: David Miller @ 2011-08-26 16:04 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <20110826154248.GD24107@decadent.org.uk>
From: Ben Hutchings <ben@decadent.org.uk>
Date: Fri, 26 Aug 2011 16:42:48 +0100
> This #define is in the #ifdef __KERNEL__ section. I don't want t
> change all the in-kernel users to say __kernel_sockaddr. This is
> just the same as the preceding 'typedef __kernel_sa_family_t
> sa_family_t' except that you can't create struct aliases that way.
Aha, I didn't catch that part. Then this is fine, thanks for
explaining Ben.
^ permalink raw reply
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: Ben Hutchings @ 2011-08-26 15:42 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20110826.110820.2220935212459386472.davem@davemloft.net>
On Fri, Aug 26, 2011 at 11:08:20AM -0400, David Miller wrote:
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Thu, 25 Aug 2011 05:44:15 +0100
>
> > Commit 9c501935a3cdcf6b1d35aaee3aa11c7a7051a305 ('net: Support
> > inclusion of <linux/socket.h> before <sys/socket.h>') removed the
> > definition of struct sockaddr for userland.
> >
> > But we still have several headers using struct sockaddr, and we
> > shouldn't make them include <sys/socket.h> as that risks recursive
> > inclusion in future. Define and use an identical struct
> > __kernel_sockaddr instead.
> >
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ...
> >
> > -/*
> > - * 1003.1g requires sa_family_t and that sa_data is char.
> > - */
> > +#define sockaddr __kernel_sockaddr
>
> This cure is worse than the disease.
>
> Now any application that includes sys/socket.h one way or another is
> now going to get a real hard build failure since __kernel_sockaddr
> will effectively get redefined.
[...]
This #define is in the #ifdef __KERNEL__ section. I don't want t
change all the in-kernel users to say __kernel_sockaddr. This is
just the same as the preceding 'typedef __kernel_sa_family_t
sa_family_t' except that you can't create struct aliases that way.
Ben.
--
Ben Hutchings
We get into the habit of living before acquiring the habit of thinking.
- Albert Camus
^ permalink raw reply
* pull request: wireless 2011-08-26
From: John W. Linville @ 2011-08-26 15:17 UTC (permalink / raw)
To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
Dave,
Here is a round of fixes intended for 3.1...
The biggest portion are Bluetooth fixes. Gustavo describes them
thusly:
Some fixes for 3.1! It looks a lot of fixes but some of them
are the same fix applied to different files. Here we have a
fix for a wrong timer value from Chen Ganir, a lock balance
fix from Dan Carpenter, regression fix with the HCI Reset
command from Szymon Janc, a fix to not show error messages on
btusb device disconnect from Paul Bolle. Support for Toshiba
AR30XX from Ricardo Mendoza. And finally a bunch of fixes
from Peter Hurley, there are some lost wake up, deadlocks and
memort leaks fixes. Most of them fixes regressions introduced
by the move to the kthread API.
In addition, we have a locking fix for carl9170, a bcma fix to enable
driver loading via udev, a wl12xx fix to properly advertise the
maximum number of SSIDs for scanning, another wl12xx fix to properly
check a return code in order to avoid a possible oops, and a third
wl12xx fix to remove a broken testmode function with locking problems
(among others). Also included is a suspend/resume fix for ath9k,
a fix for reading improper MAC addresses on ath9k, a suspend/resume
fix for mac80211, and a suspend/resume fix for rt2x00 as well.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit bc909d9ddbf7778371e36a651d6e4194b1cc7d4c:
sendmmsg/sendmsg: fix unsafe user pointer access (2011-08-24 19:45:03 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git for-davem
Alexey Khoroshilov (1):
carl9170: Fix mismatch in carl9170_op_set_key mutex lock-unlock
Chen Ganir (1):
Bluetooth: Fixed wrong L2CAP Sock timer value
Dan Carpenter (1):
Bluetooth: unlock if allocation fails in hci_blacklist_add()
David Woodhouse (1):
bcma: add uevent to the bus, to autoload drivers
Ido Yariv (2):
wl12xx: Remove obsolete testmode NVS push command
wl12xx: Fix validation of pm_runtime_get_sync return value
John W. Linville (2):
Merge branch 'master' of master.kernel.org:/.../padovan/bluetooth
Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem
Luciano Coelho (1):
wl12xx: add max_sched_scan_ssids value to the hw description
Mohammed Shafi Shajakhan (1):
ath9k: Fix PS wrappers in ath9k_set_coverage_class
Paul Bolle (1):
Bluetooth: btusb: be quiet on device disconnect
Peter Hurley (15):
Bluetooth: rfcomm: Remove unnecessary krfcommd event
Bluetooth: rfcomm: Fix lost wakeups waiting to accept socket
Bluetooth: Fix lost wakeups waiting for sock state change
Bluetooth: l2cap: Fix lost wakeups waiting to accept socket
Bluetooth: sco: Fix lost wakeups waiting to accept socket
Bluetooth: bnep: Fix lost wakeup of session thread
Bluetooth: cmtp: Fix lost wakeup of session thread
Bluetooth: l2cap: Fix lost wakeup waiting for ERTM acks
Bluetooth: bnep: Fix deadlock in session deletion
Bluetooth: cmtp: Fix deadlock in session deletion
Bluetooth: hidp: Fix session cleanup on failed conn add
Bluetooth: hidp: Fix memory leak of cached report descriptor
Bluetooth: hidp: Only free input device if failed register
Bluetooth: hidp: Don't release device ref if never held
Bluetooth: cmtp: Fix session cleanup on failed conn add
Ricardo Mendoza (1):
Bluetooth: Add Toshiba laptops AR30XX device ID
Senthil Balasubramanian (1):
ath9k_hw: Fix STA (AR9485) bringup issue due to incorrect MAC address
Stanislaw Gruszka (2):
mac80211: fix suspend/resume races with unregister hw
rt2x00: do not drop usb dev reference counter on suspend
Szymon Janc (1):
Bluetooth: Don't use cmd_timer to timeout HCI reset command
drivers/bcma/main.c | 12 ++++++
drivers/bluetooth/ath3k.c | 1 +
drivers/bluetooth/btusb.c | 13 +++++--
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/main.c | 4 ++
drivers/net/wireless/ath/carl9170/main.c | 4 ++-
drivers/net/wireless/rt2x00/rt2x00usb.c | 14 +-------
drivers/net/wireless/wl12xx/main.c | 1 +
drivers/net/wireless/wl12xx/sdio.c | 2 +-
drivers/net/wireless/wl12xx/testmode.c | 45 ------------------------
include/net/cfg80211.h | 3 ++
net/bluetooth/af_bluetooth.c | 6 ++--
net/bluetooth/bnep/bnep.h | 1 +
net/bluetooth/bnep/core.c | 13 ++++---
net/bluetooth/cmtp/capi.c | 3 +-
net/bluetooth/cmtp/cmtp.h | 1 +
net/bluetooth/cmtp/core.c | 20 ++++++----
net/bluetooth/hci_core.c | 8 +++--
net/bluetooth/hidp/core.c | 19 +++++-----
net/bluetooth/l2cap_core.c | 6 ++--
net/bluetooth/l2cap_sock.c | 30 ++++++++--------
net/bluetooth/rfcomm/core.c | 17 ++++-----
net/bluetooth/rfcomm/sock.c | 28 +++++++-------
net/bluetooth/sco.c | 28 +++++++-------
net/mac80211/main.c | 2 +-
net/wireless/core.c | 7 ++++
net/wireless/sysfs.c | 6 ++-
27 files changed, 143 insertions(+), 153 deletions(-)
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c
index 873e2e4..73b7b1a 100644
--- a/drivers/bcma/main.c
+++ b/drivers/bcma/main.c
@@ -15,6 +15,7 @@ MODULE_LICENSE("GPL");
static int bcma_bus_match(struct device *dev, struct device_driver *drv);
static int bcma_device_probe(struct device *dev);
static int bcma_device_remove(struct device *dev);
+static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env);
static ssize_t manuf_show(struct device *dev, struct device_attribute *attr, char *buf)
{
@@ -49,6 +50,7 @@ static struct bus_type bcma_bus_type = {
.match = bcma_bus_match,
.probe = bcma_device_probe,
.remove = bcma_device_remove,
+ .uevent = bcma_device_uevent,
.dev_attrs = bcma_device_attrs,
};
@@ -227,6 +229,16 @@ static int bcma_device_remove(struct device *dev)
return 0;
}
+static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+ struct bcma_device *core = container_of(dev, struct bcma_device, dev);
+
+ return add_uevent_var(env,
+ "MODALIAS=bcma:m%04Xid%04Xrev%02Xcl%02X",
+ core->id.manuf, core->id.id,
+ core->id.rev, core->id.class);
+}
+
static int __init bcma_modinit(void)
{
int err;
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index a585473..db7cb81 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -63,6 +63,7 @@ static struct usb_device_id ath3k_table[] = {
/* Atheros AR3011 with sflash firmware*/
{ USB_DEVICE(0x0CF3, 0x3002) },
{ USB_DEVICE(0x13d3, 0x3304) },
+ { USB_DEVICE(0x0930, 0x0215) },
/* Atheros AR9285 Malbec with sflash firmware */
{ USB_DEVICE(0x03F0, 0x311D) },
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 91d13a9..3ef4760 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -106,6 +106,7 @@ static struct usb_device_id blacklist_table[] = {
/* Atheros 3011 with sflash firmware */
{ USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
{ USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
+ { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
/* Atheros AR9285 Malbec with sflash firmware */
{ USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
@@ -256,7 +257,9 @@ static void btusb_intr_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- if (err != -EPERM)
+ /* -EPERM: urb is being killed;
+ * -ENODEV: device got disconnected */
+ if (err != -EPERM && err != -ENODEV)
BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
@@ -341,7 +344,9 @@ static void btusb_bulk_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- if (err != -EPERM)
+ /* -EPERM: urb is being killed;
+ * -ENODEV: device got disconnected */
+ if (err != -EPERM && err != -ENODEV)
BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
@@ -431,7 +436,9 @@ static void btusb_isoc_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- if (err != -EPERM)
+ /* -EPERM: urb is being killed;
+ * -ENODEV: device got disconnected */
+ if (err != -EPERM && err != -ENODEV)
BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index c34bef1..1b94003 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -69,7 +69,7 @@ static int ar9003_hw_power_interpolate(int32_t x,
static const struct ar9300_eeprom ar9300_default = {
.eepromVersion = 2,
.templateVersion = 2,
- .macAddr = {1, 2, 3, 4, 5, 6},
+ .macAddr = {0, 2, 3, 4, 5, 6},
.custData = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
.baseEepHeader = {
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 9098aaa..6530694 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -2283,7 +2283,11 @@ static void ath9k_set_coverage_class(struct ieee80211_hw *hw, u8 coverage_class)
mutex_lock(&sc->mutex);
ah->coverage_class = coverage_class;
+
+ ath9k_ps_wakeup(sc);
ath9k_hw_init_global_settings(ah);
+ ath9k_ps_restore(sc);
+
mutex_unlock(&sc->mutex);
}
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
index 0122930..0474e663 100644
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
@@ -1066,8 +1066,10 @@ static int carl9170_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
* the high througput speed in 802.11n networks.
*/
- if (!is_main_vif(ar, vif))
+ if (!is_main_vif(ar, vif)) {
+ mutex_lock(&ar->mutex);
goto err_softw;
+ }
/*
* While the hardware supports *catch-all* key, for offloading
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 7fbb55c..1e31050 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -871,18 +871,8 @@ int rt2x00usb_suspend(struct usb_interface *usb_intf, pm_message_t state)
{
struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
struct rt2x00_dev *rt2x00dev = hw->priv;
- int retval;
-
- retval = rt2x00lib_suspend(rt2x00dev, state);
- if (retval)
- return retval;
- /*
- * Decrease usbdev refcount.
- */
- usb_put_dev(interface_to_usbdev(usb_intf));
-
- return 0;
+ return rt2x00lib_suspend(rt2x00dev, state);
}
EXPORT_SYMBOL_GPL(rt2x00usb_suspend);
@@ -891,8 +881,6 @@ int rt2x00usb_resume(struct usb_interface *usb_intf)
struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
struct rt2x00_dev *rt2x00dev = hw->priv;
- usb_get_dev(interface_to_usbdev(usb_intf));
-
return rt2x00lib_resume(rt2x00dev);
}
EXPORT_SYMBOL_GPL(rt2x00usb_resume);
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
index e58c22d..b70ae40 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -4283,6 +4283,7 @@ int wl1271_init_ieee80211(struct wl1271 *wl)
wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_ADHOC) | BIT(NL80211_IFTYPE_AP);
wl->hw->wiphy->max_scan_ssids = 1;
+ wl->hw->wiphy->max_sched_scan_ssids = 1;
/*
* Maximum length of elements in scanning probe request templates
* should be the maximum length possible for a template, without
diff --git a/drivers/net/wireless/wl12xx/sdio.c b/drivers/net/wireless/wl12xx/sdio.c
index 5cf18c2..fb1fd5a 100644
--- a/drivers/net/wireless/wl12xx/sdio.c
+++ b/drivers/net/wireless/wl12xx/sdio.c
@@ -164,7 +164,7 @@ static int wl1271_sdio_power_on(struct wl1271 *wl)
/* If enabled, tell runtime PM not to power off the card */
if (pm_runtime_enabled(&func->dev)) {
ret = pm_runtime_get_sync(&func->dev);
- if (ret)
+ if (ret < 0)
goto out;
} else {
/* Runtime PM is disabled: power up the card manually */
diff --git a/drivers/net/wireless/wl12xx/testmode.c b/drivers/net/wireless/wl12xx/testmode.c
index 88add68..4ae8eff 100644
--- a/drivers/net/wireless/wl12xx/testmode.c
+++ b/drivers/net/wireless/wl12xx/testmode.c
@@ -36,7 +36,6 @@ enum wl1271_tm_commands {
WL1271_TM_CMD_TEST,
WL1271_TM_CMD_INTERROGATE,
WL1271_TM_CMD_CONFIGURE,
- WL1271_TM_CMD_NVS_PUSH,
WL1271_TM_CMD_SET_PLT_MODE,
WL1271_TM_CMD_RECOVER,
@@ -190,48 +189,6 @@ static int wl1271_tm_cmd_configure(struct wl1271 *wl, struct nlattr *tb[])
return 0;
}
-static int wl1271_tm_cmd_nvs_push(struct wl1271 *wl, struct nlattr *tb[])
-{
- int ret = 0;
- size_t len;
- void *buf;
-
- wl1271_debug(DEBUG_TESTMODE, "testmode cmd nvs push");
-
- if (!tb[WL1271_TM_ATTR_DATA])
- return -EINVAL;
-
- buf = nla_data(tb[WL1271_TM_ATTR_DATA]);
- len = nla_len(tb[WL1271_TM_ATTR_DATA]);
-
- mutex_lock(&wl->mutex);
-
- kfree(wl->nvs);
-
- if ((wl->chip.id == CHIP_ID_1283_PG20) &&
- (len != sizeof(struct wl128x_nvs_file)))
- return -EINVAL;
- else if (len != sizeof(struct wl1271_nvs_file))
- return -EINVAL;
-
- wl->nvs = kzalloc(len, GFP_KERNEL);
- if (!wl->nvs) {
- wl1271_error("could not allocate memory for the nvs file");
- ret = -ENOMEM;
- goto out;
- }
-
- memcpy(wl->nvs, buf, len);
- wl->nvs_len = len;
-
- wl1271_debug(DEBUG_TESTMODE, "testmode pushed nvs");
-
-out:
- mutex_unlock(&wl->mutex);
-
- return ret;
-}
-
static int wl1271_tm_cmd_set_plt_mode(struct wl1271 *wl, struct nlattr *tb[])
{
u32 val;
@@ -288,8 +245,6 @@ int wl1271_tm_cmd(struct ieee80211_hw *hw, void *data, int len)
return wl1271_tm_cmd_interrogate(wl, tb);
case WL1271_TM_CMD_CONFIGURE:
return wl1271_tm_cmd_configure(wl, tb);
- case WL1271_TM_CMD_NVS_PUSH:
- return wl1271_tm_cmd_nvs_push(wl, tb);
case WL1271_TM_CMD_SET_PLT_MODE:
return wl1271_tm_cmd_set_plt_mode(wl, tb);
case WL1271_TM_CMD_RECOVER:
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index d17f47f..408ae48 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1865,6 +1865,9 @@ struct wiphy {
* you need use set_wiphy_dev() (see below) */
struct device dev;
+ /* protects ->resume, ->suspend sysfs callbacks against unregister hw */
+ bool registered;
+
/* dir in debugfs: ieee80211/<wiphyname> */
struct dentry *debugfsdir;
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
index 8add9b4..117e0d1 100644
--- a/net/bluetooth/af_bluetooth.c
+++ b/net/bluetooth/af_bluetooth.c
@@ -494,9 +494,8 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
BT_DBG("sk %p", sk);
add_wait_queue(sk_sleep(sk), &wait);
+ set_current_state(TASK_INTERRUPTIBLE);
while (sk->sk_state != state) {
- set_current_state(TASK_INTERRUPTIBLE);
-
if (!timeo) {
err = -EINPROGRESS;
break;
@@ -510,12 +509,13 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
release_sock(sk);
timeo = schedule_timeout(timeo);
lock_sock(sk);
+ set_current_state(TASK_INTERRUPTIBLE);
err = sock_error(sk);
if (err)
break;
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
return err;
}
diff --git a/net/bluetooth/bnep/bnep.h b/net/bluetooth/bnep/bnep.h
index 8e6c061..e7ee531 100644
--- a/net/bluetooth/bnep/bnep.h
+++ b/net/bluetooth/bnep/bnep.h
@@ -155,6 +155,7 @@ struct bnep_session {
unsigned int role;
unsigned long state;
unsigned long flags;
+ atomic_t terminate;
struct task_struct *task;
struct ethhdr eh;
diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c
index ca39fcf..d9edfe8 100644
--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -484,9 +484,11 @@ static int bnep_session(void *arg)
init_waitqueue_entry(&wait, current);
add_wait_queue(sk_sleep(sk), &wait);
- while (!kthread_should_stop()) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
+ if (atomic_read(&s->terminate))
+ break;
/* RX */
while ((skb = skb_dequeue(&sk->sk_receive_queue))) {
skb_orphan(skb);
@@ -504,7 +506,7 @@ static int bnep_session(void *arg)
schedule();
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
/* Cleanup session */
@@ -640,9 +642,10 @@ int bnep_del_connection(struct bnep_conndel_req *req)
down_read(&bnep_session_sem);
s = __bnep_get_session(req->dst);
- if (s)
- kthread_stop(s->task);
- else
+ if (s) {
+ atomic_inc(&s->terminate);
+ wake_up_process(s->task);
+ } else
err = -ENOENT;
up_read(&bnep_session_sem);
diff --git a/net/bluetooth/cmtp/capi.c b/net/bluetooth/cmtp/capi.c
index 040f67b..50f0d13 100644
--- a/net/bluetooth/cmtp/capi.c
+++ b/net/bluetooth/cmtp/capi.c
@@ -386,7 +386,8 @@ static void cmtp_reset_ctr(struct capi_ctr *ctrl)
capi_ctr_down(ctrl);
- kthread_stop(session->task);
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
}
static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_params *rp)
diff --git a/net/bluetooth/cmtp/cmtp.h b/net/bluetooth/cmtp/cmtp.h
index db43b54..c32638d 100644
--- a/net/bluetooth/cmtp/cmtp.h
+++ b/net/bluetooth/cmtp/cmtp.h
@@ -81,6 +81,7 @@ struct cmtp_session {
char name[BTNAMSIZ];
+ atomic_t terminate;
struct task_struct *task;
wait_queue_head_t wait;
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index c5b11af..521baa4 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -292,9 +292,11 @@ static int cmtp_session(void *arg)
init_waitqueue_entry(&wait, current);
add_wait_queue(sk_sleep(sk), &wait);
- while (!kthread_should_stop()) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
+ if (atomic_read(&session->terminate))
+ break;
if (sk->sk_state != BT_CONNECTED)
break;
@@ -307,7 +309,7 @@ static int cmtp_session(void *arg)
schedule();
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
down_write(&cmtp_session_sem);
@@ -380,16 +382,17 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
if (!(session->flags & (1 << CMTP_LOOPBACK))) {
err = cmtp_attach_device(session);
- if (err < 0)
- goto detach;
+ if (err < 0) {
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
+ up_write(&cmtp_session_sem);
+ return err;
+ }
}
up_write(&cmtp_session_sem);
return 0;
-detach:
- cmtp_detach_device(session);
-
unlink:
__cmtp_unlink_session(session);
@@ -414,7 +417,8 @@ int cmtp_del_connection(struct cmtp_conndel_req *req)
skb_queue_purge(&session->transmit);
/* Stop session thread */
- kthread_stop(session->task);
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
} else
err = -ENOENT;
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index ec0bc3f..56943ad 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1209,7 +1209,6 @@ static void hci_cmd_timer(unsigned long arg)
BT_ERR("%s command tx timeout", hdev->name);
atomic_set(&hdev->cmd_cnt, 1);
- clear_bit(HCI_RESET, &hdev->flags);
tasklet_schedule(&hdev->cmd_task);
}
@@ -1327,7 +1326,7 @@ int hci_blacklist_add(struct hci_dev *hdev, bdaddr_t *bdaddr)
entry = kzalloc(sizeof(struct bdaddr_list), GFP_KERNEL);
if (!entry) {
- return -ENOMEM;
+ err = -ENOMEM;
goto err;
}
@@ -2408,7 +2407,10 @@ static void hci_cmd_task(unsigned long arg)
if (hdev->sent_cmd) {
atomic_dec(&hdev->cmd_cnt);
hci_send_frame(skb);
- mod_timer(&hdev->cmd_timer,
+ if (test_bit(HCI_RESET, &hdev->flags))
+ del_timer(&hdev->cmd_timer);
+ else
+ mod_timer(&hdev->cmd_timer,
jiffies + msecs_to_jiffies(HCI_CMD_TIMEOUT));
} else {
skb_queue_head(&hdev->cmd_q, skb);
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 43b4c2d..fb68f34 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -764,6 +764,7 @@ static int hidp_session(void *arg)
up_write(&hidp_session_sem);
+ kfree(session->rd_data);
kfree(session);
return 0;
}
@@ -841,7 +842,8 @@ static int hidp_setup_input(struct hidp_session *session,
err = input_register_device(input);
if (err < 0) {
- hci_conn_put_device(session->conn);
+ input_free_device(input);
+ session->input = NULL;
return err;
}
@@ -1044,8 +1046,12 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
}
err = hid_add_device(session->hid);
- if (err < 0)
- goto err_add_device;
+ if (err < 0) {
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
+ up_write(&hidp_session_sem);
+ return err;
+ }
if (session->input) {
hidp_send_ctrl_message(session,
@@ -1059,12 +1065,6 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
up_write(&hidp_session_sem);
return 0;
-err_add_device:
- hid_destroy_device(session->hid);
- session->hid = NULL;
- atomic_inc(&session->terminate);
- wake_up_process(session->task);
-
unlink:
hidp_del_timer(session);
@@ -1090,7 +1090,6 @@ purge:
failed:
up_write(&hidp_session_sem);
- input_free_device(session->input);
kfree(session);
return err;
}
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 3204ba8..b3bdb48 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -1159,9 +1159,8 @@ int __l2cap_wait_ack(struct sock *sk)
int timeo = HZ/5;
add_wait_queue(sk_sleep(sk), &wait);
- while ((chan->unacked_frames > 0 && chan->conn)) {
- set_current_state(TASK_INTERRUPTIBLE);
-
+ set_current_state(TASK_INTERRUPTIBLE);
+ while (chan->unacked_frames > 0 && chan->conn) {
if (!timeo)
timeo = HZ/5;
@@ -1173,6 +1172,7 @@ int __l2cap_wait_ack(struct sock *sk)
release_sock(sk);
timeo = schedule_timeout(timeo);
lock_sock(sk);
+ set_current_state(TASK_INTERRUPTIBLE);
err = sock_error(sk);
if (err)
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index 5c36b3e..61f1f62 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -235,30 +235,26 @@ static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
- goto done;
- }
-
timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
BT_DBG("sk %p timeo %ld", sk, timeo);
/* Wait for an incoming connection. (wake-one). */
add_wait_queue_exclusive(sk_sleep(sk), &wait);
- while (!(nsk = bt_accept_dequeue(sk, newsock))) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!timeo) {
- err = -EAGAIN;
+
+ if (sk->sk_state != BT_LISTEN) {
+ err = -EBADFD;
break;
}
- release_sock(sk);
- timeo = schedule_timeout(timeo);
- lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
+ nsk = bt_accept_dequeue(sk, newsock);
+ if (nsk)
+ break;
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
+ if (!timeo) {
+ err = -EAGAIN;
break;
}
@@ -266,8 +262,12 @@ static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
err = sock_intr_errno(timeo);
break;
}
+
+ release_sock(sk);
+ timeo = schedule_timeout(timeo);
+ lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
if (err)
@@ -993,7 +993,7 @@ static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int p
INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
sk->sk_destruct = l2cap_sock_destruct;
- sk->sk_sndtimeo = msecs_to_jiffies(L2CAP_CONN_TIMEOUT);
+ sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
sock_reset_flag(sk, SOCK_ZAPPED);
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 5759bb7..5ba3f6d 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -62,7 +62,6 @@ static DEFINE_MUTEX(rfcomm_mutex);
#define rfcomm_lock() mutex_lock(&rfcomm_mutex)
#define rfcomm_unlock() mutex_unlock(&rfcomm_mutex)
-static unsigned long rfcomm_event;
static LIST_HEAD(session_list);
@@ -120,7 +119,6 @@ static inline void rfcomm_schedule(void)
{
if (!rfcomm_thread)
return;
- set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
wake_up_process(rfcomm_thread);
}
@@ -2038,19 +2036,18 @@ static int rfcomm_run(void *unused)
rfcomm_add_listener(BDADDR_ANY);
- while (!kthread_should_stop()) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!test_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event)) {
- /* No pending events. Let's sleep.
- * Incoming connections and data will wake us up. */
- schedule();
- }
- set_current_state(TASK_RUNNING);
+
+ if (kthread_should_stop())
+ break;
/* Process stuff */
- clear_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
rfcomm_process_sessions();
+
+ schedule();
}
+ __set_current_state(TASK_RUNNING);
rfcomm_kill_listener();
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index 8f01e6b..482722b 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -485,11 +485,6 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
lock_sock(sk);
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
- goto done;
- }
-
if (sk->sk_type != SOCK_STREAM) {
err = -EINVAL;
goto done;
@@ -501,19 +496,20 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
/* Wait for an incoming connection. (wake-one). */
add_wait_queue_exclusive(sk_sleep(sk), &wait);
- while (!(nsk = bt_accept_dequeue(sk, newsock))) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!timeo) {
- err = -EAGAIN;
+
+ if (sk->sk_state != BT_LISTEN) {
+ err = -EBADFD;
break;
}
- release_sock(sk);
- timeo = schedule_timeout(timeo);
- lock_sock(sk);
+ nsk = bt_accept_dequeue(sk, newsock);
+ if (nsk)
+ break;
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
+ if (!timeo) {
+ err = -EAGAIN;
break;
}
@@ -521,8 +517,12 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
err = sock_intr_errno(timeo);
break;
}
+
+ release_sock(sk);
+ timeo = schedule_timeout(timeo);
+ lock_sock(sk);
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
if (err)
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 4c3621b..8270f05 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -564,30 +564,26 @@ static int sco_sock_accept(struct socket *sock, struct socket *newsock, int flag
lock_sock(sk);
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
- goto done;
- }
-
timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
BT_DBG("sk %p timeo %ld", sk, timeo);
/* Wait for an incoming connection. (wake-one). */
add_wait_queue_exclusive(sk_sleep(sk), &wait);
- while (!(ch = bt_accept_dequeue(sk, newsock))) {
+ while (1) {
set_current_state(TASK_INTERRUPTIBLE);
- if (!timeo) {
- err = -EAGAIN;
+
+ if (sk->sk_state != BT_LISTEN) {
+ err = -EBADFD;
break;
}
- release_sock(sk);
- timeo = schedule_timeout(timeo);
- lock_sock(sk);
+ ch = bt_accept_dequeue(sk, newsock);
+ if (ch)
+ break;
- if (sk->sk_state != BT_LISTEN) {
- err = -EBADFD;
+ if (!timeo) {
+ err = -EAGAIN;
break;
}
@@ -595,8 +591,12 @@ static int sco_sock_accept(struct socket *sock, struct socket *newsock, int flag
err = sock_intr_errno(timeo);
break;
}
+
+ release_sock(sk);
+ timeo = schedule_timeout(timeo);
+ lock_sock(sk);
}
- set_current_state(TASK_RUNNING);
+ __set_current_state(TASK_RUNNING);
remove_wait_queue(sk_sleep(sk), &wait);
if (err)
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 866f269..acb4423 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -1012,7 +1012,6 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw)
cancel_work_sync(&local->reconfig_filter);
ieee80211_clear_tx_pending(local);
- sta_info_stop(local);
rate_control_deinitialize(local);
if (skb_queue_len(&local->skb_queue) ||
@@ -1024,6 +1023,7 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw)
destroy_workqueue(local->workqueue);
wiphy_unregister(local->hw.wiphy);
+ sta_info_stop(local);
ieee80211_wep_free(local);
ieee80211_led_exit(local);
kfree(local->int_scan_req);
diff --git a/net/wireless/core.c b/net/wireless/core.c
index 645437c..c148651 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -616,6 +616,9 @@ int wiphy_register(struct wiphy *wiphy)
if (res)
goto out_rm_dev;
+ rtnl_lock();
+ rdev->wiphy.registered = true;
+ rtnl_unlock();
return 0;
out_rm_dev:
@@ -647,6 +650,10 @@ void wiphy_unregister(struct wiphy *wiphy)
{
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
+ rtnl_lock();
+ rdev->wiphy.registered = false;
+ rtnl_unlock();
+
rfkill_unregister(rdev->rfkill);
/* protect the device list */
diff --git a/net/wireless/sysfs.c b/net/wireless/sysfs.c
index c6e4ca6..ff57459 100644
--- a/net/wireless/sysfs.c
+++ b/net/wireless/sysfs.c
@@ -93,7 +93,8 @@ static int wiphy_suspend(struct device *dev, pm_message_t state)
if (rdev->ops->suspend) {
rtnl_lock();
- ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan);
+ if (rdev->wiphy.registered)
+ ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan);
rtnl_unlock();
}
@@ -112,7 +113,8 @@ static int wiphy_resume(struct device *dev)
if (rdev->ops->resume) {
rtnl_lock();
- ret = rdev->ops->resume(&rdev->wiphy);
+ if (rdev->wiphy.registered)
+ ret = rdev->ops->resume(&rdev->wiphy);
rtnl_unlock();
}
--
John W. Linville Someday the world will need a hero, and you
linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org might be all we have. Be ready.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related
* Re: [PATCH net-next v2 05/10] headers, net: Define struct __kernel_sockaddr, replacing struct sockaddr
From: David Miller @ 2011-08-26 15:08 UTC (permalink / raw)
To: ben; +Cc: netdev
In-Reply-To: <1314247456.27179.122.camel@deadeye>
From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 25 Aug 2011 05:44:15 +0100
> Commit 9c501935a3cdcf6b1d35aaee3aa11c7a7051a305 ('net: Support
> inclusion of <linux/socket.h> before <sys/socket.h>') removed the
> definition of struct sockaddr for userland.
>
> But we still have several headers using struct sockaddr, and we
> shouldn't make them include <sys/socket.h> as that risks recursive
> inclusion in future. Define and use an identical struct
> __kernel_sockaddr instead.
>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
...
>
> -/*
> - * 1003.1g requires sa_family_t and that sa_data is char.
> - */
> +#define sockaddr __kernel_sockaddr
This cure is worse than the disease.
Now any application that includes sys/socket.h one way or another is
now going to get a real hard build failure since __kernel_sockaddr
will effectively get redefined.
There is no reason sys/socket.h and our headers cannot co-exist and
this is the whole reason we're going through all of this pain to use
the __kernel_foo types in our networking datastructures which are
exposed to userspace.
^ permalink raw reply
* Re: [PATCH] p54spi: add "spi:" prefix for stlc45xx modalias
From: Christian Lamparter @ 2011-08-26 14:51 UTC (permalink / raw)
To: Axel Lin; +Cc: linux-kernel, John W. Linville, linux-wireless, netdev
In-Reply-To: <1314340499.25655.1.camel@phoenix>
On Friday, August 26, 2011 08:34:59 AM Axel Lin wrote:
> Since commit e0626e38 (spi: prefix modalias with "spi:"),
> the spi modalias is prefixed with "spi:".
>
> This patch adds "spi:" prefix for modalias of stlc45xx.
> Also move it to be group with other modalias.
>
> Signed-off-by: Axel Lin <axel.lin@gmail.com>
> ---
sure, can't say no.
Acked-By: Christian Lamparter <chunkeey@googlemail.com>
^ permalink raw reply
* Re: [PATCH] iptables/man: IPv6 TOS mangling fix was backported to 2.6.35-longterm too
From: Jan Engelhardt @ 2011-08-26 13:16 UTC (permalink / raw)
To: Fernando Luis Vazquez Cao
Cc: Patrick McHardy, Netfilter Developer Mailing List,
Linux Networking Developer Mailing List
In-Reply-To: <1314154554.1878.7.camel@nausicaa>
On Wednesday 2011-08-24 04:55, Fernando Luis Vazquez Cao wrote:
>Fernando Luis Vázquez Cao wrote:
>> Update man page accordingly.
>>
>> Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
>> ---
>>
>> -longterm releases 2.6.32.42 (or later) and 2.6.33.15 (or later), there is a bug
>> -whereby IPv6 TOS mangling does not behave as documented and differs from the
>> -IPv4 version. The TOS mask indicates the bits one wants to zero out, so it needs
>> -to be inverted before applying it to the original TOS field. However, the
>> +longterm releases 2.6.32 (>=.42), 2.6.33 (>=.15), and 2.6.35 (>=.14), there is
>> +a bug whereby IPv6 TOS mangling does not behave as documented and differs from
>> +the IPv4 version. The TOS mask indicates the bits one wants to zero out, so it
>> +needs to be inverted before applying it to the original TOS field. However, the
>> aformentioned kernels forgo the inversion which breaks --set-tos and its
>> mnemonics.
>
>Ping?
Patch picked up now.
^ permalink raw reply
* 3.1.0-rc2: irq/112-eth0-Tx: page allocation failure: (w/frame pointers enabled)
From: Justin Piszcz @ 2011-08-26 12:14 UTC (permalink / raw)
To: linux-kernel; +Cc: netdev, Alan Piszcz
Hello,
Why does this occur on a machine with 48GB of memory (used mainly as a router)
and backup server, is it a kernel bug?
top - 08:12:19 up 8 days, 21 min, 73 users, load average: 0.05, 0.10, 0.15
Tasks: 604 total, 1 running, 603 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.4%us, 1.0%sy, 0.1%ni, 97.0%id, 0.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 49556624k total, 49038776k used, 517848k free, 619836k buffers
Swap: 2097148k total, 489076k used, 1608072k free, 36790936k cached
Kernel messages:
[687946.708409] irq/112-eth0-Tx: page allocation failure: order:1, mode:0x20
[687946.711519] Pid: 18665, comm: irq/112-eth0-Tx Not tainted 3.1.0-rc2 #1
[687946.714289] Call Trace:
[687946.716759] <IRQ> [<ffffffff8108673e>] warn_alloc_failed+0xee/0x140
[687946.719998] [<ffffffff8108970c>] __alloc_pages_nodemask+0x54c/0x770
[687946.722422] [<ffffffff810b8d8d>] kmem_getpages+0x5d/0x160
[687946.724869] [<ffffffff810b9f4e>] fallback_alloc+0x1be/0x1d0
[687946.727044] [<ffffffff810b9c2e>] ? cache_grow+0x26e/0x290
[687946.729379] [<ffffffff810b9cdc>] ____cache_alloc_node+0x8c/0x140
[687946.731666] [<ffffffff810ba413>] kmem_cache_alloc+0xa3/0xf0
[687946.733784] [<ffffffff814b3bec>] sk_prot_alloc.isra.40+0x3c/0x180
[687946.735996] [<ffffffff814b3dc9>] sk_clone+0x19/0x2d0
[687946.738418] [<ffffffff81508453>] inet_csk_clone+0x13/0xb0
[687946.740798] [<ffffffff81520144>] tcp_create_openreq_child+0x24/0x490
[687946.743286] [<ffffffff8151d307>] tcp_v4_syn_recv_sock+0x47/0x270
[687946.746065] [<ffffffff8151ff46>] tcp_check_req+0x2d6/0x4b0
[687946.748966] [<ffffffff8151d1ba>] tcp_v4_do_rcv+0x1aa/0x2b0
[687946.751572] [<ffffffff8151f704>] tcp_v4_rcv+0x5d4/0x8d0
[687946.754272] [<ffffffff814fe5e5>] ip_local_deliver_finish+0xc5/0x200
[687946.756948] [<ffffffff814fe8d8>] ip_local_deliver+0x88/0x90
[687946.759554] [<ffffffff814fe331>] ip_rcv_finish+0x121/0x310
[687946.762137] [<ffffffff814feace>] ip_rcv+0x1ee/0x2b0
[687946.764603] [<ffffffff8158fa66>] ? packet_rcv_spkt+0x136/0x180
[687946.767380] [<ffffffff814c2572>] __netif_receive_skb+0x4b2/0x5a0
[687946.769913] [<ffffffff814c2848>] netif_receive_skb+0x78/0x80
[687946.772275] [<ffffffff814c2cd8>] ? dev_gro_receive+0x1b8/0x2c0
[687946.775044] [<ffffffff814c33c8>] napi_skb_finish+0x48/0x60
[687946.777626] [<ffffffff814c348d>] napi_gro_receive+0xad/0xc0
[687946.780175] [<ffffffff8141b8f7>] igb_poll+0x707/0xd60
[687946.782682] [<ffffffff812ed7e4>] ? timerqueue_add+0x74/0xc0
[687946.785204] [<ffffffff8102ece0>] ? enqueue_task_rt+0x150/0x280
[687946.787789] [<ffffffff814c2a99>] net_rx_action+0x109/0x190
[687946.790282] [<ffffffff8102dead>] ? enqueue_task+0x3d/0x80
[687946.792884] [<ffffffff8103d1c8>] __do_softirq+0x98/0x120
[687946.795446] [<ffffffff81071680>] ? irq_thread_fn+0x50/0x50
[687946.798037] [<ffffffff815d1f6c>] call_softirq+0x1c/0x30
[687946.800530] <EOI> [<ffffffff81003abd>] do_softirq+0x4d/0x80
[687946.803066] [<ffffffff8103cf3c>] local_bh_enable+0x8c/0xa0
[687946.805471] [<ffffffff810716be>] irq_forced_thread_fn+0x3e/0x50
[687946.807945] [<ffffffff810715a7>] irq_thread+0x157/0x1e0
[687946.810228] [<ffffffff81071450>] ? irq_finalize_oneshot+0x120/0x120
[687946.812385] [<ffffffff81052277>] kthread+0x87/0x90
[687946.814488] [<ffffffff815d1e74>] kernel_thread_helper+0x4/0x10
[687946.816581] [<ffffffff810521f0>] ? kthread_worker_fn+0x130/0x130
[687946.819500] [<ffffffff815d1e70>] ? gs_change+0xb/0xb
[687946.821890] Mem-Info:
[687946.824226] Node 0 DMA per-cpu:
[687946.826667] CPU 0: hi: 0, btch: 1 usd: 0
[687946.829035] CPU 1: hi: 0, btch: 1 usd: 0
[687946.831210] CPU 2: hi: 0, btch: 1 usd: 0
[687946.833331] CPU 3: hi: 0, btch: 1 usd: 0
[687946.835359] CPU 4: hi: 0, btch: 1 usd: 0
[687946.837274] CPU 5: hi: 0, btch: 1 usd: 0
[687946.839086] CPU 6: hi: 0, btch: 1 usd: 0
[687946.839088] CPU 7: hi: 0, btch: 1 usd: 0
[687946.839089] CPU 8: hi: 0, btch: 1 usd: 0
[687946.839090] CPU 9: hi: 0, btch: 1 usd: 0
[687946.839093] CPU 10: hi: 0, btch: 1 usd: 0
[687946.839095] CPU 11: hi: 0, btch: 1 usd: 0
[687946.839128] CPU 12: hi: 0, btch: 1 usd: 0
[687946.839129] CPU 13: hi: 0, btch: 1 usd: 0
[687946.839131] CPU 14: hi: 0, btch: 1 usd: 0
[687946.839132] CPU 15: hi: 0, btch: 1 usd: 0
[687946.839134] CPU 16: hi: 0, btch: 1 usd: 0
[687946.839135] CPU 17: hi: 0, btch: 1 usd: 0
[687946.839136] CPU 18: hi: 0, btch: 1 usd: 0
[687946.839138] CPU 19: hi: 0, btch: 1 usd: 0
[687946.839139] CPU 20: hi: 0, btch: 1 usd: 0
[687946.839141] CPU 21: hi: 0, btch: 1 usd: 0
[687946.839142] CPU 22: hi: 0, btch: 1 usd: 0
[687946.839143] CPU 23: hi: 0, btch: 1 usd: 0
[687946.839144] Node 0 DMA32 per-cpu:
[687946.839146] CPU 0: hi: 186, btch: 31 usd: 104
[687946.839147] CPU 1: hi: 186, btch: 31 usd: 183
[687946.839149] CPU 2: hi: 186, btch: 31 usd: 35
[687946.839150] CPU 3: hi: 186, btch: 31 usd: 189
[687946.839152] CPU 4: hi: 186, btch: 31 usd: 26
[687946.839153] CPU 5: hi: 186, btch: 31 usd: 171
[687946.839154] CPU 6: hi: 186, btch: 31 usd: 7
[687946.839156] CPU 7: hi: 186, btch: 31 usd: 151
[687946.839157] CPU 8: hi: 186, btch: 31 usd: 24
[687946.839158] CPU 9: hi: 186, btch: 31 usd: 159
[687946.839160] CPU 10: hi: 186, btch: 31 usd: 0
[687946.839161] CPU 11: hi: 186, btch: 31 usd: 0
[687946.839162] CPU 12: hi: 186, btch: 31 usd: 161
[687946.839164] CPU 13: hi: 186, btch: 31 usd: 166
[687946.839165] CPU 14: hi: 186, btch: 31 usd: 162
[687946.839166] CPU 15: hi: 186, btch: 31 usd: 166
[687946.839168] CPU 16: hi: 186, btch: 31 usd: 60
[687946.839169] CPU 17: hi: 186, btch: 31 usd: 160
[687946.839170] CPU 18: hi: 186, btch: 31 usd: 1
[687946.839172] CPU 19: hi: 186, btch: 31 usd: 0
[687946.839173] CPU 20: hi: 186, btch: 31 usd: 0
[687946.839174] CPU 21: hi: 186, btch: 31 usd: 127
[687946.839176] CPU 22: hi: 186, btch: 31 usd: 0
[687946.839177] CPU 23: hi: 186, btch: 31 usd: 185
[687946.839178] Node 0 Normal per-cpu:
[687946.839179] CPU 0: hi: 186, btch: 31 usd: 7
[687946.839181] CPU 1: hi: 186, btch: 31 usd: 149
[687946.839182] CPU 2: hi: 186, btch: 31 usd: 22
[687946.839183] CPU 3: hi: 186, btch: 31 usd: 117
[687946.839185] CPU 4: hi: 186, btch: 31 usd: 101
[687946.839186] CPU 5: hi: 186, btch: 31 usd: 171
[687946.839188] CPU 6: hi: 186, btch: 31 usd: 56
[687946.839189] CPU 7: hi: 186, btch: 31 usd: 95
[687946.839190] CPU 8: hi: 186, btch: 31 usd: 51
[687946.839192] CPU 9: hi: 186, btch: 31 usd: 157
[687946.839193] CPU 10: hi: 186, btch: 31 usd: 0
[687946.839195] CPU 11: hi: 186, btch: 31 usd: 13
[687946.839196] CPU 12: hi: 186, btch: 31 usd: 33
[687946.839197] CPU 13: hi: 186, btch: 31 usd: 168
[687946.839199] CPU 14: hi: 186, btch: 31 usd: 176
[687946.839200] CPU 15: hi: 186, btch: 31 usd: 156
[687946.839202] CPU 16: hi: 186, btch: 31 usd: 124
[687946.839203] CPU 17: hi: 186, btch: 31 usd: 38
[687946.839204] CPU 18: hi: 186, btch: 31 usd: 22
[687946.839206] CPU 19: hi: 186, btch: 31 usd: 103
[687946.839207] CPU 20: hi: 186, btch: 31 usd: 32
[687946.839209] CPU 21: hi: 186, btch: 31 usd: 185
[687946.839210] CPU 22: hi: 186, btch: 31 usd: 48
[687946.839211] CPU 23: hi: 186, btch: 31 usd: 145
[687946.839213] Node 1 Normal per-cpu:
[687946.839214] CPU 0: hi: 186, btch: 31 usd: 93
[687946.839216] CPU 1: hi: 186, btch: 31 usd: 77
[687946.839217] CPU 2: hi: 186, btch: 31 usd: 40
[687946.839218] CPU 3: hi: 186, btch: 31 usd: 165
[687946.839220] CPU 4: hi: 186, btch: 31 usd: 4
[687946.839221] CPU 5: hi: 186, btch: 31 usd: 180
[687946.839222] CPU 6: hi: 186, btch: 31 usd: 29
[687946.839224] CPU 7: hi: 186, btch: 31 usd: 83
[687946.839225] CPU 8: hi: 186, btch: 31 usd: 78
[687946.839227] CPU 9: hi: 186, btch: 31 usd: 163
[687946.839228] CPU 10: hi: 186, btch: 31 usd: 171
[687946.839230] CPU 11: hi: 186, btch: 31 usd: 167
[687946.839231] CPU 12: hi: 186, btch: 31 usd: 21
[687946.839232] CPU 13: hi: 186, btch: 31 usd: 27
[687946.839234] CPU 14: hi: 186, btch: 31 usd: 30
[687946.839235] CPU 15: hi: 186, btch: 31 usd: 180
[687946.839236] CPU 16: hi: 186, btch: 31 usd: 4
[687946.839238] CPU 17: hi: 186, btch: 31 usd: 17
[687946.839239] CPU 18: hi: 186, btch: 31 usd: 83
[687946.839241] CPU 19: hi: 186, btch: 31 usd: 126
[687946.839242] CPU 20: hi: 186, btch: 31 usd: 161
[687946.839244] CPU 21: hi: 186, btch: 31 usd: 157
[687946.839245] CPU 22: hi: 186, btch: 31 usd: 172
[687946.839246] CPU 23: hi: 186, btch: 31 usd: 113
[687946.839250] active_anon:2415853 inactive_anon:207634 isolated_anon:0
[687946.839251] active_file:4112085 inactive_file:4489987 isolated_file:33
[687946.839252] unevictable:0 dirty:4489 writeback:0 unstable:0
[687946.839253] free:137513 slab_reclaimable:852856 slab_unreclaimable:39114
[687946.839254] mapped:15723 shmem:5214 pagetables:15849 bounce:0
[687946.839255] Node 0 DMA free:15896kB min:56kB low:68kB high:84kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15672kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
[687946.839262] lowmem_reserve[]: 0 2991 24201 24201
[687946.839264] Node 0 DMA32 free:133556kB min:11124kB low:13904kB high:16684kB active_anon:509940kB inactive_anon:138796kB active_file:732776kB inactive_file:1063388kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3063520kB mlocked:0kB dirty:152kB writeback:0kB mapped:1472kB shmem:120kB slab_reclaimable:435724kB slab_unreclaimable:8988kB kernel_stack:320kB pagetables:1132kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687946.839272] lowmem_reserve[]: 0 0 21210 21210
[687946.839274] Node 0 Normal free:215052kB min:78884kB low:98604kB high:118324kB active_anon:4096588kB inactive_anon:322760kB active_file:7572688kB inactive_file:7578964kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:21719040kB mlocked:0kB dirty:12488kB writeback:0kB mapped:29660kB shmem:15064kB slab_reclaimable:1546068kB slab_unreclaimable:78700kB kernel_stack:3480kB pagetables:35252kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687946.839282] lowmem_reserve[]: 0 0 0 0
[687946.839283] Node 1 Normal free:185548kB min:90152kB low:112688kB high:135228kB active_anon:5056884kB inactive_anon:368980kB active_file:8142876kB inactive_file:9317596kB unevictable:0kB isolated(anon):0kB isolated(file):132kB present:24821760kB mlocked:0kB dirty:5316kB writeback:0kB mapped:31760kB shmem:5672kB slab_reclaimable:1429632kB slab_unreclaimable:68768kB kernel_stack:2648kB pagetables:27012kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687946.839292] lowmem_reserve[]: 0 0 0 0
[687946.839294] Node 0 DMA: 0*4kB 1*8kB 1*16kB 0*32kB 2*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 3*4096kB = 15896kB
[687946.839299] Node 0 DMA32: 31847*4kB 718*8kB 8*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 133260kB
[687946.839304] Node 0 Normal: 38479*4kB 5294*8kB 1090*16kB 11*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 214060kB
[687946.839309] Node 1 Normal: 29327*4kB 5080*8kB 910*16kB 102*32kB 19*64kB 11*128kB 26*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 185052kB
[687946.839314] 8618791 total pagecache pages
[687946.839315] 11459 pages in swap cache
[687946.839317] Swap cache stats: add 258693, delete 247234, find 26065392/26080490
[687946.839318] Free swap = 1628596kB
[687946.839319] Total swap = 2097148kB
[687947.017273] 12582896 pages RAM
[687947.020203] 193740 pages reserved
[687947.023090] 3702079 pages shared
[687947.025938] 8692980 pages non-shared
[687949.743902] irq/112-eth0-Tx: page allocation failure: order:1, mode:0x20
[687949.746909] Pid: 18665, comm: irq/112-eth0-Tx Not tainted 3.1.0-rc2 #1
[687949.749718] Call Trace:
[687949.752521] <IRQ> [<ffffffff8108673e>] warn_alloc_failed+0xee/0x140
[687949.755407] [<ffffffff8108970c>] __alloc_pages_nodemask+0x54c/0x770
[687949.758276] [<ffffffff810b8d8d>] kmem_getpages+0x5d/0x160
[687949.761157] [<ffffffff810b9f4e>] fallback_alloc+0x1be/0x1d0
[687949.764182] [<ffffffff810b9c2e>] ? cache_grow+0x26e/0x290
[687949.767350] [<ffffffff810b9cdc>] ____cache_alloc_node+0x8c/0x140
[687949.770514] [<ffffffff810ba413>] kmem_cache_alloc+0xa3/0xf0
[687949.773699] [<ffffffff814b3bec>] sk_prot_alloc.isra.40+0x3c/0x180
[687949.776947] [<ffffffff814b3dc9>] sk_clone+0x19/0x2d0
[687949.780172] [<ffffffff81508453>] inet_csk_clone+0x13/0xb0
[687949.783425] [<ffffffff81520144>] tcp_create_openreq_child+0x24/0x490
[687949.786686] [<ffffffff8151d307>] tcp_v4_syn_recv_sock+0x47/0x270
[687949.789977] [<ffffffff8151ff46>] tcp_check_req+0x2d6/0x4b0
[687949.793264] [<ffffffff8151d1ba>] tcp_v4_do_rcv+0x1aa/0x2b0
[687949.796565] [<ffffffff8151f704>] tcp_v4_rcv+0x5d4/0x8d0
[687949.799867] [<ffffffff814fe5e5>] ip_local_deliver_finish+0xc5/0x200
[687949.803162] [<ffffffff814fe8d8>] ip_local_deliver+0x88/0x90
[687949.806463] [<ffffffff814fe331>] ip_rcv_finish+0x121/0x310
[687949.809779] [<ffffffff814feace>] ip_rcv+0x1ee/0x2b0
[687949.813105] [<ffffffff8158fa66>] ? packet_rcv_spkt+0x136/0x180
[687949.816446] [<ffffffff814c2572>] __netif_receive_skb+0x4b2/0x5a0
[687949.819794] [<ffffffff814c2848>] netif_receive_skb+0x78/0x80
[687949.823157] [<ffffffff814c2cd8>] ? dev_gro_receive+0x1b8/0x2c0
[687949.826529] [<ffffffff814c33c8>] napi_skb_finish+0x48/0x60
[687949.829918] [<ffffffff814c348d>] napi_gro_receive+0xad/0xc0
[687949.833315] [<ffffffff8141b8f7>] igb_poll+0x707/0xd60
[687949.833324] [<ffffffff8101db39>] ? physflat_send_IPI_mask+0x9/0x10
[687949.833330] [<ffffffff8102ece0>] ? enqueue_task_rt+0x150/0x280
[687949.833338] [<ffffffff814c2a99>] net_rx_action+0x109/0x190
[687949.833342] [<ffffffff8102dead>] ? enqueue_task+0x3d/0x80
[687949.833348] [<ffffffff8103d1c8>] __do_softirq+0x98/0x120
[687949.833353] [<ffffffff81071680>] ? irq_thread_fn+0x50/0x50
[687949.833359] [<ffffffff815d1f6c>] call_softirq+0x1c/0x30
[687949.833361] <EOI> [<ffffffff81003abd>] do_softirq+0x4d/0x80
[687949.833369] [<ffffffff8103cf3c>] local_bh_enable+0x8c/0xa0
[687949.833372] [<ffffffff810716be>] irq_forced_thread_fn+0x3e/0x50
[687949.833375] [<ffffffff810715a7>] irq_thread+0x157/0x1e0
[687949.833379] [<ffffffff81071450>] ? irq_finalize_oneshot+0x120/0x120
[687949.833384] [<ffffffff81052277>] kthread+0x87/0x90
[687949.833388] [<ffffffff815d1e74>] kernel_thread_helper+0x4/0x10
[687949.833392] [<ffffffff810521f0>] ? kthread_worker_fn+0x130/0x130
[687949.833395] [<ffffffff815d1e70>] ? gs_change+0xb/0xb
[687949.833398] Mem-Info:
[687949.833400] Node 0 DMA per-cpu:
[687949.833402] CPU 0: hi: 0, btch: 1 usd: 0
[687949.833405] CPU 1: hi: 0, btch: 1 usd: 0
[687949.833407] CPU 2: hi: 0, btch: 1 usd: 0
[687949.833409] CPU 3: hi: 0, btch: 1 usd: 0
[687949.833411] CPU 4: hi: 0, btch: 1 usd: 0
[687949.833413] CPU 5: hi: 0, btch: 1 usd: 0
[687949.833415] CPU 6: hi: 0, btch: 1 usd: 0
[687949.833417] CPU 7: hi: 0, btch: 1 usd: 0
[687949.833419] CPU 8: hi: 0, btch: 1 usd: 0
[687949.833421] CPU 9: hi: 0, btch: 1 usd: 0
[687949.833423] CPU 10: hi: 0, btch: 1 usd: 0
[687949.833425] CPU 11: hi: 0, btch: 1 usd: 0
[687949.833427] CPU 12: hi: 0, btch: 1 usd: 0
[687949.833429] CPU 13: hi: 0, btch: 1 usd: 0
[687949.833432] CPU 14: hi: 0, btch: 1 usd: 0
[687949.833434] CPU 15: hi: 0, btch: 1 usd: 0
[687949.833436] CPU 16: hi: 0, btch: 1 usd: 0
[687949.833438] CPU 17: hi: 0, btch: 1 usd: 0
[687949.833440] CPU 18: hi: 0, btch: 1 usd: 0
[687949.833442] CPU 19: hi: 0, btch: 1 usd: 0
[687949.833444] CPU 20: hi: 0, btch: 1 usd: 0
[687949.833446] CPU 21: hi: 0, btch: 1 usd: 0
[687949.833448] CPU 22: hi: 0, btch: 1 usd: 0
[687949.833450] CPU 23: hi: 0, btch: 1 usd: 0
[687949.833451] Node 0 DMA32 per-cpu:
[687949.833454] CPU 0: hi: 186, btch: 31 usd: 31
[687949.833456] CPU 1: hi: 186, btch: 31 usd: 177
[687949.833458] CPU 2: hi: 186, btch: 31 usd: 44
[687949.833460] CPU 3: hi: 186, btch: 31 usd: 186
[687949.833462] CPU 4: hi: 186, btch: 31 usd: 26
[687949.833465] CPU 5: hi: 186, btch: 31 usd: 161
[687949.833467] CPU 6: hi: 186, btch: 31 usd: 19
[687949.833469] CPU 7: hi: 186, btch: 31 usd: 120
[687949.833471] CPU 8: hi: 186, btch: 31 usd: 24
[687949.833473] CPU 9: hi: 186, btch: 31 usd: 129
[687949.833475] CPU 10: hi: 186, btch: 31 usd: 0
[687949.833477] CPU 11: hi: 186, btch: 31 usd: 0
[687949.833479] CPU 12: hi: 186, btch: 31 usd: 159
[687949.833481] CPU 13: hi: 186, btch: 31 usd: 170
[687949.833483] CPU 14: hi: 186, btch: 31 usd: 181
[687949.833485] CPU 15: hi: 186, btch: 31 usd: 166
[687949.833488] CPU 16: hi: 186, btch: 31 usd: 60
[687949.833490] CPU 17: hi: 186, btch: 31 usd: 160
[687949.833492] CPU 18: hi: 186, btch: 31 usd: 1
[687949.833494] CPU 19: hi: 186, btch: 31 usd: 0
[687949.833496] CPU 20: hi: 186, btch: 31 usd: 0
[687949.833498] CPU 21: hi: 186, btch: 31 usd: 127
[687949.833500] CPU 22: hi: 186, btch: 31 usd: 0
[687949.833502] CPU 23: hi: 186, btch: 31 usd: 185
[687949.833503] Node 0 Normal per-cpu:
[687949.833505] CPU 0: hi: 186, btch: 31 usd: 43
[687949.833508] CPU 1: hi: 186, btch: 31 usd: 81
[687949.833510] CPU 2: hi: 186, btch: 31 usd: 51
[687949.833512] CPU 3: hi: 186, btch: 31 usd: 114
[687949.833514] CPU 4: hi: 186, btch: 31 usd: 95
[687949.833516] CPU 5: hi: 186, btch: 31 usd: 154
[687949.833518] CPU 6: hi: 186, btch: 31 usd: 108
[687949.833520] CPU 7: hi: 186, btch: 31 usd: 69
[687949.833522] CPU 8: hi: 186, btch: 31 usd: 22
[687949.833524] CPU 9: hi: 186, btch: 31 usd: 181
[687949.833526] CPU 10: hi: 186, btch: 31 usd: 174
[687949.833528] CPU 11: hi: 186, btch: 31 usd: 0
[687949.833530] CPU 12: hi: 186, btch: 31 usd: 157
[687949.833532] CPU 13: hi: 186, btch: 31 usd: 157
[687949.833534] CPU 14: hi: 186, btch: 31 usd: 110
[687949.833536] CPU 15: hi: 186, btch: 31 usd: 164
[687949.833538] CPU 16: hi: 186, btch: 31 usd: 114
[687949.833541] CPU 17: hi: 186, btch: 31 usd: 38
[687949.833543] CPU 18: hi: 186, btch: 31 usd: 0
[687949.833545] CPU 19: hi: 186, btch: 31 usd: 72
[687949.833547] CPU 20: hi: 186, btch: 31 usd: 1
[687949.833549] CPU 21: hi: 186, btch: 31 usd: 164
[687949.833551] CPU 22: hi: 186, btch: 31 usd: 55
[687949.833553] CPU 23: hi: 186, btch: 31 usd: 118
[687949.833554] Node 1 Normal per-cpu:
[687949.833557] CPU 0: hi: 186, btch: 31 usd: 64
[687949.833559] CPU 1: hi: 186, btch: 31 usd: 125
[687949.833561] CPU 2: hi: 186, btch: 31 usd: 56
[687949.833563] CPU 3: hi: 186, btch: 31 usd: 148
[687949.833565] CPU 4: hi: 186, btch: 31 usd: 0
[687949.833567] CPU 5: hi: 186, btch: 31 usd: 149
[687949.833569] CPU 6: hi: 186, btch: 31 usd: 151
[687949.833571] CPU 7: hi: 186, btch: 31 usd: 79
[687949.833573] CPU 8: hi: 186, btch: 31 usd: 61
[687949.833575] CPU 9: hi: 186, btch: 31 usd: 183
[687949.833577] CPU 10: hi: 186, btch: 31 usd: 171
[687949.833579] CPU 11: hi: 186, btch: 31 usd: 167
[687949.833581] CPU 12: hi: 186, btch: 31 usd: 174
[687949.833584] CPU 13: hi: 186, btch: 31 usd: 171
[687949.833586] CPU 14: hi: 186, btch: 31 usd: 158
[687949.833588] CPU 15: hi: 186, btch: 31 usd: 149
[687949.833590] CPU 16: hi: 186, btch: 31 usd: 6
[687949.833592] CPU 17: hi: 186, btch: 31 usd: 17
[687949.833594] CPU 18: hi: 186, btch: 31 usd: 82
[687949.833596] CPU 19: hi: 186, btch: 31 usd: 111
[687949.833598] CPU 20: hi: 186, btch: 31 usd: 159
[687949.833600] CPU 21: hi: 186, btch: 31 usd: 157
[687949.833602] CPU 22: hi: 186, btch: 31 usd: 160
[687949.833604] CPU 23: hi: 186, btch: 31 usd: 74
[687949.833610] active_anon:2415858 inactive_anon:207589 isolated_anon:0
[687949.833611] active_file:4112461 inactive_file:4495431 isolated_file:0
[687949.833612] unevictable:0 dirty:5362 writeback:0 unstable:0
[687949.833614] free:135634 slab_reclaimable:847992 slab_unreclaimable:39054
[687949.833615] mapped:15726 shmem:5214 pagetables:15849 bounce:0
[687949.833617] Node 0 DMA free:15896kB min:56kB low:68kB high:84kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15672kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
[687949.833627] lowmem_reserve[]: 0 2991 24201 24201
[687949.833631] Node 0 DMA32 free:121756kB min:11124kB low:13904kB high:16684kB active_anon:509940kB inactive_anon:138796kB active_file:732776kB inactive_file:1077800kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3063520kB mlocked:0kB dirty:384kB writeback:0kB mapped:1472kB shmem:120kB slab_reclaimable:435700kB slab_unreclaimable:9008kB kernel_stack:320kB pagetables:1132kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687949.833643] lowmem_reserve[]: 0 0 21210 21210
[687949.833645] Node 0 Normal free:178800kB min:78884kB low:98604kB high:118324kB active_anon:4096596kB inactive_anon:322580kB active_file:7573100kB inactive_file:7623984kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:21719040kB mlocked:0kB dirty:13852kB writeback:0kB mapped:29672kB shmem:15064kB slab_reclaimable:1532288kB slab_unreclaimable:78968kB kernel_stack:3480kB pagetables:35252kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687949.833657] lowmem_reserve[]: 0 0 0 0
[687949.833660] Node 1 Normal free:226084kB min:90152kB low:112688kB high:135228kB active_anon:5056896kB inactive_anon:368980kB active_file:8143968kB inactive_file:9279940kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:24821760kB mlocked:0kB dirty:7212kB writeback:0kB mapped:31760kB shmem:5672kB slab_reclaimable:1423980kB slab_unreclaimable:68240kB kernel_stack:2648kB pagetables:27012kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[687949.833672] lowmem_reserve[]: 0 0 0 0
[687949.833674] Node 0 DMA: 0*4kB 1*8kB 1*16kB 0*32kB 2*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 3*4096kB = 15896kB
[687949.833682] Node 0 DMA32: 28319*4kB 870*8kB 95*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 121756kB
[687949.833689] Node 0 Normal: 29680*4kB 4095*8kB 1649*16kB 27*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 178728kB
[687949.833697] Node 1 Normal: 39478*4kB 6538*8kB 637*16kB 111*32kB 9*64kB 7*128kB 4*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 226456kB
[687949.833704] 8624516 total pagecache pages
[687949.833706] 11462 pages in swap cache
[687949.833708] Swap cache stats: add 258724, delete 247262, find 26065393/26080492
[687949.833710] Free swap = 1628508kB
[687949.833711] Total swap = 2097148kB
[687950.051707] 12582896 pages RAM
[687950.054637] 193740 pages reserved
[687950.057542] 3675896 pages shared
[687950.060450] 8720032 pages non-shared
Justin.
^ permalink raw reply
* [PATCH 1/2] ath: Make ath_dbg void not int
From: Joe Perches @ 2011-08-26 8:56 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: John W. Linville, linux-wireless, netdev, linux-kernel
In-Reply-To: <cover.1314347556.git.joe@perches.com>
The return value is never used so make it void.
Reduces object size a tiny bit.
$ size drivers/net/wireless/ath/built-in.o*
text data bss dec hex filename
1164175 16235 212032 1392442 153f3a drivers/net/wireless/ath/built-in.o.new
1164819 16235 212032 1393086 1541be drivers/net/wireless/ath/built-in.o.old
Signed-off-by: Joe Perches <joe@perches.com>
---
drivers/net/wireless/ath/ath.h | 29 ++++++++++++-----------------
1 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
index 17c4b56..a3f8505 100644
--- a/drivers/net/wireless/ath/ath.h
+++ b/drivers/net/wireless/ath/ath.h
@@ -178,8 +178,9 @@ bool ath_hw_keyreset(struct ath_common *common, u16 entry);
void ath_hw_cycle_counters_update(struct ath_common *common);
int32_t ath_hw_get_listen_time(struct ath_common *common);
-extern __attribute__ ((format (printf, 3, 4))) int
-ath_printk(const char *level, struct ath_common *common, const char *fmt, ...);
+extern __attribute__((format (printf, 3, 4)))
+int ath_printk(const char *level, struct ath_common *common,
+ const char *fmt, ...);
#define ath_emerg(common, fmt, ...) \
ath_printk(KERN_EMERG, common, fmt, ##__VA_ARGS__)
@@ -246,27 +247,21 @@ enum ATH_DEBUG {
#ifdef CONFIG_ATH_DEBUG
-#define ath_dbg(common, dbg_mask, fmt, ...) \
-({ \
- int rtn; \
- if ((common)->debug_mask & dbg_mask) \
- rtn = ath_printk(KERN_DEBUG, common, fmt, \
- ##__VA_ARGS__); \
- else \
- rtn = 0; \
- \
- rtn; \
-})
+#define ath_dbg(common, dbg_mask, fmt, ...) \
+do { \
+ if ((common)->debug_mask & dbg_mask) \
+ ath_printk(KERN_DEBUG, common, fmt, ##__VA_ARGS__); \
+} while (0)
+
#define ATH_DBG_WARN(foo, arg...) WARN(foo, arg)
#define ATH_DBG_WARN_ON_ONCE(foo) WARN_ON_ONCE(foo)
#else
-static inline __attribute__ ((format (printf, 3, 4))) int
-ath_dbg(struct ath_common *common, enum ATH_DEBUG dbg_mask,
- const char *fmt, ...)
+static inline __attribute__((format (printf, 3, 4)))
+void ath_dbg(struct ath_common *common, enum ATH_DEBUG dbg_mask,
+ const char *fmt, ...)
{
- return 0;
}
#define ATH_DBG_WARN(foo, arg...) do {} while (0)
#define ATH_DBG_WARN_ON_ONCE(foo) ({ \
--
1.7.6.405.gc1be0
^ permalink raw reply related
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