* Re: [patch net-next RFC 1/2] ipv6 addrconf: extend ifa_flags to u32
From: Jiri Pirko @ 2013-11-11 15:12 UTC (permalink / raw)
To: David Laight
Cc: netdev, davem, kuznet, jmorris, yoshfuji, kaber, thaller, stephen,
hannes, vyasevich, dcbw
In-Reply-To: <AE90C24D6B3A694183C094C60CF0A2F6026B73FA@saturn3.aculab.com>
Mon, Nov 11, 2013 at 04:07:20PM CET, David.Laight@ACULAB.COM wrote:
>> --- a/include/net/if_inet6.h
>> +++ b/include/net/if_inet6.h
>> @@ -51,7 +51,7 @@ struct inet6_ifaddr {
>> int state;
>>
>> __u8 dad_probes;
>> - __u8 flags;
>> + __u32 flags;
>>
>> __u16 scope;
>
>That is adding a lot of padding.
Allright. Will reorder. Thanks
>
> David
>
>
>
^ permalink raw reply
* RE: [patch net-next RFC 1/2] ipv6 addrconf: extend ifa_flags to u32
From: David Laight @ 2013-11-11 15:07 UTC (permalink / raw)
To: Jiri Pirko, netdev
Cc: davem, kuznet, jmorris, yoshfuji, kaber, thaller, stephen, hannes,
vyasevich, dcbw
In-Reply-To: <1384181359-23199-2-git-send-email-jiri@resnulli.us>
> --- a/include/net/if_inet6.h
> +++ b/include/net/if_inet6.h
> @@ -51,7 +51,7 @@ struct inet6_ifaddr {
> int state;
>
> __u8 dad_probes;
> - __u8 flags;
> + __u32 flags;
>
> __u16 scope;
That is adding a lot of padding.
David
^ permalink raw reply
* RE: TCP performance regression
From: David Laight @ 2013-11-11 15:05 UTC (permalink / raw)
To: Eric Dumazet, Sujith Manoharan; +Cc: netdev, Dave Taht
In-Reply-To: <1384180069.16391.32.camel@edumazet-glaptop2.roam.corp.google.com>
> On Mon, 2013-11-11 at 13:49 +0530, Sujith Manoharan wrote:
>
> > I am not really clear on how this regression can be fixed in the driver
> > since the majority of the transmission/aggregation logic is present in the
> > TX completion path.
>
> We have many choices.
>
> 1) Add back a minimum of ~128 K of outstanding bytes per TCP session,
> so that buggy drivers can sustain 'line rate'.
>
> Note that with 100 concurrent TCP streams, total amount of bytes
> queued on the NIC is 12 MB.
> And pfifo_fast qdisc will drop packets anyway.
>
> Thats what we call 'BufferBloat'
>
> 2) Try lower values like 64K. Still bufferbloat.
>
> 3) Fix buggy drivers, using a proper logic, or shorter timers (mvneta
> case for example)
>
> 4) Add a new netdev attribute, so that well behaving NIC drivers do not
> have to artificially force TCP stack to queue too many bytes in
> Qdisc/NIC queues.
Or, maybe:
5) call skb_orphan() (I think that is the correct function) when transmit
packets are given to the hardware.
I think that if the mac driver supports BQL this could be done as soon
as the BQL resource is assigned to the packet.
I suspect this could be done unconditionally.
Clearly the skb may also need to be freed to allow protocol
retransmissions to complete properly - but that won't be so timing
critical.
I remember (a long time ago) getting a measurable performance increase
by disabling the 'end of transmit' interrupt and only doing tx tidyup
when the driver was active for other reasons.
There were 2 reasons for enabling the interrupt:
1) tx ring full.
2) tx buffer had a user-defined delete function.
David
^ permalink raw reply
* Re: [patch iproute2] ipaddress: add a black line for each device to make the output more readable
From: Hangbin Liu @ 2013-11-11 15:08 UTC (permalink / raw)
To: network dev
In-Reply-To: <1384182210-8901-1-git-send-email-liuhangbin@gmail.com>
2013/11/11 Hangbin Liu <liuhangbin@gmail.com>:
> When we have multi links, the output huddled together and make it hard to read.
> Let's use the old ifconfig output style.
For example:
Before:
# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:10:18:f4:09:c4 brd ff:ff:ff:ff:ff:ff
inet 192.168.18.11/24 brd 192.168.18.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.100.1/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 2012::1/64 scope global
valid_lft forever preferred_lft forever
inet6 2001::210:18ff:fef4:9c4/64 scope global dynamic
valid_lft 2086084sec preferred_lft 98884sec
inet6 fe80::210:18ff:fef4:9c4/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:10:18:f4:09:c5 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:10:18:f4:09:c6 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:10:18:f4:09:c7 brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
link/ether 00:1b:21:a0:94:b6 brd ff:ff:ff:ff:ff:ff
inet6 2001::21b:21ff:fea0:94b6/64 scope global dynamic
valid_lft 2591897sec preferred_lft 604697sec
inet6 fe80::21b:21ff:fea0:94b6/64 scope link
valid_lft forever preferred_lft forever
7: eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether e4:1f:13:eb:c4:1a brd ff:ff:ff:ff:ff:ff
inet 10.66.86.93/23 brd 10.66.87.255 scope global eth5
valid_lft forever preferred_lft forever
inet 172.16.100.1/24 scope global eth5
valid_lft forever preferred_lft forever
inet6 2011::1/64 scope global
valid_lft forever preferred_lft forever
inet6 2620:52:0:4257:e61f:13ff:feeb:c41a/64 scope global dynamic
valid_lft 2086053sec preferred_lft 98853sec
inet6 fe80::e61f:13ff:feeb:c41a/64 scope link
valid_lft forever preferred_lft forever
8: eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether e4:1f:13:eb:c4:1b brd ff:ff:ff:ff:ff:ff
9: eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether e4:1f:13:eb:c4:1c brd ff:ff:ff:ff:ff:ff
10: eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether e4:1f:13:eb:c4:1d brd ff:ff:ff:ff:ff:ff
After:
# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
link/ether 00:10:18:f4:09:c4 brd ff:ff:ff:ff:ff:ff
inet 192.168.18.11/24 brd 192.168.18.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.100.1/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 2012::1/64 scope global
valid_lft forever preferred_lft forever
inet6 2001::210:18ff:fef4:9c4/64 scope global dynamic
valid_lft 2086047sec preferred_lft 98847sec
inet6 fe80::210:18ff:fef4:9c4/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group
default qlen 1000
link/ether 00:10:18:f4:09:c5 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group
default qlen 1000
link/ether 00:10:18:f4:09:c6 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group
default qlen 1000
link/ether 00:10:18:f4:09:c7 brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
link/ether 00:1b:21:a0:94:b6 brd ff:ff:ff:ff:ff:ff
inet6 2001::21b:21ff:fea0:94b6/64 scope global dynamic
valid_lft 2591860sec preferred_lft 604660sec
inet6 fe80::21b:21ff:fea0:94b6/64 scope link
valid_lft forever preferred_lft forever
7: eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
link/ether e4:1f:13:eb:c4:1a brd ff:ff:ff:ff:ff:ff
inet 10.66.86.93/23 brd 10.66.87.255 scope global eth5
valid_lft forever preferred_lft forever
inet 172.16.100.1/24 scope global eth5
valid_lft forever preferred_lft forever
inet6 2011::1/64 scope global
valid_lft forever preferred_lft forever
inet6 2620:52:0:4257:e61f:13ff:feeb:c41a/64 scope global dynamic
valid_lft 2086016sec preferred_lft 98816sec
inet6 fe80::e61f:13ff:feeb:c41a/64 scope link
valid_lft forever preferred_lft forever
8: eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group
default qlen 1000
link/ether e4:1f:13:eb:c4:1b brd ff:ff:ff:ff:ff:ff
9: eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group
default qlen 1000
link/ether e4:1f:13:eb:c4:1c brd ff:ff:ff:ff:ff:ff
10: eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group
default qlen 1000
link/ether e4:1f:13:eb:c4:1d brd ff:ff:ff:ff:ff:ff
>
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
> ---
> ip/ipaddress.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/ip/ipaddress.c b/ip/ipaddress.c
> index 1c3e4da..9570f16 100644
> --- a/ip/ipaddress.c
> +++ b/ip/ipaddress.c
> @@ -782,6 +782,7 @@ static int print_selected_addrinfo(int ifindex, struct nlmsg_list *ainfo, FILE *
>
> print_addrinfo(NULL, n, fp);
> }
> + fprintf(fp, "\n");
> return 0;
> }
>
> --
> 1.8.1.4
>
^ permalink raw reply
* [patch iproute2] ipaddress: add a black line for each device to make the output more readable
From: Hangbin Liu @ 2013-11-11 15:03 UTC (permalink / raw)
To: network dev; +Cc: Hangbin Liu
When we have multi links, the output huddled together and make it hard to read.
Let's use the old ifconfig output style.
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
---
ip/ipaddress.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 1c3e4da..9570f16 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -782,6 +782,7 @@ static int print_selected_addrinfo(int ifindex, struct nlmsg_list *ainfo, FILE *
print_addrinfo(NULL, n, fp);
}
+ fprintf(fp, "\n");
return 0;
}
--
1.8.1.4
^ permalink raw reply related
* Re: kernel BUG at mm/slub.c:3338! RIP [<ffffffff8117912c>] kfree+0x20c/0x210
From: Christoph Lameter @ 2013-11-11 14:57 UTC (permalink / raw)
To: Sander Eikelenboom; +Cc: Pekka Enberg, linux-kernel, netdev, eric.dumazet
In-Reply-To: <806860823.20131109191807@eikelenboom.it>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 2466 bytes --]
On Sat, 9 Nov 2013, Sander Eikelenboom wrote:
> This VM got quite some I/O and network load, it got a lot of large files
> transferred to Samba and the files are stored on a glusterfs volume (by
> tcp/ip).
That looks like its related to networking. CCing netdev.
>
>
> [34856.970314] =============================================================================
> [34856.970332] BUG kmalloc-2048 (Not tainted): Poison overwritten
> [34856.970339] -----------------------------------------------------------------------------
> [34856.970339]
> [34856.970350] Disabling lock debugging due to kernel taint
> [34856.970357] INFO: 0xffff88001b36099b-0xffff88001b36099b. First byte 0x6a instead of 0x6b
> [34856.970371] INFO: Allocated in __alloc_skb+0x82/0x290 age=2 cpu=0 pid=2818
> [34856.970381] __slab_alloc.isra.57+0x61e/0x6d6
> [34856.970389] __kmalloc_node_track_caller+0xc9/0x1b0
> [34856.970396] __kmalloc_reserve.isra.49+0x37/0xa0
> [34856.970402] __alloc_skb+0x82/0x290
> [34856.970408] sk_stream_alloc_skb+0x3f/0x120
> [34856.970414] tcp_sendmsg+0x615/0xe20
> [34856.970419] inet_sendmsg+0xa6/0x100
> [34856.970426] sock_aio_write+0xc2/0xe0
> [34856.970433] do_sync_readv_writev+0x4e/0x80
> [34856.970439] do_readv_writev+0xe8/0x270
> [34856.970444] vfs_writev+0x30/0x60
> [34856.970449] SyS_writev+0x54/0xd0
> [34856.970454] system_call_fastpath+0x16/0x1b
> [34856.970461] INFO: Freed in skb_free_head+0x64/0x70 age=2 cpu=0 pid=0
> [34856.970468] __slab_free+0x30/0x561
> [34856.970474] kfree+0x1fd/0x210
> [34856.970479] skb_free_head+0x64/0x70
> [34856.970484] skb_release_data+0xf3/0x100
> [34856.970492] skb_release_all+0x23/0x30
> [34856.970497] __kfree_skb+0x11/0xa0
> [34856.970503] tcp_ack+0x64a/0xf20
> [34856.970509] tcp_rcv_established+0xe2/0x5c0
> [34856.970515] tcp_v4_do_rcv+0x14e/0x4a0
> [34856.970520] tcp_v4_rcv+0x8f2/0x9c0
> [34856.970527] ip_local_deliver_finish+0xd8/0x1d0
> [34856.970533] ip_local_deliver+0x34/0x90
> [34856.970539] ip_rcv_finish+0x150/0x660
> [34856.970544] ip_rcv+0x22b/0x370
> [34856.970551] __netif_receive_skb_core+0x6e2/0x8b0
> [34856.970557] __netif_receive_skb+0x1c/0x70
> [34856.970563] INFO: Slab 0xffffea00006cd800 objects=13 used=13 fp=0x (null) flags=0x40000000004080
> [34856.970572] INFO: Object 0xffff88001b360948 @offset=2376 fp=0xffff88001b3637b0
> [34856.970572]
>
> The rest is in the attached dmesg.
>
> attached: dmesg-oops-3.12.0-20131104.txt
> --
> Sander
[-- Attachment #2: Type: TEXT/PLAIN, Size: 47098 bytes --]
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.12.0-20131104 (root@serveerstertje) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP PREEMPT Mon Nov 4 09:34:18 CET 2013
[ 0.000000] Command line: root=/dev/xvda1 ro slub_debug
[ 0.000000] ACPI in unprivileged domain disabled
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] Xen: [mem 0x0000000000000000-0x000000000009ffff] usable
[ 0.000000] Xen: [mem 0x00000000000a0000-0x00000000000fffff] reserved
[ 0.000000] Xen: [mem 0x0000000000100000-0x000000001fffffff] usable
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] MPS support code is not built-in.
[ 0.000000] Using acpi=off or acpi=noirq or pci=noacpi may have problem
[ 0.000000] DMI not present or invalid.
[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000000] No AGP bridge found
[ 0.000000] e820: last_pfn = 0x20000 max_arch_pfn = 0x400000000
[ 0.000000] Scanning 1 areas for low memory corruption
[ 0.000000] Base memory trampoline at [ffff88000009a000] 9a000 size 24576
[ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[ 0.000000] [mem 0x00000000-0x000fffff] page 4k
[ 0.000000] init_memory_mapping: [mem 0x1fe00000-0x1fffffff]
[ 0.000000] [mem 0x1fe00000-0x1fffffff] page 4k
[ 0.000000] BRK [0x02d72000, 0x02d72fff] PGTABLE
[ 0.000000] init_memory_mapping: [mem 0x1c000000-0x1fdfffff]
[ 0.000000] [mem 0x1c000000-0x1fdfffff] page 4k
[ 0.000000] BRK [0x02d73000, 0x02d73fff] PGTABLE
[ 0.000000] BRK [0x02d74000, 0x02d74fff] PGTABLE
[ 0.000000] BRK [0x02d75000, 0x02d75fff] PGTABLE
[ 0.000000] BRK [0x02d76000, 0x02d76fff] PGTABLE
[ 0.000000] BRK [0x02d77000, 0x02d77fff] PGTABLE
[ 0.000000] init_memory_mapping: [mem 0x00100000-0x1bffffff]
[ 0.000000] [mem 0x00100000-0x1bffffff] page 4k
[ 0.000000] RAMDISK: [mem 0x03188000-0x03f9cfff]
[ 0.000000] NUMA turned off
[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000001fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x00000000-0x1fffffff]
[ 0.000000] NODE_DATA [mem 0x1ff1d000-0x1ff27fff]
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x00001000-0x00ffffff]
[ 0.000000] DMA32 [mem 0x01000000-0xffffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x00001000-0x0009ffff]
[ 0.000000] node 0: [mem 0x00100000-0x1fffffff]
[ 0.000000] On node 0 totalpages: 130975
[ 0.000000] DMA zone: 64 pages used for memmap
[ 0.000000] DMA zone: 21 pages reserved
[ 0.000000] DMA zone: 3999 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 1984 pages used for memmap
[ 0.000000] DMA32 zone: 126976 pages, LIFO batch:31
[ 0.000000] smpboot: Allowing 2 CPUs, 0 hotplug CPUs
[ 0.000000] No local APIC present
[ 0.000000] APIC: disable apic facility
[ 0.000000] APIC: switched to apic NOOP
[ 0.000000] nr_irqs_gsi: 16
[ 0.000000] e820: [mem 0x20000000-0xffffffff] available for PCI devices
[ 0.000000] Booting paravirtualized kernel on Xen
[ 0.000000] Xen version: 4.4-unstable (preserve-AD)
[ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 28 pages/cpu @ffff88001fc00000 s83200 r8192 d23296 u1048576
[ 0.000000] pcpu-alloc: s83200 r8192 d23296 u1048576 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1
[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 128906
[ 0.000000] Policy zone: DMA32
[ 0.000000] Kernel command line: root=/dev/xvda1 ro slub_debug
[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Memory: 468620K/523900K available (10729K kernel code, 978K rwdata, 4200K rodata, 1068K init, 9580K bss, 55280K reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
[ 0.000000] Additional per-CPU info printed with stalls.
[ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2.
[ 0.000000] NR_IRQS:4352 nr_irqs:288 16
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] console [hvc0] enabled
[ 0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[ 0.000000] ... MAX_LOCKDEP_SUBCLASSES: 8
[ 0.000000] ... MAX_LOCK_DEPTH: 48
[ 0.000000] ... MAX_LOCKDEP_KEYS: 8191
[ 0.000000] ... CLASSHASH_SIZE: 4096
[ 0.000000] ... MAX_LOCKDEP_ENTRIES: 16384
[ 0.000000] ... MAX_LOCKDEP_CHAINS: 32768
[ 0.000000] ... CHAINHASH_SIZE: 16384
[ 0.000000] memory used by lock dependency info: 5855 kB
[ 0.000000] per task-struct memory footprint: 1920 bytes
[ 0.000000] kmemleak: Kernel memory leak detector disabled
[ 0.000000] Xen: using vcpuop timer interface
[ 0.000000] installing Xen timer for CPU 0
[ 0.000000] tsc: Detected 3200.180 MHz processor
[ 0.000000] tsc: Marking TSC unstable due to TSCs unsynchronized
[ 0.003333] Calibrating delay loop (skipped), value calculated using timer frequency.. 6402.04 BogoMIPS (lpj=10667266)
[ 0.003333] pid_max: default: 32768 minimum: 301
[ 0.003333] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.003333] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.003333] Mount-cache hash table entries: 256
[ 0.003333] Initializing cgroup subsys freezer
[ 0.003333] Initializing cgroup subsys blkio
[ 0.003333] tseg: 0000000000
[ 0.003333] CPU: Physical Processor ID: 0
[ 0.003333] CPU: Processor Core ID: 1
[ 0.003333] Last level iTLB entries: 4KB 512, 2MB 16, 4MB 8
[ 0.003333] Last level dTLB entries: 4KB 512, 2MB 128, 4MB 64
[ 0.003333] tlb_flushall_shift: 4
[ 0.044828] cpu 0 spinlock event irq 17
[ 0.045830] Performance Events:
[ 0.045848] no APIC, boot with the "lapic" boot parameter to force-enable it.
[ 0.045855] no hardware sampling interrupt available.
[ 0.045880] Broken PMU hardware detected, using software events only.
[ 0.045882] Failed to access perfctr msr (MSR c0010004 is 0)
[ 0.063598] NMI watchdog: disabled (cpu0): hardware events not enabled
[ 0.070288] installing Xen timer for CPU 1
[ 0.070377] cpu 1 spinlock event irq 24
[ 0.070456] SMP alternatives: lockdep: fixing up alternatives
[ 0.070469] SMP alternatives: switching to SMP code
[ 0.112838] Brought up 2 CPUs
[ 0.113810] devtmpfs: initialized
[ 0.115040] xor: measuring software checksum speed
[ 0.144411] prefetch64-sse: 5412.000 MB/sec
[ 0.178307] generic_sse: 5330.400 MB/sec
[ 0.178318] xor: using function: prefetch64-sse (5412.000 MB/sec)
[ 0.178361] xen:grant_table: Grant tables using version 2 layout
[ 0.178420] Grant table initialized
[ 0.178917] NET: Registered protocol family 16
[ 0.183776] PCI: setting up Xen PCI frontend stub
[ 0.183800] PCI: pci_cache_line_size set to 64 bytes
[ 0.320441] bio: create slab <bio-0> at 0
[ 0.376754] raid6: sse2x1 3860 MB/s
[ 0.433368] raid6: sse2x2 5362 MB/s
[ 0.490003] raid6: sse2x4 5857 MB/s
[ 0.490005] raid6: using algorithm sse2x4 (5857 MB/s)
[ 0.490006] raid6: using intx1 recovery algorithm
[ 0.490306] ACPI: Interpreter disabled.
[ 0.490306] xen:balloon: Initialising balloon driver
[ 0.493520] xen_balloon: Initialising balloon driver
[ 0.496781] vgaarb: loaded
[ 0.497942] SCSI subsystem initialized
[ 0.497942] libata version 3.00 loaded.
[ 0.500538] usbcore: registered new interface driver usbfs
[ 0.500538] usbcore: registered new interface driver hub
[ 0.500538] usbcore: registered new device driver usb
[ 0.500538] Linux video capture interface: v2.00
[ 0.503529] pps_core: LinuxPPS API ver. 1 registered
[ 0.503542] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.503612] PTP clock support registered
[ 0.503625] Advanced Linux Sound Architecture Driver Initialized.
[ 0.503648] PCI: System does not support PCI
[ 0.503650] PCI: System does not support PCI
[ 0.506907] Bluetooth: Core ver 2.16
[ 0.506997] NET: Registered protocol family 31
[ 0.506997] Bluetooth: HCI device and connection manager initialized
[ 0.506997] Bluetooth: HCI socket layer initialized
[ 0.506997] Bluetooth: L2CAP socket layer initialized
[ 0.506997] Bluetooth: SCO socket layer initialized
[ 0.507279] Switched to clocksource xen
[ 0.507396] FS-Cache: Loaded
[ 0.507636] pnp: PnP ACPI: disabled
[ 0.539117] NET: Registered protocol family 2
[ 0.539897] TCP established hash table entries: 4096 (order: 4, 65536 bytes)
[ 0.540019] TCP bind hash table entries: 4096 (order: 6, 262144 bytes)
[ 0.540277] TCP: Hash tables configured (established 4096 bind 4096)
[ 0.540362] TCP: reno registered
[ 0.540401] UDP hash table entries: 256 (order: 3, 40960 bytes)
[ 0.540458] UDP-Lite hash table entries: 256 (order: 3, 40960 bytes)
[ 0.540871] NET: Registered protocol family 1
[ 0.540925] PCI: CLS 0 bytes, default 64
[ 0.541330] Trying to unpack rootfs image as initramfs...
[ 0.604671] Freeing initrd memory: 14420K (ffff880003188000 - ffff880003f9d000)
[ 0.810210] DMA-API: preallocated 65536 debug entries
[ 0.810232] DMA-API: debugging enabled by kernel config
[ 0.810899] platform rtc_cmos: registered platform RTC device (no PNP device found)
[ 0.813974] Scanning for low memory corruption every 60 seconds
[ 0.817883] sha1_ssse3: Neither AVX nor SSSE3 is available/usable.
[ 0.817897] sha256_ssse3: Neither AVX nor SSSE3 is available/usable.
[ 0.817902] sha512_ssse3: Neither AVX nor SSSE3 is available/usable.
[ 0.817908] AVX or AES-NI instructions are not detected.
[ 0.817912] AVX instructions are not detected.
[ 0.817916] AVX instructions are not detected.
[ 0.820512] audit: initializing netlink socket (disabled)
[ 0.820601] type=2000 audit(1383778218.007:1): initialized
[ 0.822275] bounce pool size: 64 pages
[ 0.822293] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.878200] VFS: Disk quotas dquot_6.5.2
[ 0.878818] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.897415] NTFS driver 2.1.30 [Flags: R/W].
[ 0.900483] fuse init (API version 7.22)
[ 0.905703] bio: create slab <bio-1> at 1
[ 0.910323] Btrfs loaded
[ 0.914633] GFS2 installed
[ 0.916780] ceph: loaded (mds proto 32)
[ 0.916827] msgmni has been set to 943
[ 0.920847] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[ 0.920891] io scheduler noop registered
[ 0.920896] io scheduler deadline registered
[ 0.921766] io scheduler cfq registered (default)
[ 0.923034] crc32: CRC_LE_BITS = 64, CRC_BE BITS = 64
[ 0.923046] crc32: self tests passed, processed 225944 bytes in 109410 nsec
[ 0.923163] crc32c: CRC_LE_BITS = 64
[ 0.923168] crc32c: self tests passed, processed 225944 bytes in 54579 nsec
[ 0.924335] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 0.925132] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 0.925447] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 0.925456] acpiphp_ibm: ibm_acpiphp_init: acpi_walk_namespace failed
[ 0.926534] usbcore: registered new interface driver udlfb
[ 0.927691] xen:xen_evtchn: Event-channel device installed
[ 0.932426] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 0.936695] Linux agpgart interface v0.103
[ 0.938516] Hangcheck: starting hangcheck timer 0.9.1 (tick is 180 seconds, margin is 60 seconds).
[ 0.938518] Hangcheck: Using getrawmonotonic().
[ 0.938784] [drm] Initialized drm 1.1.0 20060810
[ 0.939112] [drm] radeon kernel modesetting enabled.
[ 0.957684] brd: module loaded
[ 0.966412] loop: module loaded
[ 0.975940] tun: Universal TUN/TAP device driver, 1.6
[ 0.975955] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[ 0.976391] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[ 0.976403] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 0.976818] e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
[ 0.976831] e1000e: Copyright(c) 1999 - 2013 Intel Corporation.
[ 0.977343] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.0.5-k
[ 0.977353] igb: Copyright (c) 2007-2013 Intel Corporation.
[ 0.977696] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.0.2-k
[ 0.977709] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[ 0.978502] xen_netfront: Initialising Xen virtual ethernet driver
[ 0.983343] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.983353] ehci-pci: EHCI PCI platform driver
[ 0.984249] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.984258] ohci-pci: OHCI PCI platform driver
[ 0.984564] uhci_hcd: USB Universal Host Controller Interface driver
[ 0.986205] usbcore: registered new interface driver usblp
[ 0.986958] usbcore: registered new interface driver usb-storage
[ 0.987932] usbcore: registered new interface driver usbserial
[ 0.988274] usbcore: registered new interface driver cp210x
[ 0.988703] usbserial: USB Serial support registered for cp210x
[ 0.988952] usbcore: registered new interface driver cypress_m8
[ 0.989238] usbserial: USB Serial support registered for DeLorme Earthmate USB
[ 0.989573] usbserial: USB Serial support registered for HID->COM RS232 Adapter
[ 0.989870] usbserial: USB Serial support registered for Nokia CA-42 V2 Adapter
[ 0.990111] usbcore: registered new interface driver mos7720
[ 0.990417] usbserial: USB Serial support registered for Moschip 2 port adapter
[ 0.990654] usbcore: registered new interface driver mos7840
[ 0.993506] usbserial: USB Serial support registered for Moschip 7840/7820 USB Serial Driver
[ 0.994349] i8042: PNP: No PS/2 controller found. Probing ports directly.
[ 1.009583] blkfront: xvda: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled;
[ 2.002564] i8042: No controller found
[ 2.004200] mousedev: PS/2 mouse device common for all mice
[ 2.066703] rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0
[ 2.068031] rtc_cmos: probe of rtc_cmos failed with error -38
[ 2.071810] lirc_dev: IR Remote Control driver registered, major 248
[ 2.071854] IR NEC protocol handler initialized
[ 2.071860] IR RC5(x) protocol handler initialized
[ 2.071864] IR RC6 protocol handler initialized
[ 2.071868] IR JVC protocol handler initialized
[ 2.071873] IR Sony protocol handler initialized
[ 2.071877] IR RC5 (streamzap) protocol handler initialized
[ 2.071882] IR SANYO protocol handler initialized
[ 2.071886] IR MCE Keyboard/mouse protocol handler initialized
[ 2.071891] IR LIRC bridge handler initialized
[ 2.071896] cx25821: driver version 0.0.106 loaded
[ 2.072860] usbcore: registered new interface driver pvrusb2
[ 2.072890] pvrusb2: V4L in-tree version:Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner
[ 2.072897] pvrusb2: Debug mask is 31 (0x1f)
[ 2.073903] sp5100_tco: SP5100/SB800 TCO WatchDog Timer Driver v0.05
[ 2.074490] xen_wdt: Xen WatchDog Timer Driver v0.01
[ 2.075432] xen_wdt: initialized (timeout=60s, nowayout=0)
[ 2.079512] device-mapper: ioctl: 4.26.0-ioctl (2013-08-15) initialised: dm-devel@redhat.com
[ 2.082630] device-mapper: cache-policy-mq: version 1.0.0 loaded
[ 2.082660] device-mapper: cache cleaner: version 1.0.0 loaded
[ 2.082666] Bluetooth: Virtual HCI driver ver 1.3
[ 2.083086] Bluetooth: HCI UART driver ver 2.2
[ 2.083098] Bluetooth: HCI H4 protocol initialized
[ 2.083103] Bluetooth: HCI BCSP protocol initialized
[ 2.083107] Bluetooth: HCILL protocol initialized
[ 2.083111] Bluetooth: HCIATH3K protocol initialized
[ 2.083115] Bluetooth: HCI Three-wire UART (H5) protocol initialized
[ 2.083439] usbcore: registered new interface driver bcm203x
[ 2.084033] usbcore: registered new interface driver bpa10x
[ 2.084374] usbcore: registered new interface driver bfusb
[ 2.084716] usbcore: registered new interface driver btusb
[ 2.085210] usbcore: registered new interface driver ath3k
[ 2.085814] hidraw: raw HID events driver (C) Jiri Kosina
[ 2.088974] usbcore: registered new interface driver usbhid
[ 2.088983] usbhid: USB HID core driver
[ 2.097677] usbcore: registered new interface driver snd-usb-audio
[ 2.097975] usbcore: registered new interface driver snd-ua101
[ 2.098252] usbcore: registered new interface driver snd-usb-usx2y
[ 2.098526] usbcore: registered new interface driver snd-usb-caiaq
[ 2.098797] usbcore: registered new interface driver snd-usb-6fire
[ 2.098882] Netfilter messages via NETLINK v0.30.
[ 2.098913] nfnl_acct: registering with nfnetlink.
[ 2.099088] nf_conntrack version 0.5.0 (3773 buckets, 15092 max)
[ 2.100344] ctnetlink v0.93: registering with nfnetlink.
[ 2.101476] xt_time: kernel timezone is -0000
[ 2.101498] xvda: xvda1 xvda2
[ 2.101509] ip_set: protocol 6
[ 2.101550] IPVS: Registered protocols ()
[ 2.102027] IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
[ 2.102231] IPVS: Creating netns size=1904 id=0
[ 2.102595] IPVS: ipvs loaded.
[ 2.103069] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 2.103473] TCP: cubic registered
[ 2.103480] NET: Registered protocol family 17
[ 2.104492] Bridge firewalling registered
[ 2.104524] Ebtables v2.0 registered
[ 2.105453] Bluetooth: RFCOMM TTY layer initialized
[ 2.105561] Bluetooth: RFCOMM socket layer initialized
[ 2.105567] Bluetooth: RFCOMM ver 1.11
[ 2.105571] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 2.105576] Bluetooth: BNEP filters: protocol multicast
[ 2.105598] Bluetooth: BNEP socket layer initialized
[ 2.105603] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[ 2.105626] Bluetooth: HIDP socket layer initialized
[ 2.105668] Key type ceph registered
[ 2.107631] libceph: loaded (mon/osd proto 15/24)
[ 2.109119] registered taskstats version 1
[ 2.109623] console [netcon0] enabled
[ 2.109634] netconsole: network logging started
[ 2.109640] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[ 2.109837] ALSA device list:
[ 2.109844] No soundcards found.
[ 2.111258] Freeing unused kernel memory: 1068K (ffffffff822f6000 - ffffffff82401000)
[ 2.111275] Write protecting the kernel read-only data: 18432k
[ 2.120228] Freeing unused kernel memory: 1548K (ffff880001a7d000 - ffff880001c00000)
[ 2.121537] Freeing unused kernel memory: 1944K (ffff88000201a000 - ffff880002200000)
[ 2.174907] udevd[1207]: starting version 175
[ 4.324325] EXT4-fs (xvda1): mounted filesystem with ordered data mode. Opts: (null)
[ 8.933317] udevd[1429]: starting version 175
[ 15.570258] Adding 523260k swap on /dev/xvda2. Priority:-1 extents:1 across:523260k SS
[ 15.637450] EXT4-fs (xvda1): re-mounted. Opts: (null)
[ 15.896610] EXT4-fs (xvda1): re-mounted. Opts: errors=remount-ro
[34856.970314] =============================================================================
[34856.970332] BUG kmalloc-2048 (Not tainted): Poison overwritten
[34856.970339] -----------------------------------------------------------------------------
[34856.970339]
[34856.970350] Disabling lock debugging due to kernel taint
[34856.970357] INFO: 0xffff88001b36099b-0xffff88001b36099b. First byte 0x6a instead of 0x6b
[34856.970371] INFO: Allocated in __alloc_skb+0x82/0x290 age=2 cpu=0 pid=2818
[34856.970381] __slab_alloc.isra.57+0x61e/0x6d6
[34856.970389] __kmalloc_node_track_caller+0xc9/0x1b0
[34856.970396] __kmalloc_reserve.isra.49+0x37/0xa0
[34856.970402] __alloc_skb+0x82/0x290
[34856.970408] sk_stream_alloc_skb+0x3f/0x120
[34856.970414] tcp_sendmsg+0x615/0xe20
[34856.970419] inet_sendmsg+0xa6/0x100
[34856.970426] sock_aio_write+0xc2/0xe0
[34856.970433] do_sync_readv_writev+0x4e/0x80
[34856.970439] do_readv_writev+0xe8/0x270
[34856.970444] vfs_writev+0x30/0x60
[34856.970449] SyS_writev+0x54/0xd0
[34856.970454] system_call_fastpath+0x16/0x1b
[34856.970461] INFO: Freed in skb_free_head+0x64/0x70 age=2 cpu=0 pid=0
[34856.970468] __slab_free+0x30/0x561
[34856.970474] kfree+0x1fd/0x210
[34856.970479] skb_free_head+0x64/0x70
[34856.970484] skb_release_data+0xf3/0x100
[34856.970492] skb_release_all+0x23/0x30
[34856.970497] __kfree_skb+0x11/0xa0
[34856.970503] tcp_ack+0x64a/0xf20
[34856.970509] tcp_rcv_established+0xe2/0x5c0
[34856.970515] tcp_v4_do_rcv+0x14e/0x4a0
[34856.970520] tcp_v4_rcv+0x8f2/0x9c0
[34856.970527] ip_local_deliver_finish+0xd8/0x1d0
[34856.970533] ip_local_deliver+0x34/0x90
[34856.970539] ip_rcv_finish+0x150/0x660
[34856.970544] ip_rcv+0x22b/0x370
[34856.970551] __netif_receive_skb_core+0x6e2/0x8b0
[34856.970557] __netif_receive_skb+0x1c/0x70
[34856.970563] INFO: Slab 0xffffea00006cd800 objects=13 used=13 fp=0x (null) flags=0x40000000004080
[34856.970572] INFO: Object 0xffff88001b360948 @offset=2376 fp=0xffff88001b3637b0
[34856.970572]
[34856.973176] Bytes b4 ffff88001b360938: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
[34856.973176] Object ffff88001b360948: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360958: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360968: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360978: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360988: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360998: 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkjkkkkkkkkkkkk
[34856.973176] Object ffff88001b3609a8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3609b8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3609c8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3609d8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3609e8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3609f8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a08: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a18: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a28: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a38: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a48: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a58: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a68: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a78: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a88: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360a98: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360aa8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ab8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ac8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ad8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ae8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360af8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b08: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b18: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b28: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b38: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b48: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b58: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b68: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b78: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b88: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360b98: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ba8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360bb8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360bc8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360bd8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360be8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360bf8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c08: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c18: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c28: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c38: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c48: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c58: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c68: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c78: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c88: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360c98: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ca8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360cb8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360cc8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360cd8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ce8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360cf8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d08: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d18: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d28: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d38: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d48: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d58: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d68: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d78: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d88: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360d98: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360da8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360db8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360dc8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360dd8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360de8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360df8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e08: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e18: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e28: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e38: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e48: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e58: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e68: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e78: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e88: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360e98: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ea8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360eb8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ec8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ed8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ee8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ef8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f08: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f18: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f28: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f38: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f48: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f58: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f68: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f78: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f88: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360f98: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360fa8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360fb8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360fc8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360fd8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360fe8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b360ff8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361008: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361018: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361028: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361038: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361048: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361058: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361068: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361078: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361088: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361098: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3610a8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3610b8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3610c8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3610d8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3610e8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b3610f8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361108: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361118: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361128: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[34856.973176] Object ffff88001b361138: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk.
[34856.973176] Redzone ffff88001b361148: bb bb bb bb bb bb bb bb ........
[34856.973176] Padding ffff88001b361288: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
[34856.973176] CPU: 1 PID: 2818 Comm: glusterfs Tainted: G B 3.12.0-20131104 #1
[34856.973176] ffff88001b360948 ffff88001ad218e8 ffffffff81a6a8ba ffff88001eb36b40
[34856.973176] ffff88001e802d80 ffff88001ad21918 ffffffff8117af19 ffff88001b36099c
[34856.973176] ffff88001e802d80 000000000000006b ffff88001b360948 ffff88001ad21968
[34856.973176] Call Trace:
[34856.973176] [<ffffffff81a6a8ba>] dump_stack+0x4f/0x84
[34856.973176] [<ffffffff8117af19>] print_trailer+0xf9/0x160
[34856.973176] [<ffffffff8117b0b2>] check_bytes_and_report+0xe2/0x120
[34856.973176] [<ffffffff8117b2b7>] check_object+0x1c7/0x240
[34856.973176] [<ffffffff818ffac2>] ? __alloc_skb+0x82/0x290
[34856.973176] [<ffffffff81a66cc2>] alloc_debug_processing+0x153/0x168
[34856.973176] [<ffffffff81a672f5>] __slab_alloc.isra.57+0x61e/0x6d6
[34856.973176] [<ffffffff810ef7bb>] ? trace_hardirqs_on_caller+0xfb/0x240
[34856.973176] [<ffffffff818ffac2>] ? __alloc_skb+0x82/0x290
[34856.973176] [<ffffffff810ef624>] ? mark_held_locks+0x94/0x130
[34856.973176] [<ffffffff8117ef49>] __kmalloc_node_track_caller+0xc9/0x1b0
[34856.973176] [<ffffffff818ffac2>] ? __alloc_skb+0x82/0x290
[34856.973176] [<ffffffff818ff9d7>] __kmalloc_reserve.isra.49+0x37/0xa0
[34856.973176] [<ffffffff818ffa92>] ? __alloc_skb+0x52/0x290
[34856.973176] [<ffffffff818ffac2>] __alloc_skb+0x82/0x290
[34856.973176] [<ffffffff810f372a>] ? lock_release+0x12a/0x250
[34856.973176] [<ffffffff819af1af>] sk_stream_alloc_skb+0x3f/0x120
[34856.973176] [<ffffffff819aff85>] tcp_sendmsg+0x615/0xe20
[34856.973176] [<ffffffff819d7e16>] inet_sendmsg+0xa6/0x100
[34856.973176] [<ffffffff819d7d70>] ? inet_autobind+0x60/0x60
[34856.973176] [<ffffffff818f57b2>] sock_aio_write+0xc2/0xe0
[34856.973176] [<ffffffff811899be>] do_sync_readv_writev+0x4e/0x80
[34856.973176] [<ffffffff8118b0e8>] do_readv_writev+0xe8/0x270
[34856.973176] [<ffffffff810f372a>] ? lock_release+0x12a/0x250
[34856.973176] [<ffffffff8118b2a0>] vfs_writev+0x30/0x60
[34856.973176] [<ffffffff8118b444>] SyS_writev+0x54/0xd0
[34856.973176] [<ffffffff81a76379>] system_call_fastpath+0x16/0x1b
[34856.973176] FIX kmalloc-2048: Restoring 0xffff88001b36099b-0xffff88001b36099b=0x6b
[34856.973176]
[34856.973176] FIX kmalloc-2048: Marking all objects used
[81155.636434] =============================================================================
[81155.636459] BUG skbuff_head_cache (Tainted: G B ): Poison overwritten
[81155.636469] -----------------------------------------------------------------------------
[81155.636469]
[81155.636481] INFO: 0xffff88001e1e7b1b-0xffff88001e1e7b1b. First byte 0x6a instead of 0x6b
[81155.636495] INFO: Allocated in build_skb+0x2f/0x1c0 age=3 cpu=0 pid=0
[81155.636506] __slab_alloc.isra.57+0x61e/0x6d6
[81155.636513] kmem_cache_alloc+0x10a/0x140
[81155.636519] build_skb+0x2f/0x1c0
[81155.636524] __netdev_alloc_skb+0x91/0xf0
[81155.636532] xennet_alloc_rx_buffers+0xb6/0x340
[81155.636538] xennet_poll+0x6c7/0xdb0
[81155.636545] net_rx_action+0x159/0x250
[81155.636551] __do_softirq+0xea/0x1e0
[81155.636557] call_softirq+0x1c/0x30
[81155.636564] do_softirq+0x95/0x100
[81155.636569] irq_exit+0xa2/0xd0
[81155.636576] xen_evtchn_do_upcall+0x2f/0x40
[81155.636582] xen_do_hypervisor_callback+0x1e/0x30
[81155.636595] INFO: Freed in __kfree_skb+0x3a/0xa0 age=2 cpu=0 pid=0
[81155.636603] __slab_free+0x30/0x561
[81155.636608] kmem_cache_free+0x212/0x230
[81155.636614] __kfree_skb+0x3a/0xa0
[81155.636620] tcp_rcv_established+0x33b/0x5c0
[81155.636627] tcp_v4_do_rcv+0x14e/0x4a0
[81155.636633] tcp_v4_rcv+0x8f2/0x9c0
[81155.636639] ip_local_deliver_finish+0xd8/0x1d0
[81155.636647] ip_local_deliver+0x34/0x90
[81155.636653] ip_rcv_finish+0x150/0x660
[81155.636659] ip_rcv+0x22b/0x370
[81155.636664] __netif_receive_skb_core+0x6e2/0x8b0
[81155.636670] __netif_receive_skb+0x1c/0x70
[81155.636676] netif_receive_skb+0x1e/0x100
[81155.636681] xennet_poll+0x8a4/0xdb0
[81155.636687] net_rx_action+0x159/0x250
[81155.636692] __do_softirq+0xea/0x1e0
[81155.636698] INFO: Slab 0xffffea0000787980 objects=14 used=14 fp=0x (null) flags=0x40000000004080
[81155.636707] INFO: Object 0xffff88001e1e7b00 @offset=6912 fp=0xffff88001e1e6b40
[81155.636707]
[81155.636719] Bytes b4 ffff88001e1e7af0: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZZZZZZZZZ
[81155.636728] Object ffff88001e1e7b00: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636738] Object ffff88001e1e7b10: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6a 6b 6b 6b 6b kkkkkkkkkkkjkkkk
[81155.636748] Object ffff88001e1e7b20: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636757] Object ffff88001e1e7b30: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636766] Object ffff88001e1e7b40: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636775] Object ffff88001e1e7b50: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636785] Object ffff88001e1e7b60: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636794] Object ffff88001e1e7b70: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636803] Object ffff88001e1e7b80: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636812] Object ffff88001e1e7b90: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636821] Object ffff88001e1e7ba0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636830] Object ffff88001e1e7bb0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636839] Object ffff88001e1e7bc0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636848] Object ffff88001e1e7bd0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[81155.636857] Object ffff88001e1e7be0: 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkk.
[81155.636869] Redzone ffff88001e1e7be8: bb bb bb bb bb bb bb bb ........
[81155.636881] Padding ffff88001e1e7d28: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZZZZZZZZZ
[81155.636890] Padding ffff88001e1e7d38: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
[81155.636912] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G B 3.12.0-20131104 #1
[81155.636914] ffff88001e1e7b00 ffff88001fc039d0 ffffffff81a6a8ba ffffffff822134e0
[81155.636920] ffff88001e93e6c0 ffff88001fc03a00 ffffffff8117af19 ffff88001e1e7b1c
[81155.636924] ffff88001e93e6c0 000000000000006b ffff88001e1e7b00 ffff88001fc03a50
[81155.636928] Call Trace:
[81155.636930] <IRQ> [<ffffffff81a6a8ba>] dump_stack+0x4f/0x84
[81155.636936] [<ffffffff8117af19>] print_trailer+0xf9/0x160
[81155.636940] [<ffffffff8117b0b2>] check_bytes_and_report+0xe2/0x120
[81155.636943] [<ffffffff8117b2b7>] check_object+0x1c7/0x240
[81155.636947] [<ffffffff818fe78f>] ? build_skb+0x2f/0x1c0
[81155.636950] [<ffffffff81a66cc2>] alloc_debug_processing+0x153/0x168
[81155.636954] [<ffffffff81a672f5>] __slab_alloc.isra.57+0x61e/0x6d6
[81155.636957] [<ffffffff819a058d>] ? ip_local_deliver_finish+0x17d/0x1d0
[81155.636961] [<ffffffff819a044c>] ? ip_local_deliver_finish+0x3c/0x1d0
[81155.636964] [<ffffffff818fe78f>] ? build_skb+0x2f/0x1c0
[81155.636968] [<ffffffff819a0754>] ? ip_local_deliver+0x34/0x90
[81155.636971] [<ffffffff8199ff00>] ? ip_rcv_finish+0x150/0x660
[81155.636975] [<ffffffff8117ce7a>] kmem_cache_alloc+0x10a/0x140
[81155.636978] [<ffffffff818fe78f>] ? build_skb+0x2f/0x1c0
[81155.636981] [<ffffffff818fe78f>] build_skb+0x2f/0x1c0
[81155.636985] [<ffffffff819004b1>] __netdev_alloc_skb+0x91/0xf0
[81155.636988] [<ffffffff816d50a6>] xennet_alloc_rx_buffers+0xb6/0x340
[81155.636991] [<ffffffff8190d1be>] ? netif_receive_skb+0x1e/0x100
[81155.636995] [<ffffffff816d6fb7>] xennet_poll+0x6c7/0xdb0
[81155.636999] [<ffffffff8190d669>] net_rx_action+0x159/0x250
[81155.637003] [<ffffffff8109fa3a>] __do_softirq+0xea/0x1e0
[81155.637006] [<ffffffff81a777bc>] call_softirq+0x1c/0x30
[81155.637009] [<ffffffff81010dc5>] do_softirq+0x95/0x100
[81155.637013] [<ffffffff8109fce2>] irq_exit+0xa2/0xd0
[81155.637016] [<ffffffff814bb2af>] xen_evtchn_do_upcall+0x2f/0x40
[81155.637019] [<ffffffff81a7781e>] xen_do_hypervisor_callback+0x1e/0x30
[81155.637021] <EOI> [<ffffffff810013aa>] ? xen_hypercall_sched_op+0xa/0x20
[81155.637027] [<ffffffff810013aa>] ? xen_hypercall_sched_op+0xa/0x20
[81155.637031] [<ffffffff81008da0>] ? xen_safe_halt+0x10/0x20
[81155.637034] [<ffffffff810185cd>] ? default_idle+0x1d/0x30
[81155.637038] [<ffffffff81018f0e>] ? arch_cpu_idle+0x2e/0x40
[81155.637042] [<ffffffff810db410>] ? cpu_startup_entry+0x80/0x1d0
[81155.637046] [<ffffffff81a5ebf1>] ? rest_init+0xc1/0xd0
[81155.637049] [<ffffffff81a5eb30>] ? csum_partial_copy_generic+0x170/0x170
[81155.637054] [<ffffffff8230bee6>] ? start_kernel+0x3d3/0x3e0
[81155.637058] [<ffffffff8230b912>] ? repair_env_string+0x5e/0x5e
[81155.637061] [<ffffffff810d89f7>] ? __add_preferred_console.constprop.18+0x87/0xb0
[81155.637065] [<ffffffff8230b5f8>] ? x86_64_start_reservations+0x2a/0x2c
[81155.637069] [<ffffffff8230ecd9>] ? xen_start_kernel+0x563/0x56d
[81155.637072] FIX skbuff_head_cache: Restoring 0xffff88001e1e7b1b-0xffff88001e1e7b1b=0x6b
[81155.637072]
[81155.637084] FIX skbuff_head_cache: Marking all objects used
[81234.562076] BUG: unable to handle kernel paging request at ffffffff80014120
[81234.562131] IP: [<ffffffff80014120>] 0xffffffff8001411f
[81234.562159] PGD 220f067 PUD 2210067 PMD 0
[81234.562186] Oops: 0010 [#1] PREEMPT SMP
[81234.562192] Modules linked in:
[81234.562198] CPU: 1 PID: 7992 Comm: smbd Tainted: G B 3.12.0-20131104 #1
[81234.562206] task: ffff88001d934780 ti: ffff88000eb28000 task.ti: ffff88000eb28000
[81234.562212] RIP: e030:[<ffffffff80014120>] [<ffffffff80014120>] 0xffffffff8001411f
[81234.562219] RSP: e02b:ffff88000eb29e10 EFLAGS: 00010246
[81234.562224] RAX: ffffffff80014120 RBX: fffffffffffffff4 RCX: 0000000000000000
[81234.562230] RDX: 000000000007e000 RSI: 0000000000000000 RDI: 0000000000000000
[81234.562235] RBP: ffff88000eb29e28 R08: 0000000000000022 R09: 00007ffffffff000
[81234.562241] R10: 000000000000007e R11: fffffffffffffff4 R12: 000000000007e000
[81234.562246] R13: 0000000000000022 R14: ffff88001b25cac0 R15: 000000000007e000
[81234.562254] FS: 00007fdc5cc42720(0000) GS:ffff88001fd00000(0000) knlGS:0000000000000000
[81234.562260] CS: e033 DS: 0000 ES: 0000 CR0: 000000008005003b
[81234.562265] CR2: ffffffff80014120 CR3: 0000000004d1d000 CR4: 0000000000000660
[81234.562271] Stack:
[81234.562274] ffffffff8115ce9d 0000000000000003 0000000000000000 ffff88000eb29e88
[81234.562283] ffffffff8115fb4a 0000000000000000 0000000000000000 000000000000007e
[81234.562292] 0000000000000000 ffff88000eb29e88 ffff88001b25cb50 0000000000000000
[81234.562300] Call Trace:
[81234.562308] [<ffffffff8115ce9d>] ? get_unmapped_area+0x9d/0x150
[81234.562314] [<ffffffff8115fb4a>] do_mmap_pgoff+0x10a/0x3e0
[81234.562321] [<ffffffff8114ba10>] vm_mmap_pgoff+0x70/0xb0
[81234.562326] [<ffffffff8115e38c>] SyS_mmap_pgoff+0x1cc/0x260
[81234.562334] [<ffffffff814209ee>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[81234.562342] [<ffffffff81013f1d>] SyS_mmap+0x1d/0x20
[81234.562349] [<ffffffff81a76379>] system_call_fastpath+0x16/0x1b
[81234.562354] Code: Bad RIP value.
[81234.562363] RIP [<ffffffff80014120>] 0xffffffff8001411f
[81234.562368] RSP <ffff88000eb29e10>
[81234.562372] CR2: ffffffff80014120
[81234.562379] ---[ end trace 4d2d192c2478dd2a ]---
^ permalink raw reply
* [patch iproute2 RFC 2/2] add support for IFA_F_MANAGETEMPADDR
From: Jiri Pirko @ 2013-11-11 14:50 UTC (permalink / raw)
To: netdev
Cc: davem, kuznet, jmorris, yoshfuji, kaber, thaller, stephen, hannes,
vyasevich, dcbw
In-Reply-To: <1384181442-23247-1-git-send-email-jiri@resnulli.us>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
---
include/linux/if_addr.h | 1 +
ip/ipaddress.c | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/include/linux/if_addr.h b/include/linux/if_addr.h
index cced59f..e1e95ce 100644
--- a/include/linux/if_addr.h
+++ b/include/linux/if_addr.h
@@ -45,6 +45,7 @@ enum {
#define IFA_F_DEPRECATED 0x20
#define IFA_F_TENTATIVE 0x40
#define IFA_F_PERMANENT 0x80
+#define IFA_F_MANAGETEMPADDR 0x0100
struct ifa_cacheinfo {
__u32 ifa_prefered;
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 59dbd71..fa6417d 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -703,6 +703,10 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
ifa_flags &= ~IFA_F_NODAD;
fprintf(fp, "nodad ");
}
+ if (ifa_flags & IFA_F_MANAGETEMPADDR) {
+ ifa_flags &= ~IFA_F_MANAGETEMPADDR;
+ fprintf(fp, "mngtmpaddr ");
+ }
if (!(ifa_flags & IFA_F_PERMANENT)) {
fprintf(fp, "dynamic ");
} else
@@ -1345,6 +1349,8 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
ifa_flags |= IFA_F_HOMEADDRESS;
} else if (strcmp(*argv, "nodad") == 0) {
ifa_flags |= IFA_F_NODAD;
+ } else if (strcmp(*argv, "mngtmpaddr") == 0) {
+ ifa_flags |= IFA_F_MANAGETEMPADDR;
} else {
if (strcmp(*argv, "local") == 0) {
NEXT_ARG();
--
1.8.3.1
^ permalink raw reply related
* [patch iproute2 RFC 1/2] add support for extended ifa_flags
From: Jiri Pirko @ 2013-11-11 14:50 UTC (permalink / raw)
To: netdev
Cc: davem, kuznet, jmorris, yoshfuji, kaber, thaller, stephen, hannes,
vyasevich, dcbw
In-Reply-To: <1384181359-23199-1-git-send-email-jiri@resnulli.us>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
---
include/linux/if_addr.h | 1 +
ip/ipaddress.c | 44 ++++++++++++++++++++++++++++++--------------
2 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/include/linux/if_addr.h b/include/linux/if_addr.h
index 58b39f4..cced59f 100644
--- a/include/linux/if_addr.h
+++ b/include/linux/if_addr.h
@@ -28,6 +28,7 @@ enum {
IFA_ANYCAST,
IFA_CACHEINFO,
IFA_MULTICAST,
+ IFA_FLAGS,
__IFA_MAX,
};
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 1c3e4da..59dbd71 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -541,6 +541,13 @@ static int set_lifetime(unsigned int *lifetime, char *argv)
return 0;
}
+static unsigned int get_ifa_flags(struct ifaddrmsg *ifa,
+ struct rtattr *ifa_flags_attr)
+{
+ return ifa_flags_attr ? rta_getattr_u32(ifa_flags_attr) :
+ ifa->ifa_flags;
+}
+
int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
void *arg)
{
@@ -567,6 +574,8 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
parse_rtattr(rta_tb, IFA_MAX, IFA_RTA(ifa), n->nlmsg_len - NLMSG_LENGTH(sizeof(*ifa)));
+ ifa_flags = get_ifa_flags(ifa, rta_tb[IFA_FLAGS]);
+
if (!rta_tb[IFA_LOCAL])
rta_tb[IFA_LOCAL] = rta_tb[IFA_ADDRESS];
if (!rta_tb[IFA_ADDRESS])
@@ -576,7 +585,7 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
return 0;
if ((filter.scope^ifa->ifa_scope)&filter.scopemask)
return 0;
- if ((filter.flags^ifa->ifa_flags)&filter.flagmask)
+ if ((filter.flags ^ ifa_flags) & filter.flagmask)
return 0;
if (filter.label) {
SPRINT_BUF(b1);
@@ -670,36 +679,35 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
abuf, sizeof(abuf)));
}
fprintf(fp, "scope %s ", rtnl_rtscope_n2a(ifa->ifa_scope, b1, sizeof(b1)));
- ifa_flags = ifa->ifa_flags;
- if (ifa->ifa_flags&IFA_F_SECONDARY) {
+ if (ifa_flags & IFA_F_SECONDARY) {
ifa_flags &= ~IFA_F_SECONDARY;
if (ifa->ifa_family == AF_INET6)
fprintf(fp, "temporary ");
else
fprintf(fp, "secondary ");
}
- if (ifa->ifa_flags&IFA_F_TENTATIVE) {
+ if (ifa_flags & IFA_F_TENTATIVE) {
ifa_flags &= ~IFA_F_TENTATIVE;
fprintf(fp, "tentative ");
}
- if (ifa->ifa_flags&IFA_F_DEPRECATED) {
+ if (ifa_flags & IFA_F_DEPRECATED) {
ifa_flags &= ~IFA_F_DEPRECATED;
deprecated = 1;
fprintf(fp, "deprecated ");
}
- if (ifa->ifa_flags&IFA_F_HOMEADDRESS) {
+ if (ifa_flags & IFA_F_HOMEADDRESS) {
ifa_flags &= ~IFA_F_HOMEADDRESS;
fprintf(fp, "home ");
}
- if (ifa->ifa_flags&IFA_F_NODAD) {
+ if (ifa_flags & IFA_F_NODAD) {
ifa_flags &= ~IFA_F_NODAD;
fprintf(fp, "nodad ");
}
- if (!(ifa->ifa_flags&IFA_F_PERMANENT)) {
+ if (!(ifa_flags & IFA_F_PERMANENT)) {
fprintf(fp, "dynamic ");
} else
ifa_flags &= ~IFA_F_PERMANENT;
- if (ifa->ifa_flags&IFA_F_DADFAILED) {
+ if (ifa_flags & IFA_F_DADFAILED) {
ifa_flags &= ~IFA_F_DADFAILED;
fprintf(fp, "dadfailed ");
}
@@ -926,6 +934,8 @@ static void ipaddr_filter(struct nlmsg_chain *linfo, struct nlmsg_chain *ainfo)
for (a = ainfo->head; a; a = a->next) {
struct nlmsghdr *n = &a->h;
struct ifaddrmsg *ifa = NLMSG_DATA(n);
+ struct rtattr *tb[IFA_MAX + 1];
+ unsigned int ifa_flags;
if (ifa->ifa_index != ifi->ifi_index)
continue;
@@ -934,11 +944,13 @@ static void ipaddr_filter(struct nlmsg_chain *linfo, struct nlmsg_chain *ainfo)
continue;
if ((filter.scope^ifa->ifa_scope)&filter.scopemask)
continue;
- if ((filter.flags^ifa->ifa_flags)&filter.flagmask)
+
+ parse_rtattr(tb, IFA_MAX, IFA_RTA(ifa), IFA_PAYLOAD(n));
+ ifa_flags = get_ifa_flags(ifa, tb[IFA_FLAGS]);
+
+ if ((filter.flags ^ ifa_flags) & filter.flagmask)
continue;
if (filter.pfx.family || filter.label) {
- struct rtattr *tb[IFA_MAX+1];
- parse_rtattr(tb, IFA_MAX, IFA_RTA(ifa), IFA_PAYLOAD(n));
if (!tb[IFA_LOCAL])
tb[IFA_LOCAL] = tb[IFA_ADDRESS];
@@ -1252,6 +1264,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
__u32 preferred_lft = INFINITY_LIFE_TIME;
__u32 valid_lft = INFINITY_LIFE_TIME;
struct ifa_cacheinfo cinfo;
+ unsigned int ifa_flags = 0;
memset(&req, 0, sizeof(req));
@@ -1329,9 +1342,9 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
if (set_lifetime(&preferred_lft, *argv))
invarg("preferred_lft value", *argv);
} else if (strcmp(*argv, "home") == 0) {
- req.ifa.ifa_flags |= IFA_F_HOMEADDRESS;
+ ifa_flags |= IFA_F_HOMEADDRESS;
} else if (strcmp(*argv, "nodad") == 0) {
- req.ifa.ifa_flags |= IFA_F_NODAD;
+ ifa_flags |= IFA_F_NODAD;
} else {
if (strcmp(*argv, "local") == 0) {
NEXT_ARG();
@@ -1349,6 +1362,9 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
}
argc--; argv++;
}
+ req.ifa.ifa_flags = ifa_flags & 0xff;
+ addattr32(&req.n, sizeof(req), IFA_FLAGS, ifa_flags);
+
if (d == NULL) {
fprintf(stderr, "Not enough information: \"dev\" argument is required.\n");
return -1;
--
1.8.3.1
^ permalink raw reply related
* [patch net-next RFC 2/2] ipv6 addrconf: introduce IFA_F_MANAGETEMPADDR to tell kernel to manage temporary addresses
From: Jiri Pirko @ 2013-11-11 14:49 UTC (permalink / raw)
To: netdev
Cc: davem, kuznet, jmorris, yoshfuji, kaber, thaller, stephen, hannes,
vyasevich, dcbw
In-Reply-To: <1384181359-23199-1-git-send-email-jiri@resnulli.us>
Creating an address with this flag set will result in kernel taking care
of temporary addresses in the same way as if the address was created by
kernel itself (after RA receive). This allows userspace applications
implementing the autoconfiguration (NetworkManager for example) to
implement ipv6 addresses privacy.
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Thomas Haller <thaller@redhat.com>
---
include/uapi/linux/if_addr.h | 1 +
net/ipv6/addrconf.c | 161 ++++++++++++++++++++++++-------------------
2 files changed, 91 insertions(+), 71 deletions(-)
diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
index 8ab0c2c..cfed10b 100644
--- a/include/uapi/linux/if_addr.h
+++ b/include/uapi/linux/if_addr.h
@@ -48,6 +48,7 @@ enum {
#define IFA_F_DEPRECATED 0x20
#define IFA_F_TENTATIVE 0x40
#define IFA_F_PERMANENT 0x80
+#define IFA_F_MANAGETEMPADDR 0x100
struct ifa_cacheinfo {
__u32 ifa_prefered;
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 896aaa0..c79b63e 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -1010,7 +1010,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *i
u32 addr_flags;
unsigned long now = jiffies;
- write_lock(&idev->lock);
+ write_lock_bh(&idev->lock);
if (ift) {
spin_lock_bh(&ift->lock);
memcpy(&addr.s6_addr[8], &ift->addr.s6_addr[8], 8);
@@ -1022,7 +1022,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *i
retry:
in6_dev_hold(idev);
if (idev->cnf.use_tempaddr <= 0) {
- write_unlock(&idev->lock);
+ write_unlock_bh(&idev->lock);
pr_info("%s: use_tempaddr is disabled\n", __func__);
in6_dev_put(idev);
ret = -1;
@@ -1032,7 +1032,7 @@ retry:
if (ifp->regen_count++ >= idev->cnf.regen_max_retry) {
idev->cnf.use_tempaddr = -1; /*XXX*/
spin_unlock_bh(&ifp->lock);
- write_unlock(&idev->lock);
+ write_unlock_bh(&idev->lock);
pr_warn("%s: regeneration time exceeded - disabled temporary address support\n",
__func__);
in6_dev_put(idev);
@@ -1058,7 +1058,7 @@ retry:
regen_advance = idev->cnf.regen_max_retry *
idev->cnf.dad_transmits *
idev->nd_parms->retrans_time / HZ;
- write_unlock(&idev->lock);
+ write_unlock_bh(&idev->lock);
/* A temporary address is created only if this calculated Preferred
* Lifetime is greater than REGEN_ADVANCE time units. In particular,
@@ -1085,7 +1085,7 @@ retry:
in6_dev_put(idev);
pr_info("%s: retry temporary address regeneration\n", __func__);
tmpaddr = &addr;
- write_lock(&idev->lock);
+ write_lock_bh(&idev->lock);
goto retry;
}
@@ -2019,6 +2019,73 @@ static struct inet6_dev *addrconf_add_dev(struct net_device *dev)
return idev;
}
+static void manage_tempaddrs(struct inet6_dev *idev,
+ struct inet6_ifaddr *ifp,
+ __u32 valid_lft, __u32 prefered_lft,
+ bool create, unsigned long now)
+{
+ u32 flags;
+ struct inet6_ifaddr *ift;
+
+ read_lock_bh(&idev->lock);
+ /* update all temporary addresses in the list */
+ list_for_each_entry(ift, &idev->tempaddr_list, tmp_list) {
+ int age, max_valid, max_prefered;
+
+ if (ifp != ift->ifpub)
+ continue;
+
+ /* RFC 4941 section 3.3:
+ * If a received option will extend the lifetime of a public
+ * address, the lifetimes of temporary addresses should
+ * be extended, subject to the overall constraint that no
+ * temporary addresses should ever remain "valid" or "preferred"
+ * for a time longer than (TEMP_VALID_LIFETIME) or
+ * (TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR), respectively.
+ */
+ age = (now - ift->cstamp) / HZ;
+ max_valid = idev->cnf.temp_valid_lft - age;
+ if (max_valid < 0)
+ max_valid = 0;
+
+ max_prefered = idev->cnf.temp_prefered_lft -
+ idev->cnf.max_desync_factor - age;
+ if (max_prefered < 0)
+ max_prefered = 0;
+
+ if (valid_lft > max_valid)
+ valid_lft = max_valid;
+
+ if (prefered_lft > max_prefered)
+ prefered_lft = max_prefered;
+
+ spin_lock(&ift->lock);
+ flags = ift->flags;
+ ift->valid_lft = valid_lft;
+ ift->prefered_lft = prefered_lft;
+ ift->tstamp = now;
+ if (prefered_lft > 0)
+ ift->flags &= ~IFA_F_DEPRECATED;
+
+ spin_unlock(&ift->lock);
+ if (!(flags&IFA_F_TENTATIVE))
+ ipv6_ifa_notify(0, ift);
+ }
+
+ if ((create || list_empty(&idev->tempaddr_list)) &&
+ idev->cnf.use_tempaddr > 0) {
+ /* When a new public address is created as described
+ * in [ADDRCONF], also create a new temporary address.
+ * Also create a temporary address if it's enabled but
+ * no temporary address currently exists.
+ */
+ read_unlock_bh(&idev->lock);
+ ipv6_create_tempaddr(ifp, NULL);
+ } else {
+ read_unlock_bh(&idev->lock);
+ }
+}
+
void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len, bool sllao)
{
struct prefix_info *pinfo;
@@ -2173,6 +2240,7 @@ ok:
return;
}
+ ifp->flags |= IFA_F_MANAGETEMPADDR;
update_lft = 0;
create = 1;
ifp->cstamp = jiffies;
@@ -2183,7 +2251,6 @@ ok:
if (ifp) {
int flags;
unsigned long now;
- struct inet6_ifaddr *ift;
u32 stored_lft;
/* update lifetime (RFC2462 5.5.3 e) */
@@ -2224,70 +2291,8 @@ ok:
} else
spin_unlock(&ifp->lock);
- read_lock_bh(&in6_dev->lock);
- /* update all temporary addresses in the list */
- list_for_each_entry(ift, &in6_dev->tempaddr_list,
- tmp_list) {
- int age, max_valid, max_prefered;
-
- if (ifp != ift->ifpub)
- continue;
-
- /*
- * RFC 4941 section 3.3:
- * If a received option will extend the lifetime
- * of a public address, the lifetimes of
- * temporary addresses should be extended,
- * subject to the overall constraint that no
- * temporary addresses should ever remain
- * "valid" or "preferred" for a time longer than
- * (TEMP_VALID_LIFETIME) or
- * (TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR),
- * respectively.
- */
- age = (now - ift->cstamp) / HZ;
- max_valid = in6_dev->cnf.temp_valid_lft - age;
- if (max_valid < 0)
- max_valid = 0;
-
- max_prefered = in6_dev->cnf.temp_prefered_lft -
- in6_dev->cnf.max_desync_factor -
- age;
- if (max_prefered < 0)
- max_prefered = 0;
-
- if (valid_lft > max_valid)
- valid_lft = max_valid;
-
- if (prefered_lft > max_prefered)
- prefered_lft = max_prefered;
-
- spin_lock(&ift->lock);
- flags = ift->flags;
- ift->valid_lft = valid_lft;
- ift->prefered_lft = prefered_lft;
- ift->tstamp = now;
- if (prefered_lft > 0)
- ift->flags &= ~IFA_F_DEPRECATED;
-
- spin_unlock(&ift->lock);
- if (!(flags&IFA_F_TENTATIVE))
- ipv6_ifa_notify(0, ift);
- }
-
- if ((create || list_empty(&in6_dev->tempaddr_list)) && in6_dev->cnf.use_tempaddr > 0) {
- /*
- * When a new public address is created as
- * described in [ADDRCONF], also create a new
- * temporary address. Also create a temporary
- * address if it's enabled but no temporary
- * address currently exists.
- */
- read_unlock_bh(&in6_dev->lock);
- ipv6_create_tempaddr(ifp, NULL);
- } else {
- read_unlock_bh(&in6_dev->lock);
- }
+ manage_tempaddrs(in6_dev, ifp, valid_lft, prefered_lft,
+ create, now);
in6_ifa_put(ifp);
addrconf_verify(0);
@@ -2382,6 +2387,9 @@ static int inet6_addr_add(struct net *net, int ifindex,
ASSERT_RTNL();
+ if (ifa_flags & IFA_F_MANAGETEMPADDR && plen != 64)
+ return -EINVAL;
+
if (plen > 128)
return -EINVAL;
@@ -2429,6 +2437,9 @@ static int inet6_addr_add(struct net *net, int ifindex,
* manually configured addresses
*/
addrconf_dad_start(ifp);
+ if (ifa_flags & IFA_F_MANAGETEMPADDR)
+ manage_tempaddrs(idev, ifp, valid_lft, prefered_lft,
+ true, jiffies);
in6_ifa_put(ifp);
addrconf_verify(0);
return 0;
@@ -3643,6 +3654,11 @@ static int inet6_addr_modify(struct inet6_ifaddr *ifp, u32 ifa_flags,
addrconf_prefix_route(&ifp->addr, ifp->prefix_len, ifp->idev->dev,
expires, flags);
+
+ if (ifp->flags & IFA_F_MANAGETEMPADDR)
+ manage_tempaddrs(ifp->idev, ifp, valid_lft, prefered_lft,
+ false, jiffies);
+
addrconf_verify(0);
return 0;
@@ -3688,7 +3704,7 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) : ifm->ifa_flags;
/* We ignore other flags so far. */
- ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS;
+ ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS | IFA_F_MANAGETEMPADDR;
ifa = ipv6_get_ifaddr(net, pfx, dev, 1);
if (ifa == NULL) {
@@ -3701,6 +3717,9 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
preferred_lft, valid_lft);
}
+ /* We ignore IFA_F_MANAGETEMPADDR for modify. */
+ ifa_flags &= ~IFA_F_MANAGETEMPADDR;
+
if (nlh->nlmsg_flags & NLM_F_EXCL ||
!(nlh->nlmsg_flags & NLM_F_REPLACE))
err = -EEXIST;
--
1.8.3.1
^ permalink raw reply related
* [patch net-next RFC 1/2] ipv6 addrconf: extend ifa_flags to u32
From: Jiri Pirko @ 2013-11-11 14:49 UTC (permalink / raw)
To: netdev
Cc: davem, kuznet, jmorris, yoshfuji, kaber, thaller, stephen, hannes,
vyasevich, dcbw
In-Reply-To: <1384181359-23199-1-git-send-email-jiri@resnulli.us>
There is no more space in u8 ifa_flags. So do what davem suffested and
add another netlink attr called IFA_FLAGS for carry more flags.
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Thomas Haller <thaller@redhat.com>
---
include/net/if_inet6.h | 2 +-
include/uapi/linux/if_addr.h | 4 ++++
net/ipv6/addrconf.c | 22 +++++++++++++++-------
3 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h
index 76d5427..1c765f7 100644
--- a/include/net/if_inet6.h
+++ b/include/net/if_inet6.h
@@ -51,7 +51,7 @@ struct inet6_ifaddr {
int state;
__u8 dad_probes;
- __u8 flags;
+ __u32 flags;
__u16 scope;
diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
index 23357ab..8ab0c2c 100644
--- a/include/uapi/linux/if_addr.h
+++ b/include/uapi/linux/if_addr.h
@@ -18,6 +18,9 @@ struct ifaddrmsg {
* It makes no difference for normally configured broadcast interfaces,
* but for point-to-point IFA_ADDRESS is DESTINATION address,
* local address is supplied in IFA_LOCAL attribute.
+ *
+ * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
+ * If present, the value from struct ifaddrmsg will be ignored.
*/
enum {
IFA_UNSPEC,
@@ -28,6 +31,7 @@ enum {
IFA_ANYCAST,
IFA_CACHEINFO,
IFA_MULTICAST,
+ IFA_FLAGS,
__IFA_MAX,
};
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 542d095..896aaa0 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2366,10 +2366,11 @@ err_exit:
/*
* Manual configuration of address on an interface
*/
-static int inet6_addr_add(struct net *net, int ifindex, const struct in6_addr *pfx,
+static int inet6_addr_add(struct net *net, int ifindex,
+ const struct in6_addr *pfx,
const struct in6_addr *peer_pfx,
- unsigned int plen, __u8 ifa_flags, __u32 prefered_lft,
- __u32 valid_lft)
+ unsigned int plen, __u32 ifa_flags,
+ __u32 prefered_lft, __u32 valid_lft)
{
struct inet6_ifaddr *ifp;
struct inet6_dev *idev;
@@ -3578,6 +3579,7 @@ static const struct nla_policy ifa_ipv6_policy[IFA_MAX+1] = {
[IFA_ADDRESS] = { .len = sizeof(struct in6_addr) },
[IFA_LOCAL] = { .len = sizeof(struct in6_addr) },
[IFA_CACHEINFO] = { .len = sizeof(struct ifa_cacheinfo) },
+ [IFA_FLAGS] = { .len = sizeof(u32) },
};
static int
@@ -3601,7 +3603,7 @@ inet6_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh)
return inet6_addr_del(net, ifm->ifa_index, pfx, ifm->ifa_prefixlen);
}
-static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags,
+static int inet6_addr_modify(struct inet6_ifaddr *ifp, u32 ifa_flags,
u32 prefered_lft, u32 valid_lft)
{
u32 flags;
@@ -3656,7 +3658,7 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
struct inet6_ifaddr *ifa;
struct net_device *dev;
u32 valid_lft = INFINITY_LIFE_TIME, preferred_lft = INFINITY_LIFE_TIME;
- u8 ifa_flags;
+ u32 ifa_flags;
int err;
err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, ifa_ipv6_policy);
@@ -3683,8 +3685,10 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
if (dev == NULL)
return -ENODEV;
+ ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) : ifm->ifa_flags;
+
/* We ignore other flags so far. */
- ifa_flags = ifm->ifa_flags & (IFA_F_NODAD | IFA_F_HOMEADDRESS);
+ ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS;
ifa = ipv6_get_ifaddr(net, pfx, dev, 1);
if (ifa == NULL) {
@@ -3751,7 +3755,8 @@ static inline int inet6_ifaddr_msgsize(void)
return NLMSG_ALIGN(sizeof(struct ifaddrmsg))
+ nla_total_size(16) /* IFA_LOCAL */
+ nla_total_size(16) /* IFA_ADDRESS */
- + nla_total_size(sizeof(struct ifa_cacheinfo));
+ + nla_total_size(sizeof(struct ifa_cacheinfo))
+ + nla_total_size(4) /* IFA_FLAGS */;
}
static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa,
@@ -3799,6 +3804,9 @@ static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa,
if (put_cacheinfo(skb, ifa->cstamp, ifa->tstamp, preferred, valid) < 0)
goto error;
+ if (nla_put_u32(skb, IFA_FLAGS, ifa->flags) < 0)
+ goto error;
+
return nlmsg_end(skb, nlh);
error:
--
1.8.3.1
^ permalink raw reply related
* [patch net-next RFC 0/2] ipv6: allow temporary address management for user-created addresses
From: Jiri Pirko @ 2013-11-11 14:49 UTC (permalink / raw)
To: netdev
Cc: davem, kuznet, jmorris, yoshfuji, kaber, thaller, stephen, hannes,
vyasevich, dcbw
Jiri Pirko (2):
ipv6 addrconf: extend ifa_flags to u32
ipv6 addrconf: introduce IFA_F_MANAGETEMPADDR to tell kernel to manage
temporary addresses
include/net/if_inet6.h | 2 +-
include/uapi/linux/if_addr.h | 5 ++
net/ipv6/addrconf.c | 181 +++++++++++++++++++++++++------------------
3 files changed, 110 insertions(+), 78 deletions(-)
--
1.8.3.1
^ permalink raw reply
* [PATCH] PHY: Add RTL8201CP phy_driver to realtek
From: Jonas Jensen @ 2013-11-11 14:46 UTC (permalink / raw)
To: netdev; +Cc: r58129, linux-kernel, Jonas Jensen
Add RTL8201CP phy_driver.
Signed-off-by: Jonas Jensen <jonas.jensen@gmail.com>
---
Notes:
RTL8201CP PHY is used on MOXA UC-711X hardware(s).
Adding the ID allows the PHY to be probed (by libphy), and eventually connected from MAC code.
Applies to next-20131111
drivers/net/phy/realtek.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index 138de83..fa1d69a 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -64,6 +64,18 @@ static int rtl8211e_config_intr(struct phy_device *phydev)
return err;
}
+/* RTL8201CP */
+static struct phy_driver rtl8201cp_driver = {
+ .phy_id = 0x00008201,
+ .name = "RTL8201CP Ethernet",
+ .phy_id_mask = 0x0000ffff,
+ .features = PHY_BASIC_FEATURES,
+ .flags = PHY_HAS_INTERRUPT,
+ .config_aneg = &genphy_config_aneg,
+ .read_status = &genphy_read_status,
+ .driver = { .owner = THIS_MODULE,},
+};
+
/* RTL8211B */
static struct phy_driver rtl8211b_driver = {
.phy_id = 0x001cc912,
@@ -98,6 +110,9 @@ static int __init realtek_init(void)
{
int ret;
+ ret = phy_driver_register(&rtl8201cp_driver);
+ if (ret < 0)
+ return -ENODEV;
ret = phy_driver_register(&rtl8211b_driver);
if (ret < 0)
return -ENODEV;
--
1.8.2.1
^ permalink raw reply related
* Re: TCP performance regression
From: Eric Dumazet @ 2013-11-11 14:39 UTC (permalink / raw)
To: Sujith Manoharan, Arnaud Ebalard; +Cc: netdev, Dave Taht, Thomas Petazzoni
In-Reply-To: <1384180069.16391.32.camel@edumazet-glaptop2.roam.corp.google.com>
On Mon, 2013-11-11 at 06:27 -0800, Eric Dumazet wrote:
> On Mon, 2013-11-11 at 13:49 +0530, Sujith Manoharan wrote:
>
> > I am not really clear on how this regression can be fixed in the driver
> > since the majority of the transmission/aggregation logic is present in the
> > TX completion path.
>
> We have many choices.
>
> 1) Add back a minimum of ~128 K of outstanding bytes per TCP session,
> so that buggy drivers can sustain 'line rate'.
>
> Note that with 100 concurrent TCP streams, total amount of bytes
> queued on the NIC is 12 MB.
> And pfifo_fast qdisc will drop packets anyway.
>
> Thats what we call 'BufferBloat'
>
> 2) Try lower values like 64K. Still bufferbloat.
>
> 3) Fix buggy drivers, using a proper logic, or shorter timers (mvneta
> case for example)
>
> 4) Add a new netdev attribute, so that well behaving NIC drivers do not
> have to artificially force TCP stack to queue too many bytes in
> Qdisc/NIC queues.
How following patch helps mvneta performance on current net-next tree
for a single TCP (sending) flow ?
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 7d99e695a110..002ac464202f 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -172,12 +172,11 @@
/* Various constants */
/* Coalescing */
-#define MVNETA_TXDONE_COAL_PKTS 16
#define MVNETA_RX_COAL_PKTS 32
#define MVNETA_RX_COAL_USEC 100
/* Timer */
-#define MVNETA_TX_DONE_TIMER_PERIOD 10
+#define MVNETA_TX_DONE_TIMER_PERIOD 1
/* Napi polling weight */
#define MVNETA_RX_POLL_WEIGHT 64
@@ -1592,8 +1591,7 @@ out:
dev_kfree_skb_any(skb);
}
- if (txq->count >= MVNETA_TXDONE_COAL_PKTS)
- mvneta_txq_done(pp, txq);
+ mvneta_txq_done(pp, txq);
/* If after calling mvneta_txq_done, count equals
* frags, we need to set the timer
^ permalink raw reply related
* Re: [PATCH v4 net-next] net: introduce dev_set_forwarding()
From: Herbert Xu @ 2013-11-11 14:36 UTC (permalink / raw)
To: Eric Dumazet
Cc: David Miller, bhutchings, christoph.paasch, netdev, hkchu,
mwdalton
In-Reply-To: <20131110140540.GA1413@gondor.apana.org.au>
On Sun, Nov 10, 2013 at 10:05:41PM +0800, Herbert Xu wrote:
>
> The main assumptions are that virtio_net frag_list is always non-
> linear and GRO frag_list may only contain a linear head part that
> is exactly MSS bytes long.
OK that assumption didn't work too well. GRO frag_list can indeed
have a linear part followed by non-linear bits. Instead we can
assume that the linear part is always less than our target size.
The following patch passes my tests and I will clean it up for
submission.
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 3735fad..3b3ad8b 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2776,6 +2776,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
struct sk_buff *segs = NULL;
struct sk_buff *tail = NULL;
struct sk_buff *fskb = skb_shinfo(skb)->frag_list;
+ skb_frag_t *skb_frag = skb_shinfo(skb)->frags;
unsigned int mss = skb_shinfo(skb)->gso_size;
unsigned int doffset = skb->data - skb_mac_header(skb);
unsigned int offset = doffset;
@@ -2815,16 +2816,29 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
if (hsize > len || !sg)
hsize = len;
- if (!hsize && i >= nfrags) {
- BUG_ON(fskb->len != len);
+ if (!hsize && i >= nfrags && skb_headlen(fskb)) {
+ BUG_ON(skb_headlen(fskb) > len);
+
+ i = 0;
+ nfrags = skb_shinfo(fskb)->nr_frags;
+ skb_frag = skb_shinfo(fskb)->frags;
+
+ for (pos += skb_headlen(fskb); pos < offset + len;
+ i++, pos += skb_frag_size(skb_frag++))
+ BUG_ON(pos > offset + len ||
+ i >= nfrags);
- pos += len;
nskb = skb_clone(fskb, GFP_ATOMIC);
fskb = fskb->next;
if (unlikely(!nskb))
goto err;
+ if (unlikely(pskb_trim(nskb, len))) {
+ kfree_skb(nskb);
+ goto err;
+ }
+
hsize = skb_end_offset(nskb);
if (skb_cow_head(nskb, doffset + headroom)) {
kfree_skb(nskb);
@@ -2861,7 +2875,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
nskb->data - tnl_hlen,
doffset + tnl_hlen);
- if (fskb != skb_shinfo(skb)->frag_list)
+ if (nskb->len == len + doffset)
goto perform_csum_check;
if (!sg) {
@@ -2879,8 +2893,28 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
skb_shinfo(nskb)->tx_flags = skb_shinfo(skb)->tx_flags & SKBTX_SHARED_FRAG;
- while (pos < offset + len && i < nfrags) {
- *frag = skb_shinfo(skb)->frags[i];
+ while (pos < offset + len) {
+ if (i >= nfrags) {
+ BUG_ON(skb_headlen(fskb));
+
+ i = 0;
+ nfrags = skb_shinfo(fskb)->nr_frags;
+ skb_frag = skb_shinfo(fskb)->frags;
+
+ BUG_ON(!nfrags);
+
+ fskb = fskb->next;
+ }
+
+ if (unlikely(skb_shinfo(nskb)->nr_frags >=
+ MAX_SKB_FRAGS)) {
+ net_warn_ratelimited(
+ "skb_segment: too many frags: %u %u\n",
+ pos, mss);
+ goto err;
+ }
+
+ *frag = *skb_frag;
__skb_frag_ref(frag);
size = skb_frag_size(frag);
@@ -2893,6 +2927,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
if (pos + size <= offset + len) {
i++;
+ skb_frag++;
pos += size;
} else {
skb_frag_size_sub(frag, pos + size - (offset + len));
@@ -2902,25 +2937,6 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
frag++;
}
- if (pos < offset + len) {
- struct sk_buff *fskb2 = fskb;
-
- BUG_ON(pos + fskb->len != offset + len);
-
- pos += fskb->len;
- fskb = fskb->next;
-
- if (fskb2->next) {
- fskb2 = skb_clone(fskb2, GFP_ATOMIC);
- if (!fskb2)
- goto err;
- } else
- skb_get(fskb2);
-
- SKB_FRAG_ASSERT(nskb);
- skb_shinfo(nskb)->frag_list = fskb2;
- }
-
skip_fraglist:
nskb->data_len = len - hsize;
nskb->len += nskb->data_len;
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply related
* Re: TCP performance regression
From: Eric Dumazet @ 2013-11-11 14:27 UTC (permalink / raw)
To: Sujith Manoharan; +Cc: netdev, Dave Taht
In-Reply-To: <21120.37647.979237.40802@gargle.gargle.HOWL>
On Mon, 2013-11-11 at 13:49 +0530, Sujith Manoharan wrote:
> I am not really clear on how this regression can be fixed in the driver
> since the majority of the transmission/aggregation logic is present in the
> TX completion path.
We have many choices.
1) Add back a minimum of ~128 K of outstanding bytes per TCP session,
so that buggy drivers can sustain 'line rate'.
Note that with 100 concurrent TCP streams, total amount of bytes
queued on the NIC is 12 MB.
And pfifo_fast qdisc will drop packets anyway.
Thats what we call 'BufferBloat'
2) Try lower values like 64K. Still bufferbloat.
3) Fix buggy drivers, using a proper logic, or shorter timers (mvneta
case for example)
4) Add a new netdev attribute, so that well behaving NIC drivers do not
have to artificially force TCP stack to queue too many bytes in
Qdisc/NIC queues.
^ permalink raw reply
* RE: [PATCH] USBNET: fix handling padding packet
From: David Laight @ 2013-11-11 14:26 UTC (permalink / raw)
To: Ming Lei, Bjørn Mork
Cc: Oliver Neukum, David S. Miller, Greg Kroah-Hartman,
Network Development, linux-usb
In-Reply-To: <CACVXFVPOyr3eDrJxGhmoxDdZS2FL17qm6jv0ezDECUAk267jFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
> As my below test on ax99179_178a, I believe the patch should fix padding
> for dma sg, but need a little update, and I will send out v1 later:
>
> $ping -s 974 another_machine #from host with ax99179_178a attached
>
> If FLAG_SEND_ZLP is set for ax99179_178a, the above ping won't work any
> more either on USB3.0 or USB 2.0 host controller.
>
> So don't assume that these brand new devices can support ZLP well.
I've just posted a fix to the xhci driver to implement URB_ZERO_PACKET.
With that fix (and ZLP enabled in the ax88179_178a driver) the above
ping works fine (ax88179 Ge card on USB3).
I wonder how many other usb drivers fail to support URB_ZERO_PACKET.
Maybe the driver should pass a flag to its users (along with SG support).
I've also posted (to linux-usb) another fix to the xhci driver that is
needed to get SG (and one that cross 64k boundaries) transfers working.
David
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" 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: [PATCH net-next v3 0/10] bonding: rebuild the lock use for bond monitor
From: Ding Tianhong @ 2013-11-11 14:01 UTC (permalink / raw)
To: Veaceslav Falico
Cc: Ding Tianhong, Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Netdev
In-Reply-To: <20131111130617.GY19702@redhat.com>
于 2013/11/11 21:06, Veaceslav Falico 写道:
> On Mon, Nov 11, 2013 at 08:36:04PM +0800, Ding Tianhong wrote:
>> Now the bond slave list is not protected by bond lock, only by RTNL,
>> but the monitor still use the bond lock to protect the slave list,
>> it is useless, according to the Veaceslav's opinion, there were
>> three way to fix the protect problem:
>>
>> 1. add bond_master_upper_dev_link() and bond_upper_dev_unlink()
>> in bond->lock, but it is unsafe to call call_netdevice_notifiers()
>> in write lock.
>> 2. remove unused bond->lock for monitor function, only use the exist
>> rtnl lock(), it will take performance loss in fast path.
>> 3. use RCU to protect the slave list, of course, performance is better,
>> but in slow path, it is ignored.
>>
>> obviously the solution 1 is not fit here, I will consider the 2 and 3
>> solution. My principle is simple, if in fast path, RCU is better,
>> otherwise in slow path, both is well, but according to the Jay
>> Vosburgh's
>> opinion, the monitor will loss performace if use RTNL to protect the all
>> slave list, so remove the bond lock and replace with RCU.
>>
>> The second problem is the curr_slave_lock for bond, it is too old and
>> unwanted in many place, because the curr_active_slave would only be
>> changed in 3 place:
>>
>> 1. enslave slave.
>> 2. release slave.
>> 3. change active slave.
>>
>> all above were already holding bond lock, RTNL and curr_slave_lock
>> together, it is tedious and no need to add so mach lock, when change
>> the curr_active_slave, you have to hold the RTNL and curr_slave_lock
>> together, and when you read the curr_active_slave, RTNL or
>> curr_slave_lock,
>> any one of them is no problem.
>
> Boot-test *with the same parameters as before* gave me the following
> trace[1], which is inevitable in case of mode 1 bonding. So that you've
> either ignored this warning or didn't actually test mode 1, even though
> your last patchset was reverted because of a regression in the same mode.
>
> How was this tested?
>
yes, you are right, it is my fault. I miss a CONFIG SET for RCU,
CONFIG_PROVE_RCU,
althrough I test bond several times for every mode, but I still miss it.
The bond_should_notify_peers in bond_select_active_slave did not in have
rcu-read
critical sector.
> And btw - net-next is closed.
>
yes, I know, but I still need widely solicited opinions, it is really a
big patchset for me.
I am afraid of missing something.
Regards.
Ding
> [1]:
> [ 13.847032] bonding: bond0: link status definitely up for interface
> eth2.
> [ 13.848732] bonding: bond0: making interface eth2 the new active one.
> [ 13.850429] device eth2 entered promiscuous mode
> [ 13.852168] [ 13.853833] ===============================
> [ 13.855410] [ INFO: suspicious RCU usage. ]
> [ 13.857017] 3.12.0-bond+ #314 Tainted: G I [ 13.858690]
> -------------------------------
> [ 13.860404] drivers/net/bonding/bond_main.c:818 suspicious
> rcu_dereference_check() usage!
> [ 13.862006] [ 13.862006] other info that might help us debug this:
> [ 13.862006] [ 13.866334] [ 13.866334] rcu_scheduler_active = 1,
> debug_locks = 0
> [ 13.869296] 4 locks held by kworker/u8:3/57:
> [ 13.870841] #0: (%s#4){.+.+..}, at: [<ffffffff810cfec9>]
> process_one_work+0x189/0x580
> [ 13.872353] #1: ((&(&bond->arp_work)->work)){+.+...}, at:
> [<ffffffff810cfec9>] process_one_work+0x189/0x580
> [ 13.873967] #2: (rtnl_mutex){+.+.+.}, at: [<ffffffff8169e765>]
> rtnl_trylock+0x15/0x20
> [ 13.875569] #3: (&bond->curr_slave_lock){++.+..}, at:
> [<ffffffffa00b922e>] bond_ab_arp_commit+0x12e/0x200 [bonding]
> [ 13.877167] [ 13.877167] stack backtrace:
> [ 13.880287] CPU: 1 PID: 57 Comm: kworker/u8:3 Tainted: G I
> 3.12.0-bond+ #314
> [ 13.882011] Hardware name: Hewlett-Packard HP xw4600
> Workstation/0AA0h, BIOS 786F3 v01.15 08/28/2008
> [ 13.883585] Workqueue: bond0 bond_activebackup_arp_mon [bonding]
> [ 13.885011] 0000000000000001 ffff880079e89be8 ffffffff817a9df8
> 0000000000000002
> [ 13.886564] ffff880079e80000 ffff880079e89c18 ffffffff81128d23
> ffff8800790d4b40
> [ 13.888179] ffff88007980a400 ffff8800790d4bb8 ffff8800790d4b40
> ffff880079e89c38
> [ 13.889837] Call Trace:
> [ 13.891417] [<ffffffff817a9df8>] dump_stack+0x59/0x81
> [ 13.892881] [<ffffffff81128d23>] lockdep_rcu_suspicious+0x103/0x140
> [ 13.894290] [<ffffffffa00b8b61>] bond_should_notify_peers+0xb1/0x110
> [bonding]
> [ 13.895686] [<ffffffffa00b8e59>] bond_change_active_slave+0x299/0x370
> [bonding]
> [ 13.897118] [<ffffffffa00b9027>] bond_select_active_slave+0xf7/0x1d0
> [bonding]
> [ 13.898672] [<ffffffffa00b9236>] bond_ab_arp_commit+0x136/0x200
> [bonding]
> [ 13.900165] [<ffffffffa00bb98d>]
> bond_activebackup_arp_mon+0x10d/0x340 [bonding]
> [ 13.901709] [<ffffffffa00bb8d3>] ?
> bond_activebackup_arp_mon+0x53/0x340 [bonding]
> [ 13.903125] [<ffffffff810cff3a>] process_one_work+0x1fa/0x580
> [ 13.904554] [<ffffffff810cfec9>] ? process_one_work+0x189/0x580
> [ 13.906023] [<ffffffff810d231f>] worker_thread+0x11f/0x3a0
> [ 13.907506] [<ffffffff810d2200>] ? manage_workers+0x170/0x170
> [ 13.908931] [<ffffffff810dbdfe>] kthread+0xee/0x100
> [ 13.910327] [<ffffffff8112d99b>] ? __lock_release+0x13b/0x1b0
> [ 13.911677] [<ffffffff810dbd10>] ? __init_kthread_worker+0x70/0x70
> [ 13.913082] [<ffffffff817ba16c>] ret_from_fork+0x7c/0xb0
> [ 13.914478] [<ffffffff810dbd10>] ? __init_kthread_worker+0x70/0x70
> [ 13.915860] bonding: bond0: first active interface up!
> [ 13.917294] bridge0: port 1(bond0) entered forwarding state
> [ 13.918632] bridge0: port 1(bond0) entered forwarding state
> [ 14.017018] bonding: bond0: link status definitely up for interface
> eth0.
>
>>
>> for the stability, I did not change the logic for the monitor,
>> all change is clear and simple, I have test the patch set for lockdep,
>> it work well and stability.
>>
>> v2. accept the Jay Vosburgh's opinion, remove the RTNL and replace
>> with RCU,
>> also add some rcu function for bond use, so the patch set reach 10.
>>
>> v3. accept the Nikolay Aleksandrov's opinion, remove no needed
>> bond_has_slave_rcu(),
>> add protection for several 3ad mode handler functions and
>> current_arp_slave.
>> rebuild the bond_first_slave_rcu(), make it more clear.
>>
>> Best Regards
>> Ding Tianhong
>>
>> Ding Tianhong (10):
>> bonding: remove the no effect lock for bond_select_active_slave()
>> bonding: rebuild the lock use for bond_mii_monitor()
>> bonding: rebuild the lock use for bond_alb_monitor()
>> bonding: rebuild the lock use for bond_loadbalance_arp_mon()
>> bonding: create bond_first_slave_rcu()
>> bonding: rebuild the lock use for bond_activebackup_arp_mon()
>> bonding: rebuild the lock use for bond_3ad_state_machine_handler()
>> bonding: remove unwanted lock for bond_option_active_slave_set()
>> bonding: remove unwanted lock for bond enslave and release
>> bonding: remove unwanted lock for bond_store_primaryxxx()
>>
>> drivers/net/bonding/bond_3ad.c | 53 +++++++------
>> drivers/net/bonding/bond_alb.c | 34 +++------
>> drivers/net/bonding/bond_main.c | 147
>> ++++++++++++++++---------------------
>> drivers/net/bonding/bond_options.c | 2 -
>> drivers/net/bonding/bond_sysfs.c | 4 -
>> drivers/net/bonding/bonding.h | 9 +++
>> include/linux/netdevice.h | 16 ++++
>> net/core/dev.c | 16 ----
>> 8 files changed, 132 insertions(+), 149 deletions(-)
>>
>> --
>> 1.8.2.1
>>
>>
>>
> --
> 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
>
^ permalink raw reply
* IPv6: Blackhole route support partial ?
From: Kamala R @ 2013-11-11 13:55 UTC (permalink / raw)
To: davem; +Cc: linux-kernel, netdev
Hi,
On adding IPv6 blackhole routes, ICMP unreachable messages are being
sent back to source. According to the definition, packets destined to
a blackhole address must be dropped silently.
I applied the patch submitted to the 3.7 kernel that indicates that it
supports blackhole and prohibit routes correctly. However, the patch
only sets the error code and route type correctly, so the show command
displays the appropriate output.
It seems to me that the input and output function pointers of the dst
variable, which determine packet processing, need to be set to
dst_discard. This would enable correct behaviour for blackhole routes.
Am I on the right path here ?
Thanks and Regards,
Kamala
^ permalink raw reply
* Re: [PATCH net-next 3/6] random32: add prandom_reseed_late() and call when nonblocking pool becomes initialized
From: Theodore Ts'o @ 2013-11-11 13:43 UTC (permalink / raw)
To: Daniel Borkmann
Cc: davem, shemminger, fweimer, netdev, Hannes Frederic Sowa,
Eric Dumazet
In-Reply-To: <2ea03f60bb65429cbe5d74a6d356fde3eefcf06c.1384160397.git.dborkman@redhat.com>
On Mon, Nov 11, 2013 at 12:20:34PM +0100, Daniel Borkmann wrote:
> From: Hannes Frederic Sowa <hannes@stressinduktion.org>
>
> The Tausworthe PRNG is initialized at late_initcall time. At that time the
> entropy pool serving get_random_bytes is not filled sufficiently. This
> patch adds an additional reseeding step as soon as the nonblocking pool
> gets marked as initialized.
>
> On some machines it might be possible that late_initcall gets called after
> the pool has been initialized. In this situation we won't reseed again.
>
> (A call to prandom_seed_late blocks later invocations of early reseed
> attempts.)
>
> Joint work with Daniel Borkmann.
Acked-by: "Theodore Ts'o" <tytso@mit.edu>
I wasn't cc'ed on the full series (I didn't see the 0/3 or the 4/6
messages) but there are two other things that you might want to
consider.
1) I'm pretty sure, but it would be good to get netdev confirmation,
that the call to get_random_bytes() in
net/mac80211/rc80211_minstrel.c's init_sample_table() can be replaced
by calls to prandom_u32().
That is, I don't believe cryptographic strength randomness is needed
--- which is good, because my debugging indicates on a test system
indicates that it gets called so early that there is typically less
than two dozen bits of entropy collected in the non-blocking pool
before it calls get_random_bytes(). If we can move away from using
get_random_bytes(), those two dozen bits of entropy can be used to
make sure the urandom pool is initialized much more quickly.
2) Since the minstrel code apparently uses this information for
initializing a machine learning algorithm for backoff purposes, I
suspect it might be good if the numbers it gets are different from
machine to machine --- and right now prandom_init() does not mix in
any kind of personalization information, so calls to prandom_u32()
will be the same across machines until it gets initialized from the
/dev/random subsysem.
Currently, the way we get personlization information which uniquifies
the randomness in early boot is via add_device_randomness(). Yes,
some of the function names are a bit misleading; maybe we should try
to fix this at some point. So perhaps we should add a hook to
add_device_randomness() so that each time it gets called, if the
random32.c state hasn't been strongly initialized by the call to
prandom_reseed_late(), we also use that information add some per-host
uniqueness into prandom32.c. (Note: I'd prefer that we do this via
some interface other than get_random_bytes(), so we don't end up
draining entropy from the non_blocking pool, and thus delay the point
where we can strongly initialize the non_blocking pool, and thus
strongly initialize prandom32.c)
Does this make sense to folks?
Cheers,
- Ted
^ permalink raw reply
* Re: [PATCHv2] net: wireless: iwlwifi: remove minor dead code
From: Johannes Berg @ 2013-11-11 13:42 UTC (permalink / raw)
To: Michal Nazarewicz
Cc: Sergei Shtylyov, Emmanuel Grumbach, John W. Linville,
Intel Linux Wireless, linux-wireless, netdev, linux-kernel
In-Reply-To: <1384177312.14334.12.camel@jlt4.sipsolutions.net>
On Mon, 2013-11-11 at 14:41 +0100, Johannes Berg wrote:
> > @@ -1150,7 +1149,14 @@ static irqreturn_t iwl_pcie_isr(int irq, void *data)
> > * or due to sporadic interrupts thrown from our NIC. */
> > if (!inta) {
> > IWL_DEBUG_ISR(trans, "Ignore interrupt, inta == 0\n");
> > - goto none;
> > + /* re-enable interrupts here since we don't have anything to
> > + * service. only Re-enable if disabled by irq and no
> > + * schedules tasklet.
> > + */
> > + if (test_bit(STATUS_INT_ENABLED, &trans_pcie->status) &&
> > + !trans_pcie->inta)
> > + iwl_enable_interrupts(trans);
> > + return IRQ_NONE;
>
> I don't really think duplicating this is really an improvement?
Err, sorry, not paying attention.
johannes
^ permalink raw reply
* Re: [PATCHv2] net: wireless: iwlwifi: remove minor dead code
From: Johannes Berg @ 2013-11-11 13:41 UTC (permalink / raw)
To: Michal Nazarewicz
Cc: Sergei Shtylyov, Emmanuel Grumbach, John W. Linville,
Intel Linux Wireless, linux-wireless, netdev, linux-kernel
In-Reply-To: <87iow080zv.fsf@mina86.com>
On Sun, 2013-11-10 at 21:17 +0100, Michal Nazarewicz wrote:
> inta is checked to be zero in a IRQ_NONE branch so afterwards it
> cannot be zero as it is never modified.
no signed-off-by
> @@ -1150,7 +1149,14 @@ static irqreturn_t iwl_pcie_isr(int irq, void *data)
> * or due to sporadic interrupts thrown from our NIC. */
> if (!inta) {
> IWL_DEBUG_ISR(trans, "Ignore interrupt, inta == 0\n");
> - goto none;
> + /* re-enable interrupts here since we don't have anything to
> + * service. only Re-enable if disabled by irq and no
> + * schedules tasklet.
> + */
> + if (test_bit(STATUS_INT_ENABLED, &trans_pcie->status) &&
> + !trans_pcie->inta)
> + iwl_enable_interrupts(trans);
> + return IRQ_NONE;
I don't really think duplicating this is really an improvement?
johannes
^ permalink raw reply
* Re: [PATCH net-next v3 0/10] bonding: rebuild the lock use for bond monitor
From: Veaceslav Falico @ 2013-11-11 13:06 UTC (permalink / raw)
To: Ding Tianhong
Cc: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Netdev
In-Reply-To: <5280CF34.20703@huawei.com>
On Mon, Nov 11, 2013 at 08:36:04PM +0800, Ding Tianhong wrote:
>Now the bond slave list is not protected by bond lock, only by RTNL,
>but the monitor still use the bond lock to protect the slave list,
>it is useless, according to the Veaceslav's opinion, there were
>three way to fix the protect problem:
>
>1. add bond_master_upper_dev_link() and bond_upper_dev_unlink()
> in bond->lock, but it is unsafe to call call_netdevice_notifiers()
> in write lock.
>2. remove unused bond->lock for monitor function, only use the exist
> rtnl lock(), it will take performance loss in fast path.
>3. use RCU to protect the slave list, of course, performance is better,
> but in slow path, it is ignored.
>
>obviously the solution 1 is not fit here, I will consider the 2 and 3
>solution. My principle is simple, if in fast path, RCU is better,
>otherwise in slow path, both is well, but according to the Jay Vosburgh's
>opinion, the monitor will loss performace if use RTNL to protect the all
>slave list, so remove the bond lock and replace with RCU.
>
>The second problem is the curr_slave_lock for bond, it is too old and
>unwanted in many place, because the curr_active_slave would only be
>changed in 3 place:
>
>1. enslave slave.
>2. release slave.
>3. change active slave.
>
>all above were already holding bond lock, RTNL and curr_slave_lock
>together, it is tedious and no need to add so mach lock, when change
>the curr_active_slave, you have to hold the RTNL and curr_slave_lock
>together, and when you read the curr_active_slave, RTNL or curr_slave_lock,
>any one of them is no problem.
Boot-test *with the same parameters as before* gave me the following
trace[1], which is inevitable in case of mode 1 bonding. So that you've
either ignored this warning or didn't actually test mode 1, even though
your last patchset was reverted because of a regression in the same mode.
How was this tested?
And btw - net-next is closed.
[1]:
[ 13.847032] bonding: bond0: link status definitely up for interface eth2.
[ 13.848732] bonding: bond0: making interface eth2 the new active one.
[ 13.850429] device eth2 entered promiscuous mode
[ 13.852168]
[ 13.853833] ===============================
[ 13.855410] [ INFO: suspicious RCU usage. ]
[ 13.857017] 3.12.0-bond+ #314 Tainted: G I
[ 13.858690] -------------------------------
[ 13.860404] drivers/net/bonding/bond_main.c:818 suspicious rcu_dereference_check() usage!
[ 13.862006]
[ 13.862006] other info that might help us debug this:
[ 13.862006]
[ 13.866334]
[ 13.866334] rcu_scheduler_active = 1, debug_locks = 0
[ 13.869296] 4 locks held by kworker/u8:3/57:
[ 13.870841] #0: (%s#4){.+.+..}, at: [<ffffffff810cfec9>] process_one_work+0x189/0x580
[ 13.872353] #1: ((&(&bond->arp_work)->work)){+.+...}, at: [<ffffffff810cfec9>] process_one_work+0x189/0x580
[ 13.873967] #2: (rtnl_mutex){+.+.+.}, at: [<ffffffff8169e765>] rtnl_trylock+0x15/0x20
[ 13.875569] #3: (&bond->curr_slave_lock){++.+..}, at: [<ffffffffa00b922e>] bond_ab_arp_commit+0x12e/0x200 [bonding]
[ 13.877167]
[ 13.877167] stack backtrace:
[ 13.880287] CPU: 1 PID: 57 Comm: kworker/u8:3 Tainted: G I 3.12.0-bond+ #314
[ 13.882011] Hardware name: Hewlett-Packard HP xw4600 Workstation/0AA0h, BIOS 786F3 v01.15 08/28/2008
[ 13.883585] Workqueue: bond0 bond_activebackup_arp_mon [bonding]
[ 13.885011] 0000000000000001 ffff880079e89be8 ffffffff817a9df8 0000000000000002
[ 13.886564] ffff880079e80000 ffff880079e89c18 ffffffff81128d23 ffff8800790d4b40
[ 13.888179] ffff88007980a400 ffff8800790d4bb8 ffff8800790d4b40 ffff880079e89c38
[ 13.889837] Call Trace:
[ 13.891417] [<ffffffff817a9df8>] dump_stack+0x59/0x81
[ 13.892881] [<ffffffff81128d23>] lockdep_rcu_suspicious+0x103/0x140
[ 13.894290] [<ffffffffa00b8b61>] bond_should_notify_peers+0xb1/0x110 [bonding]
[ 13.895686] [<ffffffffa00b8e59>] bond_change_active_slave+0x299/0x370 [bonding]
[ 13.897118] [<ffffffffa00b9027>] bond_select_active_slave+0xf7/0x1d0 [bonding]
[ 13.898672] [<ffffffffa00b9236>] bond_ab_arp_commit+0x136/0x200 [bonding]
[ 13.900165] [<ffffffffa00bb98d>] bond_activebackup_arp_mon+0x10d/0x340 [bonding]
[ 13.901709] [<ffffffffa00bb8d3>] ? bond_activebackup_arp_mon+0x53/0x340 [bonding]
[ 13.903125] [<ffffffff810cff3a>] process_one_work+0x1fa/0x580
[ 13.904554] [<ffffffff810cfec9>] ? process_one_work+0x189/0x580
[ 13.906023] [<ffffffff810d231f>] worker_thread+0x11f/0x3a0
[ 13.907506] [<ffffffff810d2200>] ? manage_workers+0x170/0x170
[ 13.908931] [<ffffffff810dbdfe>] kthread+0xee/0x100
[ 13.910327] [<ffffffff8112d99b>] ? __lock_release+0x13b/0x1b0
[ 13.911677] [<ffffffff810dbd10>] ? __init_kthread_worker+0x70/0x70
[ 13.913082] [<ffffffff817ba16c>] ret_from_fork+0x7c/0xb0
[ 13.914478] [<ffffffff810dbd10>] ? __init_kthread_worker+0x70/0x70
[ 13.915860] bonding: bond0: first active interface up!
[ 13.917294] bridge0: port 1(bond0) entered forwarding state
[ 13.918632] bridge0: port 1(bond0) entered forwarding state
[ 14.017018] bonding: bond0: link status definitely up for interface eth0.
>
>for the stability, I did not change the logic for the monitor,
>all change is clear and simple, I have test the patch set for lockdep,
>it work well and stability.
>
>v2. accept the Jay Vosburgh's opinion, remove the RTNL and replace with RCU,
> also add some rcu function for bond use, so the patch set reach 10.
>
>v3. accept the Nikolay Aleksandrov's opinion, remove no needed bond_has_slave_rcu(),
> add protection for several 3ad mode handler functions and current_arp_slave.
> rebuild the bond_first_slave_rcu(), make it more clear.
>
>Best Regards
>Ding Tianhong
>
>Ding Tianhong (10):
> bonding: remove the no effect lock for bond_select_active_slave()
> bonding: rebuild the lock use for bond_mii_monitor()
> bonding: rebuild the lock use for bond_alb_monitor()
> bonding: rebuild the lock use for bond_loadbalance_arp_mon()
> bonding: create bond_first_slave_rcu()
> bonding: rebuild the lock use for bond_activebackup_arp_mon()
> bonding: rebuild the lock use for bond_3ad_state_machine_handler()
> bonding: remove unwanted lock for bond_option_active_slave_set()
> bonding: remove unwanted lock for bond enslave and release
> bonding: remove unwanted lock for bond_store_primaryxxx()
>
> drivers/net/bonding/bond_3ad.c | 53 +++++++------
> drivers/net/bonding/bond_alb.c | 34 +++------
> drivers/net/bonding/bond_main.c | 147 ++++++++++++++++---------------------
> drivers/net/bonding/bond_options.c | 2 -
> drivers/net/bonding/bond_sysfs.c | 4 -
> drivers/net/bonding/bonding.h | 9 +++
> include/linux/netdevice.h | 16 ++++
> net/core/dev.c | 16 ----
> 8 files changed, 132 insertions(+), 149 deletions(-)
>
>--
>1.8.2.1
>
>
>
^ permalink raw reply
* Re: [PATCH net-next v3 5/10] bonding: create bond_first_slave_rcu()
From: Veaceslav Falico @ 2013-11-11 12:59 UTC (permalink / raw)
To: Ding Tianhong
Cc: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Netdev
In-Reply-To: <5280CF59.5090202@huawei.com>
On Mon, Nov 11, 2013 at 08:36:41PM +0800, Ding Tianhong wrote:
>The bond_first_slave_rcu() will be used to instead of bond_first_slave()
>in rcu_read_lock().
>
>So move the struct netdev_adjacent to the netdevice.h and make the
>bond_first_slave_rcu() could use the struct.
The whole point in netdev_adjacent functions was to hide it from the users
who wanted to use it directly. See
http://www.spinics.net/lists/netdev/msg248026.html
for reference. Please try to avoid that.
>
>Suggested-by: Jay Vosburgh <fubar@us.ibm.com>
>Suggested-by: Veaceslav Falico <vfalico@redhat.com>
>Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
>---
> drivers/net/bonding/bonding.h | 9 +++++++++
> include/linux/netdevice.h | 16 ++++++++++++++++
> net/core/dev.c | 16 ----------------
> 3 files changed, 25 insertions(+), 16 deletions(-)
>
>diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
>index 77a07a1..5d37606 100644
>--- a/drivers/net/bonding/bonding.h
>+++ b/drivers/net/bonding/bonding.h
>@@ -91,6 +91,15 @@
> netdev_adjacent_get_private(bond_slave_list(bond)->prev) : \
> NULL)
>
>+/* Caller must have rcu_read_lock */
>+#define bond_first_slave_rcu(bond) \
>+ ({struct list_head *__ptr = (bond_slave_list(bond)); \
>+ struct list_head *__next = ACCESS_ONCE(__ptr->next); \
>+ likely(__ptr != __next) ? \
>+ list_entry_rcu(__next, struct netdev_adjacent, list)->private : \
>+ NULL; \
>+ })
>+
> #define bond_is_first_slave(bond, pos) (pos == bond_first_slave(bond))
> #define bond_is_last_slave(bond, pos) (pos == bond_last_slave(bond))
>
>diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
>index 15fa01c..7ca0fc8 100644
>--- a/include/linux/netdevice.h
>+++ b/include/linux/netdevice.h
>@@ -2839,6 +2839,22 @@ extern int netdev_tstamp_prequeue;
> extern int weight_p;
> extern int bpf_jit_enable;
>
>+struct netdev_adjacent {
>+ struct net_device *dev;
>+
>+ /* upper master flag, there can only be one master device per list */
>+ bool master;
>+
>+ /* counter for the number of times this device was added to us */
>+ u16 ref_nr;
>+
>+ /* private field for the users */
>+ void *private;
>+
>+ struct list_head list;
>+ struct rcu_head rcu;
>+};
>+
> bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
> bool netdev_has_any_upper_dev(struct net_device *dev);
> struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
>diff --git a/net/core/dev.c b/net/core/dev.c
>index 8ffc52e..bcc5001 100644
>--- a/net/core/dev.c
>+++ b/net/core/dev.c
>@@ -4377,22 +4377,6 @@ softnet_break:
> goto out;
> }
>
>-struct netdev_adjacent {
>- struct net_device *dev;
>-
>- /* upper master flag, there can only be one master device per list */
>- bool master;
>-
>- /* counter for the number of times this device was added to us */
>- u16 ref_nr;
>-
>- /* private field for the users */
>- void *private;
>-
>- struct list_head list;
>- struct rcu_head rcu;
>-};
>-
> static struct netdev_adjacent *__netdev_find_adj_rcu(struct net_device *dev,
> struct net_device *adj_dev,
> struct list_head *adj_list)
>--
>1.8.2.1
>
>
>
^ permalink raw reply
* Re: bridge not getting ip since 3.11.5 and 3.4.66
From: Mark Trompell @ 2013-11-11 12:52 UTC (permalink / raw)
To: Veaceslav Falico; +Cc: Linux-Kernel, netdev
In-Reply-To: <CAE3RKNng9A6Bp7wa4+6iCprwEQpzGueagLc8iob+aFabJW4nnw@mail.gmail.com>
On Mon, Nov 11, 2013 at 12:07 PM, Veaceslav Falico <veaceslav@falico.eu> wrote:
> On Mon, Nov 11, 2013 at 11:29 AM, Mark Trompell <mark@foresightlinux.org> wrote:
>> my bridge br0 doesn't get an ip from dhcp anymore after 3.11.5 and 3.4.66,
>> What information would be helpful and required to find out what's going wrong.
>
> CC netdev
>
> First thing would be to provide the network scheme. Do you use vlans?
> Which network
> cards/drivers are you using? Do you use some kind of virtualization?
> Is bonding involved?
>
Actually this is my desktop machine using kvm for a virtual machine
that uses eth0 which is connected to the bridge
which is used as interface for the host.
$ ip addr
2. eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast
master br0 qlen 1000
...
3. br0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc noqueue
...
Anything else?
Greetings
Mark
^ permalink raw reply
* [PATCH net-next v3 5/10] bonding: create bond_first_slave_rcu()
From: Ding Tianhong @ 2013-11-11 12:36 UTC (permalink / raw)
To: Jay Vosburgh, Andy Gospodarek, David S. Miller,
Nikolay Aleksandrov, Veaceslav Falico, Netdev
The bond_first_slave_rcu() will be used to instead of bond_first_slave()
in rcu_read_lock().
So move the struct netdev_adjacent to the netdevice.h and make the
bond_first_slave_rcu() could use the struct.
Suggested-by: Jay Vosburgh <fubar@us.ibm.com>
Suggested-by: Veaceslav Falico <vfalico@redhat.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
drivers/net/bonding/bonding.h | 9 +++++++++
include/linux/netdevice.h | 16 ++++++++++++++++
net/core/dev.c | 16 ----------------
3 files changed, 25 insertions(+), 16 deletions(-)
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
index 77a07a1..5d37606 100644
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -91,6 +91,15 @@
netdev_adjacent_get_private(bond_slave_list(bond)->prev) : \
NULL)
+/* Caller must have rcu_read_lock */
+#define bond_first_slave_rcu(bond) \
+ ({struct list_head *__ptr = (bond_slave_list(bond)); \
+ struct list_head *__next = ACCESS_ONCE(__ptr->next); \
+ likely(__ptr != __next) ? \
+ list_entry_rcu(__next, struct netdev_adjacent, list)->private : \
+ NULL; \
+ })
+
#define bond_is_first_slave(bond, pos) (pos == bond_first_slave(bond))
#define bond_is_last_slave(bond, pos) (pos == bond_last_slave(bond))
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 15fa01c..7ca0fc8 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2839,6 +2839,22 @@ extern int netdev_tstamp_prequeue;
extern int weight_p;
extern int bpf_jit_enable;
+struct netdev_adjacent {
+ struct net_device *dev;
+
+ /* upper master flag, there can only be one master device per list */
+ bool master;
+
+ /* counter for the number of times this device was added to us */
+ u16 ref_nr;
+
+ /* private field for the users */
+ void *private;
+
+ struct list_head list;
+ struct rcu_head rcu;
+};
+
bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
bool netdev_has_any_upper_dev(struct net_device *dev);
struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
diff --git a/net/core/dev.c b/net/core/dev.c
index 8ffc52e..bcc5001 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4377,22 +4377,6 @@ softnet_break:
goto out;
}
-struct netdev_adjacent {
- struct net_device *dev;
-
- /* upper master flag, there can only be one master device per list */
- bool master;
-
- /* counter for the number of times this device was added to us */
- u16 ref_nr;
-
- /* private field for the users */
- void *private;
-
- struct list_head list;
- struct rcu_head rcu;
-};
-
static struct netdev_adjacent *__netdev_find_adj_rcu(struct net_device *dev,
struct net_device *adj_dev,
struct list_head *adj_list)
--
1.8.2.1
^ 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