lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 17 Nov 2008 22:19:20 +0100
From:	Ingo Molnar <mingo@...e.hu>
To:	Linus Torvalds <torvalds@...ux-foundation.org>
Cc:	Eric Dumazet <dada1@...mosbay.com>,
	David Miller <davem@...emloft.net>, rjw@...k.pl,
	linux-kernel@...r.kernel.org, kernel-testers@...r.kernel.org,
	cl@...ux-foundation.org, efault@....de, a.p.zijlstra@...llo.nl,
	Stephen Hemminger <shemminger@...tta.com>
Subject: tcp_recvmsg(): Re: [Bug #11308] tbench regression on each kernel
	release from 2.6.22 -&gt; 2.6.28


* Ingo Molnar <mingo@...e.hu> wrote:

> 100.000000 total
> ................
>   1.833688 tcp_recvmsg

                      hits (total: 183368)
                 .........
ffffffff804bd46e:      882 <tcp_recvmsg>:
ffffffff804bd46e:      882 	41 57                	push   %r15
ffffffff804bd470:    15507 	48 89 f7             	mov    %rsi,%rdi
ffffffff804bd473:      179 	41 56                	push   %r14
ffffffff804bd475:        0 	49 89 ce             	mov    %rcx,%r14
ffffffff804bd478:      744 	41 55                	push   %r13
ffffffff804bd47a:      165 	41 54                	push   %r12
ffffffff804bd47c:        0 	45 89 c4             	mov    %r8d,%r12d
ffffffff804bd47f:      692 	55                   	push   %rbp
ffffffff804bd480:      178 	44 89 cd             	mov    %r9d,%ebp
ffffffff804bd483:     3434 	53                   	push   %rbx
ffffffff804bd484:      685 	48 89 f3             	mov    %rsi,%rbx
ffffffff804bd487:       11 	48 83 ec 68          	sub    $0x68,%rsp
ffffffff804bd48b:      949 	48 89 54 24 30       	mov    %rdx,0x30(%rsp)
ffffffff804bd490:        7 	e8 e8 e8 ff ff       	callq  ffffffff804bbd7d <lock_sock>
ffffffff804bd495:     1771 	8a 43 02             	mov    0x2(%rbx),%al
ffffffff804bd498:     6176 	3c 0a                	cmp    $0xa,%al
ffffffff804bd49a:        0 	0f 84 3a 06 00 00    	je     ffffffff804bdada <tcp_recvmsg+0x66c>
ffffffff804bd4a0:     3121 	31 c0                	xor    %eax,%eax
ffffffff804bd4a2:      195 	45 85 e4             	test   %r12d,%r12d
ffffffff804bd4a5:        0 	75 07                	jne    ffffffff804bd4ae <tcp_recvmsg+0x40>
ffffffff804bd4a7:      926 	48 8b 83 68 01 00 00 	mov    0x168(%rbx),%rax
ffffffff804bd4ae:      189 	40 f6 c5 01          	test   $0x1,%bpl
ffffffff804bd4b2:        0 	48 89 44 24 58       	mov    %rax,0x58(%rsp)
ffffffff804bd4b7:      819 	0f 85 33 06 00 00    	jne    ffffffff804bdaf0 <tcp_recvmsg+0x682>
ffffffff804bd4bd:      216 	89 e8                	mov    %ebp,%eax
ffffffff804bd4bf:        0 	83 e0 02             	and    $0x2,%eax
ffffffff804bd4c2:      638 	89 44 24 3c          	mov    %eax,0x3c(%rsp)
ffffffff804bd4c6:      177 	75 0e                	jne    ffffffff804bd4d6 <tcp_recvmsg+0x68>
ffffffff804bd4c8:        0 	48 8d 93 f4 03 00 00 	lea    0x3f4(%rbx),%rdx
ffffffff804bd4cf:      661 	48 89 54 24 40       	mov    %rdx,0x40(%rsp)
ffffffff804bd4d4:      195 	eb 14                	jmp    ffffffff804bd4ea <tcp_recvmsg+0x7c>
ffffffff804bd4d6:        0 	8b 83 f4 03 00 00    	mov    0x3f4(%rbx),%eax
ffffffff804bd4dc:        0 	48 8d 4c 24 60       	lea    0x60(%rsp),%rcx
ffffffff804bd4e1:        0 	48 89 4c 24 40       	mov    %rcx,0x40(%rsp)
ffffffff804bd4e6:        0 	89 44 24 60          	mov    %eax,0x60(%rsp)
ffffffff804bd4ea:      867 	89 ee                	mov    %ebp,%esi
ffffffff804bd4ec:      210 	44 89 f2             	mov    %r14d,%edx
ffffffff804bd4ef:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd4f2:      894 	81 e6 00 01 00 00    	and    $0x100,%esi
ffffffff804bd4f8:      192 	45 31 ff             	xor    %r15d,%r15d
ffffffff804bd4fb:        0 	e8 fc df ff ff       	callq  ffffffff804bb4fc <sock_rcvlowat>
ffffffff804bd500:      853 	89 44 24 4c          	mov    %eax,0x4c(%rsp)
ffffffff804bd504:     1857 	48 8d 83 a8 00 00 00 	lea    0xa8(%rbx),%rax
ffffffff804bd50b:        0 	89 e9                	mov    %ebp,%ecx
ffffffff804bd50d:      595 	48 8d 93 10 04 00 00 	lea    0x410(%rbx),%rdx
ffffffff804bd514:      263 	83 e1 22             	and    $0x22,%ecx
ffffffff804bd517:        0 	83 e5 20             	and    $0x20,%ebp
ffffffff804bd51a:      601 	48 89 44 24 28       	mov    %rax,0x28(%rsp)
ffffffff804bd51f:      254 	48 8d 83 f8 04 00 00 	lea    0x4f8(%rbx),%rax
ffffffff804bd526:        2 	48 c7 44 24 50 00 00 	movq   $0x0,0x50(%rsp)
ffffffff804bd52d:        0 	00 00 
ffffffff804bd52f:      578 	48 89 54 24 20       	mov    %rdx,0x20(%rsp)
ffffffff804bd534:      290 	89 4c 24 1c          	mov    %ecx,0x1c(%rsp)
ffffffff804bd538:        1 	48 89 44 24 10       	mov    %rax,0x10(%rsp)
ffffffff804bd53d:      593 	89 6c 24 0c          	mov    %ebp,0xc(%rsp)
ffffffff804bd541:      568 	66 83 bb 7c 04 00 00 	cmpw   $0x0,0x47c(%rbx)
ffffffff804bd548:        0 	00 
ffffffff804bd549:     3956 	74 55                	je     ffffffff804bd5a0 <tcp_recvmsg+0x132>
ffffffff804bd54b:        0 	48 8b 54 24 40       	mov    0x40(%rsp),%rdx
ffffffff804bd550:        0 	8b 83 84 05 00 00    	mov    0x584(%rbx),%eax
ffffffff804bd556:        0 	3b 02                	cmp    (%rdx),%eax
ffffffff804bd558:        0 	75 46                	jne    ffffffff804bd5a0 <tcp_recvmsg+0x132>
ffffffff804bd55a:        0 	45 85 ff             	test   %r15d,%r15d
ffffffff804bd55d:        0 	0f 85 e6 04 00 00    	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd563:        0 	65 48 8b 3c 25 00 00 	mov    %gs:0x0,%rdi
ffffffff804bd56a:        0 	00 00 
ffffffff804bd56c:        0 	e8 4c e1 ff ff       	callq  ffffffff804bb6bd <signal_pending>
ffffffff804bd571:        0 	85 c0                	test   %eax,%eax
ffffffff804bd573:        0 	74 2b                	je     ffffffff804bd5a0 <tcp_recvmsg+0x132>
ffffffff804bd575:        0 	48 8b 54 24 58       	mov    0x58(%rsp),%rdx
ffffffff804bd57a:        0 	41 bf f5 ff ff ff    	mov    $0xfffffff5,%r15d
ffffffff804bd580:        0 	48 85 d2             	test   %rdx,%rdx
ffffffff804bd583:        0 	0f 84 c0 04 00 00    	je     ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd589:        0 	48 b8 ff ff ff ff ff 	mov    $0x7fffffffffffffff,%rax
ffffffff804bd590:        0 	ff ff 7f 
ffffffff804bd593:        0 	66 41 bf 00 fe       	mov    $0xfe00,%r15w
ffffffff804bd598:        0 	48 39 c2             	cmp    %rax,%rdx
ffffffff804bd59b:        0 	e9 89 01 00 00       	jmpq   ffffffff804bd729 <tcp_recvmsg+0x2bb>
ffffffff804bd5a0:      597 	48 8b ab a8 00 00 00 	mov    0xa8(%rbx),%rbp
ffffffff804bd5a7:     4601 	48 3b 6c 24 28       	cmp    0x28(%rsp),%rbp
ffffffff804bd5ac:        1 	b8 00 00 00 00       	mov    $0x0,%eax
ffffffff804bd5b1:     1769 	48 0f 44 e8          	cmove  %rax,%rbp
ffffffff804bd5b5:      473 	48 85 ed             	test   %rbp,%rbp
ffffffff804bd5b8:        0 	74 76                	je     ffffffff804bd630 <tcp_recvmsg+0x1c2>
ffffffff804bd5ba:      595 	48 8b 4c 24 40       	mov    0x40(%rsp),%rcx
ffffffff804bd5bf:      897 	8b 55 50             	mov    0x50(%rbp),%edx
ffffffff804bd5c2:       89 	8b 31                	mov    (%rcx),%esi
ffffffff804bd5c4:      581 	41 89 f5             	mov    %esi,%r13d
ffffffff804bd5c7:      301 	41 29 d5             	sub    %edx,%r13d
ffffffff804bd5ca:       33 	79 10                	jns    ffffffff804bd5dc <tcp_recvmsg+0x16e>
ffffffff804bd5cc:        0 	48 c7 c7 48 d9 6a 80 	mov    $0xffffffff806ad948,%rdi
ffffffff804bd5d3:        0 	31 c0                	xor    %eax,%eax
ffffffff804bd5d5:        0 	e8 9a 97 d7 ff       	callq  ffffffff80236d74 <printk>
ffffffff804bd5da:        0 	eb 54                	jmp    ffffffff804bd630 <tcp_recvmsg+0x1c2>
ffffffff804bd5dc:      584 	8b 85 b8 00 00 00    	mov    0xb8(%rbp),%eax
ffffffff804bd5e2:     1061 	48 8b 95 d0 00 00 00 	mov    0xd0(%rbp),%rdx
ffffffff804bd5e9:        1 	8a 54 02 0d          	mov    0xd(%rdx,%rax,1),%dl
ffffffff804bd5ed:        0 	88 d0                	mov    %dl,%al
ffffffff804bd5ef:      876 	83 e0 02             	and    $0x2,%eax
ffffffff804bd5f2:        0 	3c 01                	cmp    $0x1,%al
ffffffff804bd5f4:        0 	8b 45 68             	mov    0x68(%rbp),%eax
ffffffff804bd5f7:      909 	41 83 d5 ff          	adc    $0xffffffffffffffff,%r13d
ffffffff804bd5fb:        0 	41 39 c5             	cmp    %eax,%r13d
ffffffff804bd5fe:        0 	0f 82 df 02 00 00    	jb     ffffffff804bd8e3 <tcp_recvmsg+0x475>
ffffffff804bd604:        0 	80 e2 01             	and    $0x1,%dl
ffffffff804bd607:        0 	0f 85 16 04 00 00    	jne    ffffffff804bda23 <tcp_recvmsg+0x5b5>
ffffffff804bd60d:        0 	83 7c 24 3c 00       	cmpl   $0x0,0x3c(%rsp)
ffffffff804bd612:        0 	75 11                	jne    ffffffff804bd625 <tcp_recvmsg+0x1b7>
ffffffff804bd614:        0 	be 53 05 00 00       	mov    $0x553,%esi
ffffffff804bd619:        0 	48 c7 c7 13 d9 6a 80 	mov    $0xffffffff806ad913,%rdi
ffffffff804bd620:        0 	e8 90 8b d7 ff       	callq  ffffffff802361b5 <warn_on_slowpath>
ffffffff804bd625:        0 	48 8b 6d 00          	mov    0x0(%rbp),%rbp
ffffffff804bd629:        0 	48 3b 6c 24 28       	cmp    0x28(%rsp),%rbp
ffffffff804bd62e:        0 	75 85                	jne    ffffffff804bd5b5 <tcp_recvmsg+0x147>
ffffffff804bd630:       80 	44 3b 7c 24 4c       	cmp    0x4c(%rsp),%r15d
ffffffff804bd635:     4164 	7c 0b                	jl     ffffffff804bd642 <tcp_recvmsg+0x1d4>
ffffffff804bd637:        0 	48 83 7b 68 00       	cmpq   $0x0,0x68(%rbx)
ffffffff804bd63c:        0 	0f 84 07 04 00 00    	je     ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd642:        1 	45 85 ff             	test   %r15d,%r15d
ffffffff804bd645:     3438 	74 49                	je     ffffffff804bd690 <tcp_recvmsg+0x222>
ffffffff804bd647:        0 	83 bb 44 01 00 00 00 	cmpl   $0x0,0x144(%rbx)
ffffffff804bd64e:        0 	0f 85 f5 03 00 00    	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd654:        0 	8a 43 02             	mov    0x2(%rbx),%al
ffffffff804bd657:        0 	3c 07                	cmp    $0x7,%al
ffffffff804bd659:        0 	0f 84 ea 03 00 00    	je     ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd65f:        0 	f6 43 38 01          	testb  $0x1,0x38(%rbx)
ffffffff804bd663:        0 	0f 85 e0 03 00 00    	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd669:        0 	48 83 7c 24 58 00    	cmpq   $0x0,0x58(%rsp)
ffffffff804bd66f:        0 	0f 84 d4 03 00 00    	je     ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd675:        0 	65 48 8b 3c 25 00 00 	mov    %gs:0x0,%rdi
ffffffff804bd67c:        0 	00 00 
ffffffff804bd67e:        0 	e8 3a e0 ff ff       	callq  ffffffff804bb6bd <signal_pending>
ffffffff804bd683:        0 	85 c0                	test   %eax,%eax
ffffffff804bd685:        0 	0f 84 ac 00 00 00    	je     ffffffff804bd737 <tcp_recvmsg+0x2c9>
ffffffff804bd68b:        0 	e9 b9 03 00 00       	jmpq   ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd690:        0 	be 01 00 00 00       	mov    $0x1,%esi
ffffffff804bd695:     4166 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd698:        0 	e8 7b de ff ff       	callq  ffffffff804bb518 <sock_flag>
ffffffff804bd69d:        0 	85 c0                	test   %eax,%eax
ffffffff804bd69f:      276 	0f 85 a4 03 00 00    	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd6a5:      126 	83 bb 44 01 00 00 00 	cmpl   $0x0,0x144(%rbx)
ffffffff804bd6ac:        0 	74 10                	je     ffffffff804bd6be <tcp_recvmsg+0x250>
ffffffff804bd6ae:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd6b1:        0 	e8 00 df ff ff       	callq  ffffffff804bb5b6 <sock_error>
ffffffff804bd6b6:        0 	41 89 c7             	mov    %eax,%r15d
ffffffff804bd6b9:        0 	e9 8b 03 00 00       	jmpq   ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd6be:      112 	f6 43 38 01          	testb  $0x1,0x38(%rbx)
ffffffff804bd6c2:     3451 	0f 85 81 03 00 00    	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd6c8:      497 	8a 43 02             	mov    0x2(%rbx),%al
ffffffff804bd6cb:        0 	3c 07                	cmp    $0x7,%al
ffffffff804bd6cd:      113 	75 20                	jne    ffffffff804bd6ef <tcp_recvmsg+0x281>
ffffffff804bd6cf:        0 	be 01 00 00 00       	mov    $0x1,%esi
ffffffff804bd6d4:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd6d7:        0 	e8 3c de ff ff       	callq  ffffffff804bb518 <sock_flag>
ffffffff804bd6dc:        0 	85 c0                	test   %eax,%eax
ffffffff804bd6de:        0 	0f 85 65 03 00 00    	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd6e4:        0 	41 bf 95 ff ff ff    	mov    $0xffffff95,%r15d
ffffffff804bd6ea:        0 	e9 5a 03 00 00       	jmpq   ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd6ef:      118 	48 83 7c 24 58 00    	cmpq   $0x0,0x58(%rsp)
ffffffff804bd6f5:      398 	75 0b                	jne    ffffffff804bd702 <tcp_recvmsg+0x294>
ffffffff804bd6f7:        0 	41 bf f5 ff ff ff    	mov    $0xfffffff5,%r15d
ffffffff804bd6fd:        0 	e9 47 03 00 00       	jmpq   ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd702:        0 	65 48 8b 3c 25 00 00 	mov    %gs:0x0,%rdi
ffffffff804bd709:        0 	00 00 
ffffffff804bd70b:     2993 	e8 ad df ff ff       	callq  ffffffff804bb6bd <signal_pending>
ffffffff804bd710:      200 	85 c0                	test   %eax,%eax
ffffffff804bd712:        0 	74 23                	je     ffffffff804bd737 <tcp_recvmsg+0x2c9>
ffffffff804bd714:        0 	48 b8 ff ff ff ff ff 	mov    $0x7fffffffffffffff,%rax
ffffffff804bd71b:        0 	ff ff 7f 
ffffffff804bd71e:        0 	48 39 44 24 58       	cmp    %rax,0x58(%rsp)
ffffffff804bd723:        0 	41 bf 00 fe ff ff    	mov    $0xfffffe00,%r15d
ffffffff804bd729:        0 	b8 fc ff ff ff       	mov    $0xfffffffc,%eax
ffffffff804bd72e:        0 	44 0f 45 f8          	cmovne %eax,%r15d
ffffffff804bd732:        0 	e9 12 03 00 00       	jmpq   ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd737:      207 	44 89 fe             	mov    %r15d,%esi
ffffffff804bd73a:      198 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd73d:        0 	e8 cc e9 ff ff       	callq  ffffffff804bc10e <tcp_cleanup_rbuf>
ffffffff804bd742:      227 	83 3d 9b ad 3f 00 00 	cmpl   $0x0,0x3fad9b(%rip)        # ffffffff808b84e4 <sysctl_tcp_low_latency>
ffffffff804bd749:      210 	0f 85 81 00 00 00    	jne    ffffffff804bd7d0 <tcp_recvmsg+0x362>
ffffffff804bd74f:        0 	48 8b ab 28 04 00 00 	mov    0x428(%rbx),%rbp
ffffffff804bd756:        0 	48 3b 6c 24 50       	cmp    0x50(%rsp),%rbp
ffffffff804bd75b:      232 	75 73                	jne    ffffffff804bd7d0 <tcp_recvmsg+0x362>
ffffffff804bd75d:        0 	48 83 7c 24 50 00    	cmpq   $0x0,0x50(%rsp)
ffffffff804bd763:        7 	75 27                	jne    ffffffff804bd78c <tcp_recvmsg+0x31e>
ffffffff804bd765:      229 	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%rsp)
ffffffff804bd76a:       30 	75 20                	jne    ffffffff804bd78c <tcp_recvmsg+0x31e>
ffffffff804bd76c:        7 	48 8b 54 24 30       	mov    0x30(%rsp),%rdx
ffffffff804bd771:      191 	65 48 8b 2c 25 00 00 	mov    %gs:0x0,%rbp
ffffffff804bd778:        0 	00 00 
ffffffff804bd77a:       12 	48 89 ab 28 04 00 00 	mov    %rbp,0x428(%rbx)
ffffffff804bd781:     2617 	48 8b 42 10          	mov    0x10(%rdx),%rax
ffffffff804bd785:      670 	48 89 83 30 04 00 00 	mov    %rax,0x430(%rbx)
ffffffff804bd78c:       11 	8b 83 f4 03 00 00    	mov    0x3f4(%rbx),%eax
ffffffff804bd792:      188 	3b 83 f0 03 00 00    	cmp    0x3f0(%rbx),%eax
ffffffff804bd798:      166 	44 89 b3 3c 04 00 00 	mov    %r14d,0x43c(%rbx)
ffffffff804bd79f:        5 	74 18                	je     ffffffff804bd7b9 <tcp_recvmsg+0x34b>
ffffffff804bd7a1:        0 	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%rsp)
ffffffff804bd7a6:        0 	75 11                	jne    ffffffff804bd7b9 <tcp_recvmsg+0x34b>
ffffffff804bd7a8:        0 	be 92 05 00 00       	mov    $0x592,%esi
ffffffff804bd7ad:        0 	48 c7 c7 13 d9 6a 80 	mov    $0xffffffff806ad913,%rdi
ffffffff804bd7b4:        0 	e8 fc 89 d7 ff       	callq  ffffffff802361b5 <warn_on_slowpath>
ffffffff804bd7b9:      336 	48 8b 4c 24 20       	mov    0x20(%rsp),%rcx
ffffffff804bd7be:      302 	48 39 8b 10 04 00 00 	cmp    %rcx,0x410(%rbx)
ffffffff804bd7c5:     1176 	48 89 6c 24 50       	mov    %rbp,0x50(%rsp)
ffffffff804bd7ca:      244 	0f 85 81 00 00 00    	jne    ffffffff804bd851 <tcp_recvmsg+0x3e3>
ffffffff804bd7d0:      135 	44 3b 7c 24 4c       	cmp    0x4c(%rsp),%r15d
ffffffff804bd7d5:      112 	7c 12                	jl     ffffffff804bd7e9 <tcp_recvmsg+0x37b>
ffffffff804bd7d7:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd7da:        0 	e8 57 7f fc ff       	callq  ffffffff80485736 <release_sock>
ffffffff804bd7df:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd7e2:        0 	e8 96 e5 ff ff       	callq  ffffffff804bbd7d <lock_sock>
ffffffff804bd7e7:        0 	eb 0d                	jmp    ffffffff804bd7f6 <tcp_recvmsg+0x388>
ffffffff804bd7e9:      152 	48 8d 74 24 58       	lea    0x58(%rsp),%rsi
ffffffff804bd7ee:      563 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd7f1:       59 	e8 83 99 fc ff       	callq  ffffffff80487179 <sk_wait_data>
ffffffff804bd7f6:       86 	48 83 7c 24 50 00    	cmpq   $0x0,0x50(%rsp)
ffffffff804bd7fc:     8550 	0f 84 8a 00 00 00    	je     ffffffff804bd88c <tcp_recvmsg+0x41e>
ffffffff804bd802:     4038 	44 89 f1             	mov    %r14d,%ecx
ffffffff804bd805:      900 	2b 8b 3c 04 00 00    	sub    0x43c(%rbx),%ecx
ffffffff804bd80b:        5 	74 28                	je     ffffffff804bd835 <tcp_recvmsg+0x3c7>
ffffffff804bd80d:        0 	48 8b 05 ac 3e 5f 00 	mov    0x5f3eac(%rip),%rax        # ffffffff80ab16c0 <init_net+0xf0>
ffffffff804bd814:        1 	41 01 cf             	add    %ecx,%r15d
ffffffff804bd817:        0 	65 8b 14 25 24 00 00 	mov    %gs:0x24,%edx
ffffffff804bd81e:        0 	00 
ffffffff804bd81f:        0 	89 d2                	mov    %edx,%edx
ffffffff804bd821:        0 	48 f7 d0             	not    %rax
ffffffff804bd824:        0 	48 8b 04 d0          	mov    (%rax,%rdx,8),%rax
ffffffff804bd828:        0 	48 63 d1             	movslq %ecx,%rdx
ffffffff804bd82b:        0 	49 29 d6             	sub    %rdx,%r14
ffffffff804bd82e:        0 	48 01 90 b8 00 00 00 	add    %rdx,0xb8(%rax)
ffffffff804bd835:        4 	8b 83 f0 03 00 00    	mov    0x3f0(%rbx),%eax
ffffffff804bd83b:      373 	3b 83 f4 03 00 00    	cmp    0x3f4(%rbx),%eax
ffffffff804bd841:     3604 	75 49                	jne    ffffffff804bd88c <tcp_recvmsg+0x41e>
ffffffff804bd843:        0 	48 8b 44 24 20       	mov    0x20(%rsp),%rax
ffffffff804bd848:      971 	48 39 83 10 04 00 00 	cmp    %rax,0x410(%rbx)
ffffffff804bd84f:       11 	74 3b                	je     ffffffff804bd88c <tcp_recvmsg+0x41e>
ffffffff804bd851:        6 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd854:      267 	e8 94 e6 ff ff       	callq  ffffffff804bbeed <tcp_prequeue_process>
ffffffff804bd859:        0 	44 89 f1             	mov    %r14d,%ecx
ffffffff804bd85c:      879 	2b 8b 3c 04 00 00    	sub    0x43c(%rbx),%ecx
ffffffff804bd862:      256 	74 28                	je     ffffffff804bd88c <tcp_recvmsg+0x41e>
ffffffff804bd864:        0 	48 8b 05 55 3e 5f 00 	mov    0x5f3e55(%rip),%rax        # ffffffff80ab16c0 <init_net+0xf0>
ffffffff804bd86b:      116 	41 01 cf             	add    %ecx,%r15d
ffffffff804bd86e:       17 	65 8b 14 25 24 00 00 	mov    %gs:0x24,%edx
ffffffff804bd875:        0 	00 
ffffffff804bd876:        0 	89 d2                	mov    %edx,%edx
ffffffff804bd878:        1 	48 f7 d0             	not    %rax
ffffffff804bd87b:        5 	48 8b 04 d0          	mov    (%rax,%rdx,8),%rax
ffffffff804bd87f:        0 	48 63 d1             	movslq %ecx,%rdx
ffffffff804bd882:        6 	49 29 d6             	sub    %rdx,%r14
ffffffff804bd885:        7 	48 01 90 c0 00 00 00 	add    %rdx,0xc0(%rax)
ffffffff804bd88c:       11 	83 7c 24 3c 00       	cmpl   $0x0,0x3c(%rsp)
ffffffff804bd891:      438 	0f 84 a9 01 00 00    	je     ffffffff804bda40 <tcp_recvmsg+0x5d2>
ffffffff804bd897:        0 	8b 44 24 60          	mov    0x60(%rsp),%eax
ffffffff804bd89b:        0 	3b 83 f4 03 00 00    	cmp    0x3f4(%rbx),%eax
ffffffff804bd8a1:        0 	0f 84 99 01 00 00    	je     ffffffff804bda40 <tcp_recvmsg+0x5d2>
ffffffff804bd8a7:        0 	e8 19 ad fd ff       	callq  ffffffff804985c5 <net_ratelimit>
ffffffff804bd8ac:        0 	85 c0                	test   %eax,%eax
ffffffff804bd8ae:        0 	74 24                	je     ffffffff804bd8d4 <tcp_recvmsg+0x466>
ffffffff804bd8b0:        0 	65 48 8b 34 25 00 00 	mov    %gs:0x0,%rsi
ffffffff804bd8b7:        0 	00 00 
ffffffff804bd8b9:        0 	8b 96 70 01 00 00    	mov    0x170(%rsi),%edx
ffffffff804bd8bf:        0 	48 c7 c7 6a d9 6a 80 	mov    $0xffffffff806ad96a,%rdi
ffffffff804bd8c6:        0 	48 81 c6 68 03 00 00 	add    $0x368,%rsi
ffffffff804bd8cd:        0 	31 c0                	xor    %eax,%eax
ffffffff804bd8cf:        0 	e8 a0 94 d7 ff       	callq  ffffffff80236d74 <printk>
ffffffff804bd8d4:        0 	8b 83 f4 03 00 00    	mov    0x3f4(%rbx),%eax
ffffffff804bd8da:        0 	89 44 24 60          	mov    %eax,0x60(%rsp)
ffffffff804bd8de:        0 	e9 5d 01 00 00       	jmpq   ffffffff804bda40 <tcp_recvmsg+0x5d2>
ffffffff804bd8e3:     4077 	44 29 e8             	sub    %r13d,%eax
ffffffff804bd8e6:     6031 	4d 89 f4             	mov    %r14,%r12
ffffffff804bd8e9:        0 	4c 39 f0             	cmp    %r14,%rax
ffffffff804bd8ec:        0 	4c 0f 46 e0          	cmovbe %rax,%r12
ffffffff804bd8f0:      934 	66 83 bb 7c 04 00 00 	cmpw   $0x0,0x47c(%rbx)
ffffffff804bd8f7:        0 	00 
ffffffff804bd8f8:        0 	74 38                	je     ffffffff804bd932 <tcp_recvmsg+0x4c4>
ffffffff804bd8fa:        0 	8b 83 84 05 00 00    	mov    0x584(%rbx),%eax
ffffffff804bd900:        0 	29 f0                	sub    %esi,%eax
ffffffff804bd902:        0 	89 c2                	mov    %eax,%edx
ffffffff804bd904:        0 	4c 39 e2             	cmp    %r12,%rdx
ffffffff804bd907:        0 	73 29                	jae    ffffffff804bd932 <tcp_recvmsg+0x4c4>
ffffffff804bd909:        0 	85 c0                	test   %eax,%eax
ffffffff804bd90b:        0 	74 05                	je     ffffffff804bd912 <tcp_recvmsg+0x4a4>
ffffffff804bd90d:        0 	49 89 d4             	mov    %rdx,%r12
ffffffff804bd910:        0 	eb 20                	jmp    ffffffff804bd932 <tcp_recvmsg+0x4c4>
ffffffff804bd912:        0 	be 02 00 00 00       	mov    $0x2,%esi
ffffffff804bd917:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd91a:        0 	e8 f9 db ff ff       	callq  ffffffff804bb518 <sock_flag>
ffffffff804bd91f:        0 	85 c0                	test   %eax,%eax
ffffffff804bd921:        0 	75 0f                	jne    ffffffff804bd932 <tcp_recvmsg+0x4c4>
ffffffff804bd923:        0 	48 8b 54 24 40       	mov    0x40(%rsp),%rdx
ffffffff804bd928:        0 	41 ff c5             	inc    %r13d
ffffffff804bd92b:        0 	ff 02                	incl   (%rdx)
ffffffff804bd92d:        0 	49 ff cc             	dec    %r12
ffffffff804bd930:        0 	74 4c                	je     ffffffff804bd97e <tcp_recvmsg+0x510>
ffffffff804bd932:      906 	83 7c 24 0c 00       	cmpl   $0x0,0xc(%rsp)
ffffffff804bd937:     6039 	75 2f                	jne    ffffffff804bd968 <tcp_recvmsg+0x4fa>
ffffffff804bd939:       48 	48 8b 4c 24 30       	mov    0x30(%rsp),%rcx
ffffffff804bd93e:     1412 	44 89 ee             	mov    %r13d,%esi
ffffffff804bd941:     6648 	48 89 ef             	mov    %rbp,%rdi
ffffffff804bd944:        0 	48 8b 51 10          	mov    0x10(%rcx),%rdx
ffffffff804bd948:     1524 	44 89 e1             	mov    %r12d,%ecx
ffffffff804bd94b:      167 	e8 c5 d3 fc ff       	callq  ffffffff8048ad15 <skb_copy_datagram_iovec>
ffffffff804bd950:        0 	85 c0                	test   %eax,%eax
ffffffff804bd952:     1038 	74 14                	je     ffffffff804bd968 <tcp_recvmsg+0x4fa>
ffffffff804bd954:        0 	45 85 ff             	test   %r15d,%r15d
ffffffff804bd957:        0 	0f 85 ec 00 00 00    	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd95d:        0 	41 bf f2 ff ff ff    	mov    $0xfffffff2,%r15d
ffffffff804bd963:        0 	e9 e1 00 00 00       	jmpq   ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bd968:       28 	48 8b 54 24 40       	mov    0x40(%rsp),%rdx
ffffffff804bd96d:     5713 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd970:      241 	45 01 e7             	add    %r12d,%r15d
ffffffff804bd973:       27 	4d 29 e6             	sub    %r12,%r14
ffffffff804bd976:      626 	44 01 22             	add    %r12d,(%rdx)
ffffffff804bd979:      221 	e8 fe 11 00 00       	callq  ffffffff804beb7c <tcp_rcv_space_adjust>
ffffffff804bd97e:     1425 	66 83 bb 7c 04 00 00 	cmpw   $0x0,0x47c(%rbx)
ffffffff804bd985:        0 	00 
ffffffff804bd986:     3430 	74 63                	je     ffffffff804bd9eb <tcp_recvmsg+0x57d>
ffffffff804bd988:        0 	8b 8b f4 03 00 00    	mov    0x3f4(%rbx),%ecx
ffffffff804bd98e:        0 	39 8b 84 05 00 00    	cmp    %ecx,0x584(%rbx)
ffffffff804bd994:        0 	79 55                	jns    ffffffff804bd9eb <tcp_recvmsg+0x57d>
ffffffff804bd996:        0 	48 8b 44 24 10       	mov    0x10(%rsp),%rax
ffffffff804bd99b:        0 	48 39 83 f8 04 00 00 	cmp    %rax,0x4f8(%rbx)
ffffffff804bd9a2:        0 	66 c7 83 7c 04 00 00 	movw   $0x0,0x47c(%rbx)
ffffffff804bd9a9:        0 	00 00 
ffffffff804bd9ab:        0 	75 3e                	jne    ffffffff804bd9eb <tcp_recvmsg+0x57d>
ffffffff804bd9ad:        0 	83 bb c0 04 00 00 00 	cmpl   $0x0,0x4c0(%rbx)
ffffffff804bd9b4:        0 	74 35                	je     ffffffff804bd9eb <tcp_recvmsg+0x57d>
ffffffff804bd9b6:        0 	8b 83 94 00 00 00    	mov    0x94(%rbx),%eax
ffffffff804bd9bc:        0 	3b 43 3c             	cmp    0x3c(%rbx),%eax
ffffffff804bd9bf:        0 	7d 2a                	jge    ffffffff804bd9eb <tcp_recvmsg+0x57d>
ffffffff804bd9c1:        0 	0f b7 83 e8 03 00 00 	movzwl 0x3e8(%rbx),%eax
ffffffff804bd9c8:        0 	8a 8b 9d 04 00 00    	mov    0x49d(%rbx),%cl
ffffffff804bd9ce:        0 	8b 93 44 04 00 00    	mov    0x444(%rbx),%edx
ffffffff804bd9d4:        0 	83 e1 0f             	and    $0xf,%ecx
ffffffff804bd9d7:        0 	c1 e0 1a             	shl    $0x1a,%eax
ffffffff804bd9da:        0 	d3 ea                	shr    %cl,%edx
ffffffff804bd9dc:        0 	09 d0                	or     %edx,%eax
ffffffff804bd9de:        0 	0d 00 00 10 00       	or     $0x100000,%eax
ffffffff804bd9e3:        0 	0f c8                	bswap  %eax
ffffffff804bd9e5:        0 	89 83 ec 03 00 00    	mov    %eax,0x3ec(%rbx)
ffffffff804bd9eb:        0 	8b 55 68             	mov    0x68(%rbp),%edx
ffffffff804bd9ee:     1655 	44 89 e8             	mov    %r13d,%eax
ffffffff804bd9f1:       32 	4c 01 e0             	add    %r12,%rax
ffffffff804bd9f4:        0 	48 39 d0             	cmp    %rdx,%rax
ffffffff804bd9f7:      847 	72 47                	jb     ffffffff804bda40 <tcp_recvmsg+0x5d2>
ffffffff804bd9f9:        0 	8b 95 b8 00 00 00    	mov    0xb8(%rbp),%edx
ffffffff804bd9ff:       80 	48 8b 85 d0 00 00 00 	mov    0xd0(%rbp),%rax
ffffffff804bda06:      441 	f6 44 02 0d 01       	testb  $0x1,0xd(%rdx,%rax,1)
ffffffff804bda0b:        0 	75 16                	jne    ffffffff804bda23 <tcp_recvmsg+0x5b5>
ffffffff804bda0d:        0 	83 7c 24 3c 00       	cmpl   $0x0,0x3c(%rsp)
ffffffff804bda12:      453 	75 2c                	jne    ffffffff804bda40 <tcp_recvmsg+0x5d2>
ffffffff804bda14:        0 	31 d2                	xor    %edx,%edx
ffffffff804bda16:        0 	48 89 ee             	mov    %rbp,%rsi
ffffffff804bda19:      477 	48 89 df             	mov    %rbx,%rdi
ffffffff804bda1c:        0 	e8 0f e4 ff ff       	callq  ffffffff804bbe30 <sk_eat_skb>
ffffffff804bda21:      562 	eb 1d                	jmp    ffffffff804bda40 <tcp_recvmsg+0x5d2>
ffffffff804bda23:        0 	48 8b 54 24 40       	mov    0x40(%rsp),%rdx
ffffffff804bda28:        0 	ff 02                	incl   (%rdx)
ffffffff804bda2a:        0 	83 7c 24 3c 00       	cmpl   $0x0,0x3c(%rsp)
ffffffff804bda2f:        0 	75 18                	jne    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bda31:        0 	31 d2                	xor    %edx,%edx
ffffffff804bda33:        0 	48 89 ee             	mov    %rbp,%rsi
ffffffff804bda36:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bda39:        0 	e8 f2 e3 ff ff       	callq  ffffffff804bbe30 <sk_eat_skb>
ffffffff804bda3e:        0 	eb 09                	jmp    ffffffff804bda49 <tcp_recvmsg+0x5db>
ffffffff804bda40:      959 	4d 85 f6             	test   %r14,%r14
ffffffff804bda43:     4766 	0f 85 f8 fa ff ff    	jne    ffffffff804bd541 <tcp_recvmsg+0xd3>
ffffffff804bda49:      217 	48 83 7c 24 50 00    	cmpq   $0x0,0x50(%rsp)
ffffffff804bda4f:     2084 	74 71                	je     ffffffff804bdac2 <tcp_recvmsg+0x654>
ffffffff804bda51:       40 	48 8d 83 10 04 00 00 	lea    0x410(%rbx),%rax
ffffffff804bda58:      448 	48 39 83 10 04 00 00 	cmp    %rax,0x410(%rbx)
ffffffff804bda5f:        4 	74 4c                	je     ffffffff804bdaad <tcp_recvmsg+0x63f>
ffffffff804bda61:        0 	31 c0                	xor    %eax,%eax
ffffffff804bda63:        0 	45 85 ff             	test   %r15d,%r15d
ffffffff804bda66:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bda69:        0 	41 0f 4f c6          	cmovg  %r14d,%eax
ffffffff804bda6d:        0 	89 83 3c 04 00 00    	mov    %eax,0x43c(%rbx)
ffffffff804bda73:        0 	e8 75 e4 ff ff       	callq  ffffffff804bbeed <tcp_prequeue_process>
ffffffff804bda78:        0 	45 85 ff             	test   %r15d,%r15d
ffffffff804bda7b:        0 	7e 30                	jle    ffffffff804bdaad <tcp_recvmsg+0x63f>
ffffffff804bda7d:        0 	44 89 f1             	mov    %r14d,%ecx
ffffffff804bda80:        0 	2b 8b 3c 04 00 00    	sub    0x43c(%rbx),%ecx
ffffffff804bda86:        0 	74 25                	je     ffffffff804bdaad <tcp_recvmsg+0x63f>
ffffffff804bda88:        0 	48 8b 05 31 3c 5f 00 	mov    0x5f3c31(%rip),%rax        # ffffffff80ab16c0 <init_net+0xf0>
ffffffff804bda8f:        0 	41 01 cf             	add    %ecx,%r15d
ffffffff804bda92:        0 	65 8b 14 25 24 00 00 	mov    %gs:0x24,%edx
ffffffff804bda99:        0 	00 
ffffffff804bda9a:        0 	89 d2                	mov    %edx,%edx
ffffffff804bda9c:        0 	48 f7 d0             	not    %rax
ffffffff804bda9f:        0 	48 8b 14 d0          	mov    (%rax,%rdx,8),%rdx
ffffffff804bdaa3:        0 	48 63 c1             	movslq %ecx,%rax
ffffffff804bdaa6:        0 	48 01 82 c0 00 00 00 	add    %rax,0xc0(%rdx)
ffffffff804bdaad:      214 	48 c7 83 28 04 00 00 	movq   $0x0,0x428(%rbx)
ffffffff804bdab4:        0 	00 00 00 00 
ffffffff804bdab8:     1530 	c7 83 3c 04 00 00 00 	movl   $0x0,0x43c(%rbx)
ffffffff804bdabf:        0 	00 00 00 
ffffffff804bdac2:     1135 	48 89 df             	mov    %rbx,%rdi
ffffffff804bdac5:     3909 	44 89 fe             	mov    %r15d,%esi
ffffffff804bdac8:        0 	e8 41 e6 ff ff       	callq  ffffffff804bc10e <tcp_cleanup_rbuf>
ffffffff804bdacd:     1724 	48 89 df             	mov    %rbx,%rdi
ffffffff804bdad0:      932 	e8 61 7c fc ff       	callq  ffffffff80485736 <release_sock>
ffffffff804bdad5:     4661 	e9 12 01 00 00       	jmpq   ffffffff804bdbec <tcp_recvmsg+0x77e>
ffffffff804bdada:        0 	41 bc 95 ff ff ff    	mov    $0xffffff95,%r12d
ffffffff804bdae0:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bdae3:        0 	45 89 e7             	mov    %r12d,%r15d
ffffffff804bdae6:        0 	e8 4b 7c fc ff       	callq  ffffffff80485736 <release_sock>
ffffffff804bdaeb:        0 	e9 fc 00 00 00       	jmpq   ffffffff804bdbec <tcp_recvmsg+0x77e>
ffffffff804bdaf0:        0 	be 02 00 00 00       	mov    $0x2,%esi
ffffffff804bdaf5:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bdaf8:        0 	e8 1b da ff ff       	callq  ffffffff804bb518 <sock_flag>
ffffffff804bdafd:        0 	85 c0                	test   %eax,%eax
ffffffff804bdaff:        0 	0f 85 d4 00 00 00    	jne    ffffffff804bdbd9 <tcp_recvmsg+0x76b>
ffffffff804bdb05:        0 	8b 83 7c 04 00 00    	mov    0x47c(%rbx),%eax
ffffffff804bdb0b:        0 	66 85 c0             	test   %ax,%ax
ffffffff804bdb0e:        0 	0f 84 c5 00 00 00    	je     ffffffff804bdbd9 <tcp_recvmsg+0x76b>
ffffffff804bdb14:        0 	66 3d 00 04          	cmp    $0x400,%ax
ffffffff804bdb18:        0 	0f 84 bb 00 00 00    	je     ffffffff804bdbd9 <tcp_recvmsg+0x76b>
ffffffff804bdb1e:        0 	8a 43 02             	mov    0x2(%rbx),%al
ffffffff804bdb21:        0 	3c 07                	cmp    $0x7,%al
ffffffff804bdb23:        0 	75 17                	jne    ffffffff804bdb3c <tcp_recvmsg+0x6ce>
ffffffff804bdb25:        0 	be 01 00 00 00       	mov    $0x1,%esi
ffffffff804bdb2a:        0 	48 89 df             	mov    %rbx,%rdi
ffffffff804bdb2d:        0 	41 bc 95 ff ff ff    	mov    $0xffffff95,%r12d
ffffffff804bdb33:        0 	e8 e0 d9 ff ff       	callq  ffffffff804bb518 <sock_flag>
ffffffff804bdb38:        0 	85 c0                	test   %eax,%eax
ffffffff804bdb3a:        0 	74 a4                	je     ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdb3c:        0 	8b 83 7c 04 00 00    	mov    0x47c(%rbx),%eax
ffffffff804bdb42:        0 	f6 c4 01             	test   $0x1,%ah
ffffffff804bdb45:        0 	74 79                	je     ffffffff804bdbc0 <tcp_recvmsg+0x752>
ffffffff804bdb47:        0 	40 f6 c5 02          	test   $0x2,%bpl
ffffffff804bdb4b:        0 	88 44 24 67          	mov    %al,0x67(%rsp)
ffffffff804bdb4f:        0 	75 09                	jne    ffffffff804bdb5a <tcp_recvmsg+0x6ec>
ffffffff804bdb51:        0 	66 c7 83 7c 04 00 00 	movw   $0x400,0x47c(%rbx)
ffffffff804bdb58:        0 	00 04 
ffffffff804bdb5a:        0 	48 8b 4c 24 30       	mov    0x30(%rsp),%rcx
ffffffff804bdb5f:        0 	45 89 f4             	mov    %r14d,%r12d
ffffffff804bdb62:        0 	8b 51 30             	mov    0x30(%rcx),%edx
ffffffff804bdb65:        0 	89 d0                	mov    %edx,%eax
ffffffff804bdb67:        0 	83 c8 01             	or     $0x1,%eax
ffffffff804bdb6a:        0 	45 85 f6             	test   %r14d,%r14d
ffffffff804bdb6d:        0 	89 41 30             	mov    %eax,0x30(%rcx)
ffffffff804bdb70:        0 	7e 33                	jle    ffffffff804bdba5 <tcp_recvmsg+0x737>
ffffffff804bdb72:        0 	40 80 e5 20          	and    $0x20,%bpl
ffffffff804bdb76:        0 	41 bc 01 00 00 00    	mov    $0x1,%r12d
ffffffff804bdb7c:        0 	0f 85 5e ff ff ff    	jne    ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdb82:        0 	48 8b 79 10          	mov    0x10(%rcx),%rdi
ffffffff804bdb86:        0 	48 8d 74 24 67       	lea    0x67(%rsp),%rsi
ffffffff804bdb8b:        0 	ba 01 00 00 00       	mov    $0x1,%edx
ffffffff804bdb90:        0 	41 bc f2 ff ff ff    	mov    $0xfffffff2,%r12d
ffffffff804bdb96:        0 	e8 8a cb fc ff       	callq  ffffffff8048a725 <memcpy_toiovec>
ffffffff804bdb9b:        0 	85 c0                	test   %eax,%eax
ffffffff804bdb9d:        0 	0f 85 3d ff ff ff    	jne    ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdba3:        0 	eb 10                	jmp    ffffffff804bdbb5 <tcp_recvmsg+0x747>
ffffffff804bdba5:        0 	48 8b 44 24 30       	mov    0x30(%rsp),%rax
ffffffff804bdbaa:        0 	83 ca 21             	or     $0x21,%edx
ffffffff804bdbad:        0 	89 50 30             	mov    %edx,0x30(%rax)
ffffffff804bdbb0:        0 	e9 2b ff ff ff       	jmpq   ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdbb5:        0 	41 bc 01 00 00 00    	mov    $0x1,%r12d
ffffffff804bdbbb:        0 	e9 20 ff ff ff       	jmpq   ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdbc0:        0 	8a 43 02             	mov    0x2(%rbx),%al
ffffffff804bdbc3:        0 	3c 07                	cmp    $0x7,%al
ffffffff804bdbc5:        0 	74 1d                	je     ffffffff804bdbe4 <tcp_recvmsg+0x776>
ffffffff804bdbc7:        0 	f6 43 38 01          	testb  $0x1,0x38(%rbx)
ffffffff804bdbcb:        0 	41 bc f5 ff ff ff    	mov    $0xfffffff5,%r12d
ffffffff804bdbd1:        0 	0f 84 09 ff ff ff    	je     ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdbd7:        0 	eb 0b                	jmp    ffffffff804bdbe4 <tcp_recvmsg+0x776>
ffffffff804bdbd9:        0 	41 bc ea ff ff ff    	mov    $0xffffffea,%r12d
ffffffff804bdbdf:        0 	e9 fc fe ff ff       	jmpq   ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdbe4:        0 	45 31 e4             	xor    %r12d,%r12d
ffffffff804bdbe7:        0 	e9 f4 fe ff ff       	jmpq   ffffffff804bdae0 <tcp_recvmsg+0x672>
ffffffff804bdbec:     1206 	48 83 c4 68          	add    $0x68,%rsp
ffffffff804bdbf0:      498 	44 89 f8             	mov    %r15d,%eax
ffffffff804bdbf3:      387 	5b                   	pop    %rbx
ffffffff804bdbf4:      462 	5d                   	pop    %rbp
ffffffff804bdbf5:        0 	41 5c                	pop    %r12
ffffffff804bdbf7:      485 	41 5d                	pop    %r13
ffffffff804bdbf9:      466 	41 5e                	pop    %r14
ffffffff804bdbfb:        0 	41 5f                	pop    %r15
ffffffff804bdbfd:      796 	c3                   	retq   

no real hotspots either - but a bit too fractured code sequence, so 
this function's icache footprint is too probably double the size of 
what it could be.

a bit of overhead (8%) leaks in from a callsite:

ffffffff804bd46e:      882 	41 57                	push   %r15
ffffffff804bd470:    15507 	48 89 f7             	mov    %rsi,%rdi

(this is used as a dynamic function pointer too so i'm just guessing 
that the common callsite would be sock_common_recvmsg().)

perhaps this sequence, about 7% of the total overhead of this 
function, warrants mention:

ffffffff804bd7e2:        0 	e8 96 e5 ff ff       	callq  ffffffff804bbd7d <lock_sock>
ffffffff804bd7e7:        0 	eb 0d                	jmp    ffffffff804bd7f6 <tcp_recvmsg+0x388>
ffffffff804bd7e9:      152 	48 8d 74 24 58       	lea    0x58(%rsp),%rsi
ffffffff804bd7ee:      563 	48 89 df             	mov    %rbx,%rdi
ffffffff804bd7f1:       59 	e8 83 99 fc ff       	callq  ffffffff80487179 <sk_wait_data>
ffffffff804bd7f6:       86 	48 83 7c 24 50 00    	cmpq   $0x0,0x50(%rsp)
ffffffff804bd7fc:     8550 	0f 84 8a 00 00 00    	je     ffffffff804bd88c <tcp_recvmsg+0x41e>
ffffffff804bd802:     4038 	44 89 f1             	mov    %r14d,%ecx

that's most likely lock_sock[_nested]()'s overhead leaking over into 
this function:

ffffffff804857cb:     9392 <lock_sock_nested>:
ffffffff804857cb:     9392 	41 55                	push   %r13
ffffffff804857cd:     4112 	41 54                	push   %r12
ffffffff804857cf:        2 	55                   	push   %rbp
ffffffff804857d0:        7 	48 8d 6f 40          	lea    0x40(%rdi),%rbp
ffffffff804857d4:     1515 	53                   	push   %rbx
ffffffff804857d5:        0 	48 89 fb             	mov    %rdi,%rbx
ffffffff804857d8:        4 	48 89 ef             	mov    %rbp,%rdi
ffffffff804857db:     1461 	48 83 ec 38          	sub    $0x38,%rsp
ffffffff804857df:        8 	e8 78 11 09 00       	callq  ffffffff8051695c <_spin_lock_bh>
ffffffff804857e4:     4827 	83 7b 44 00          	cmpl   $0x0,0x44(%rbx)
ffffffff804857e8:     2937 	74 6d                	je     ffffffff80485857 <lock_sock_nested+0x8c>
ffffffff804857ea:        0 	65 48 8b 14 25 00 00 	mov    %gs:0x0,%rdx
ffffffff804857f1:        0 	00 00 
ffffffff804857f3:        0 	fc                   	cld    
ffffffff804857f4:        0 	31 c0                	xor    %eax,%eax
ffffffff804857f6:        0 	48 89 e7             	mov    %rsp,%rdi
ffffffff804857f9:        0 	b9 0a 00 00 00       	mov    $0xa,%ecx
ffffffff804857fe:        0 	f3 ab                	rep stos %eax,%es:(%rdi)
ffffffff80485800:        0 	48 8d 44 24 18       	lea    0x18(%rsp),%rax
ffffffff80485805:        0 	4c 8d 63 48          	lea    0x48(%rbx),%r12
ffffffff80485809:        0 	48 89 54 24 08       	mov    %rdx,0x8(%rsp)
ffffffff8048580e:        0 	48 c7 44 24 10 80 78 	movq   $0xffffffff80247880,0x10(%rsp)
ffffffff80485815:        0 	24 80 
ffffffff80485817:        0 	48 89 44 24 18       	mov    %rax,0x18(%rsp)
ffffffff8048581c:        0 	48 89 44 24 20       	mov    %rax,0x20(%rsp)
ffffffff80485821:        0 	ba 02 00 00 00       	mov    $0x2,%edx
ffffffff80485826:        0 	48 89 e6             	mov    %rsp,%rsi
ffffffff80485829:        0 	4c 89 e7             	mov    %r12,%rdi
ffffffff8048582c:        0 	e8 fd 20 dc ff       	callq  ffffffff8024792e <prepare_to_wait_exclusive>
ffffffff80485831:        0 	48 89 ef             	mov    %rbp,%rdi
ffffffff80485834:        0 	e8 18 11 09 00       	callq  ffffffff80516951 <_spin_unlock_bh>
ffffffff80485839:        0 	e8 52 f9 08 00       	callq  ffffffff80515190 <schedule>
ffffffff8048583e:        0 	48 89 ef             	mov    %rbp,%rdi
ffffffff80485841:        0 	e8 16 11 09 00       	callq  ffffffff8051695c <_spin_lock_bh>
ffffffff80485846:        0 	83 7b 44 00          	cmpl   $0x0,0x44(%rbx)
ffffffff8048584a:        0 	75 d5                	jne    ffffffff80485821 <lock_sock_nested+0x56>
ffffffff8048584c:        0 	48 89 e6             	mov    %rsp,%rsi
ffffffff8048584f:        0 	4c 89 e7             	mov    %r12,%rdi
ffffffff80485852:        0 	e8 7a 20 dc ff       	callq  ffffffff802478d1 <finish_wait>
ffffffff80485857:       88 	c7 43 44 01 00 00 00 	movl   $0x1,0x44(%rbx)
ffffffff8048585e:     3431 	fe 43 40             	incb   0x40(%rbx)
ffffffff80485861:     1568 	e8 00 4e db ff       	callq  ffffffff8023a666 <local_bh_enable>
ffffffff80485866:     1548 	48 83 c4 38          	add    $0x38,%rsp
ffffffff8048586a:       61 	5b                   	pop    %rbx
ffffffff8048586b:     1568 	5d                   	pop    %rbp
ffffffff8048586c:       36 	41 5c                	pop    %r12
ffffffff8048586e:        0 	41 5d                	pop    %r13
ffffffff80485870:     2753 	c3                   	retq   

which is:

1748	void lock_sock_nested(struct sock *sk, int subclass)
1749	{
1750		might_sleep();
1751		spin_lock_bh(&sk->sk_lock.slock);
1752		if (sk->sk_lock.owned)
1753			__lock_sock(sk);
1754		sk->sk_lock.owned = 1;
1755		spin_unlock(&sk->sk_lock.slock);

that branch in the middle should perhaps be:

		if (unlikely(sk->sk_lock.owned))

to make this function fall-through.

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ