linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* yama_ptrace_access_check(): possible recursive locking detected
@ 2012-07-26 13:47 Fengguang Wu
  2012-07-26 15:41 ` Oleg Nesterov
  2012-08-10  1:39 ` Kees Cook
  0 siblings, 2 replies; 17+ messages in thread
From: Fengguang Wu @ 2012-07-26 13:47 UTC (permalink / raw)
  To: Kees Cook; +Cc: LKML, Oleg Nesterov

[-- Attachment #1: Type: text/plain, Size: 3024 bytes --]

Hi Kees,

Here is a recursive lock possibility:

        ptrace_may_access()
=>        task_lock(task);
            yama_ptrace_access_check()
              get_task_comm()
=>              task_lock(task);

[   60.230444] =============================================
[   60.232078] [ INFO: possible recursive locking detected ]
[   60.232078] 3.5.0+ #281 Not tainted
[   60.232078] ---------------------------------------------
[   60.232078] trinity-child0/17019 is trying to acquire lock:
[   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c1176ffa>] get_task_comm+0x4a/0xf0
[   60.232078] 
[   60.232078] but task is already holding lock:
[   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
[   60.232078] 
[   60.232078] other info that might help us debug this:
[   60.232078]  Possible unsafe locking scenario:
[   60.232078] 
[   60.232078]        CPU0
[   60.232078]        ----
[   60.232078]   lock(&(&p->alloc_lock)->rlock);
[   60.232078]   lock(&(&p->alloc_lock)->rlock);
[   60.232078]
[   60.232078]  *** DEADLOCK ***
[   60.232078]
[   60.232078]  May be due to missing lock nesting notation
[   60.232078]
[   60.232078] 3 locks held by trinity-child0/17019:
[   60.232078]  #0:  (&p->lock){+.+.+.}, at: [<c11a9683>] seq_read+0x33/0x6b0
[   60.232078]  #1:  (&sig->cred_guard_mutex){+.+.+.}, at: [<c11ff8ae>] lock_trace+0x2e/0xb0
[   60.232078]  #2:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
[   60.232078]
[   60.232078] stack backtrace:
[   60.232078] Pid: 17019, comm: trinity-child0 Not tainted 3.5.0+ #281
[   60.232078] Call Trace:
[   60.232078]  [<c10c6238>] __lock_acquire+0x1498/0x14f0
[   60.232078]  [<c10be7e7>] ? trace_hardirqs_off+0x27/0x40
[   60.232078]  [<c10c6360>] lock_acquire+0xd0/0x110       
[   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
[   60.232078]  [<c1422290>] _raw_spin_lock+0x60/0x110
[   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
[   60.232078]  [<c1176ffa>] get_task_comm+0x4a/0xf0
[   60.232078]  [<c1246798>] yama_ptrace_access_check+0x468/0x4a0
[   60.232078]  [<c124648f>] ? yama_ptrace_access_check+0x15f/0x4a0
[   60.232078]  [<c124209a>] security_ptrace_access_check+0x1a/0x30
[   60.232078]  [<c1065229>] __ptrace_may_access+0x189/0x310
[   60.232078]  [<c10650cc>] ? __ptrace_may_access+0x2c/0x310
[   60.232078]  [<c106542d>] ptrace_may_access+0x7d/0xf0
[   60.232078]  [<c11ff8ea>] lock_trace+0x6a/0xb0
[   60.232078]  [<c11ffa46>] proc_pid_stack+0x76/0x170
[   60.232078]  [<c1201064>] proc_single_show+0x74/0x100
[   60.232078]  [<c11a97b3>] seq_read+0x163/0x6b0
[   60.232078]  [<c105bf70>] ? do_setitimer+0x220/0x330
[   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
[   60.232078]  [<c116b55a>] vfs_read+0xca/0x280    
[   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
[   60.232078]  [<c116b776>] sys_read+0x66/0xe0
[   60.232078]  [<c1423d9d>] syscall_call+0x7/0xb
[   60.232078]  [<c1420000>] ? __schedule+0x2a0/0xc80

Thanks,
Fengguang

[-- Attachment #2: dmesg-kvm-waimea-5003-2012-07-26-13-02-33 --]
[-- Type: text/plain, Size: 47834 bytes --]

[    0.000000] Linux version 3.5.0+ (kbuild@kbuild) (gcc version 4.7.0 (Debian 4.7.0-11) ) #281 Thu Jul 26 13:00:05 CST 2012
[    0.000000] Disabled fast string operations
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009f3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009f400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000000fffcfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000fffd000-0x000000000fffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fffbc000-0x00000000ffffffff] reserved
[    0.000000] debug: ignoring loglevel setting.
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] DMI 2.4 present.
[    0.000000] DMI: Bochs Bochs, BIOS Bochs 01/01/2007
[    0.000000] e820: update [mem 0x00000000-0x0000ffff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0xfffd max_arch_pfn = 0x100000
[    0.000000] MTRR default type: write-back
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 00E0000000 mask FFE0000000 uncachable
[    0.000000]   1 disabled
[    0.000000]   2 disabled
[    0.000000]   3 disabled
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x70106, new 0x7010600070106
[    0.000000] Scan for SMP in [mem 0x00000000-0x000003ff]
[    0.000000] Scan for SMP in [mem 0x0009fc00-0x0009ffff]
[    0.000000] Scan for SMP in [mem 0x000f0000-0x000fffff]
[    0.000000] found SMP MP-table at [mem 0x000f8860-0x000f886f] mapped at [c00f8860]
[    0.000000]   mpc: f8870-f898c
[    0.000000] initial memory mapped: [mem 0x00000000-0x023fffff]
[    0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x0fffcfff]
[    0.000000]  [mem 0x00000000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x0fbfffff] page 2M
[    0.000000]  [mem 0x0fc00000-0x0fffcfff] page 4k
[    0.000000] kernel direct mapping tables up to 0xfffcfff @ [mem 0x023fa000-0x023fffff]
[    0.000000] log_buf_len: 8388608
[    0.000000] early log buf free: 128572(98%)
[    0.000000] RAMDISK: [mem 0x0fce4000-0x0ffeffff]
[    0.000000] 0MB HIGHMEM available.
[    0.000000] 255MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 0fffd000
[    0.000000]   low ram: 0 - 0fffd000
[    0.000000] kvm-clock: Using msrs 12 and 11
[    0.000000] kvm-clock: cpu 0, msr 0:15c9b01, boot clock
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00010000-0x00ffffff]
[    0.000000]   Normal   [mem 0x01000000-0x0fffcfff]
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00010000-0x0009efff]
[    0.000000]   node   0: [mem 0x00100000-0x0fffcfff]
[    0.000000] On node 0 totalpages: 65420
[    0.000000] free_area_init_node: node 0, pgdat c17a5c00, node_mem_map cf2e4200
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3951 pages, LIFO batch:0
[    0.000000]   Normal zone: 480 pages used for memmap
[    0.000000]   Normal zone: 60957 pages, LIFO batch:15
[    0.000000] Using APIC driver default
[    0.000000] Intel MultiProcessor Specification v1.4
[    0.000000]     Virtual Wire compatibility mode.
[    0.000000]   mpc: f8870-f898c
[    0.000000] MPTABLE: OEM ID: BOCHSCPU
[    0.000000] MPTABLE: Product ID: 0.1         
[    0.000000] MPTABLE: APIC at: 0xFEE00000
[    0.000000] mapped APIC to         ffffa000 (        fee00000)
[    0.000000] Processor #0 (Bootup-CPU)
[    0.000000] Processor #1
[    0.000000] ACPI: NR_CPUS/possible_cpus limit of 1 reached.  Processor 1/0x1 ignored.
[    0.000000] Bus #0 is PCI   
[    0.000000] Bus #1 is ISA   
[    0.000000] IOAPIC[0]: Assigned apic_id 2
[    0.000000] IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 04, APIC ID 2, APIC INT 09
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 0c, APIC ID 2, APIC INT 0b
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 10, APIC ID 2, APIC INT 0b
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 14, APIC ID 2, APIC INT 0a
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 18, APIC ID 2, APIC INT 0a
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 1c, APIC ID 2, APIC INT 0b
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 20, APIC ID 2, APIC INT 0b
[    0.000000] Int: type 0, pol 1, trig 0, bus 00, IRQ 24, APIC ID 2, APIC INT 0a
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 00, APIC ID 2, APIC INT 02
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 01, APIC ID 2, APIC INT 01
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 03, APIC ID 2, APIC INT 03
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 04, APIC ID 2, APIC INT 04
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 05, APIC ID 2, APIC INT 05
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 06, APIC ID 2, APIC INT 06
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 07, APIC ID 2, APIC INT 07
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 08, APIC ID 2, APIC INT 08
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 0c, APIC ID 2, APIC INT 0c
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 0d, APIC ID 2, APIC INT 0d
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 0e, APIC ID 2, APIC INT 0e
[    0.000000] Int: type 0, pol 0, trig 0, bus 01, IRQ 0f, APIC ID 2, APIC INT 0f
[    0.000000] Lint: type 3, pol 0, trig 0, bus 01, IRQ 00, APIC ID 0, APIC LINT 00
[    0.000000] Lint: type 1, pol 0, trig 0, bus 01, IRQ 00, APIC ID 0, APIC LINT 01
[    0.000000] Processors: 1
[    0.000000] mapped IOAPIC to ffff9000 (fec00000)
[    0.000000] nr_irqs_gsi: 40
[    0.000000] e820: [mem 0x10000000-0xfffbbfff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on KVM
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 64908
[    0.000000] Kernel command line: trinity=1m hung_task_panic=1 tree=acpi:next log_buf_len=8M ignore_loglevel debug sched_debug apic=debug dynamic_printk sysrq_always_enabled panic=10 softlockup_panic=1 unknown_nmi_panic=1 nmi_watchdog=panic,lapic  prompt_ramdisk=0 console=ttyS0,115200 console=tty0 vga=normal  root=/dev/ram0 rw link=vmlinuz-2012-07-26-13-01-06-acpi:next:ec033d0-ec033d0-i386-randconfig-k005-1-waimea BOOT_IMAGE=kernel-tests/kernels/i386-randconfig-k005/ec033d0/vmlinuz-3.5.0+
[    0.000000] sysrq: sysrq always enabled.
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (00000000:00000000)
[    0.000000] Memory: 231956k/262132k available (4285k kernel code, 29724k reserved, 3573k data, 560k init, 0k highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfffa2000 - 0xfffff000   ( 372 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xd07fd000 - 0xff7fe000   ( 752 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xcfffd000   ( 255 MB)
[    0.000000]       .init : 0xc17ae000 - 0xc183a000   ( 560 kB)
[    0.000000]       .data : 0xc142f762 - 0xc17acc80   (3573 kB)
[    0.000000]       .text : 0xc1000000 - 0xc142f762   (4285 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: Genslabs=15, HWalign=128, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:2304 nr_irqs:256 16
[    0.000000] CPU 0 irqstacks, hard=cec08000 soft=cec0a000
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] console [ttyS0] 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: 3823 kB
[    0.000000]  per task-struct memory footprint: 1920 bytes
[    0.000000] ------------------------
[    0.000000] | Locking API testsuite:
[    0.000000] ----------------------------------------------------------------------------
[    0.000000]                                  | spin |wlock |rlock |mutex | wsem | rsem |
[    0.000000]   --------------------------------------------------------------------------
[    0.000000]                      A-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]                  A-B-B-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]              A-B-B-C-C-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]              A-B-C-A-B-C deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]          A-B-B-C-C-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]          A-B-C-D-B-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]          A-B-C-D-B-C-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]                     double unlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]                   initialize held:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]                  bad unlock order:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
[    0.000000]   --------------------------------------------------------------------------
[    0.000000]               recursive read-lock:             |  ok  |             |  ok  |
[    0.000000]            recursive read-lock #2:             |  ok  |             |  ok  |
[    0.000000]             mixed read-write-lock:             |  ok  |             |  ok  |
[    0.000000]             mixed write-read-lock:             |  ok  |             |  ok  |
[    0.000000]   --------------------------------------------------------------------------
[    0.000000]      hard-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
[    0.000000]      soft-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
[    0.000000]      hard-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
[    0.000000]      soft-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
[    0.000000]        sirq-safe-A => hirqs-on/12:  ok  |  ok  |  ok  |
[    0.000000]        sirq-safe-A => hirqs-on/21:  ok  |  ok  |  ok  |
[    0.000000]          hard-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
[    0.000000]          soft-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
[    0.000000]          hard-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
[    0.000000]          soft-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
[    0.000000]     hard-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
[    0.000000]     soft-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
[    0.000000]       hard-irq lock-inversion/123:  ok  |  ok  |  ok  |
[    0.000000]       soft-irq lock-inversion/123:  ok  |  ok  |  ok  |
[    0.000000]       hard-irq lock-inversion/132:  ok  |  ok  |  ok  |
[    0.000000]       soft-irq lock-inversion/132:  ok  |  ok  |  ok  |
[    0.000000]       hard-irq lock-inversion/213:  ok  |  ok  |  ok  |
[    0.000000]       soft-irq lock-inversion/213:  ok  |  ok  |  ok  |
[    0.000000]       hard-irq lock-inversion/231:  ok  |  ok  |  ok  |
[    0.000000]       soft-irq lock-inversion/231:  ok  |  ok  |  ok  |
[    0.000000]       hard-irq lock-inversion/312:  ok  |  ok  |  ok  |
[    0.000000]       soft-irq lock-inversion/312:  ok  |  ok  |  ok  |
[    0.000000]       hard-irq lock-inversion/321:  ok  |  ok  |  ok  |
[    0.000000]       soft-irq lock-inversion/321:  ok  |  ok  |  ok  |
[    0.000000]       hard-irq read-recursion/123:  ok  |
[    0.000000]       soft-irq read-recursion/123:  ok  |
[    0.000000]       hard-irq read-recursion/132:  ok  |
[    0.000000]       soft-irq read-recursion/132:  ok  |
[    0.000000]       hard-irq read-recursion/213:  ok  |
[    0.000000]       soft-irq read-recursion/213:  ok  |
[    0.000000]       hard-irq read-recursion/231:  ok  |
[    0.000000]       soft-irq read-recursion/231:  ok  |
[    0.000000]       hard-irq read-recursion/312:  ok  |
[    0.000000]       soft-irq read-recursion/312:  ok  |
[    0.000000]       hard-irq read-recursion/321:  ok  |
[    0.000000]       soft-irq read-recursion/321:  ok  |
[    0.000000] -------------------------------------------------------
[    0.000000] Good, all 218 testcases passed! |
[    0.000000] ---------------------------------
[    0.000000] ODEBUG: 8 of 8 active objects replaced
[    0.000000] Detected 3300.286 MHz processor.
[    0.004000] Calibrating delay loop (skipped) preset value.. 6600.57 BogoMIPS (lpj=13201144)
[    0.004037] pid_max: default: 32768 minimum: 301
[    0.005580] Security Framework initialized
[    0.006680] Yama: becoming mindful.
[    0.008076] Mount-cache hash table entries: 512
[    0.010676] Disabled fast string operations
[    0.012026] mce: CPU supports 10 MCE banks
[    0.013461] CPU: Intel Common KVM processor stepping 01
[    0.018316] Performance Events: unsupported Netburst CPU model 6 no PMU driver, software events only.
[    0.022001] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.023352] Getting VERSION: 50014
[    0.024023] Getting VERSION: 50014
[    0.025376] Getting ID: 0
[    0.026519] Getting ID: f000000
[    0.028024] Getting LVT0: 8700
[    0.029369] Getting LVT1: 8400
[    0.030623] enabled ExtINT on CPU#0
[    0.032886] ENABLING IO-APIC IRQs
[    0.033869] Setting 2 in the phys_id_present_map
[    0.035119] init IO_APIC IRQs
[    0.036012]  apic 2 pin 0 not connected
[    0.037301] IOAPIC[0]: Set routing entry (2-1 -> 0x31 -> IRQ 1 Mode:0 Active:0 Dest:1)
[    0.039389] IOAPIC[0]: Set routing entry (2-2 -> 0x30 -> IRQ 0 Mode:0 Active:0 Dest:1)
[    0.040032] IOAPIC[0]: Set routing entry (2-3 -> 0x33 -> IRQ 3 Mode:0 Active:0 Dest:1)
[    0.042180] IOAPIC[0]: Set routing entry (2-4 -> 0x34 -> IRQ 4 Mode:0 Active:0 Dest:1)
[    0.044047] IOAPIC[0]: Set routing entry (2-5 -> 0x35 -> IRQ 5 Mode:0 Active:0 Dest:1)
[    0.048044] IOAPIC[0]: Set routing entry (2-6 -> 0x36 -> IRQ 6 Mode:0 Active:0 Dest:1)
[    0.052049] IOAPIC[0]: Set routing entry (2-7 -> 0x37 -> IRQ 7 Mode:0 Active:0 Dest:1)
[    0.056049] IOAPIC[0]: Set routing entry (2-8 -> 0x38 -> IRQ 8 Mode:0 Active:0 Dest:1)
[    0.058615] IOAPIC[0]: Set routing entry (2-9 -> 0x29 -> IRQ 33 Mode:1 Active:0 Dest:1)
[    0.060055] IOAPIC[0]: Set routing entry (2-10 -> 0x41 -> IRQ 34 Mode:1 Active:0 Dest:1)
[    0.064153] IOAPIC[0]: Set routing entry (2-11 -> 0x49 -> IRQ 35 Mode:1 Active:0 Dest:1)
[    0.066928] IOAPIC[0]: Set routing entry (2-12 -> 0x3c -> IRQ 12 Mode:0 Active:0 Dest:1)
[    0.068055] IOAPIC[0]: Set routing entry (2-13 -> 0x3d -> IRQ 13 Mode:0 Active:0 Dest:1)
[    0.072049] IOAPIC[0]: Set routing entry (2-14 -> 0x3e -> IRQ 14 Mode:0 Active:0 Dest:1)
[    0.076047] IOAPIC[0]: Set routing entry (2-15 -> 0x3f -> IRQ 15 Mode:0 Active:0 Dest:1)
[    0.078945]  apic 2 pin 16 not connected
[    0.080015]  apic 2 pin 17 not connected
[    0.081681]  apic 2 pin 18 not connected
[    0.084014]  apic 2 pin 19 not connected
[    0.085626]  apic 2 pin 20 not connected
[    0.087123]  apic 2 pin 21 not connected
[    0.088015]  apic 2 pin 22 not connected
[    0.089493]  apic 2 pin 23 not connected
[    0.091086] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.092015] Using local APIC timer interrupts.
[    0.092015] calibrating APIC timer ...
[    0.100005] ... lapic delta = 6250581
[    0.100005] ..... delta 6250581
[    0.100005] ..... mult: 268443632
[    0.100005] ..... calibration result: 4000371
[    0.100005] ..... CPU clock speed is 3300.2285 MHz.
[    0.100005] ..... host bus clock speed is 1000.0371 MHz.
[    0.100005] ... verify APIC timer
[    0.216143] ... jiffies delta = 25
[    0.217620] ... jiffies result ok
[    0.219447] device: 'platform': device_add
[    0.220013] bus: 'platform': registered
[    0.220013] bus: 'cpu': registered
[    0.220027] device: 'cpu': device_add
[    0.222343] device class 'regulator': registering
[    0.224337] Registering platform device 'reg-dummy'. Parent at platform
[    0.226657] device: 'reg-dummy': device_add
[    0.228053] bus: 'platform': add device reg-dummy
[    0.229872] bus: 'platform': add driver reg-dummy
[    0.232037] bus: 'platform': driver_probe_device: matched device reg-dummy with driver reg-dummy
[    0.236024] bus: 'platform': really_probe: probing driver reg-dummy with device reg-dummy
[    0.239033] device: 'regulator.0': device_add
[    0.240382] dummy: 
[    0.241795] driver: 'reg-dummy': driver_bound: bound to device 'reg-dummy'
[    0.244069] bus: 'platform': really_probe: bound device reg-dummy to driver reg-dummy
[    0.248507] NET: Registered protocol family 16
[    0.250942] device class 'bdi': registering
[    0.252187] device class 'pci_bus': registering
[    0.256087] bus: 'pci': registered
[    0.257884] device class 'tty': registering
[    0.259662] device class 'vtconsole': registering
[    0.260075] device: 'vtcon0': device_add
[    0.262252] bus: 'eisa': registered
[    0.264023] EISA bus registered
[    0.268765] PCI: PCI BIOS revision 2.10 entry at 0xffe77, last bus=0
[    0.271767] PCI: Using configuration type 1 for base access
[    0.272145] device: 'cpu0': device_add
[    0.276047] bus: 'cpu': add device cpu0
[    0.280184] device: 'default': device_add
[    0.282632] bio: create slab <bio-0> at 0
[    0.284119] device class 'block': registering
[    0.286399] bus: 'pnp': registered
[    0.288040] device class 'misc': registering
[    0.290312] device: 'vga_arbiter': device_add
[    0.292216] vgaarb: loaded
[    0.293835] bus: 'serio': registered
[    0.296029] device class 'input': registering
[    0.298356] device class 'devfreq': registering
[    0.300044] PCI: Probing PCI hardware
[    0.301616] PCI: root bus 00: using default resources
[    0.304029] PCI: Probing PCI hardware (bus 00)
[    0.305771] device: 'pci0000:00': device_add
[    0.308077] device: '0000:00': device_add
[    0.309802] PCI host bridge to bus 0000:00
[    0.311395] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.312034] pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffff]
[    0.316049] pci_bus 0000:00: scanning bus
[    0.318234] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000
[    0.320041] pci 0000:00:00.0: calling quirk_mmio_always_on+0x0/0x17
[    0.324688] pci 0000:00:01.0: [8086:7000] type 00 class 0x060100
[    0.328942] pci 0000:00:01.1: [8086:7010] type 00 class 0x010180
[    0.332545] pci 0000:00:01.1: reg 20: [io  0xc000-0xc00f]
[    0.335111] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000
[    0.336825] pci 0000:00:01.3: calling quirk_piix4_acpi+0x0/0x216
[    0.340052] pci 0000:00:01.3: quirk: [io  0xb000-0xb03f] claimed by PIIX4 ACPI
[    0.343200] pci 0000:00:01.3: quirk: [io  0xb100-0xb10f] claimed by PIIX4 SMB
[    0.344136] pci 0000:00:01.3: calling pci_fixup_piix4_acpi+0x0/0x1d
[    0.348305] pci 0000:00:02.0: [1013:00b8] type 00 class 0x030000
[    0.356164] pci 0000:00:02.0: reg 10: [mem 0xf0000000-0xf1ffffff pref]
[    0.362530] pci 0000:00:02.0: reg 14: [mem 0xf2000000-0xf2000fff]
[    0.383058] pci 0000:00:02.0: reg 30: [mem 0xf2010000-0xf201ffff pref]
[    0.384522] pci 0000:00:03.0: [8086:100e] type 00 class 0x020000
[    0.389020] pci 0000:00:03.0: reg 10: [mem 0xf2020000-0xf203ffff]
[    0.393003] pci 0000:00:03.0: reg 14: [io  0xc040-0xc07f]
[    0.401177] pci 0000:00:03.0: reg 30: [mem 0xf2040000-0xf2047fff pref]
[    0.404379] pci 0000:00:04.0: [1af4:1001] type 00 class 0x010000
[    0.406749] pci 0000:00:04.0: reg 10: [io  0xc080-0xc0bf]
[    0.408115] pci 0000:00:04.0: reg 14: [mem 0xf2048000-0xf2048fff]
[    0.412533] pci 0000:00:05.0: [1af4:1001] type 00 class 0x010000
[    0.414666] pci 0000:00:05.0: reg 10: [io  0xc0c0-0xc0ff]
[    0.416114] pci 0000:00:05.0: reg 14: [mem 0xf2049000-0xf2049fff]
[    0.418929] pci 0000:00:06.0: [1af4:1001] type 00 class 0x010000
[    0.420261] pci 0000:00:06.0: reg 10: [io  0xc100-0xc13f]
[    0.424117] pci 0000:00:06.0: reg 14: [mem 0xf204a000-0xf204afff]
[    0.427167] pci 0000:00:07.0: [1af4:1001] type 00 class 0x010000
[    0.428175] pci 0000:00:07.0: reg 10: [io  0xc140-0xc17f]
[    0.430249] pci 0000:00:07.0: reg 14: [mem 0xf204b000-0xf204bfff]
[    0.432763] pci 0000:00:08.0: [1af4:1001] type 00 class 0x010000
[    0.436241] pci 0000:00:08.0: reg 10: [io  0xc180-0xc1bf]
[    0.438459] pci 0000:00:08.0: reg 14: [mem 0xf204c000-0xf204cfff]
[    0.440782] pci 0000:00:09.0: [1af4:1001] type 00 class 0x010000
[    0.444175] pci 0000:00:09.0: reg 10: [io  0xc1c0-0xc1ff]
[    0.446088] pci 0000:00:09.0: reg 14: [mem 0xf204d000-0xf204dfff]
[    0.448864] pci 0000:00:0a.0: [8086:25ab] type 00 class 0x088000
[    0.451427] pci 0000:00:0a.0: reg 10: [mem 0xf204e000-0xf204e00f]
[    0.453043] pci_bus 0000:00: fixups for bus
[    0.456037] pci_bus 0000:00: bus scan returning with max=00
[    0.457938] device: '0000:00:00.0': device_add
[    0.460118] bus: 'pci': add device 0000:00:00.0
[    0.462015] device: '0000:00:01.0': device_add
[    0.464043] bus: 'pci': add device 0000:00:01.0
[    0.465730] device: '0000:00:01.1': device_add
[    0.467330] bus: 'pci': add device 0000:00:01.1
[    0.468094] device: '0000:00:01.3': device_add
[    0.469692] bus: 'pci': add device 0000:00:01.3
[    0.472122] device: '0000:00:02.0': device_add
[    0.473751] bus: 'pci': add device 0000:00:02.0
[    0.475523] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.476056] device: '0000:00:03.0': device_add
[    0.480053] bus: 'pci': add device 0000:00:03.0
[    0.481681] device: '0000:00:04.0': device_add
[    0.483372] bus: 'pci': add device 0000:00:04.0
[    0.484150] device: '0000:00:05.0': device_add
[    0.486331] bus: 'pci': add device 0000:00:05.0
[    0.488131] device: '0000:00:06.0': device_add
[    0.492050] bus: 'pci': add device 0000:00:06.0
[    0.494379] device: '0000:00:07.0': device_add
[    0.496051] bus: 'pci': add device 0000:00:07.0
[    0.497809] device: '0000:00:08.0': device_add
[    0.500050] bus: 'pci': add device 0000:00:08.0
[    0.501842] device: '0000:00:09.0': device_add
[    0.503501] bus: 'pci': add device 0000:00:09.0
[    0.504126] device: '0000:00:0a.0': device_add
[    0.505954] bus: 'pci': add device 0000:00:0a.0
[    0.508271] pci 0000:00:01.0: PIIX/ICH IRQ router [8086:7000]
[    0.512129] PCI: pci_cache_line_size set to 64 bytes
[    0.514579] pci 0000:00:01.1: BAR 0: reserving [io  0x01f0-0x01f7 flags 0x110] (d=0, p=0)
[    0.516058] pci 0000:00:01.1: BAR 1: reserving [io  0x03f6 flags 0x110] (d=0, p=0)
[    0.520039] pci 0000:00:01.1: BAR 2: reserving [io  0x0170-0x0177 flags 0x110] (d=0, p=0)
[    0.522504] pci 0000:00:01.1: BAR 3: reserving [io  0x0376 flags 0x110] (d=0, p=0)
[    0.524041] pci 0000:00:01.1: BAR 4: reserving [io  0xc000-0xc00f flags 0x40101] (d=0, p=0)
[    0.528078] pci 0000:00:02.0: BAR 0: reserving [mem 0xf0000000-0xf1ffffff flags 0x42208] (d=0, p=0)
[    0.531042] pci 0000:00:02.0: BAR 1: reserving [mem 0xf2000000-0xf2000fff flags 0x40200] (d=0, p=0)
[    0.532064] pci 0000:00:03.0: BAR 0: reserving [mem 0xf2020000-0xf203ffff flags 0x40200] (d=0, p=0)
[    0.536040] pci 0000:00:03.0: BAR 1: reserving [io  0xc040-0xc07f flags 0x40101] (d=0, p=0)
[    0.540061] pci 0000:00:04.0: BAR 0: reserving [io  0xc080-0xc0bf flags 0x40101] (d=0, p=0)
[    0.542393] pci 0000:00:04.0: BAR 1: reserving [mem 0xf2048000-0xf2048fff flags 0x40200] (d=0, p=0)
[    0.544067] pci 0000:00:05.0: BAR 0: reserving [io  0xc0c0-0xc0ff flags 0x40101] (d=0, p=0)
[    0.548042] pci 0000:00:05.0: BAR 1: reserving [mem 0xf2049000-0xf2049fff flags 0x40200] (d=0, p=0)
[    0.551009] pci 0000:00:06.0: BAR 0: reserving [io  0xc100-0xc13f flags 0x40101] (d=0, p=0)
[    0.552048] pci 0000:00:06.0: BAR 1: reserving [mem 0xf204a000-0xf204afff flags 0x40200] (d=0, p=0)
[    0.556060] pci 0000:00:07.0: BAR 0: reserving [io  0xc140-0xc17f flags 0x40101] (d=0, p=0)
[    0.558620] pci 0000:00:07.0: BAR 1: reserving [mem 0xf204b000-0xf204bfff flags 0x40200] (d=0, p=0)
[    0.560063] pci 0000:00:08.0: BAR 0: reserving [io  0xc180-0xc1bf flags 0x40101] (d=0, p=0)
[    0.564042] pci 0000:00:08.0: BAR 1: reserving [mem 0xf204c000-0xf204cfff flags 0x40200] (d=0, p=0)
[    0.566616] pci 0000:00:09.0: BAR 0: reserving [io  0xc1c0-0xc1ff flags 0x40101] (d=0, p=0)
[    0.568045] pci 0000:00:09.0: BAR 1: reserving [mem 0xf204d000-0xf204dfff flags 0x40200] (d=0, p=0)
[    0.572083] pci 0000:00:0a.0: BAR 0: reserving [mem 0xf204e000-0xf204e00f flags 0x40200] (d=0, p=0)
[    0.576352] e820: reserve RAM buffer [mem 0x0009f400-0x0009ffff]
[    0.578301] e820: reserve RAM buffer [mem 0x0fffd000-0x0fffffff]
[    0.580232] device class 'net': registering
[    0.581926] device: 'lo': device_add
[    0.585135] Switching to clocksource kvm-clock
[    0.587382] bus: 'pnp': add driver system
[    0.587382] device class 'mem': registering
[    0.588157] device: 'mem': device_add
[    0.589598] device: 'kmem': device_add
[    0.591155] device: 'null': device_add
[    0.592587] device: 'port': device_add
[    0.594084] device: 'zero': device_add
[    0.595260] device: 'full': device_add
[    0.596332] device: 'random': device_add
[    0.597401] device: 'urandom': device_add
[    0.598488] device: 'kmsg': device_add
[    0.599612] device: 'oldmem': device_add
[    0.600987] device: 'tty': device_add
[    0.602143] device: 'console': device_add
[    0.603377] device: 'tty0': device_add
[    0.604715] device class 'vc': registering
[    0.606239] device: 'vcs': device_add
[    0.607628] device: 'vcsa': device_add
[    0.608784] device: 'vcs1': device_add
[    0.609924] device: 'vcsa1': device_add
[    0.611217] device: 'tty1': device_add
[    0.612378] device: 'tty2': device_add
[    0.613431] device: 'tty3': device_add
[    0.614614] device: 'tty4': device_add
[    0.615823] device: 'tty5': device_add
[    0.617174] device: 'tty6': device_add
[    0.618215] device: 'tty7': device_add
[    0.619309] device: 'tty8': device_add
[    0.620347] device: 'tty9': device_add
[    0.621382] device: 'tty10': device_add
[    0.625262] device: 'tty11': device_add
[    0.626525] device: 'tty12': device_add
[    0.627634] device: 'tty13': device_add
[    0.628863] device: 'tty14': device_add
[    0.630204] device: 'tty15': device_add
[    0.631524] device: 'tty16': device_add
[    0.632664] device: 'tty17': device_add
[    0.633991] device: 'tty18': device_add
[    0.635163] device: 'tty19': device_add
[    0.636281] device: 'tty20': device_add
[    0.637461] device: 'tty21': device_add
[    0.638598] device: 'tty22': device_add
[    0.639896] device: 'tty23': device_add
[    0.641073] device: 'tty24': device_add
[    0.642285] device: 'tty25': device_add
[    0.643515] device: 'tty26': device_add
[    0.645089] device: 'tty27': device_add
[    0.646567] device: 'tty28': device_add
[    0.648111] device: 'tty29': device_add
[    0.649589] device: 'tty30': device_add
[    0.651013] device: 'tty31': device_add
[    0.652458] device: 'tty32': device_add
[    0.654124] device: 'tty33': device_add
[    0.655788] device: 'tty34': device_add
[    0.657346] device: 'tty35': device_add
[    0.658772] device: 'tty36': device_add
[    0.660612] device: 'tty37': device_add
[    0.662747] device: 'tty38': device_add
[    0.664539] device: 'tty39': device_add
[    0.665580] device: 'tty40': device_add
[    0.666898] device: 'tty41': device_add
[    0.668370] device: 'tty42': device_add
[    0.669855] device: 'tty43': device_add
[    0.671385] device: 'tty44': device_add
[    0.673306] device: 'tty45': device_add
[    0.674961] device: 'tty46': device_add
[    0.676553] device: 'tty47': device_add
[    0.678224] device: 'tty48': device_add
[    0.679878] device: 'tty49': device_add
[    0.681609] device: 'tty50': device_add
[    0.683327] device: 'tty51': device_add
[    0.685040] device: 'tty52': device_add
[    0.686723] device: 'tty53': device_add
[    0.688512] device: 'tty54': device_add
[    0.690260] device: 'tty55': device_add
[    0.692173] device: 'tty56': device_add
[    0.693891] device: 'tty57': device_add
[    0.695540] device: 'tty58': device_add
[    0.697137] device: 'tty59': device_add
[    0.698650] device: 'tty60': device_add
[    0.700230] device: 'tty61': device_add
[    0.701528] device: 'tty62': device_add
[    0.703015] device: 'tty63': device_add
[    0.704689] device class 'firmware': registering
[    0.706482] pci_bus 0000:00: resource 4 [io  0x0000-0xffff]
[    0.708377] pci_bus 0000:00: resource 5 [mem 0x00000000-0xffffffff]
[    0.710498] NET: Registered protocol family 1
[    0.712167] pci 0000:00:00.0: calling quirk_natoma+0x0/0x55
[    0.714141] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[    0.716175] pci 0000:00:00.0: calling quirk_passive_release+0x0/0x130
[    0.719230] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[    0.722027] pci 0000:00:01.0: calling quirk_isa_dma_hangs+0x0/0x58
[    0.724834] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[    0.727418] pci 0000:00:02.0: calling pci_fixup_video+0x0/0x138
[    0.730124] pci 0000:00:02.0: Boot video device
[    0.731911] pci 0000:00:03.0: calling quirk_e100_interrupt+0x0/0x25c
[    0.734100] PCI: CLS 0 bytes, default 64
[    0.736748] Unpacking initramfs...
[    0.923791] Freeing initrd memory: 3120k freed
[    0.927416] Registering platform device 'rtc_cmos'. Parent at platform
[    0.930330] device: 'rtc_cmos': device_add
[    0.932657] bus: 'platform': add device rtc_cmos
[    0.934506] platform rtc_cmos: registered platform RTC device (no PNP device found)
[    0.938015] bus: 'machinecheck': registered
[    0.939787] device: 'machinecheck': device_add
[    0.941589] device: 'machinecheck0': device_add
[    0.943339] bus: 'machinecheck': add device machinecheck0
[    0.945851] device: 'mcelog': device_add
[    0.947962] Registering platform device 'pcspkr'. Parent at platform
[    0.950943] device: 'pcspkr': device_add
[    0.952969] bus: 'platform': add device pcspkr
[    0.955493] bus: 'clocksource': registered
[    0.957625] device: 'clocksource': device_add
[    0.959805] device: 'clocksource0': device_add
[    0.962135] bus: 'clocksource': add device clocksource0
[    0.964733] bus: 'platform': add driver alarmtimer
[    0.967203] Registering platform device 'alarmtimer'. Parent at platform
[    0.969668] device: 'alarmtimer': device_add
[    0.971359] bus: 'platform': add device alarmtimer
[    0.973242] bus: 'platform': driver_probe_device: matched device alarmtimer with driver alarmtimer
[    0.976003] bus: 'platform': really_probe: probing driver alarmtimer with device alarmtimer
[    0.978962] driver: 'alarmtimer': driver_bound: bound to device 'alarmtimer'
[    0.981527] bus: 'platform': really_probe: bound device alarmtimer to driver alarmtimer
[    1.006558] bus: 'event_source': registered
[    1.008771] device: 'breakpoint': device_add
[    1.010903] bus: 'event_source': add device breakpoint
[    1.013520] device: 'software': device_add
[    1.015589] bus: 'event_source': add device software
[    1.024449] VFS: Disk quotas dquot_6.5.2
[    1.026584] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.030228] msgmni has been set to 459
[    1.032661] cryptomgr_test (16) used greatest stack depth: 7388 bytes left
[    1.036168] device class 'bsg': registering
[    1.037817] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
[    1.040649] io scheduler noop registered (default)
[    1.042445] start plist test
[    1.045737] end plist test
[    1.046885] list_sort_test: start testing list_sort()
[    1.049553] device: 'pnp0': device_add
[    1.051524] isapnp: Scanning for PnP cards...
[    1.419801] isapnp: No Plug & Play device found
[    1.421286] device: 'ptmx': device_add
[    1.422449] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    1.424787] Registering platform device 'serial8250'. Parent at platform
[    1.426806] device: 'serial8250': device_add
[    1.428461] bus: 'platform': add device serial8250
[    1.457746] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.459982] device: 'ttyS0': device_add
[    1.461816] device: 'ttyS1': device_add
[    1.463431] device: 'ttyS2': device_add
[    1.465109] device: 'ttyS3': device_add
[    1.467099] bus: 'platform': add driver serial8250
[    1.469092] bus: 'platform': driver_probe_device: matched device serial8250 with driver serial8250
[    1.472256] bus: 'platform': really_probe: probing driver serial8250 with device serial8250
[    1.475222] driver: 'serial8250': driver_bound: bound to device 'serial8250'
[    1.477931] bus: 'platform': really_probe: bound device serial8250 to driver serial8250
[    1.481357] bus: 'pnp': add driver serial
[    1.483131] bus: 'pci': add driver serial
[    1.485087] bus: 'pnp': add driver tpm_tis
[    1.486871] bus: 'isa': registered
[    1.488381] device: 'isa': device_add
[    1.489993] bus: 'pnp': add driver i8042 kbd
[    1.491556] bus: 'pnp': add driver i8042 aux
[    1.493480] bus: 'pnp': remove driver i8042 kbd
[    1.495706] driver: 'i8042 kbd': driver_release
[    1.498010] bus: 'pnp': remove driver i8042 aux
[    1.500314] driver: 'i8042 aux': driver_release
[    1.502128] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    1.504702] Registering platform device 'i8042'. Parent at platform
[    1.507029] device: 'i8042': device_add
[    1.508828] bus: 'platform': add device i8042
[    1.510464] bus: 'platform': add driver i8042
[    1.512328] bus: 'platform': driver_probe_device: matched device i8042 with driver i8042
[    1.516347] bus: 'platform': really_probe: probing driver i8042 with device i8042
[    1.521115] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.523591] serio: i8042 AUX port at 0x60,0x64 irq 12
[    1.526267] device: 'serio0': device_add
[    1.528335] driver: 'i8042': driver_bound: bound to device 'i8042'
[    1.531237] bus: 'platform': really_probe: bound device i8042 to driver i8042
[    1.534684] bus: 'serio': add device serio0
[    1.537018] device: 'serio1': device_add
[    1.539210] bus: 'serio': add device serio1
[    1.541257] device: 'mice': device_add
[    1.542745] device: 'psaux': device_add
[    1.544242] mousedev: PS/2 mouse device common for all mice
[    1.546187] bus: 'serio': add driver atkbd
[    1.547715] Registering platform device 'eisa.0'. Parent at platform
[    1.549919] bus: 'serio': driver_probe_device: matched device serio1 with driver atkbd
[    1.552759] bus: 'serio': really_probe: probing driver atkbd with device serio1
[    1.555827] atkbd: probe of serio1 rejects match -19
[    1.557592] device: 'eisa.0': device_add
[    1.559027] bus: 'platform': add device eisa.0
[    1.560780] bus: 'serio': driver_probe_device: matched device serio0 with driver atkbd
[    1.563747] bus: 'serio': really_probe: probing driver atkbd with device serio0
[    1.566925] EISA: Probing bus 0 at eisa.0
[    1.569085] EISA: Detected 0 cards.
[    1.574503] device: 'input0': device_add
[    1.576403] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    1.580338] 
[    1.580338] printing PIC contents
[    1.582527] ... PIC  IMR: fffb
[    1.583866] ... PIC  IRR: 1013
[    1.585569] ... PIC  ISR: 0000
[    1.586945] ... PIC ELCR: 0c00
[    1.588450] printing local APIC contents on CPU#0/0:
[    1.590823] ... APIC ID:      00000000 (0)
[    1.592415] ... APIC VERSION: 00050014
[    1.592415] ... APIC TASKPRI: 00000000 (00)
[    1.592415] ... APIC PROCPRI: 00000000
[    1.592415] ... APIC LDR: 01000000
[    1.592415] ... APIC DFR: ffffffff
[    1.592415] ... APIC SPIV: 000001ff
[    1.592415] ... APIC ISR field:
[    1.592415] 0000000000000000000000000000000000000000000000000000000000000000
[    1.592415] ... APIC TMR field:
[    1.592415] 0000000000000000000000000000000000000000000000000000000000000000
[    1.592415] ... APIC IRR field:
[    1.592415] 0000000000000000000000000000000000000000000000000000000000008000
[    1.592415] ... APIC ESR: 00000000
[    1.592415] ... APIC ICR: 00000831
[    1.592415] ... APIC ICR2: 01000000
[    1.592415] ... APIC LVTT: 000000ef
[    1.592415] ... APIC LVTPC: 00010000
[    1.592415] ... APIC LVT0: 00010700
[    1.592415] ... APIC LVT1: 00000400
[    1.592415] ... APIC LVTERR: 000000fe
[    1.592415] ... APIC TMICT: 000369ce
[    1.592415] ... APIC TMCCT: 00000000
[    1.592415] ... APIC TDCR: 00000003
[    1.592415] 
[    1.634613] number of MP IRQ sources: 20.
[    1.636690] number of IO-APIC #2 registers: 24.
[    1.638887] testing the IO APIC.......................
[    1.641425] 
[    1.642342] IO APIC #2......
[    1.643405] .... register #00: 02000000
[    1.644882] .......    : physical APIC id: 02
[    1.646450] .......    : Delivery Type: 0
[    1.647862] .......    : LTS          : 0
[    1.649256] .... register #01: 00170011
[    1.650620] .......     : max redirection entries: 17
[    1.652304] .......     : PRQ implemented: 0
[    1.653780] .......     : IO APIC version: 11
[    1.655378] .... register #02: 02000000
[    1.656904] .......     : arbitration: 02
[    1.658325] .... IRQ redirection table:
[    1.659766]  NR Dst Mask Trig IRR Pol Stat Dmod Deli Vect:
[    1.661662]  00 00  1    0    0   0   0    0    0    00
[    1.663559]  01 01  0    0    0   0   0    1    1    31
[    1.665527]  02 01  0    0    0   0   0    1    1    30
[    1.667485]  03 01  0    0    0   0   0    1    1    33
[    1.669420]  04 01  1    0    0   0   0    1    1    34
[    1.671355]  05 01  0    0    0   0   0    1    1    35
[    1.673309]  06 01  0    0    0   0   0    1    1    36
[    1.675224]  07 01  0    0    0   0   0    1    1    37
[    1.677204]  08 01  0    0    0   0   0    1    1    38
[    1.679156]  09 01  1    1    0   0   0    1    1    29
[    1.680563]  0a 01  1    1    0   0   0    1    1    41
[    1.681857]  0b 01  1    1    0   0   0    1    1    49
[    1.683168]  0c 01  0    0    0   0   0    1    1    3C
[    1.685067]  0d 01  0    0    0   0   0    1    1    3D
[    1.686994]  0e 01  0    0    0   0   0    1    1    3E
[    1.688498]  0f 01  0    0    0   0   0    1    1    3F
[    1.689817]  10 00  1    0    0   0   0    0    0    00
[    1.691756]  11 00  1    0    0   0   0    0    0    00
[    1.693651]  12 00  1    0    0   0   0    0    0    00
[    1.695521]  13 00  1    0    0   0   0    0    0    00
[    1.697443]  14 00  1    0    0   0   0    0    0    00
[    1.699299]  15 00  1    0    0   0   0    0    0    00
[    1.701175]  16 00  1    0    0   0   0    0    0    00
[    1.703024]  17 00  1    0    0   0   0    0    0    00
[    1.704896] IRQ to pin mappings:
[    1.706131] IRQ0 -> 0:2
[    1.707317] IRQ1 -> 0:1
[    1.708552] IRQ3 -> 0:3
[    1.709783] IRQ4 -> 0:4
[    1.710958] IRQ5 -> 0:5
[    1.712130] IRQ6 -> 0:6
[    1.713095] IRQ7 -> 0:7
[    1.714036] IRQ8 -> 0:8
[    1.715197] IRQ12 -> 0:12
[    1.716301] IRQ13 -> 0:13
[    1.717555] IRQ14 -> 0:14
[    1.718904] IRQ15 -> 0:15
[    1.720136] IRQ33 -> 0:9
[    1.721313] IRQ34 -> 0:10
[    1.722584] IRQ35 -> 0:11
[    1.723802] .................................... done.
[    1.725130] Using IPI Shortcut mode
[    1.726565] driver: 'serio0': driver_bound: bound to device 'atkbd'
[    1.728856] bus: 'serio': really_probe: bound device serio0 to driver atkbd
[    1.731182] bus: 'serio': driver_probe_device: matched device serio1 with driver atkbd
[    1.733907] bus: 'serio': really_probe: probing driver atkbd with device serio1
[    1.737216] atkbd: probe of serio1 rejects match -19
[    1.739814] device: 'cpu_dma_latency': device_add
[    1.742252] device: 'network_latency': device_add
[    1.744631] device: 'network_throughput': device_add
[    1.747246] registered taskstats version 1
[    1.749637] IMA: No TPM chip found, activating TPM-bypass!
[    1.754641] hd: no drives specified - use hd=cyl,head,sectors on kernel command line
[    1.760220] Freeing unused kernel memory: 560k freed
[    1.763012] Write protecting the kernel text: 4288k
[    1.765429] Testing CPA: Reverting c1000000-c1430000
[    1.767951] Testing CPA: write protecting again
[    1.770668] Write protecting the kernel read-only data: 1516k
[    1.773452] Testing CPA: undo c1430000-c15ab000
[    1.775735] Testing CPA: write protecting again
[    1.790465] mount (24) used greatest stack depth: 6908 bytes left
[    1.808122] S00fbsetup (26) used greatest stack depth: 6676 bytes left
[    1.839015] pidof (38) used greatest stack depth: 6572 bytes left
Kernel tests: Boot OK!
[    2.368092] trinity uses obsolete (PF_INET,SOCK_PACKET)
[   30.960138] CPA self-test:
[   30.961779]  4k 3069 large 61 gb 0 x 3130[c0000000-cfffc000] miss 0
[   30.988234]  4k 65533 large 0 gb 0 x 65533[c0000000-cfffc000] miss 0
[   31.007657]  4k 65533 large 0 gb 0 x 65533[c0000000-cfffc000] miss 0
[   31.009946] ok.
[   57.182539] VFS: Warning: trinity-child0 using old stat() call. Recompile your binary.
[   60.217431] VFS: Warning: trinity-child0 using old stat() call. Recompile your binary.
[   60.229379] 
[   60.230444] =============================================
[   60.232078] [ INFO: possible recursive locking detected ]
[   60.232078] 3.5.0+ #281 Not tainted
[   60.232078] ---------------------------------------------
[   60.232078] trinity-child0/17019 is trying to acquire lock:
[   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c1176ffa>] get_task_comm+0x4a/0xf0
[   60.232078] 
[   60.232078] but task is already holding lock:
[   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
[   60.232078] 
[   60.232078] other info that might help us debug this:
[   60.232078]  Possible unsafe locking scenario:
[   60.232078] 
[   60.232078]        CPU0
[   60.232078]        ----
[   60.232078]   lock(&(&p->alloc_lock)->rlock);
[   60.232078]   lock(&(&p->alloc_lock)->rlock);
[   60.232078] 
[   60.232078]  *** DEADLOCK ***
[   60.232078] 
[   60.232078]  May be due to missing lock nesting notation
[   60.232078] 
[   60.232078] 3 locks held by trinity-child0/17019:
[   60.232078]  #0:  (&p->lock){+.+.+.}, at: [<c11a9683>] seq_read+0x33/0x6b0
[   60.232078]  #1:  (&sig->cred_guard_mutex){+.+.+.}, at: [<c11ff8ae>] lock_trace+0x2e/0xb0
[   60.232078]  #2:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
[   60.232078] 
[   60.232078] stack backtrace:
[   60.232078] Pid: 17019, comm: trinity-child0 Not tainted 3.5.0+ #281
[   60.232078] Call Trace:
[   60.232078]  [<c10c6238>] __lock_acquire+0x1498/0x14f0
[   60.232078]  [<c10be7e7>] ? trace_hardirqs_off+0x27/0x40
[   60.232078]  [<c10c6360>] lock_acquire+0xd0/0x110
[   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
[   60.232078]  [<c1422290>] _raw_spin_lock+0x60/0x110
[   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
[   60.232078]  [<c1176ffa>] get_task_comm+0x4a/0xf0
[   60.232078]  [<c1246798>] yama_ptrace_access_check+0x468/0x4a0
[   60.232078]  [<c124648f>] ? yama_ptrace_access_check+0x15f/0x4a0
[   60.232078]  [<c124209a>] security_ptrace_access_check+0x1a/0x30
[   60.232078]  [<c1065229>] __ptrace_may_access+0x189/0x310
[   60.232078]  [<c10650cc>] ? __ptrace_may_access+0x2c/0x310
[   60.232078]  [<c106542d>] ptrace_may_access+0x7d/0xf0
[   60.232078]  [<c11ff8ea>] lock_trace+0x6a/0xb0
[   60.232078]  [<c11ffa46>] proc_pid_stack+0x76/0x170
[   60.232078]  [<c1201064>] proc_single_show+0x74/0x100
[   60.232078]  [<c11a97b3>] seq_read+0x163/0x6b0
[   60.232078]  [<c105bf70>] ? do_setitimer+0x220/0x330
[   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
[   60.232078]  [<c116b55a>] vfs_read+0xca/0x280
[   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
[   60.232078]  [<c116b776>] sys_read+0x66/0xe0
[   60.232078]  [<c1423d9d>] syscall_call+0x7/0xb
[   60.232078]  [<c1420000>] ? __schedule+0x2a0/0xc80
[   60.360349] ptrace of pid 255 was attempted by: trinity-child0 (pid 17019)
[   60.373217] VFS: Warning: trinity-child0 using old stat() call. Recompile your binary.
[   60.378163] VFS: Warning: trinity-child0 using old stat() call. Recompile your binary.
[   60.384258] trinity-child0 (17019) used greatest stack depth: 6488 bytes left
[   60.398519] VFS: Warning: trinity-child0 using old stat() call. Recompile your binary.
[   60.408460] warning: process `trinity-child0' used the deprecated sysctl system call with 
[   62.303003] S99-rc.local (245) used greatest stack depth: 6460 bytes left
[   69.384974] serio serio1: shutdown
[   69.386612] atkbd serio0: shutdown
[   69.388293] i8042 i8042: shutdown
[   69.389868] pci 0000:00:0a.0: shutdown
[   69.391586] pci 0000:00:09.0: shutdown
[   69.393598] pci 0000:00:08.0: shutdown
[   69.395786] pci 0000:00:07.0: shutdown
[   69.397591] pci 0000:00:06.0: shutdown
[   69.399229] pci 0000:00:05.0: shutdown
[   69.400876] pci 0000:00:04.0: shutdown
[   69.402534] pci 0000:00:03.0: shutdown
[   69.404486] pci 0000:00:02.0: shutdown
[   69.406668] pci 0000:00:01.3: shutdown
[   69.408480] pci 0000:00:01.1: shutdown
[   69.410119] pci 0000:00:01.0: shutdown
[   69.411722] pci 0000:00:00.0: shutdown
[   69.413439] Restarting system.
[   69.415315] machine restart

[-- Attachment #3: config-3.5.0+ --]
[-- Type: text/plain, Size: 44558 bytes --]

#
# Automatically generated file; DO NOT EDIT.
# Linux/i386 3.5.0 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
# CONFIG_NEED_DMA_MAP_STATE is not set
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_GPIO=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set
# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_X86_32_LAZY_GS=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y
CONFIG_HAVE_IRQ_WORK=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y

#
# General setup
#
# CONFIG_EXPERIMENTAL is not set
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
CONFIG_KERNEL_XZ=y
# CONFIG_KERNEL_LZO is not set
CONFIG_DEFAULT_HOSTNAME="(none)"
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_FHANDLE=y
CONFIG_TASKSTATS=y
# CONFIG_TASK_DELAY_ACCT is not set
# CONFIG_TASK_XACCT is not set
# CONFIG_AUDIT is not set
CONFIG_HAVE_GENERIC_HARDIRQS=y

#
# IRQ subsystem
#
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_KTIME_SCALAR=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y

#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y

#
# RCU Subsystem
#
CONFIG_TINY_RCU=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TREE_RCU_TRACE is not set
CONFIG_IKCONFIG=y
# CONFIG_IKCONFIG_PROC is not set
CONFIG_LOG_BUF_SHIFT=17
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# CONFIG_CGROUPS is not set
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
CONFIG_PID_NS=y
CONFIG_NET_NS=y
# CONFIG_SCHED_AUTOGROUP is not set
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EXPERT is not set
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
# CONFIG_EMBEDDED is not set
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
CONFIG_DEBUG_PERF_USE_VMALLOC=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE_NMI_TIMER=y
CONFIG_KPROBES=y
# CONFIG_JUMP_LABEL is not set
CONFIG_OPTPROBES=y
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_KRETPROBES=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
CONFIG_HAVE_CMPXCHG_LOCAL=y
CONFIG_HAVE_CMPXCHG_DOUBLE=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y

#
# GCOV-based kernel profiling
#
CONFIG_GCOV_KERNEL=y
CONFIG_GCOV_PROFILE_ALL=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y
# CONFIG_BLK_DEV_INTEGRITY is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_DEADLINE=m
CONFIG_IOSCHED_CFQ=m
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
# CONFIG_INLINE_SPIN_LOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
CONFIG_UNINLINE_SPIN_UNLOCK=y
# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_READ_TRYLOCK is not set
# CONFIG_INLINE_READ_LOCK is not set
# CONFIG_INLINE_READ_LOCK_BH is not set
# CONFIG_INLINE_READ_LOCK_IRQ is not set
# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
# CONFIG_INLINE_READ_UNLOCK is not set
# CONFIG_INLINE_READ_UNLOCK_BH is not set
# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_WRITE_TRYLOCK is not set
# CONFIG_INLINE_WRITE_LOCK is not set
# CONFIG_INLINE_WRITE_LOCK_BH is not set
# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
# CONFIG_INLINE_WRITE_UNLOCK is not set
# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
# CONFIG_MUTEX_SPIN_ON_OWNER is not set
# CONFIG_FREEZER is not set

#
# Processor type and features
#
CONFIG_ZONE_DMA=y
# CONFIG_SMP is not set
CONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_X86_32_IRIS=m
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PARAVIRT_GUEST=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
# CONFIG_XEN_PRIVILEGED_GUEST is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
# CONFIG_LGUEST_GUEST is not set
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_CLOCK=y
# CONFIG_PARAVIRT_DEBUG is not set
CONFIG_NO_BOOTMEM=y
# CONFIG_MEMTEST is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
CONFIG_M686=y
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MELAN is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MCORE2 is not set
# CONFIG_MATOM is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_INTERNODE_CACHE_SHIFT=5
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=5
CONFIG_X86_XADD=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=5
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_CPU_SUP_TRANSMETA_32=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
CONFIG_NR_CPUS=1
# CONFIG_IRQ_TIME_ACCOUNTING is not set
# CONFIG_PREEMPT_NONE is not set
CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_INTEL=y
# CONFIG_X86_MCE_AMD is not set
CONFIG_X86_ANCIENT_MCE=y
CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set
CONFIG_X86_THERMAL_VECTOR=y
CONFIG_VM86=y
CONFIG_TOSHIBA=m
CONFIG_I8K=m
# CONFIG_X86_REBOOTFIXUPS is not set
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=m
# CONFIG_X86_CPUID is not set
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ILLEGAL_POINTER_VALUE=0
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_HAVE_MEMBLOCK=y
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=999999
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
# CONFIG_MEMORY_FAILURE is not set
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_NEED_PER_CPU_KM=y
CONFIG_CLEANCACHE=y
CONFIG_HIGHPTE=y
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_X86_RESERVE_LOW=64
CONFIG_MATH_EMULATION=y
CONFIG_MTRR=y
# CONFIG_MTRR_SANITIZER is not set
CONFIG_X86_PAT=y
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_ARCH_RANDOM=y
# CONFIG_SECCOMP is not set
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_SCHED_HRTICK=y
CONFIG_KEXEC=y
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x1000000
CONFIG_RELOCATABLE=y
CONFIG_X86_NEED_RELOCS=y
CONFIG_PHYSICAL_ALIGN=0x1000000
# CONFIG_COMPAT_VDSO is not set
# CONFIG_CMDLINE_BOOL is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management and ACPI options
#
# CONFIG_SUSPEND is not set
# CONFIG_PM_RUNTIME is not set
# CONFIG_ACPI is not set
# CONFIG_SFI is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_STAT is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set

#
# x86 CPU frequency scaling drivers
#
# CONFIG_X86_POWERNOW_K6 is not set
CONFIG_X86_POWERNOW_K7=m
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=m
CONFIG_X86_P4_CLOCKMOD=m
# CONFIG_X86_LONGRUN is not set

#
# shared options
#
CONFIG_X86_SPEEDSTEP_LIB=m
CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
# CONFIG_CPU_IDLE is not set
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_PCI_DEBUG=y
CONFIG_PCI_REALLOC_ENABLE_AUTO=y
CONFIG_PCI_STUB=m
# CONFIG_HT_IRQ is not set
# CONFIG_PCI_IOV is not set
# CONFIG_PCI_PRI is not set
# CONFIG_PCI_PASID is not set
CONFIG_PCI_LABEL=y
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
CONFIG_EISA=y
CONFIG_EISA_VLB_PRIMING=y
# CONFIG_EISA_PCI_EISA is not set
CONFIG_EISA_VIRTUAL_ROOT=y
CONFIG_EISA_NAMES=y
# CONFIG_SCx200 is not set
# CONFIG_OLPC is not set
# CONFIG_ALIX is not set
CONFIG_NET5501=y
# CONFIG_GEOS is not set
CONFIG_AMD_NB=y
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set
# CONFIG_RAPIDIO is not set

#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_HAVE_AOUT=y
CONFIG_BINFMT_AOUT=m
# CONFIG_BINFMT_MISC is not set
CONFIG_HAVE_ATOMIC_IOMAP=y
CONFIG_HAVE_TEXT_POKE_SMP=y
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=m
CONFIG_UNIX=y
# CONFIG_UNIX_DIAG is not set
# CONFIG_NET_KEY is not set
# CONFIG_INET is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
# CONFIG_ATM is not set
CONFIG_STP=m
CONFIG_GARP=m
# CONFIG_BRIDGE is not set
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
# CONFIG_DECNET is not set
CONFIG_LLC=m
CONFIG_LLC2=m
CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
CONFIG_ATALK=m
# CONFIG_DEV_APPLETALK is not set
# CONFIG_PHONET is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
CONFIG_DNS_RESOLVER=m
CONFIG_BATMAN_ADV=m
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_OPENVSWITCH=m
CONFIG_BQL=y

#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_WIRELESS is not set
# CONFIG_WIMAX is not set
CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL_REGULATOR=m
CONFIG_NET_9P=m
# CONFIG_NET_9P_DEBUG is not set
CONFIG_CAIF=m
# CONFIG_CAIF_DEBUG is not set
CONFIG_CAIF_NETDEV=m
# CONFIG_CAIF_USB is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH=""
# CONFIG_DEVTMPFS is not set
CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
CONFIG_DEBUG_DRIVER=y
CONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
# CONFIG_CONNECTOR is not set
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
CONFIG_MTD_AR7_PARTS=m

#
# User Modules And Translation Layers
#
# CONFIG_MTD_CHAR is not set
CONFIG_HAVE_MTD_OTP=y
CONFIG_MTD_BLKDEVS=m
# CONFIG_MTD_BLOCK is not set
CONFIG_MTD_BLOCK_RO=m
# CONFIG_FTL is not set
CONFIG_NFTL=m
CONFIG_NFTL_RW=y
CONFIG_INFTL=m
# CONFIG_RFD_FTL is not set
CONFIG_SSFDC=m
CONFIG_MTD_OOPS=m

#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=m
CONFIG_MTD_JEDECPROBE=m
CONFIG_MTD_GEN_PROBE=m
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
CONFIG_MTD_CFI_INTELEXT=m
CONFIG_MTD_CFI_AMDSTD=m
CONFIG_MTD_CFI_STAA=m
CONFIG_MTD_CFI_UTIL=m
# CONFIG_MTD_RAM is not set
CONFIG_MTD_ROM=m
CONFIG_MTD_ABSENT=m

#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=m
# CONFIG_MTD_PHYSMAP_COMPAT is not set
CONFIG_MTD_SC520CDP=m
CONFIG_MTD_NETSC520=m
# CONFIG_MTD_TS5500 is not set
# CONFIG_MTD_AMD76XROM is not set
# CONFIG_MTD_ICHXROM is not set
# CONFIG_MTD_ESB2ROM is not set
CONFIG_MTD_CK804XROM=m
CONFIG_MTD_SCB2_FLASH=m
# CONFIG_MTD_NETtel is not set
CONFIG_MTD_L440GX=m
# CONFIG_MTD_INTEL_VR_NOR is not set
# CONFIG_MTD_PLATRAM is not set

#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLOCK2MTD is not set

#
# Disk-On-Chip Device Drivers
#
CONFIG_MTD_DOC2000=m
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
# CONFIG_MTD_DOCG3 is not set
CONFIG_MTD_DOCPROBE=m
CONFIG_MTD_DOCECC=m
# CONFIG_MTD_DOCPROBE_ADVANCED is not set
CONFIG_MTD_DOCPROBE_ADDRESS=0x0
CONFIG_MTD_NAND_ECC=m
CONFIG_MTD_NAND_ECC_SMC=y
CONFIG_MTD_NAND=m
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
CONFIG_MTD_NAND_BCH=m
CONFIG_MTD_NAND_ECC_BCH=y
# CONFIG_MTD_SM_COMMON is not set
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
CONFIG_MTD_NAND_DENALI=m
CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018
CONFIG_MTD_NAND_IDS=m
# CONFIG_MTD_NAND_RICOH is not set
CONFIG_MTD_NAND_CAFE=m
# CONFIG_MTD_NAND_CS553X is not set
CONFIG_MTD_NAND_NANDSIM=m
# CONFIG_MTD_NAND_PLATFORM is not set
CONFIG_MTD_ONENAND=m
# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
# CONFIG_MTD_ONENAND_GENERIC is not set
CONFIG_MTD_ONENAND_OTP=y
CONFIG_MTD_ONENAND_2X_PROGRAM=y
CONFIG_MTD_ONENAND_SIM=m

#
# LPDDR flash memory drivers
#
# CONFIG_MTD_LPDDR is not set
CONFIG_MTD_UBI=m
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_RESERVE=2
CONFIG_MTD_UBI_GLUEBI=m
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
# CONFIG_PARPORT_SERIAL is not set
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_AX88796 is not set
CONFIG_PARPORT_1284=y
CONFIG_PNP=y
CONFIG_PNP_DEBUG_MESSAGES=y

#
# Protocols
#
CONFIG_ISAPNP=y
# CONFIG_PNPACPI is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
CONFIG_BLK_DEV_XD=m
CONFIG_PARIDE=m

#
# Parallel IDE high-level drivers
#
# CONFIG_PARIDE_PD is not set
CONFIG_PARIDE_PCD=m
# CONFIG_PARIDE_PF is not set
# CONFIG_PARIDE_PT is not set
CONFIG_PARIDE_PG=m

#
# Parallel IDE protocol modules
#
CONFIG_PARIDE_ATEN=m
# CONFIG_PARIDE_BPCK is not set
CONFIG_PARIDE_BPCK6=m
# CONFIG_PARIDE_COMM is not set
CONFIG_PARIDE_DSTR=m
# CONFIG_PARIDE_FIT2 is not set
CONFIG_PARIDE_FIT3=m
CONFIG_PARIDE_EPAT=m
# CONFIG_PARIDE_EPIA is not set
CONFIG_PARIDE_FRIQ=m
# CONFIG_PARIDE_FRPW is not set
# CONFIG_PARIDE_KBIC is not set
# CONFIG_PARIDE_KTTI is not set
CONFIG_PARIDE_ON20=m
CONFIG_PARIDE_ON26=m
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
CONFIG_BLK_CPQ_DA=m
# CONFIG_BLK_CPQ_CISS_DA is not set
CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set

#
# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
#
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_NVME is not set
# CONFIG_BLK_DEV_OSD is not set
CONFIG_BLK_DEV_SX8=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_BLK_DEV_HD=y

#
# Misc devices
#
# CONFIG_SENSORS_LIS3LV02D is not set
# CONFIG_PHANTOM is not set
CONFIG_INTEL_MID_PTI=m
CONFIG_SGI_IOC4=m
CONFIG_ENCLOSURE_SERVICES=m
# CONFIG_CS5535_MFGPT is not set
CONFIG_HP_ILO=m
CONFIG_VMWARE_BALLOON=m
CONFIG_PCH_PHUB=m

#
# EEPROM support
#
# CONFIG_EEPROM_93CX6 is not set
CONFIG_CB710_CORE=m
CONFIG_CB710_DEBUG=y
CONFIG_CB710_DEBUG_ASSUMPTIONS=y

#
# Texas Instruments shared transport line discipline
#
CONFIG_TI_ST=m

#
# Altera FPGA firmware download module
#
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set

#
# SCSI device support
#
CONFIG_SCSI_MOD=m
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
# CONFIG_BLK_DEV_SD is not set
CONFIG_CHR_DEV_ST=m
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
CONFIG_SCSI_ENCLOSURE=m
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
# CONFIG_SCSI_ISCSI_ATTRS is not set
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SRP_ATTRS=m
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_SCSI_DH=m
# CONFIG_SCSI_DH_RDAC is not set
# CONFIG_SCSI_DH_HP_SW is not set
CONFIG_SCSI_DH_EMC=m
CONFIG_SCSI_OSD_INITIATOR=m
CONFIG_SCSI_OSD_ULD=m
CONFIG_SCSI_OSD_DPRINT_SENSE=1
CONFIG_SCSI_OSD_DEBUG=y
# CONFIG_ATA is not set
# CONFIG_MD is not set
CONFIG_TARGET_CORE=m
# CONFIG_TCM_IBLOCK is not set
# CONFIG_TCM_FILEIO is not set
# CONFIG_TCM_PSCSI is not set
CONFIG_LOOPBACK_TARGET=m
CONFIG_ISCSI_TARGET=m
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=128
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_LOGGING is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
CONFIG_FIREWIRE_NOSY=m
CONFIG_I2O=m
# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
# CONFIG_I2O_EXT_ADAPTEC is not set
CONFIG_I2O_CONFIG=m
CONFIG_I2O_CONFIG_OLD_IOCTL=y
CONFIG_I2O_BUS=m
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
CONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not set
# CONFIG_NETDEVICES is not set
CONFIG_ISDN=y
CONFIG_ISDN_I4L=m
CONFIG_ISDN_AUDIO=y
CONFIG_ISDN_TTY_FAX=y

#
# ISDN feature submodules
#
# CONFIG_ISDN_DRV_LOOP is not set
CONFIG_ISDN_DIVERSION=m

#
# ISDN4Linux hardware drivers
#

#
# Passive cards
#
# CONFIG_ISDN_DRV_HISAX is not set

#
# Active cards
#
CONFIG_ISDN_DRV_ICN=m
# CONFIG_ISDN_DRV_PCBIT is not set
# CONFIG_ISDN_DRV_SC is not set
# CONFIG_ISDN_DRV_ACT2000 is not set
# CONFIG_ISDN_CAPI is not set
CONFIG_ISDN_DRV_GIGASET=m
CONFIG_GIGASET_I4L=y
# CONFIG_GIGASET_DUMMYLL is not set
# CONFIG_GIGASET_M101 is not set
CONFIG_GIGASET_DEBUG=y
CONFIG_HYSDN=m
# CONFIG_MISDN is not set

#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
# CONFIG_INPUT_SPARSEKMAP is not set
# CONFIG_INPUT_MATRIXKMAP is not set

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
CONFIG_INPUT_EVBUG=m

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_LKKBD is not set
CONFIG_KEYBOARD_GPIO=m
CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_MATRIX is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_OPENCORES is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_KEYBOARD_SUNKBD=m
# CONFIG_KEYBOARD_OMAP4 is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=m
CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_UNIX98_PTYS=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_TRACE_ROUTER is not set
CONFIG_TRACE_SINK=m
CONFIG_DEVKMEM=y

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_MFD_HSU=m
# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
CONFIG_SERIAL_PCH_UART=m
# CONFIG_SERIAL_XILINX_PS_UART is not set
# CONFIG_PRINTER is not set
CONFIG_PPDEV=m
CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_PANIC_EVENT=y
# CONFIG_IPMI_PANIC_STRING is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
# CONFIG_IPMI_WATCHDOG is not set
# CONFIG_IPMI_POWEROFF is not set
# CONFIG_HW_RANDOM is not set
CONFIG_NVRAM=m
CONFIG_RTC=m
CONFIG_GEN_RTC=m
CONFIG_GEN_RTC_X=y
CONFIG_DTLK=m
# CONFIG_R3964 is not set
CONFIG_APPLICOM=m
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
CONFIG_RAW_DRIVER=m
CONFIG_MAX_RAW_DEVS=256
# CONFIG_HANGCHECK_TIMER is not set
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS=y
# CONFIG_TCG_NSC is not set
# CONFIG_TCG_ATMEL is not set
# CONFIG_TCG_INFINEON is not set
CONFIG_DEVPORT=y
# CONFIG_I2C is not set
# CONFIG_SPI is not set
# CONFIG_HSI is not set

#
# PPS support
#

#
# PPS generators support
#

#
# PTP clock support
#

#
# Enable Device Drivers -> PPS to see the PTP clock options.
#
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
CONFIG_DEBUG_GPIO=y
CONFIG_GPIO_GENERIC=m

#
# Memory mapped GPIO drivers:
#
CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_SCH=m
# CONFIG_GPIO_ICH is not set
CONFIG_GPIO_VX855=m

#
# I2C GPIO expanders:
#

#
# PCI GPIO expanders:
#
CONFIG_GPIO_CS5535=m
CONFIG_GPIO_BT8XX=m
# CONFIG_GPIO_LANGWELL is not set
CONFIG_GPIO_PCH=m
# CONFIG_GPIO_ML_IOH is not set
# CONFIG_GPIO_TIMBERDALE is not set
# CONFIG_GPIO_RDC321X is not set

#
# SPI GPIO expanders:
#

#
# AC97 GPIO expanders:
#

#
# MODULbus GPIO expanders:
#
CONFIG_GPIO_JANZ_TTL=m
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=m
CONFIG_HWMON_VID=m
CONFIG_HWMON_DEBUG_CHIP=y

#
# Native drivers
#
CONFIG_SENSORS_K10TEMP=m
# CONFIG_SENSORS_FAM15H_POWER is not set
# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_F71882FG is not set
# CONFIG_SENSORS_GPIO_FAN is not set
CONFIG_SENSORS_IBMAEM=m
# CONFIG_SENSORS_IBMPEX is not set
CONFIG_SENSORS_IT87=m
# CONFIG_SENSORS_PC87360 is not set
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_SHT15=m
# CONFIG_SENSORS_SIS5595 is not set
CONFIG_SENSORS_SMSC47M1=m
# CONFIG_SENSORS_SCH56XX_COMMON is not set
# CONFIG_SENSORS_VIA_CPUTEMP is not set
CONFIG_SENSORS_VIA686A=m
CONFIG_SENSORS_VT1211=m
# CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83627HF is not set
CONFIG_SENSORS_W83627EHF=m
CONFIG_SENSORS_APPLESMC=m
# CONFIG_THERMAL is not set
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y

#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
CONFIG_BCMA_POSSIBLE=y

#
# Broadcom specific AMBA
#
# CONFIG_BCMA is not set

#
# Multifunction device drivers
#
CONFIG_MFD_CORE=m
CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
# CONFIG_HTC_PASIC3 is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_ABX500_CORE is not set
CONFIG_MFD_CS5535=m
CONFIG_MFD_TIMBERDALE=m
CONFIG_LPC_SCH=m
# CONFIG_LPC_ICH is not set
CONFIG_MFD_RDC321X=m
CONFIG_MFD_JANZ_CMODIO=m
CONFIG_MFD_VX855=m
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR_DUMMY is not set
CONFIG_REGULATOR_FIXED_VOLTAGE=m
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
CONFIG_REGULATOR_GPIO=m
# CONFIG_MEDIA_SUPPORT is not set

#
# Graphics support
#
# CONFIG_AGP is not set
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
# CONFIG_DRM is not set
# CONFIG_STUB_POULSBO is not set
CONFIG_VGASTATE=m
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=m
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
CONFIG_FB_CFB_FILLRECT=m
CONFIG_FB_CFB_COPYAREA=m
CONFIG_FB_CFB_IMAGEBLIT=m
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
CONFIG_FB_SYS_FILLRECT=m
CONFIG_FB_SYS_COPYAREA=m
CONFIG_FB_SYS_IMAGEBLIT=m
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=m
# CONFIG_FB_WMT_GE_ROPS is not set
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_SVGALIB=m
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
CONFIG_FB_PM2=m
# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_ARC=m
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_N411 is not set
CONFIG_FB_HGA=m
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
CONFIG_FB_LE80578=m
CONFIG_FB_CARILLO_RANCH=m
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
CONFIG_FB_ATY=m
# CONFIG_FB_ATY_CT is not set
# CONFIG_FB_ATY_GX is not set
CONFIG_FB_ATY_BACKLIGHT=y
CONFIG_FB_S3=m
# CONFIG_FB_S3_DDC is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_VIA is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
CONFIG_FB_3DFX=m
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
CONFIG_FB_TRIDENT=m
CONFIG_FB_ARK=m
# CONFIG_FB_CARMINE is not set
CONFIG_FB_TMIO=m
CONFIG_FB_TMIO_ACCELL=y
# CONFIG_FB_SM501 is not set
CONFIG_FB_VIRTUAL=m
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MB862XX=m
CONFIG_FB_MB862XX_PCI_GDC=y
CONFIG_FB_BROADSHEET=m
# CONFIG_FB_AUO_K190X is not set
# CONFIG_EXYNOS_VIDEO is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
CONFIG_BACKLIGHT_SAHARA=m

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=m
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
# CONFIG_SOUND is not set

#
# HID support
#
CONFIG_HID=m
# CONFIG_HIDRAW is not set
CONFIG_HID_GENERIC=m

#
# Special HID drivers
#
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB_ARCH_HAS_XHCI=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB is not set

#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
# CONFIG_USB_GADGET is not set

#
# OTG and related infrastructure
#
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m

#
# LED drivers
#
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_CLEVO_MAIL=m
# CONFIG_LEDS_REGULATOR is not set
# CONFIG_LEDS_INTEL_SS4200 is not set
CONFIG_LEDS_LT3593=m
# CONFIG_LEDS_OT200 is not set
CONFIG_LEDS_TRIGGERS=y

#
# LED Triggers
#
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_GPIO=m
# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set

#
# iptables trigger is under Netfilter config (LED target)
#
# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
CONFIG_ACCESSIBILITY=y
# CONFIG_A11Y_BRAILLE_CONSOLE is not set
CONFIG_INFINIBAND=m
# CONFIG_INFINIBAND_USER_MAD is not set
# CONFIG_INFINIBAND_USER_ACCESS is not set
# CONFIG_INFINIBAND_MTHCA is not set
CONFIG_INFINIBAND_SRP=m
# CONFIG_INFINIBAND_SRPT is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
CONFIG_AUXDISPLAY=y
CONFIG_KS0108=m
CONFIG_KS0108_PORT=0x378
CONFIG_KS0108_DELAY=2
# CONFIG_CFAG12864B is not set
CONFIG_UIO=m
# CONFIG_UIO_CIF is not set
CONFIG_UIO_PDRV=m
CONFIG_UIO_PDRV_GENIRQ=m
CONFIG_UIO_AEC=m
# CONFIG_UIO_SERCOS3 is not set
CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m

#
# Virtio drivers
#
# CONFIG_VIRTIO_BALLOON is not set

#
# Microsoft Hyper-V guest support
#
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set

#
# Hardware Spinlock drivers
#
CONFIG_CLKSRC_I8253=y
CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
CONFIG_IOMMU_SUPPORT=y

#
# Remoteproc drivers (EXPERIMENTAL)
#

#
# Rpmsg drivers (EXPERIMENTAL)
#
# CONFIG_VIRT_DRIVERS is not set
CONFIG_PM_DEVFREQ=y

#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_USERSPACE=y

#
# DEVFREQ Drivers
#
# CONFIG_EXTCON is not set
# CONFIG_MEMORY is not set
# CONFIG_IIO is not set
# CONFIG_VME_BUS is not set

#
# Firmware Drivers
#
# CONFIG_EDD is not set
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
# CONFIG_DMIID is not set
CONFIG_DMI_SYSFS=m
# CONFIG_ISCSI_IBFT_FIND is not set
# CONFIG_GOOGLE_FIRMWARE is not set

#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_EXT2_FS=m
# CONFIG_EXT2_FS_XATTR is not set
CONFIG_EXT2_FS_XIP=y
CONFIG_EXT3_FS=m
CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
# CONFIG_EXT3_FS_XATTR is not set
# CONFIG_EXT4_FS is not set
CONFIG_FS_XIP=y
CONFIG_JBD=m
CONFIG_JBD_DEBUG=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
# CONFIG_XFS_POSIX_ACL is not set
CONFIG_XFS_RT=y
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_FS_POSIX_ACL is not set
CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
# CONFIG_DNOTIFY is not set
# CONFIG_INOTIFY_USER is not set
CONFIG_FANOTIFY=y
# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=m
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=m
CONFIG_QUOTACTL=y
CONFIG_AUTOFS4_FS=m
# CONFIG_FUSE_FS is not set

#
# Caches
#
# CONFIG_FSCACHE is not set

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
# CONFIG_JOLIET is not set
CONFIG_ZISOFS=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_VFAT_FS is not set
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
# CONFIG_TMPFS is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=m
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_HFSPLUS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_UBIFS_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
# CONFIG_SQUASHFS_ZLIB is not set
# CONFIG_SQUASHFS_LZO is not set
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
# CONFIG_VXFS_FS is not set
CONFIG_MINIX_FS=m
# CONFIG_OMFS_FS is not set
CONFIG_HPFS_FS=m
# CONFIG_QNX4FS_FS is not set
CONFIG_QNX6FS_FS=m
CONFIG_QNX6FS_DEBUG=y
# CONFIG_ROMFS_FS is not set
# CONFIG_PSTORE is not set
CONFIG_SYSV_FS=m
# CONFIG_UFS_FS is not set
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
CONFIG_ORE=m
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NCP_FS is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
CONFIG_NLS_CODEPAGE_864=m
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
CONFIG_NLS_CODEPAGE_936=m
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
CONFIG_NLS_CODEPAGE_874=m
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
CONFIG_NLS_ISO8859_6=m
# CONFIG_NLS_ISO8859_7 is not set
CONFIG_NLS_ISO8859_9=m
# CONFIG_NLS_ISO8859_13 is not set
CONFIG_NLS_ISO8859_14=m
# CONFIG_NLS_ISO8859_15 is not set
CONFIG_NLS_KOI8_R=m
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_MAC_ROMAN is not set
# CONFIG_NLS_MAC_CELTIC is not set
# CONFIG_NLS_MAC_CENTEURO is not set
# CONFIG_NLS_MAC_CROATIAN is not set
# CONFIG_NLS_MAC_CYRILLIC is not set
# CONFIG_NLS_MAC_GAELIC is not set
# CONFIG_NLS_MAC_GREEK is not set
# CONFIG_NLS_MAC_ICELAND is not set
# CONFIG_NLS_MAC_INUIT is not set
# CONFIG_NLS_MAC_ROMANIAN is not set
# CONFIG_NLS_MAC_TURKISH is not set
# CONFIG_NLS_UTF8 is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_READABLE_ASM is not set
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_SECTION_MISMATCH=y
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
# CONFIG_LOCKUP_DETECTOR is not set
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
CONFIG_DEBUG_OBJECTS=y
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
# CONFIG_DEBUG_OBJECTS_FREE is not set
CONFIG_DEBUG_OBJECTS_TIMERS=y
# CONFIG_DEBUG_OBJECTS_WORK is not set
# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
# CONFIG_PROVE_RCU is not set
CONFIG_SPARSE_RCU_POINTER=y
CONFIG_LOCKDEP=y
CONFIG_LOCK_STAT=y
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_TRACE_IRQFLAGS=y
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_STACK_USAGE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_VIRTUAL=y
# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DEBUG_LIST=y
CONFIG_TEST_LIST_SORT=y
CONFIG_DEBUG_SG=y
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
CONFIG_BOOT_PRINTK_DELAY=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_TRACE is not set
# CONFIG_KPROBES_SANITY_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
CONFIG_DEBUG_BLOCK_EXT_DEVT=y
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
CONFIG_LKDTM=m
CONFIG_FAULT_INJECTION=y
# CONFIG_FAILSLAB is not set
CONFIG_FAIL_PAGE_ALLOC=y
CONFIG_FAIL_MAKE_REQUEST=y
CONFIG_FAIL_IO_TIMEOUT=y
CONFIG_FAULT_INJECTION_DEBUG_FS=y
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
# CONFIG_LATENCYTOP is not set
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
CONFIG_DYNAMIC_DEBUG=y
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_KMEMCHECK is not set
CONFIG_TEST_KSTRTOX=m
CONFIG_STRICT_DEVMEM=y
# CONFIG_X86_VERBOSE_BOOTUP is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_X86_PTDUMP is not set
CONFIG_DEBUG_RODATA=y
# CONFIG_DEBUG_RODATA_TEST is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
# CONFIG_DEBUG_NX_TEST is not set
CONFIG_DOUBLEFAULT=y
CONFIG_IOMMU_STRESS=y
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
# CONFIG_X86_DECODER_SELFTEST is not set
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not set
CONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=1
CONFIG_DEBUG_BOOT_PARAMS=y
CONFIG_CPA_DEBUG=y
CONFIG_OPTIMIZE_INLINING=y
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_DEBUG_NMI_SELFTEST=y

#
# Security options
#
CONFIG_KEYS=y
CONFIG_TRUSTED_KEYS=m
# CONFIG_ENCRYPTED_KEYS is not set
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
CONFIG_SECURITY_YAMA=y
CONFIG_INTEGRITY=y
CONFIG_INTEGRITY_SIGNATURE=y
CONFIG_IMA=y
CONFIG_IMA_MEASURE_PCR_IDX=10
CONFIG_IMA_AUDIT=y
CONFIG_DEFAULT_SECURITY_YAMA=y
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="yama"
CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_XOR=m
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP=m
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_GF128MUL=m
# CONFIG_CRYPTO_NULL is not set
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m

#
# Authenticated Encryption with Associated Data
#
CONFIG_CRYPTO_CCM=m
# CONFIG_CRYPTO_GCM is not set
CONFIG_CRYPTO_SEQIV=m

#
# Block modes
#
# CONFIG_CRYPTO_CBC is not set
CONFIG_CRYPTO_CTR=m
CONFIG_CRYPTO_CTS=m
# CONFIG_CRYPTO_ECB is not set
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m

#
# Hash modes
#
CONFIG_CRYPTO_HMAC=y

#
# Digest
#
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_CRC32C_INTEL=m
# CONFIG_CRYPTO_GHASH is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
# CONFIG_CRYPTO_RMD256 is not set
CONFIG_CRYPTO_RMD320=m
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set

#
# Ciphers
#
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_586=m
CONFIG_CRYPTO_AES_NI_INTEL=m
CONFIG_CRYPTO_ANUBIS=m
# CONFIG_CRYPTO_ARC4 is not set
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_BLOWFISH_COMMON=m
# CONFIG_CRYPTO_CAMELLIA is not set
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_FCRYPT is not set
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SERPENT_SSE2_586=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_TWOFISH_586=m

#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m

#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_USER_API=m
# CONFIG_CRYPTO_USER_API_HASH is not set
CONFIG_CRYPTO_USER_API_SKCIPHER=m
# CONFIG_CRYPTO_HW is not set
CONFIG_HAVE_KVM=y
# CONFIG_VIRTUALIZATION is not set
# CONFIG_BINARY_PRINTF is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_IO=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
# CONFIG_CRC_T10DIF is not set
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not set
# CONFIG_CRC32_SLICEBY8 is not set
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
CONFIG_CRC32_BIT=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
# CONFIG_CRC8 is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=y
CONFIG_XZ_DEC=y
CONFIG_XZ_DEC_X86=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_IA64=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_SPARC=y
CONFIG_XZ_DEC_BCJ=y
CONFIG_XZ_DEC_TEST=m
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_REED_SOLOMON=m
CONFIG_REED_SOLOMON_DEC16=y
CONFIG_BCH=m
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_DQL=y
CONFIG_NLATTR=y
# CONFIG_AVERAGE is not set
CONFIG_CLZ_TAB=y
CONFIG_CORDIC=m
# CONFIG_DDR is not set
CONFIG_MPILIB=y
CONFIG_SIGNATURE=y

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-07-26 13:47 yama_ptrace_access_check(): possible recursive locking detected Fengguang Wu
@ 2012-07-26 15:41 ` Oleg Nesterov
  2012-07-30 17:00   ` Kees Cook
  2012-08-10  1:39 ` Kees Cook
  1 sibling, 1 reply; 17+ messages in thread
From: Oleg Nesterov @ 2012-07-26 15:41 UTC (permalink / raw)
  To: Fengguang Wu; +Cc: Kees Cook, LKML

On 07/26, Fengguang Wu wrote:
>
> Here is a recursive lock possibility:
>
>         ptrace_may_access()
> =>        task_lock(task);
>             yama_ptrace_access_check()
>               get_task_comm()
> =>              task_lock(task);

I think yama_ptrace_access_check() can simply use ->comm

Oleg.

--- x/security/yama/yama_lsm.c
+++ x/security/yama/yama_lsm.c
@@ -279,12 +279,9 @@ static int yama_ptrace_access_check(stru
 	}
 
 	if (rc) {
-		char name[sizeof(current->comm)];
 		printk_ratelimited(KERN_NOTICE
 			"ptrace of pid %d was attempted by: %s (pid %d)\n",
-			child->pid,
-			get_task_comm(name, current),
-			current->pid);
+			child->pid, current->comm, current->pid);
 	}
 
 	return rc;


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-07-26 15:41 ` Oleg Nesterov
@ 2012-07-30 17:00   ` Kees Cook
  0 siblings, 0 replies; 17+ messages in thread
From: Kees Cook @ 2012-07-30 17:00 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Fengguang Wu, LKML

On Thu, Jul 26, 2012 at 8:41 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 07/26, Fengguang Wu wrote:
>>
>> Here is a recursive lock possibility:
>>
>>         ptrace_may_access()
>> =>        task_lock(task);
>>             yama_ptrace_access_check()
>>               get_task_comm()
>> =>              task_lock(task);
>
> I think yama_ptrace_access_check() can simply use ->comm
>
> Oleg.
>
> --- x/security/yama/yama_lsm.c
> +++ x/security/yama/yama_lsm.c
> @@ -279,12 +279,9 @@ static int yama_ptrace_access_check(stru
>         }
>
>         if (rc) {
> -               char name[sizeof(current->comm)];
>                 printk_ratelimited(KERN_NOTICE
>                         "ptrace of pid %d was attempted by: %s (pid %d)\n",
> -                       child->pid,
> -                       get_task_comm(name, current),
> -                       current->pid);
> +                       child->pid, current->comm, current->pid);
>         }
>
>         return rc;
>

Great catch, thanks! I've sent Oleg's suggestion (with an added
comment) separately.

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-07-26 13:47 yama_ptrace_access_check(): possible recursive locking detected Fengguang Wu
  2012-07-26 15:41 ` Oleg Nesterov
@ 2012-08-10  1:39 ` Kees Cook
  2012-08-10  1:52   ` Fengguang Wu
  1 sibling, 1 reply; 17+ messages in thread
From: Kees Cook @ 2012-08-10  1:39 UTC (permalink / raw)
  To: Fengguang Wu; +Cc: LKML, Oleg Nesterov

Hi,

So, after taking a closer look at this, I cannot understand how it's
possible. Yama's task_lock call is against "current", not "child",
which is what ptrace_may_access() is locking. And the same code makes
sure that current != child. Yama would never get called if current ==
child.

How did you reproduce this situation?

Thanks,

-Kees

On Thu, Jul 26, 2012 at 6:47 AM, Fengguang Wu <fengguang.wu@intel.com> wrote:
> Hi Kees,
>
> Here is a recursive lock possibility:
>
>         ptrace_may_access()
> =>        task_lock(task);
>             yama_ptrace_access_check()
>               get_task_comm()
> =>              task_lock(task);
>
> [   60.230444] =============================================
> [   60.232078] [ INFO: possible recursive locking detected ]
> [   60.232078] 3.5.0+ #281 Not tainted
> [   60.232078] ---------------------------------------------
> [   60.232078] trinity-child0/17019 is trying to acquire lock:
> [   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c1176ffa>] get_task_comm+0x4a/0xf0
> [   60.232078]
> [   60.232078] but task is already holding lock:
> [   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
> [   60.232078]
> [   60.232078] other info that might help us debug this:
> [   60.232078]  Possible unsafe locking scenario:
> [   60.232078]
> [   60.232078]        CPU0
> [   60.232078]        ----
> [   60.232078]   lock(&(&p->alloc_lock)->rlock);
> [   60.232078]   lock(&(&p->alloc_lock)->rlock);
> [   60.232078]
> [   60.232078]  *** DEADLOCK ***
> [   60.232078]
> [   60.232078]  May be due to missing lock nesting notation
> [   60.232078]
> [   60.232078] 3 locks held by trinity-child0/17019:
> [   60.232078]  #0:  (&p->lock){+.+.+.}, at: [<c11a9683>] seq_read+0x33/0x6b0
> [   60.232078]  #1:  (&sig->cred_guard_mutex){+.+.+.}, at: [<c11ff8ae>] lock_trace+0x2e/0xb0
> [   60.232078]  #2:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
> [   60.232078]
> [   60.232078] stack backtrace:
> [   60.232078] Pid: 17019, comm: trinity-child0 Not tainted 3.5.0+ #281
> [   60.232078] Call Trace:
> [   60.232078]  [<c10c6238>] __lock_acquire+0x1498/0x14f0
> [   60.232078]  [<c10be7e7>] ? trace_hardirqs_off+0x27/0x40
> [   60.232078]  [<c10c6360>] lock_acquire+0xd0/0x110
> [   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
> [   60.232078]  [<c1422290>] _raw_spin_lock+0x60/0x110
> [   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
> [   60.232078]  [<c1176ffa>] get_task_comm+0x4a/0xf0
> [   60.232078]  [<c1246798>] yama_ptrace_access_check+0x468/0x4a0
> [   60.232078]  [<c124648f>] ? yama_ptrace_access_check+0x15f/0x4a0
> [   60.232078]  [<c124209a>] security_ptrace_access_check+0x1a/0x30
> [   60.232078]  [<c1065229>] __ptrace_may_access+0x189/0x310
> [   60.232078]  [<c10650cc>] ? __ptrace_may_access+0x2c/0x310
> [   60.232078]  [<c106542d>] ptrace_may_access+0x7d/0xf0
> [   60.232078]  [<c11ff8ea>] lock_trace+0x6a/0xb0
> [   60.232078]  [<c11ffa46>] proc_pid_stack+0x76/0x170
> [   60.232078]  [<c1201064>] proc_single_show+0x74/0x100
> [   60.232078]  [<c11a97b3>] seq_read+0x163/0x6b0
> [   60.232078]  [<c105bf70>] ? do_setitimer+0x220/0x330
> [   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
> [   60.232078]  [<c116b55a>] vfs_read+0xca/0x280
> [   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
> [   60.232078]  [<c116b776>] sys_read+0x66/0xe0
> [   60.232078]  [<c1423d9d>] syscall_call+0x7/0xb
> [   60.232078]  [<c1420000>] ? __schedule+0x2a0/0xc80
>
> Thanks,
> Fengguang



-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-10  1:39 ` Kees Cook
@ 2012-08-10  1:52   ` Fengguang Wu
  2012-08-14 21:16     ` Kees Cook
  0 siblings, 1 reply; 17+ messages in thread
From: Fengguang Wu @ 2012-08-10  1:52 UTC (permalink / raw)
  To: Kees Cook; +Cc: LKML, Oleg Nesterov

On Thu, Aug 09, 2012 at 06:39:34PM -0700, Kees Cook wrote:
> Hi,
> 
> So, after taking a closer look at this, I cannot understand how it's
> possible. Yama's task_lock call is against "current", not "child",
> which is what ptrace_may_access() is locking. And the same code makes
> sure that current != child. Yama would never get called if current ==
> child.
> 
> How did you reproduce this situation?

This warning can be triggered with Dave Jones' trinity tool:

git://git.codemonkey.org.uk/trinity

That's a very dangerous tool, please only run it as normal user in a
backed up and chrooted test box. I personally run it inside an initrd.
If you are interested in reproducing this, I can send you the ready
made initrd in private email.

Thanks,
Fengguang
 
> On Thu, Jul 26, 2012 at 6:47 AM, Fengguang Wu <fengguang.wu@intel.com> wrote:
> > Hi Kees,
> >
> > Here is a recursive lock possibility:
> >
> >         ptrace_may_access()
> > =>        task_lock(task);
> >             yama_ptrace_access_check()
> >               get_task_comm()
> > =>              task_lock(task);
> >
> > [   60.230444] =============================================
> > [   60.232078] [ INFO: possible recursive locking detected ]
> > [   60.232078] 3.5.0+ #281 Not tainted
> > [   60.232078] ---------------------------------------------
> > [   60.232078] trinity-child0/17019 is trying to acquire lock:
> > [   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c1176ffa>] get_task_comm+0x4a/0xf0
> > [   60.232078]
> > [   60.232078] but task is already holding lock:
> > [   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
> > [   60.232078]
> > [   60.232078] other info that might help us debug this:
> > [   60.232078]  Possible unsafe locking scenario:
> > [   60.232078]
> > [   60.232078]        CPU0
> > [   60.232078]        ----
> > [   60.232078]   lock(&(&p->alloc_lock)->rlock);
> > [   60.232078]   lock(&(&p->alloc_lock)->rlock);
> > [   60.232078]
> > [   60.232078]  *** DEADLOCK ***
> > [   60.232078]
> > [   60.232078]  May be due to missing lock nesting notation
> > [   60.232078]
> > [   60.232078] 3 locks held by trinity-child0/17019:
> > [   60.232078]  #0:  (&p->lock){+.+.+.}, at: [<c11a9683>] seq_read+0x33/0x6b0
> > [   60.232078]  #1:  (&sig->cred_guard_mutex){+.+.+.}, at: [<c11ff8ae>] lock_trace+0x2e/0xb0
> > [   60.232078]  #2:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
> > [   60.232078]
> > [   60.232078] stack backtrace:
> > [   60.232078] Pid: 17019, comm: trinity-child0 Not tainted 3.5.0+ #281
> > [   60.232078] Call Trace:
> > [   60.232078]  [<c10c6238>] __lock_acquire+0x1498/0x14f0
> > [   60.232078]  [<c10be7e7>] ? trace_hardirqs_off+0x27/0x40
> > [   60.232078]  [<c10c6360>] lock_acquire+0xd0/0x110
> > [   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
> > [   60.232078]  [<c1422290>] _raw_spin_lock+0x60/0x110
> > [   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
> > [   60.232078]  [<c1176ffa>] get_task_comm+0x4a/0xf0
> > [   60.232078]  [<c1246798>] yama_ptrace_access_check+0x468/0x4a0
> > [   60.232078]  [<c124648f>] ? yama_ptrace_access_check+0x15f/0x4a0
> > [   60.232078]  [<c124209a>] security_ptrace_access_check+0x1a/0x30
> > [   60.232078]  [<c1065229>] __ptrace_may_access+0x189/0x310
> > [   60.232078]  [<c10650cc>] ? __ptrace_may_access+0x2c/0x310
> > [   60.232078]  [<c106542d>] ptrace_may_access+0x7d/0xf0
> > [   60.232078]  [<c11ff8ea>] lock_trace+0x6a/0xb0
> > [   60.232078]  [<c11ffa46>] proc_pid_stack+0x76/0x170
> > [   60.232078]  [<c1201064>] proc_single_show+0x74/0x100
> > [   60.232078]  [<c11a97b3>] seq_read+0x163/0x6b0
> > [   60.232078]  [<c105bf70>] ? do_setitimer+0x220/0x330
> > [   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
> > [   60.232078]  [<c116b55a>] vfs_read+0xca/0x280
> > [   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
> > [   60.232078]  [<c116b776>] sys_read+0x66/0xe0
> > [   60.232078]  [<c1423d9d>] syscall_call+0x7/0xb
> > [   60.232078]  [<c1420000>] ? __schedule+0x2a0/0xc80
> >
> > Thanks,
> > Fengguang
> 
> 
> 
> -- 
> Kees Cook
> Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-10  1:52   ` Fengguang Wu
@ 2012-08-14 21:16     ` Kees Cook
  2012-08-15  3:01       ` Fengguang Wu
  0 siblings, 1 reply; 17+ messages in thread
From: Kees Cook @ 2012-08-14 21:16 UTC (permalink / raw)
  To: Fengguang Wu; +Cc: LKML, Oleg Nesterov

On Thu, Aug 9, 2012 at 6:52 PM, Fengguang Wu <fengguang.wu@intel.com> wrote:
> On Thu, Aug 09, 2012 at 06:39:34PM -0700, Kees Cook wrote:
>> Hi,
>>
>> So, after taking a closer look at this, I cannot understand how it's
>> possible. Yama's task_lock call is against "current", not "child",
>> which is what ptrace_may_access() is locking. And the same code makes
>> sure that current != child. Yama would never get called if current ==
>> child.
>>
>> How did you reproduce this situation?
>
> This warning can be triggered with Dave Jones' trinity tool:
>
> git://git.codemonkey.org.uk/trinity
>
> That's a very dangerous tool, please only run it as normal user in a
> backed up and chrooted test box. I personally run it inside an initrd.
> If you are interested in reproducing this, I can send you the ready
> made initrd in private email.

Well, even with your initrd, I can't reproduce this. You're running
this against a stock kernel? I can't see how the path you've shown can
possible happen. It could only happen if "task" was "current", but
there is an explicit test for that in ptrace_may_access(). Based on
the traceback, this is from reading /proc/$pid/stack (or
/proc/$pid/task/$tid/stack), rather than a direct ptrace() call, but
the code path for task != current still stands.

I've tried both normal and "trinity -c read" and I haven't seen the
trace you found. :(

If you can isolate the case further, I'm happy to fix it, but
currently, I don't see a path where this can deadlock.

Thanks,

-Kees

>> On Thu, Jul 26, 2012 at 6:47 AM, Fengguang Wu <fengguang.wu@intel.com> wrote:
>> > Here is a recursive lock possibility:
>> >
>> >         ptrace_may_access()
>> > =>        task_lock(task);
>> >             yama_ptrace_access_check()
>> >               get_task_comm()
>> > =>              task_lock(task);
>> >
>> > [   60.230444] =============================================
>> > [   60.232078] [ INFO: possible recursive locking detected ]
>> > [   60.232078] 3.5.0+ #281 Not tainted
>> > [   60.232078] ---------------------------------------------
>> > [   60.232078] trinity-child0/17019 is trying to acquire lock:
>> > [   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c1176ffa>] get_task_comm+0x4a/0xf0
>> > [   60.232078]
>> > [   60.232078] but task is already holding lock:
>> > [   60.232078]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
>> > [   60.232078]
>> > [   60.232078] other info that might help us debug this:
>> > [   60.232078]  Possible unsafe locking scenario:
>> > [   60.232078]
>> > [   60.232078]        CPU0
>> > [   60.232078]        ----
>> > [   60.232078]   lock(&(&p->alloc_lock)->rlock);
>> > [   60.232078]   lock(&(&p->alloc_lock)->rlock);
>> > [   60.232078]
>> > [   60.232078]  *** DEADLOCK ***
>> > [   60.232078]
>> > [   60.232078]  May be due to missing lock nesting notation
>> > [   60.232078]
>> > [   60.232078] 3 locks held by trinity-child0/17019:
>> > [   60.232078]  #0:  (&p->lock){+.+.+.}, at: [<c11a9683>] seq_read+0x33/0x6b0
>> > [   60.232078]  #1:  (&sig->cred_guard_mutex){+.+.+.}, at: [<c11ff8ae>] lock_trace+0x2e/0xb0
>> > [   60.232078]  #2:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<c10653fa>] ptrace_may_access+0x4a/0xf0
>> > [   60.232078]
>> > [   60.232078] stack backtrace:
>> > [   60.232078] Pid: 17019, comm: trinity-child0 Not tainted 3.5.0+ #281
>> > [   60.232078] Call Trace:
>> > [   60.232078]  [<c10c6238>] __lock_acquire+0x1498/0x14f0
>> > [   60.232078]  [<c10be7e7>] ? trace_hardirqs_off+0x27/0x40
>> > [   60.232078]  [<c10c6360>] lock_acquire+0xd0/0x110
>> > [   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
>> > [   60.232078]  [<c1422290>] _raw_spin_lock+0x60/0x110
>> > [   60.232078]  [<c1176ffa>] ? get_task_comm+0x4a/0xf0
>> > [   60.232078]  [<c1176ffa>] get_task_comm+0x4a/0xf0
>> > [   60.232078]  [<c1246798>] yama_ptrace_access_check+0x468/0x4a0
>> > [   60.232078]  [<c124648f>] ? yama_ptrace_access_check+0x15f/0x4a0
>> > [   60.232078]  [<c124209a>] security_ptrace_access_check+0x1a/0x30
>> > [   60.232078]  [<c1065229>] __ptrace_may_access+0x189/0x310
>> > [   60.232078]  [<c10650cc>] ? __ptrace_may_access+0x2c/0x310
>> > [   60.232078]  [<c106542d>] ptrace_may_access+0x7d/0xf0
>> > [   60.232078]  [<c11ff8ea>] lock_trace+0x6a/0xb0
>> > [   60.232078]  [<c11ffa46>] proc_pid_stack+0x76/0x170
>> > [   60.232078]  [<c1201064>] proc_single_show+0x74/0x100
>> > [   60.232078]  [<c11a97b3>] seq_read+0x163/0x6b0
>> > [   60.232078]  [<c105bf70>] ? do_setitimer+0x220/0x330
>> > [   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
>> > [   60.232078]  [<c116b55a>] vfs_read+0xca/0x280
>> > [   60.232078]  [<c11a9650>] ? seq_lseek+0x1f0/0x1f0
>> > [   60.232078]  [<c116b776>] sys_read+0x66/0xe0
>> > [   60.232078]  [<c1423d9d>] syscall_call+0x7/0xb
>> > [   60.232078]  [<c1420000>] ? __schedule+0x2a0/0xc80

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-14 21:16     ` Kees Cook
@ 2012-08-15  3:01       ` Fengguang Wu
  2012-08-15  5:56         ` Kees Cook
  0 siblings, 1 reply; 17+ messages in thread
From: Fengguang Wu @ 2012-08-15  3:01 UTC (permalink / raw)
  To: Kees Cook; +Cc: LKML, Oleg Nesterov

On Tue, Aug 14, 2012 at 02:16:52PM -0700, Kees Cook wrote:
> On Thu, Aug 9, 2012 at 6:52 PM, Fengguang Wu <fengguang.wu@intel.com> wrote:
> > On Thu, Aug 09, 2012 at 06:39:34PM -0700, Kees Cook wrote:
> >> Hi,
> >>
> >> So, after taking a closer look at this, I cannot understand how it's
> >> possible. Yama's task_lock call is against "current", not "child",
> >> which is what ptrace_may_access() is locking. And the same code makes
> >> sure that current != child. Yama would never get called if current ==
> >> child.
> >>
> >> How did you reproduce this situation?
> >
> > This warning can be triggered with Dave Jones' trinity tool:
> >
> > git://git.codemonkey.org.uk/trinity
> >
> > That's a very dangerous tool, please only run it as normal user in a
> > backed up and chrooted test box. I personally run it inside an initrd.
> > If you are interested in reproducing this, I can send you the ready
> > made initrd in private email.
> 
> Well, even with your initrd, I can't reproduce this. You're running
> this against a stock kernel? I can't see how the path you've shown can

Yes, it happens on 3.6-rc1.

> possible happen. It could only happen if "task" was "current", but
> there is an explicit test for that in ptrace_may_access(). Based on
> the traceback, this is from reading /proc/$pid/stack (or
> /proc/$pid/task/$tid/stack), rather than a direct ptrace() call, but
> the code path for task != current still stands.
> 
> I've tried both normal and "trinity -c read" and I haven't seen the
> trace you found. :(
> 
> If you can isolate the case further, I'm happy to fix it, but
> currently, I don't see a path where this can deadlock.

Even if it's proved to be a false warning, it's still very worthwhile
to apply Oleg's fix to quiet the warning. Such warnings will mislead
my bisect script. The sooner it's fixed, the better. And I like Oleg's
fix because it makes things more simple and a little bit faster.

btw, I see some different warnings when digging through the boot logs:

(x86_64-randconfig-b050)
[  128.725667]
[  128.728649] =============================================
[  128.733989] [ INFO: possible recursive locking detected ]
[  128.733989] 3.6.0-rc1 #1 Not tainted
[  128.733989] ---------------------------------------------
[  128.733989] trinity-child0/523 is trying to acquire lock:
[  128.733989]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff810e0481>] get_task_comm+0x20/0x47
[  128.733989]
[  128.733989] but task is already holding lock:
[  128.733989]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff810572ab>] sys_ptrace+0x158/0x313
[  128.733989]
[  128.733989] other info that might help us debug this:
[  128.733989]  Possible unsafe locking scenario:
[  128.733989]
[  128.733989]        CPU0
[  128.733989]        ----
[  128.733989]   lock(&(&p->alloc_lock)->rlock);
[  128.733989]   lock(&(&p->alloc_lock)->rlock);
[  128.733989]
[  128.733989]  *** DEADLOCK ***
[  128.733989]
[  128.733989]  May be due to missing lock nesting notation
[  128.733989]
[  128.733989] 2 locks held by trinity-child0/523:
[  128.733989]  #0:  (&sig->cred_guard_mutex){+.+.+.}, at: [<ffffffff81057290>] sys_ptrace+0x13d/0x313
[  128.733989]  #1:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff810572ab>] sys_ptrace+0x158/0x313
[  128.733989]
[  128.733989] stack backtrace:
[  128.733989] Pid: 523, comm: trinity-child0 Not tainted 3.6.0-rc1 #1
[  128.733989] Call Trace:
[  128.733989]  [<ffffffff81085649>] __lock_acquire+0xbe0/0xcfb
[  128.733989]  [<ffffffff81084884>] ? mark_lock+0x2d/0x212
[  128.733989]  [<ffffffff81084884>] ? mark_lock+0x2d/0x212
[  128.733989]  [<ffffffff8108639d>] lock_acquire+0x82/0x9d
[  128.733989]  [<ffffffff810e0481>] ? get_task_comm+0x20/0x47
[  128.733989]  [<ffffffff81a35ddf>] _raw_spin_lock+0x3b/0x4a
[  128.733989]  [<ffffffff810e0481>] ? get_task_comm+0x20/0x47
[  128.733989]  [<ffffffff810e0481>] get_task_comm+0x20/0x47
[  128.733989]  [<ffffffff81392c01>] yama_ptrace_access_check+0x16a/0x1c7
[  128.733989]  [<ffffffff810864e3>] ? lock_release+0x12b/0x157
[  128.733989]  [<ffffffff81390bfb>] security_ptrace_access_check+0xe/0x10
[  128.733989]  [<ffffffff81056e2b>] __ptrace_may_access+0x109/0x11b
[  128.733989]  [<ffffffff810572b8>] sys_ptrace+0x165/0x313
[  128.733989]  [<ffffffff81a37079>] system_call_fastpath+0x16/0x1b
[  128.823670] ptrace of pid 522 was attempted by: trinity-child0 (pid 523)


(x86_64-randconfig-k056)
[   87.057392]
[   87.058009] =============================================
[   87.058009] [ INFO: possible recursive locking detected ]
[   87.058009] 3.6.0-rc1-00011-gf8cdda8 #2 Not tainted
[   87.058009] ---------------------------------------------
[   87.058009] trinity-child0/328 is trying to acquire lock:
[   87.058009]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff81104632>] spin_lock+0x9/0xb
[   87.058009]
[   87.058009] but task is already holding lock:
[   87.058009]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff8106cb40>] ptrace_attach+0xa4/0x208
[   87.058009]
[   87.058009] other info that might help us debug this:
[   87.058009]  Possible unsafe locking scenario:
[   87.058009]
[   87.058009]        CPU0
[   87.058009]        ----
[   87.058009]   lock(&(&p->alloc_lock)->rlock);
[   87.058009]   lock(&(&p->alloc_lock)->rlock);
[   87.058009]
[   87.058009]  *** DEADLOCK ***
[   87.058009]
[   87.058009]  May be due to missing lock nesting notation
[   87.058009]
[   87.058009] 2 locks held by trinity-child0/328:
[   87.058009]  #0:  (&sig->cred_guard_mutex){+.+.+.}, at: [<ffffffff8106cb25>] ptrace_attach+0x89/0x208
[   87.058009]  #1:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff8106cb40>] ptrace_attach+0xa4/0x208
[   87.058009]
[   87.058009] stack backtrace:
[   87.058009] Pid: 328, comm: trinity-child0 Not tainted 3.6.0-rc1-00011-gf8cdda8 #2
[   87.058009] Call Trace:
[   87.058009]  [<ffffffff810a104e>] __lock_acquire+0xbe0/0xcfb
[   87.058009]  [<ffffffff810a07d3>] ? __lock_acquire+0x365/0xcfb
[   87.058009]  [<ffffffff810a0289>] ? mark_lock+0x2d/0x212
[   87.058009]  [<ffffffff810a0289>] ? mark_lock+0x2d/0x212
[   87.058009]  [<ffffffff810a1da2>] lock_acquire+0x82/0x9d
[   87.058009]  [<ffffffff81104632>] ? spin_lock+0x9/0xb
[   87.058009]  [<ffffffff816848af>] _raw_spin_lock+0x3b/0x4a
[   87.058009]  [<ffffffff81104632>] ? spin_lock+0x9/0xb
[   87.058009]  [<ffffffff81684a42>] ? _raw_spin_unlock_irqrestore+0x48/0x5c
[   87.058009]  [<ffffffff81104632>] spin_lock+0x9/0xb
[   87.058009]  [<ffffffff811058f3>] get_task_comm+0x20/0x47
[   87.058009]  [<ffffffff81239447>] yama_ptrace_access_check+0x15b/0x1a4
[   87.058009]  [<ffffffff812379fb>] security_ptrace_access_check+0xe/0x10
[   87.058009]  [<ffffffff8106ca8a>] __ptrace_may_access+0x110/0x122
[   87.058009]  [<ffffffff8106cb4d>] ptrace_attach+0xb1/0x208
[   87.058009]  [<ffffffff8106cfd0>] sys_ptrace+0x5c/0xb9
[   87.058009]  [<ffffffff81685b79>] system_call_fastpath+0x16/0x1b
[   87.122562] ptrace of pid 326 was attempted by: trinity-child0 (pid 328)
[   90.259448] ptrace of pid 332 was attempted by: trinity-child0 (pid 335)

Thanks,
Fengguang

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15  3:01       ` Fengguang Wu
@ 2012-08-15  5:56         ` Kees Cook
  2012-08-15  8:05           ` Peter Zijlstra
  2012-08-15 13:01           ` Oleg Nesterov
  0 siblings, 2 replies; 17+ messages in thread
From: Kees Cook @ 2012-08-15  5:56 UTC (permalink / raw)
  To: Fengguang Wu; +Cc: LKML, Oleg Nesterov, Peter Zijlstra

On Tue, Aug 14, 2012 at 8:01 PM, Fengguang Wu <fengguang.wu@intel.com> wrote:
> On Tue, Aug 14, 2012 at 02:16:52PM -0700, Kees Cook wrote:
>> On Thu, Aug 9, 2012 at 6:52 PM, Fengguang Wu <fengguang.wu@intel.com> wrote:
>> > On Thu, Aug 09, 2012 at 06:39:34PM -0700, Kees Cook wrote:
>> >> Hi,
>> >>
>> >> So, after taking a closer look at this, I cannot understand how it's
>> >> possible. Yama's task_lock call is against "current", not "child",
>> >> which is what ptrace_may_access() is locking. And the same code makes
>> >> sure that current != child. Yama would never get called if current ==
>> >> child.
>> >>
>> >> How did you reproduce this situation?
>> >
>> > This warning can be triggered with Dave Jones' trinity tool:
>> >
>> > git://git.codemonkey.org.uk/trinity
>> >
>> > That's a very dangerous tool, please only run it as normal user in a
>> > backed up and chrooted test box. I personally run it inside an initrd.
>> > If you are interested in reproducing this, I can send you the ready
>> > made initrd in private email.
>>
>> Well, even with your initrd, I can't reproduce this. You're running
>> this against a stock kernel? I can't see how the path you've shown can
>
> Yes, it happens on 3.6-rc1.
>
>> possible happen. It could only happen if "task" was "current", but
>> there is an explicit test for that in ptrace_may_access(). Based on
>> the traceback, this is from reading /proc/$pid/stack (or
>> /proc/$pid/task/$tid/stack), rather than a direct ptrace() call, but
>> the code path for task != current still stands.
>>
>> I've tried both normal and "trinity -c read" and I haven't seen the
>> trace you found. :(
>>
>> If you can isolate the case further, I'm happy to fix it, but
>> currently, I don't see a path where this can deadlock.
>
> Even if it's proved to be a false warning, it's still very worthwhile
> to apply Oleg's fix to quiet the warning. Such warnings will mislead
> my bisect script. The sooner it's fixed, the better. And I like Oleg's
> fix because it makes things more simple and a little bit faster.
>
> btw, I see some different warnings when digging through the boot logs:
>
> (x86_64-randconfig-b050)
> [  128.725667]
> [  128.728649] =============================================
> [  128.733989] [ INFO: possible recursive locking detected ]
> [  128.733989] 3.6.0-rc1 #1 Not tainted
> [  128.733989] ---------------------------------------------
> [  128.733989] trinity-child0/523 is trying to acquire lock:
> [  128.733989]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff810e0481>] get_task_comm+0x20/0x47
> [  128.733989]
> [  128.733989] but task is already holding lock:
> [  128.733989]  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff810572ab>] sys_ptrace+0x158/0x313
> [  128.733989]
> [  128.733989] other info that might help us debug this:
> [  128.733989]  Possible unsafe locking scenario:
> [  128.733989]
> [  128.733989]        CPU0
> [  128.733989]        ----
> [  128.733989]   lock(&(&p->alloc_lock)->rlock);
> [  128.733989]   lock(&(&p->alloc_lock)->rlock);
> [  128.733989]
> [  128.733989]  *** DEADLOCK ***
> [  128.733989]
> [  128.733989]  May be due to missing lock nesting notation
> [  128.733989]
> [  128.733989] 2 locks held by trinity-child0/523:
> [  128.733989]  #0:  (&sig->cred_guard_mutex){+.+.+.}, at: [<ffffffff81057290>] sys_ptrace+0x13d/0x313
> [  128.733989]  #1:  (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff810572ab>] sys_ptrace+0x158/0x313
> [  128.733989]
> [  128.733989] stack backtrace:
> [  128.733989] Pid: 523, comm: trinity-child0 Not tainted 3.6.0-rc1 #1
> [  128.733989] Call Trace:
> [  128.733989]  [<ffffffff81085649>] __lock_acquire+0xbe0/0xcfb
> [  128.733989]  [<ffffffff81084884>] ? mark_lock+0x2d/0x212
> [  128.733989]  [<ffffffff81084884>] ? mark_lock+0x2d/0x212
> [  128.733989]  [<ffffffff8108639d>] lock_acquire+0x82/0x9d
> [  128.733989]  [<ffffffff810e0481>] ? get_task_comm+0x20/0x47
> [  128.733989]  [<ffffffff81a35ddf>] _raw_spin_lock+0x3b/0x4a
> [  128.733989]  [<ffffffff810e0481>] ? get_task_comm+0x20/0x47
> [  128.733989]  [<ffffffff810e0481>] get_task_comm+0x20/0x47
> [  128.733989]  [<ffffffff81392c01>] yama_ptrace_access_check+0x16a/0x1c7
> [  128.733989]  [<ffffffff810864e3>] ? lock_release+0x12b/0x157
> [  128.733989]  [<ffffffff81390bfb>] security_ptrace_access_check+0xe/0x10
> [  128.733989]  [<ffffffff81056e2b>] __ptrace_may_access+0x109/0x11b
> [  128.733989]  [<ffffffff810572b8>] sys_ptrace+0x165/0x313
> [  128.733989]  [<ffffffff81a37079>] system_call_fastpath+0x16/0x1b
> [  128.823670] ptrace of pid 522 was attempted by: trinity-child0 (pid 523)

Okay, I've now managed to reproduce this locally. I added a bunch of
debugging, and I think I understand what's going on. This warning is,
actually, a false positive. It is correct in that the _class_ of locks
get used recursively (the task_struct->alloc_lock), but they are
separate instantiations ("task" is never "current").

So Oleg's suggestion of removing the locking around the reading of
->comm is wrong since it really does need the lock. I've read the bit
on declaring nested locking, but it doesn't seem to apply here. I have
no idea what the correct solution for this is since the code already
verifies that the same task_struct instance will never be the locked
twice. How can I teach the lockdep checker about this?

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15  5:56         ` Kees Cook
@ 2012-08-15  8:05           ` Peter Zijlstra
  2012-08-15 13:01           ` Oleg Nesterov
  1 sibling, 0 replies; 17+ messages in thread
From: Peter Zijlstra @ 2012-08-15  8:05 UTC (permalink / raw)
  To: Kees Cook; +Cc: Fengguang Wu, LKML, Oleg Nesterov

On Tue, 2012-08-14 at 22:56 -0700, Kees Cook wrote:
> So Oleg's suggestion of removing the locking around the reading of
> ->comm is wrong since it really does need the lock. 

There's tons of code reading comm without locking.. you're saying that
all is broken?

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15  5:56         ` Kees Cook
  2012-08-15  8:05           ` Peter Zijlstra
@ 2012-08-15 13:01           ` Oleg Nesterov
  2012-08-15 14:30             ` Peter Zijlstra
  1 sibling, 1 reply; 17+ messages in thread
From: Oleg Nesterov @ 2012-08-15 13:01 UTC (permalink / raw)
  To: Kees Cook; +Cc: Fengguang Wu, LKML, Peter Zijlstra

On 08/14, Kees Cook wrote:
>
> Okay, I've now managed to reproduce this locally. I added a bunch of
> debugging, and I think I understand what's going on. This warning is,
> actually, a false positive.

Sure. I mean that yes, this warning doesn't mean we already hit deadlock.

> get used recursively (the task_struct->alloc_lock), but they are
> separate instantiations ("task" is never "current").

Yes. But suppose that we have 2 tasks T1 and T2,

	- T1 does ptrace(PTRACE_ATTACH, T2);

	- T2 does ptrace(PTRACE_ATTACH, T1);

at the same time. This can lead to the "real" deadlock, no?

> So Oleg's suggestion of removing the locking around the reading of
> ->comm is wrong since it really does need the lock.

Nothing bad can happen without the lock. Yes, printk() can print
some string "in between" if we race with set_task_comm() but this
is all.

BTW, set_task_comm()->wmb() and memset() should die. There are
not needed afaics, and the comment is misleading.

Oleg.


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15 13:01           ` Oleg Nesterov
@ 2012-08-15 14:30             ` Peter Zijlstra
  2012-08-15 17:56               ` Oleg Nesterov
  0 siblings, 1 reply; 17+ messages in thread
From: Peter Zijlstra @ 2012-08-15 14:30 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Kees Cook, Fengguang Wu, LKML

On Wed, 2012-08-15 at 15:01 +0200, Oleg Nesterov wrote:
> BTW, set_task_comm()->wmb() and memset() should die. There are
> not needed afaics, and the comment is misleading. 

As long as we guarantee there's always a terminating '\0', now strlcpy()
doesn't pad the result, however if we initialize the ->comm to all 0s in
fork() or thereabouts, we should get this guarantee from the strlcpy()
since that will never replace the last byte with anything but 0.

That barrier is indeed completely pointless as there's no pairing
barrier anywhere.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15 14:30             ` Peter Zijlstra
@ 2012-08-15 17:56               ` Oleg Nesterov
  2012-08-15 18:09                 ` Kees Cook
  0 siblings, 1 reply; 17+ messages in thread
From: Oleg Nesterov @ 2012-08-15 17:56 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: Kees Cook, Fengguang Wu, LKML

On 08/15, Peter Zijlstra wrote:
>
> On Wed, 2012-08-15 at 15:01 +0200, Oleg Nesterov wrote:
> > BTW, set_task_comm()->wmb() and memset() should die. There are
> > not needed afaics, and the comment is misleading.
>
> As long as we guarantee there's always a terminating '\0',

Yes, but we already have this guarantee?

Unless of course some buggy code does something wrong with task->comm[],
but nobody should do this.

IOW, task->comm[TASK_COMM_LEN - 1] is always 0, no?

> now strlcpy()
> doesn't pad the result,

afaics set_task_comm()->strlcpy() doesn't change the last byte too.

> however if we initialize the ->comm to all 0s in
> fork()

fork() is special, yes. ->comm is copied by dup_task_struct() and
the new task_struct can have everything in ->comm. But nobody can
see the new task yet, and nobody can play with its ->comm.

Or I misunderstood?

> That barrier is indeed completely pointless as there's no pairing
> barrier anywhere.

Yes, agreed.

Oleg.


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15 17:56               ` Oleg Nesterov
@ 2012-08-15 18:09                 ` Kees Cook
  2012-08-15 18:17                   ` Oleg Nesterov
  2012-08-15 18:44                   ` Alan Cox
  0 siblings, 2 replies; 17+ messages in thread
From: Kees Cook @ 2012-08-15 18:09 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Peter Zijlstra, Fengguang Wu, LKML

On Wed, Aug 15, 2012 at 10:56 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 08/15, Peter Zijlstra wrote:
>>
>> On Wed, 2012-08-15 at 15:01 +0200, Oleg Nesterov wrote:
>> > BTW, set_task_comm()->wmb() and memset() should die. There are
>> > not needed afaics, and the comment is misleading.
>>
>> As long as we guarantee there's always a terminating '\0',
>
> Yes, but we already have this guarantee?
>
> Unless of course some buggy code does something wrong with task->comm[],
> but nobody should do this.
>
> IOW, task->comm[TASK_COMM_LEN - 1] is always 0, no?
>
>> now strlcpy()
>> doesn't pad the result,
>
> afaics set_task_comm()->strlcpy() doesn't change the last byte too.
>
>> however if we initialize the ->comm to all 0s in
>> fork()
>
> fork() is special, yes. ->comm is copied by dup_task_struct() and
> the new task_struct can have everything in ->comm. But nobody can
> see the new task yet, and nobody can play with its ->comm.
>
> Or I misunderstood?
>
>> That barrier is indeed completely pointless as there's no pairing
>> barrier anywhere.
>
> Yes, agreed.

It sounds like get_task_comm shouldn't have locking at all then? It
should just do a length-limited copy and make sure there is a trailing
0-byte?

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15 18:09                 ` Kees Cook
@ 2012-08-15 18:17                   ` Oleg Nesterov
  2012-08-15 18:30                     ` Kees Cook
  2012-08-15 18:44                   ` Alan Cox
  1 sibling, 1 reply; 17+ messages in thread
From: Oleg Nesterov @ 2012-08-15 18:17 UTC (permalink / raw)
  To: Kees Cook; +Cc: Peter Zijlstra, Fengguang Wu, LKML

On 08/15, Kees Cook wrote:
>
> It sounds like get_task_comm shouldn't have locking at all then? It
> should just do a length-limited copy

Without task_lock() get_task_comm() can copy incomplete new name.

Honestly, I do not know any user which "strictly" needs the correct
name. may be proc.

> and make sure there is a trailing
> 0-byte?

get_task_comm()->strncpy() should always see (and copy) 0-byte.
comm[TASK_COMM_LEN - 1] == '\0' and this byte is never changed.

set_task_comm()->strlcpy() can write to this byte, but it can
only write 0 again.

Or I am totally confused ;)

Oleg.


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15 18:17                   ` Oleg Nesterov
@ 2012-08-15 18:30                     ` Kees Cook
  0 siblings, 0 replies; 17+ messages in thread
From: Kees Cook @ 2012-08-15 18:30 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Peter Zijlstra, Fengguang Wu, LKML

On Wed, Aug 15, 2012 at 11:17 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 08/15, Kees Cook wrote:
>>
>> It sounds like get_task_comm shouldn't have locking at all then? It
>> should just do a length-limited copy
>
> Without task_lock() get_task_comm() can copy incomplete new name.
>
> Honestly, I do not know any user which "strictly" needs the correct
> name. may be proc.

Right, which is my point -- if the race to read against
set_task_comm() isn't useful to anything, why lock in get_task_comm at
all?

>
>> and make sure there is a trailing
>> 0-byte?
>
> get_task_comm()->strncpy() should always see (and copy) 0-byte.
> comm[TASK_COMM_LEN - 1] == '\0' and this byte is never changed.
>
> set_task_comm()->strlcpy() can write to this byte, but it can
> only write 0 again.

Right, and set_task_comm even does a memset() of 0 over the whole area
before the strlcpy too.

Regardless, it sounds like just using ->comm directly is fine; I'll
send a patch.

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15 18:44                   ` Alan Cox
@ 2012-08-15 18:43                     ` Kees Cook
  0 siblings, 0 replies; 17+ messages in thread
From: Kees Cook @ 2012-08-15 18:43 UTC (permalink / raw)
  To: Alan Cox; +Cc: Oleg Nesterov, Peter Zijlstra, Fengguang Wu, LKML

On Wed, Aug 15, 2012 at 11:44 AM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
>> It sounds like get_task_comm shouldn't have locking at all then? It
>> should just do a length-limited copy and make sure there is a trailing
>> 0-byte?
>
> It has locking so that it has a consistent state and more importantly it
> has an accessor function
>
> Directly accessing it is asking for bugs in future. If you hold the
> needed lock then just add an
>
> __get_task_comm()
>
> method that asserts the lock is held. That way the rest of the behaviour
> remains properly encapsulated for when someone changes it.

But what's been discussed is that no lock is needed if the caller
doesn't care about the accuracy of the contents, which is the
situation I'm in. Looking at other readers of ->comm, they just either
use it directly or copy it directly. Only when accuracy matters does
the kernel use get_task_comm.

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: yama_ptrace_access_check(): possible recursive locking detected
  2012-08-15 18:09                 ` Kees Cook
  2012-08-15 18:17                   ` Oleg Nesterov
@ 2012-08-15 18:44                   ` Alan Cox
  2012-08-15 18:43                     ` Kees Cook
  1 sibling, 1 reply; 17+ messages in thread
From: Alan Cox @ 2012-08-15 18:44 UTC (permalink / raw)
  To: Kees Cook; +Cc: Oleg Nesterov, Peter Zijlstra, Fengguang Wu, LKML

> It sounds like get_task_comm shouldn't have locking at all then? It
> should just do a length-limited copy and make sure there is a trailing
> 0-byte?

It has locking so that it has a consistent state and more importantly it
has an accessor function

Directly accessing it is asking for bugs in future. If you hold the
needed lock then just add an

__get_task_comm() 

method that asserts the lock is held. That way the rest of the behaviour
remains properly encapsulated for when someone changes it.

Alan

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2012-08-15 18:43 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-26 13:47 yama_ptrace_access_check(): possible recursive locking detected Fengguang Wu
2012-07-26 15:41 ` Oleg Nesterov
2012-07-30 17:00   ` Kees Cook
2012-08-10  1:39 ` Kees Cook
2012-08-10  1:52   ` Fengguang Wu
2012-08-14 21:16     ` Kees Cook
2012-08-15  3:01       ` Fengguang Wu
2012-08-15  5:56         ` Kees Cook
2012-08-15  8:05           ` Peter Zijlstra
2012-08-15 13:01           ` Oleg Nesterov
2012-08-15 14:30             ` Peter Zijlstra
2012-08-15 17:56               ` Oleg Nesterov
2012-08-15 18:09                 ` Kees Cook
2012-08-15 18:17                   ` Oleg Nesterov
2012-08-15 18:30                     ` Kees Cook
2012-08-15 18:44                   ` Alan Cox
2012-08-15 18:43                     ` Kees Cook

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).