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
| ||
|
Message-ID: <17EC94B0A072C34B8DCF0D30AD16044A02871328@BPXM09GP.gisp.nec.co.jp> Date: Thu, 1 Oct 2015 01:55:09 +0000 From: Kosuke Tatsukawa <tatsu@...jp.nec.com> To: Peter Hurley <peter@...leysoftware.com> CC: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Jiri Slaby <jslaby@...e.com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org> Subject: Re: [PATCH] tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c Peter-san, thank you for the reply. In message <560BE5FE.50505@...leysoftware.com> Peter Hurley <peter@...leysoftware.com> wrote: > On 09/28/2015 09:59 PM, Kosuke Tatsukawa wrote: >> My colleague ran into a program stall on a x86_64 server, where >> n_tty_read() was waiting for data even if there was data in the buffer >> in the pty. kernel stack for the stuck process looks like below. >> #0 [ffff88303d107b58] __schedule at ffffffff815c4b20 >> #1 [ffff88303d107bd0] schedule at ffffffff815c513e >> #2 [ffff88303d107bf0] schedule_timeout at ffffffff815c7818 >> #3 [ffff88303d107ca0] wait_woken at ffffffff81096bd2 >> #4 [ffff88303d107ce0] n_tty_read at ffffffff8136fa23 >> #5 [ffff88303d107dd0] tty_read at ffffffff81368013 >> #6 [ffff88303d107e20] __vfs_read at ffffffff811a3704 >> #7 [ffff88303d107ec0] vfs_read at ffffffff811a3a57 >> #8 [ffff88303d107f00] sys_read at ffffffff811a4306 >> #9 [ffff88303d107f50] entry_SYSCALL_64_fastpath at ffffffff815c86d7 >> >> There seems to be two problems causing this issue. >> >> First, in drivers/tty/n_tty.c, __receive_buf() stores the data and >> updates ldata->commit_head using smp_store_release() and then checks >> the wait queue using waitqueue_active(). However, since there is no >> memory barrier, __receive_buf() could return without calling >> wake_up_interactive_poll(), and at the same time, n_tty_read() could >> start to wait in wait_woken() as in the following chart. >> >> __receive_buf() n_tty_read() >> ------------------------------------------------------------------------ >> if (waitqueue_active(&tty->read_wait)) >> /* Memory operations issued after the >> RELEASE may be completed before the >> RELEASE operation has completed */ >> add_wait_queue(&tty->read_wait, &wait); >> ... >> if (!input_available_p(tty, 0)) { >> smp_store_release(&ldata->commit_head, >> ldata->read_head); >> ... >> timeout = wait_woken(&wait, >> TASK_INTERRUPTIBLE, timeout); > > Thank you for reporting this, Tatsukawa-san. > > While I agree that a read memory barrier is required before checking > waitqueue_active() in __receive_buf() and n_tty_receive_char_special(), > on x86/64 that sequence would never have been reordered by the CPU, and > thus cannot be the cause of the observed stall. > > Further, the compiler should not have been able to reorder the > load of tty->read_wait before the store of ldata->commit_head since it > has no visibility into kill_fasync(). > > So I'm concerned that some other cause is to blame. > > To eliminate a compiler problem, would you please attach a combined listing > for drivers/tty/n_tty.c for the machine this occurred on? > > What kernel version was the stall observed? I'm testing now on linux-4.3-rc3, but it also occurs on release kernels such as linux-4.2. I've attached "dis -l __receive_buf" output from crash at the bottom of this message. The code produced looks fine to me. I think it's the CPU that is doing the reordering (or more precisely, delaying the store). I have a reproducer for this issue. I'll send that in a separate message. >> ------------------------------------------------------------------------ >> >> The second problem is that n_tty_read() also lacks a memory barrier >> call and could also cause __receive_buf() to return without calling >> wake_up_interactive_poll(), and n_tty_read() to wait in wait_woken() >> as in the chart below. >> >> __receive_buf() n_tty_read() >> ------------------------------------------------------------------------ >> spin_lock_irqsave(&q->lock, flags); >> /* from add_wait_queue() */ >> ... >> if (!input_available_p(tty, 0)) { >> /* Memory operations issued after the >> RELEASE may be completed before the >> RELEASE operation has completed */ >> smp_store_release(&ldata->commit_head, >> ldata->read_head); >> if (waitqueue_active(&tty->read_wait)) >> __add_wait_queue(q, wait); >> spin_unlock_irqrestore(&q->lock,flags); >> /* from add_wait_queue() */ >> ... >> timeout = wait_woken(&wait, >> TASK_INTERRUPTIBLE, timeout); > > This problem was introduced by the wait_woken() mess; prior to that > there was a full memory barrier in n_tty_read() loop to set the task state > _before evaluating conditions_. > > Though, again, the sequence above is not possible at all on x86/64 since > neither the CPU nor the compiler can produce the hypothetical code in > n_tty_read() above. > > I need to think further on the consequences of the missing full memory > barrier in n_tty_read(). > > Other notes below. <snip> Thank you for the comments. I'll reflect your comments in the next version. Best regards. --- Kosuke TATSUKAWA | 3rd IT Platform Department | IT Platform Division, NEC Corporation | tatsu@...jp.nec.com ------------------------------------------------------------------------ /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1632 0xffffffff8136ef40 <__receive_buf>: push %rbp 0xffffffff8136ef41 <__receive_buf+1>: mov %rsp,%rbp 0xffffffff8136ef44 <__receive_buf+4>: push %r15 0xffffffff8136ef46 <__receive_buf+6>: push %r14 0xffffffff8136ef48 <__receive_buf+8>: push %r13 0xffffffff8136ef4a <__receive_buf+10>: push %r12 0xffffffff8136ef4c <__receive_buf+12>: push %rbx 0xffffffff8136ef4d <__receive_buf+13>: sub $0x28,%rsp 0xffffffff8136ef51 <__receive_buf+17>: nopl 0x0(%rax,%rax,1) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1634 0xffffffff8136ef56 <__receive_buf+22>: mov 0x130(%rdi),%eax /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1633 0xffffffff8136ef5c <__receive_buf+28>: mov 0x280(%rdi),%rbx /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1634 0xffffffff8136ef63 <__receive_buf+35>: mov $0x1,%r15d /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1632 0xffffffff8136ef69 <__receive_buf+41>: mov %rdi,%r12 0xffffffff8136ef6c <__receive_buf+44>: mov %rsi,%r13 0xffffffff8136ef6f <__receive_buf+47>: mov %rdx,%r14 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1634 0xffffffff8136ef72 <__receive_buf+50>: test $0x20,%al 0xffffffff8136ef74 <__receive_buf+52>: jne 0xffffffff8136ef82 <__receive_buf+66> 0xffffffff8136ef76 <__receive_buf+54>: xor %r15d,%r15d 0xffffffff8136ef79 <__receive_buf+57>: test $0x2,%ah 0xffffffff8136ef7c <__receive_buf+60>: jne 0xffffffff8136f146 <__receive_buf+518> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1636 0xffffffff8136ef82 <__receive_buf+66>: movzbl 0x5d(%rbx),%eax 0xffffffff8136ef86 <__receive_buf+70>: test $0x8,%al 0xffffffff8136ef88 <__receive_buf+72>: jne 0xffffffff8136f161 <__receive_buf+545> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1638 0xffffffff8136ef8e <__receive_buf+78>: test $0x4,%al 0xffffffff8136ef90 <__receive_buf+80>: je 0xffffffff8136f069 <__receive_buf+297> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 143 0xffffffff8136ef96 <__receive_buf+86>: lea 0x5e(%rbx),%r15 0xffffffff8136ef9a <__receive_buf+90>: add $0x1,%r13 0xffffffff8136ef9e <__receive_buf+94>: xor %eax,%eax 0xffffffff8136efa0 <__receive_buf+96>: jmp 0xffffffff8136efd4 <__receive_buf+148> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1545 0xffffffff8136efa2 <__receive_buf+98>: test %r14,%r14 0xffffffff8136efa5 <__receive_buf+101>: je 0xffffffff8136efaf <__receive_buf+111> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1546 0xffffffff8136efa7 <__receive_buf+103>: movzbl (%r14),%eax 0xffffffff8136efab <__receive_buf+107>: add $0x1,%r14 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1547 0xffffffff8136efaf <__receive_buf+111>: test %al,%al 0xffffffff8136efb1 <__receive_buf+113>: jne 0xffffffff8136f1ff <__receive_buf+703> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 310 0xffffffff8136efb7 <__receive_buf+119>: mov (%rbx),%rdx 0xffffffff8136efba <__receive_buf+122>: movzbl -0x1(%r13),%esi 0xffffffff8136efbf <__receive_buf+127>: and $0xfff,%edx 0xffffffff8136efc5 <__receive_buf+133>: mov %sil,(%r15,%rdx,1) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 311 0xffffffff8136efc9 <__receive_buf+137>: addq $0x1,(%rbx) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1550 0xffffffff8136efcd <__receive_buf+141>: sub $0x1,%ecx 0xffffffff8136efd0 <__receive_buf+144>: add $0x1,%r13 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1544 0xffffffff8136efd4 <__receive_buf+148>: test %ecx,%ecx 0xffffffff8136efd6 <__receive_buf+150>: jne 0xffffffff8136efa2 <__receive_buf+98> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1662 0xffffffff8136efd8 <__receive_buf+152>: testb $0x10,0x5d(%rbx) 0xffffffff8136efdc <__receive_buf+156>: je 0xffffffff8136efe9 <__receive_buf+169> 0xffffffff8136efde <__receive_buf+158>: testb $0x1,0x13e(%r12) 0xffffffff8136efe7 <__receive_buf+167>: je 0xffffffff8136f05a <__receive_buf+282> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1666 0xffffffff8136efe9 <__receive_buf+169>: mov (%rbx),%rax 0xffffffff8136efec <__receive_buf+172>: mov %rax,-0x40(%rbp) /root/linux-4.3-rc3/include/linux/compiler.h: 221 0xffffffff8136eff0 <__receive_buf+176>: mov %rax,0x8(%rbx) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1668 0xffffffff8136eff4 <__receive_buf+180>: movslq 0x2260(%rbx),%rdx /root/linux-4.3-rc3/drivers/tty/n_tty.c: 133 0xffffffff8136effb <__receive_buf+187>: mov (%rbx),%rax 0xffffffff8136effe <__receive_buf+190>: sub 0x2268(%rbx),%rax /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1668 0xffffffff8136f005 <__receive_buf+197>: cmp %rax,%rdx 0xffffffff8136f008 <__receive_buf+200>: jbe 0xffffffff8136f015 <__receive_buf+213> 0xffffffff8136f00a <__receive_buf+202>: testb $0x1,0x13e(%r12) 0xffffffff8136f013 <__receive_buf+211>: je 0xffffffff8136f05a <__receive_buf+282> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1669 0xffffffff8136f015 <__receive_buf+213>: lea 0x220(%r12),%rdi 0xffffffff8136f01d <__receive_buf+221>: mov $0x20001,%edx 0xffffffff8136f022 <__receive_buf+226>: mov $0x1d,%esi 0xffffffff8136f027 <__receive_buf+231>: callq 0xffffffff811b4a60 <kill_fasync> /root/linux-4.3-rc3/include/linux/wait.h: 107 0xffffffff8136f02c <__receive_buf+236>: lea 0x250(%r12),%rax /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1670 0xffffffff8136f034 <__receive_buf+244>: cmp %rax,0x250(%r12) 0xffffffff8136f03c <__receive_buf+252>: je 0xffffffff8136f05a <__receive_buf+282> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1671 0xffffffff8136f03e <__receive_buf+254>: lea 0x248(%r12),%rdi 0xffffffff8136f046 <__receive_buf+262>: mov $0x1,%ecx 0xffffffff8136f04b <__receive_buf+267>: mov $0x1,%edx 0xffffffff8136f050 <__receive_buf+272>: mov $0x1,%esi 0xffffffff8136f055 <__receive_buf+277>: callq 0xffffffff81096eb0 <__wake_up> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1673 0xffffffff8136f05a <__receive_buf+282>: add $0x28,%rsp 0xffffffff8136f05e <__receive_buf+286>: pop %rbx 0xffffffff8136f05f <__receive_buf+287>: pop %r12 0xffffffff8136f061 <__receive_buf+289>: pop %r13 0xffffffff8136f063 <__receive_buf+291>: pop %r14 0xffffffff8136f065 <__receive_buf+293>: pop %r15 0xffffffff8136f067 <__receive_buf+295>: leaveq 0xffffffff8136f068 <__receive_buf+296>: retq /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1638 0xffffffff8136f069 <__receive_buf+297>: mov 0x13c(%r12),%edx 0xffffffff8136f071 <__receive_buf+305>: and $0x10000,%edx 0xffffffff8136f077 <__receive_buf+311>: je 0xffffffff8136f082 <__receive_buf+322> 0xffffffff8136f079 <__receive_buf+313>: test %r15b,%r15b 0xffffffff8136f07c <__receive_buf+316>: je 0xffffffff8136ef96 <__receive_buf+86> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1640 0xffffffff8136f082 <__receive_buf+322>: mov 0x2a0(%r12),%r10d 0xffffffff8136f08a <__receive_buf+330>: test %r10d,%r10d 0xffffffff8136f08d <__receive_buf+333>: je 0xffffffff8136f097 <__receive_buf+343> 0xffffffff8136f08f <__receive_buf+335>: test %edx,%edx 0xffffffff8136f091 <__receive_buf+337>: je 0xffffffff8136f1d9 <__receive_buf+665> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1643 0xffffffff8136f097 <__receive_buf+343>: test $0x1,%al 0xffffffff8136f099 <__receive_buf+345>: je 0xffffffff8136f0c4 <__receive_buf+388> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1646 0xffffffff8136f09b <__receive_buf+347>: xor %edx,%edx 0xffffffff8136f09d <__receive_buf+349>: test %r14,%r14 0xffffffff8136f0a0 <__receive_buf+352>: je 0xffffffff8136f0aa <__receive_buf+362> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1647 0xffffffff8136f0a2 <__receive_buf+354>: movsbl (%r14),%edx 0xffffffff8136f0a6 <__receive_buf+358>: add $0x1,%r14 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1648 0xffffffff8136f0aa <__receive_buf+362>: movzbl 0x0(%r13),%esi 0xffffffff8136f0af <__receive_buf+367>: mov %r12,%rdi 0xffffffff8136f0b2 <__receive_buf+370>: mov %ecx,-0x48(%rbp) 0xffffffff8136f0b5 <__receive_buf+373>: add $0x1,%r13 0xffffffff8136f0b9 <__receive_buf+377>: callq 0xffffffff8136de10 <n_tty_receive_char_lnext> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1649 0xffffffff8136f0be <__receive_buf+382>: mov -0x48(%rbp),%ecx 0xffffffff8136f0c1 <__receive_buf+385>: sub $0x1,%ecx /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1652 0xffffffff8136f0c4 <__receive_buf+388>: test %r15b,%r15b 0xffffffff8136f0c7 <__receive_buf+391>: jne 0xffffffff8136f0d8 <__receive_buf+408> 0xffffffff8136f0c9 <__receive_buf+393>: testb $0x8,0x130(%r12) 0xffffffff8136f0d2 <__receive_buf+402>: je 0xffffffff8136f1ec <__receive_buf+684> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1655 0xffffffff8136f0d8 <__receive_buf+408>: mov %r14,%rdx 0xffffffff8136f0db <__receive_buf+411>: mov %r13,%rsi 0xffffffff8136f0de <__receive_buf+414>: mov %r12,%rdi 0xffffffff8136f0e1 <__receive_buf+417>: callq 0xffffffff8136ec70 <n_tty_receive_buf_standard> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 825 0xffffffff8136f0e6 <__receive_buf+422>: testb $0x48,0x13c(%r12) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 823 0xffffffff8136f0ef <__receive_buf+431>: mov 0x280(%r12),%r14 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 825 0xffffffff8136f0f7 <__receive_buf+439>: je 0xffffffff8136f12a <__receive_buf+490> 0xffffffff8136f0f9 <__receive_buf+441>: mov 0x18(%r14),%rax 0xffffffff8136f0fd <__receive_buf+445>: cmp %rax,0x20(%r14) 0xffffffff8136f101 <__receive_buf+449>: je 0xffffffff8136f12a <__receive_buf+490> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 829 0xffffffff8136f103 <__receive_buf+451>: lea 0x22b0(%r14),%r13 0xffffffff8136f10a <__receive_buf+458>: mov %r13,%rdi 0xffffffff8136f10d <__receive_buf+461>: callq 0xffffffff815c6940 <mutex_lock> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 830 0xffffffff8136f112 <__receive_buf+466>: mov 0x18(%r14),%rax /root/linux-4.3-rc3/drivers/tty/n_tty.c: 831 0xffffffff8136f116 <__receive_buf+470>: mov %r12,%rdi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 830 0xffffffff8136f119 <__receive_buf+473>: mov %rax,0x20(%r14) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 831 0xffffffff8136f11d <__receive_buf+477>: callq 0xffffffff8136ca60 <__process_echoes> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 832 0xffffffff8136f122 <__receive_buf+482>: mov %r13,%rdi 0xffffffff8136f125 <__receive_buf+485>: callq 0xffffffff815c61f0 <mutex_unlock> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1658 0xffffffff8136f12a <__receive_buf+490>: mov 0x18(%r12),%rax 0xffffffff8136f12f <__receive_buf+495>: mov 0x48(%rax),%rax 0xffffffff8136f133 <__receive_buf+499>: test %rax,%rax 0xffffffff8136f136 <__receive_buf+502>: je 0xffffffff8136efd8 <__receive_buf+152> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1659 0xffffffff8136f13c <__receive_buf+508>: mov %r12,%rdi 0xffffffff8136f13f <__receive_buf+511>: callq *%rax 0xffffffff8136f141 <__receive_buf+513>: jmpq 0xffffffff8136efd8 <__receive_buf+152> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1630 0xffffffff8136f146 <__receive_buf+518>: mov 0x13c(%rdi),%r15d /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1636 0xffffffff8136f14d <__receive_buf+525>: movzbl 0x5d(%rbx),%eax /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1630 0xffffffff8136f151 <__receive_buf+529>: shr $0xf,%r15d 0xffffffff8136f155 <__receive_buf+533>: and $0x1,%r15d /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1636 0xffffffff8136f159 <__receive_buf+537>: test $0x8,%al 0xffffffff8136f15b <__receive_buf+539>: je 0xffffffff8136ef8e <__receive_buf+78> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1524 0xffffffff8136f161 <__receive_buf+545>: mov (%rbx),%rdi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1525 0xffffffff8136f164 <__receive_buf+548>: mov $0x1000,%r15d 0xffffffff8136f16a <__receive_buf+554>: movslq %ecx,%r14 0xffffffff8136f16d <__receive_buf+557>: mov %r15,%rax /root/linux-4.3-rc3/drivers/tty/n_tty.c: 143 0xffffffff8136f170 <__receive_buf+560>: lea 0x5e(%rbx),%r8 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1526 0xffffffff8136f174 <__receive_buf+564>: mov %r13,%rsi 0xffffffff8136f177 <__receive_buf+567>: mov %ecx,-0x48(%rbp) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1524 0xffffffff8136f17a <__receive_buf+570>: and $0xfff,%edi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1526 0xffffffff8136f180 <__receive_buf+576>: mov %r8,-0x50(%rbp) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1525 0xffffffff8136f184 <__receive_buf+580>: sub %rdi,%rax /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1526 0xffffffff8136f187 <__receive_buf+583>: lea (%r8,%rdi,1),%rdi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1525 0xffffffff8136f18b <__receive_buf+587>: cmp %rax,%r14 0xffffffff8136f18e <__receive_buf+590>: cmova %rax,%r14 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1526 0xffffffff8136f192 <__receive_buf+594>: mov %r14,%rdx 0xffffffff8136f195 <__receive_buf+597>: callq 0xffffffff812b2210 <__memcpy> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1527 0xffffffff8136f19a <__receive_buf+602>: mov %r14,%rdi 0xffffffff8136f19d <__receive_buf+605>: add (%rbx),%rdi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1533 0xffffffff8136f1a0 <__receive_buf+608>: lea 0x0(%r13,%r14,1),%rsi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1527 0xffffffff8136f1a5 <__receive_buf+613>: mov %rdi,(%rbx) /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1532 0xffffffff8136f1a8 <__receive_buf+616>: mov -0x48(%rbp),%ecx /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1531 0xffffffff8136f1ab <__receive_buf+619>: and $0xfff,%edi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1533 0xffffffff8136f1b1 <__receive_buf+625>: mov -0x50(%rbp),%r8 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1532 0xffffffff8136f1b5 <__receive_buf+629>: sub %rdi,%r15 0xffffffff8136f1b8 <__receive_buf+632>: sub %r14d,%ecx 0xffffffff8136f1bb <__receive_buf+635>: movslq %ecx,%rcx /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1533 0xffffffff8136f1be <__receive_buf+638>: lea (%r8,%rdi,1),%rdi /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1532 0xffffffff8136f1c2 <__receive_buf+642>: cmp %r15,%rcx 0xffffffff8136f1c5 <__receive_buf+645>: cmovbe %rcx,%r15 /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1533 0xffffffff8136f1c9 <__receive_buf+649>: mov %r15,%rdx 0xffffffff8136f1cc <__receive_buf+652>: callq 0xffffffff812b2210 <__memcpy> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1534 0xffffffff8136f1d1 <__receive_buf+657>: add %r15,(%rbx) 0xffffffff8136f1d4 <__receive_buf+660>: jmpq 0xffffffff8136efd8 <__receive_buf+152> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1641 0xffffffff8136f1d9 <__receive_buf+665>: mov %r14,%rdx 0xffffffff8136f1dc <__receive_buf+668>: mov %r13,%rsi 0xffffffff8136f1df <__receive_buf+671>: mov %r12,%rdi 0xffffffff8136f1e2 <__receive_buf+674>: callq 0xffffffff8136dce0 <n_tty_receive_buf_closing> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1640 0xffffffff8136f1e7 <__receive_buf+679>: jmpq 0xffffffff8136efd8 <__receive_buf+152> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1653 0xffffffff8136f1ec <__receive_buf+684>: mov %r14,%rdx 0xffffffff8136f1ef <__receive_buf+687>: mov %r13,%rsi 0xffffffff8136f1f2 <__receive_buf+690>: mov %r12,%rdi 0xffffffff8136f1f5 <__receive_buf+693>: callq 0xffffffff8136e620 <n_tty_receive_buf_fast> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1652 0xffffffff8136f1fa <__receive_buf+698>: jmpq 0xffffffff8136f0e6 <__receive_buf+422> /root/linux-4.3-rc3/drivers/tty/n_tty.c: 1550 0xffffffff8136f1ff <__receive_buf+703>: movzbl -0x1(%r13),%esi 0xffffffff8136f204 <__receive_buf+708>: movsbl %al,%edx 0xffffffff8136f207 <__receive_buf+711>: mov %r12,%rdi 0xffffffff8136f20a <__receive_buf+714>: mov %al,-0x50(%rbp) 0xffffffff8136f20d <__receive_buf+717>: mov %ecx,-0x48(%rbp) 0xffffffff8136f210 <__receive_buf+720>: callq 0xffffffff8136dae0 <n_tty_receive_char_flagged> 0xffffffff8136f215 <__receive_buf+725>: mov -0x48(%rbp),%ecx 0xffffffff8136f218 <__receive_buf+728>: movzbl -0x50(%rbp),%eax 0xffffffff8136f21c <__receive_buf+732>: jmpq 0xffffffff8136efcd <__receive_buf+141> 0xffffffff8136f221 <__receive_buf+737>: data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1) -- 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