Re: [Linux-v4.6-rc1] ext4: WARNING: CPU: 2 PID: 2692 at kernel/locking/lockdep.c:2017 __lock_acquire+0x180e/0x2260

From: Sedat Dilek
Date: Wed Mar 30 2016 - 06:33:37 EST


>> The below patch should fix this.
>>
>
> checkpatch.pl says...
>
> WARNING: Prefer seq_puts to seq_printf
> #124: FILE: kernel/locking/lockdep_proc.c:145:
> + seq_printf(m, "(buggered) ");
>
> Testing your patch right now.
>

Peter Zijlstra (1):
locking/lockdep: Improve sensible check_no_collision() code

See attached files.

- Sedat -
[ 0.000000] Linux version 4.6.0-rc1-7-iniza-small (sedat.dilek@xxxxxxxxx@fambox) (gcc version 4.9.2 (Ubuntu 4.9.2-0ubuntu1~12.04) ) #1 SMP Wed Mar 30 12:17:40 CEST 2016
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.6.0-rc1-7-iniza-small root=UUID=001AADA61AAD9964 loop=/ubuntu/disks/root.disk ro
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Centaur CentaurHauls
[ 0.000000] Disabled fast string operations
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[ 0.000000] x86/fpu: Using 'eager' FPU context switches.
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d7ff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009d800-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000020200000-0x000000003fffffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000040000000-0x00000000401fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000040200000-0x00000000d9c9efff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000d9c9f000-0x00000000dae7efff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000dae7f000-0x00000000daf9efff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000daf9f000-0x00000000daffefff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x00000000dafff000-0x00000000daffffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000db000000-0x00000000df9fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed08000-0x00000000fed08fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ffd80000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000011fdfffff] usable
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] SMBIOS 2.6 present.
[ 0.000000] DMI: SAMSUNG ELECTRONICS CO., LTD. 530U3BI/530U4BI/530U4BH/530U3BI/530U4BI/530U4BH, BIOS 13XK 03/28/2013
[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000000] e820: last_pfn = 0x11fe00 max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: uncachable
[ 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 000000000 mask F80000000 write-back
[ 0.000000] 1 base 080000000 mask FC0000000 write-back
[ 0.000000] 2 base 0C0000000 mask FE0000000 write-back
[ 0.000000] 3 base 0DC000000 mask FFC000000 uncachable
[ 0.000000] 4 base 0DB000000 mask FFF000000 uncachable
[ 0.000000] 5 base 100000000 mask FE0000000 write-back
[ 0.000000] 6 base 11FE00000 mask FFFE00000 uncachable
[ 0.000000] 7 base 0FFC00000 mask FFFC00000 write-protect
[ 0.000000] 8 disabled
[ 0.000000] 9 disabled
[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT
[ 0.000000] e820: last_pfn = 0xdb000 max_arch_pfn = 0x400000000
[ 0.000000] found SMP MP-table at [mem 0x000f00e0-0x000f00ef] mapped at [ffff8800000f00e0]
[ 0.000000] Scanning 1 areas for low memory corruption
[ 0.000000] Base memory trampoline at [ffff880000097000] 97000 size 24576
[ 0.000000] reserving inaccessible SNB gfx pages
[ 0.000000] BRK [0x02e99000, 0x02e99fff] PGTABLE
[ 0.000000] BRK [0x02e9a000, 0x02e9afff] PGTABLE
[ 0.000000] BRK [0x02e9b000, 0x02e9bfff] PGTABLE
[ 0.000000] BRK [0x02e9c000, 0x02e9cfff] PGTABLE
[ 0.000000] BRK [0x02e9d000, 0x02e9dfff] PGTABLE
[ 0.000000] BRK [0x02e9e000, 0x02e9efff] PGTABLE
[ 0.000000] RAMDISK: [mem 0x378f6000-0x37c72fff]
[ 0.000000] ACPI: Early table checksum verification disabled
[ 0.000000] ACPI: RSDP 0x00000000000F0100 000024 (v02 SECCSD)
[ 0.000000] ACPI: XSDT 0x00000000DAFFE170 00008C (v01 SECCSD LH43STAR 00000002 PTEC 00000002)
[ 0.000000] ACPI: FACP 0x00000000DAFEF000 00010C (v05 SECCSD LH43STAR 00000002 PTL 00000002)
[ 0.000000] ACPI: DSDT 0x00000000DAFF2000 0083AC (v02 SECCSD SNB-CPT 00000000 INTL 20061109)
[ 0.000000] ACPI: FACS 0x00000000DAF47000 000040
[ 0.000000] ACPI: SLIC 0x00000000DAFFD000 000176 (v01 SECCSD LH43STAR 00000002 PTEC 00000001)
[ 0.000000] ACPI: SSDT 0x00000000DAFFB000 001068 (v01 SECCSD PtidDevc 00001000 INTL 20061109)
[ 0.000000] ACPI: ASF! 0x00000000DAFF1000 0000A5 (v32 SECCSD LH43STAR 00000002 PTL 00000002)
[ 0.000000] ACPI: HPET 0x00000000DAFEE000 000038 (v01 SECCSD LH43STAR 00000002 PTL 00000002)
[ 0.000000] ACPI: APIC 0x00000000DAFED000 000098 (v03 SECCSD LH43STAR 00000002 PTL 00000002)
[ 0.000000] ACPI: MCFG 0x00000000DAFEC000 00003C (v01 SECCSD LH43STAR 00000002 PTL 00000002)
[ 0.000000] ACPI: SSDT 0x00000000DAFEB000 000804 (v01 PmRef Cpu0Ist 00003000 INTL 20061109)
[ 0.000000] ACPI: SSDT 0x00000000DAFEA000 000996 (v01 PmRef CpuPm 00003000 INTL 20061109)
[ 0.000000] ACPI: UEFI 0x00000000DAFE9000 00003E (v01 SECCSD LH43STAR 00000002 PTL 00000002)
[ 0.000000] ACPI: UEFI 0x00000000DAFE8000 000042 (v01 PTL COMBUF 00000001 PTL 00000001)
[ 0.000000] ACPI: UEFI 0x00000000DAFE7000 00026A (v01 SECCSD LH43STAR 00000002 PTL 00000002)
[ 0.000000] ACPI: SSDT 0x00000000DAFE6000 0000D0 (v01 Iffs IffsAsl 00003000 INTL 20061109)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] No NUMA configuration found
[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000011fdfffff]
[ 0.000000] NODE_DATA(0) allocated [mem 0x11fdf8000-0x11fdfcfff]
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.000000] DMA32 [mem 0x0000000001000000-0x00000000ffffffff]
[ 0.000000] Normal [mem 0x0000000100000000-0x000000011fdfffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000001000-0x000000000009cfff]
[ 0.000000] node 0: [mem 0x0000000000100000-0x000000001fffffff]
[ 0.000000] node 0: [mem 0x0000000020200000-0x000000003fffffff]
[ 0.000000] node 0: [mem 0x0000000040200000-0x00000000d9c9efff]
[ 0.000000] node 0: [mem 0x00000000dafff000-0x00000000daffffff]
[ 0.000000] node 0: [mem 0x0000000100000000-0x000000011fdfffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000011fdfffff]
[ 0.000000] On node 0 totalpages: 1021500
[ 0.000000] DMA zone: 64 pages used for memmap
[ 0.000000] DMA zone: 156 pages reserved
[ 0.000000] DMA zone: 3996 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 13859 pages used for memmap
[ 0.000000] DMA32 zone: 886944 pages, LIFO batch:31
[ 0.000000] Normal zone: 2040 pages used for memmap
[ 0.000000] Normal zone: 130560 pages, LIFO batch:31
[ 0.000000] Reserving Intel graphics stolen memory at 0xdba00000-0xdf9fffff
[ 0.000000] ACPI: PM-Timer IO Port: 0x408
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[ 0.000000] IOAPIC[0]: apic_id 14, version 32, address 0xfec00000, GSI 0-23
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a301 base: 0xfed00000
[ 0.000000] smpboot: Allowing 8 CPUs, 4 hotplug CPUs
[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
[ 0.000000] PM: Registered nosave memory: [mem 0x0009d000-0x0009dfff]
[ 0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x20000000-0x201fffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x40000000-0x401fffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xd9c9f000-0xdae7efff]
[ 0.000000] PM: Registered nosave memory: [mem 0xdae7f000-0xdaf9efff]
[ 0.000000] PM: Registered nosave memory: [mem 0xdaf9f000-0xdaffefff]
[ 0.000000] PM: Registered nosave memory: [mem 0xdb000000-0xdf9fffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xdfa00000-0xf7ffffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xf8000000-0xfbffffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfc000000-0xfebfffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfed07fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfed08000-0xfed08fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfed09000-0xfed0ffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfed10000-0xfed19fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfed1a000-0xfed1bfff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfed1c000-0xfed1ffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfed20000-0xfedfffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xffd7ffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xffd80000-0xffffffff]
[ 0.000000] e820: [mem 0xdfa00000-0xf7ffffff] available for PCI devices
[ 0.000000] Booting paravirtualized kernel on bare hardware
[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:8 nr_node_ids:1
[ 0.000000] percpu: Embedded 34 pages/cpu @ffff88011fa00000 s102280 r8192 d28792 u262144
[ 0.000000] pcpu-alloc: s102280 r8192 d28792 u262144 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7
[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 1005381
[ 0.000000] Policy zone: Normal
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.6.0-rc1-7-iniza-small root=UUID=001AADA61AAD9964 loop=/ubuntu/disks/root.disk ro
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area
[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[ 0.000000] Memory: 3916912K/4086000K available (8338K kernel code, 1429K rwdata, 3320K rodata, 1452K init, 14072K bss, 169088K reserved, 0K cma-reserved)
[ 0.000000] Running RCU self tests
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU lockdep checking is enabled.
[ 0.000000] Build-time adjustment of leaf fanout to 64.
[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=8.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=8
[ 0.000000] NR_IRQS:16640 nr_irqs:488 16
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [tty0] 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: 32768
[ 0.000000] ... MAX_LOCKDEP_CHAINS: 65536
[ 0.000000] ... CHAINHASH_SIZE: 32768
[ 0.000000] memory used by lock dependency info: 8159 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] | Wound/wait tests |
[ 0.000000] ---------------------
[ 0.000000] ww api failures: ok | ok | ok |
[ 0.000000] ww contexts mixing: ok | ok |
[ 0.000000] finishing ww context: ok | ok | ok | ok |
[ 0.000000] locking mismatches: ok | ok | ok |
[ 0.000000] EDEADLK handling: ok | ok | ok | ok | ok | ok | ok | ok | ok | ok |
[ 0.000000] spinlock nest unlocked: ok |
[ 0.000000] -----------------------------------------------------
[ 0.000000] |block | try |context|
[ 0.000000] -----------------------------------------------------
[ 0.000000] context: ok | ok | ok |
[ 0.000000] try: ok | ok | ok |
[ 0.000000] block: ok | ok | ok |
[ 0.000000] spinlock: ok | ok | ok |
[ 0.000000] -------------------------------------------------------
[ 0.000000] Good, all 253 testcases passed! |
[ 0.000000] ---------------------------------
[ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484882848 ns
[ 0.000000] hpet clockevent registered
[ 0.000000] tsc: Fast TSC calibration using PIT
[ 0.000000] tsc: Detected 1596.381 MHz processor
[ 0.000096] Calibrating delay loop (skipped), value calculated using timer frequency.. 3192.76 BogoMIPS (lpj=6385524)
[ 0.000109] pid_max: default: 32768 minimum: 301
[ 0.000151] ACPI: Core revision 20160108
[ 0.021618] ACPI: 5 ACPI AML tables successfully acquired and loaded
[ 0.021627]
[ 0.021826] Security Framework initialized
[ 0.021833] Yama: becoming mindful.
[ 0.021868] AppArmor: AppArmor initialized
[ 0.022341] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
[ 0.023439] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[ 0.023921] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.023935] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.025338] Disabled fast string operations
[ 0.025348] CPU: Physical Processor ID: 0
[ 0.025353] CPU: Processor Core ID: 0
[ 0.025362] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[ 0.025369] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[ 0.025376] mce: CPU supports 7 MCE banks
[ 0.025413] CPU0: Thermal monitoring enabled (TM1)
[ 0.025433] process: using mwait in idle threads
[ 0.025442] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 8
[ 0.025448] Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32, 1GB 0
[ 0.026090] Freeing SMP alternatives memory: 28K (ffffffff820d2000 - ffffffff820d9000)
[ 0.039544] ftrace: allocating 30169 entries in 118 pages
[ 0.056567] smpboot: Max logical packages: 4
[ 0.056577] smpboot: APIC(0) Converting physical 0 to logical package 0
[ 0.056666] x2apic: IRQ remapping doesn't support X2APIC mode
[ 0.057300] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.096997] TSC deadline timer enabled
[ 0.097003] smpboot: CPU0: Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz (family: 0x6, model: 0x2a, stepping: 0x7)
[ 0.097032] Performance Events: PEBS fmt1+, 16-deep LBR, SandyBridge events, full-width counters, Intel PMU driver.
[ 0.097076] ... version: 3
[ 0.097081] ... bit width: 48
[ 0.097086] ... generic registers: 4
[ 0.097091] ... value mask: 0000ffffffffffff
[ 0.097096] ... max period: 0000ffffffffffff
[ 0.097102] ... fixed-purpose events: 3
[ 0.097107] ... event mask: 000000070000000f
[ 0.098928] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[ 0.099822] x86: Booting SMP configuration:
[ 0.099829] .... node #0, CPUs: #1
[ 0.100172] Disabled fast string operations
[ 0.180071] #2<6>[ 0.180381] Disabled fast string operations
[ 0.260419] #3
[ 0.260419] Disabled fast string operations
[ 0.339674] x86: Booted up 1 node, 4 CPUs
[ 0.339692] smpboot: Total of 4 processors activated (12786.80 BogoMIPS)
[ 0.344708] devtmpfs: initialized
[ 0.345060] x86/mm: Memory block size: 128MB
[ 0.350147] evm: security.selinux
[ 0.350154] evm: security.SMACK64
[ 0.350158] evm: security.capability
[ 0.350348] PM: Registering ACPI NVS region [mem 0xdae7f000-0xdaf9efff] (1179648 bytes)
[ 0.350773] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.352381] NET: Registered protocol family 16
[ 0.363638] cpuidle: using governor ladder
[ 0.379590] cpuidle: using governor menu
[ 0.379819] ACPI: bus type PCI registered
[ 0.380151] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf8000000-0xfbffffff] (base 0xf8000000)
[ 0.380163] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in E820
[ 0.380178] PCI: Using configuration type 1 for base access
[ 0.380232] core: PMU erratum BJ122, BV98, HSD29 worked around, HT is on
[ 0.400142] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.401587] ACPI: Added _OSI(Module Device)
[ 0.401595] ACPI: Added _OSI(Processor Device)
[ 0.401602] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.401608] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.402491] ACPI: Executed 1 blocks of module-level executable AML code
[ 0.420542] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[ 0.422642] ACPI: Dynamic OEM Table Load:
[ 0.422673] ACPI: SSDT 0xFFFF88011A05E800 000688 (v01 PmRef Cpu0Cst 00003001 INTL 20061109)
[ 0.425384] ACPI: Dynamic OEM Table Load:
[ 0.425412] ACPI: SSDT 0xFFFF88011A7DA000 000303 (v01 PmRef ApIst 00003000 INTL 20061109)
[ 0.427904] ACPI: Dynamic OEM Table Load:
[ 0.427931] ACPI: SSDT 0xFFFF88011A056A00 000119 (v01 PmRef ApCst 00003000 INTL 20061109)
[ 0.432133] ACPI : EC: EC started
[ 0.433761] ACPI: Interpreter enabled
[ 0.433837] ACPI: (supports S0 S1 S3 S4 S5)
[ 0.433844] ACPI: Using IOAPIC for interrupt routing
[ 0.433934] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.459834] ACPI: Power Resource [FN00] (off)
[ 0.460347] ACPI: Power Resource [FN01] (off)
[ 0.460753] ACPI: Power Resource [FN02] (off)
[ 0.461159] ACPI: Power Resource [FN03] (off)
[ 0.461561] ACPI: Power Resource [FN04] (off)
[ 0.464430] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-3e])
[ 0.464444] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[ 0.465223] \_SB_.PCI0 (33DB4D5B-1FF7-401C-9657-7441C03DD766): _OSC invalid UUID
[ 0.465225] _OSC request data: 1 1f 0
[ 0.465232] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[ 0.466347] PCI host bridge to bus 0000:00
[ 0.466356] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
[ 0.466364] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
[ 0.466371] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[ 0.466381] pci_bus 0000:00: root bus resource [mem 0xdfa00000-0xfeafffff window]
[ 0.466391] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed44fff window]
[ 0.466401] pci_bus 0000:00: root bus resource [bus 00-3e]
[ 0.466490] pci 0000:00:00.0: [8086:0104] type 00 class 0x060000
[ 0.466955] pci 0000:00:02.0: [8086:0116] type 00 class 0x030000
[ 0.466976] pci 0000:00:02.0: reg 0x10: [mem 0xf0000000-0xf03fffff 64bit]
[ 0.466989] pci 0000:00:02.0: reg 0x18: [mem 0xe0000000-0xefffffff 64bit pref]
[ 0.466998] pci 0000:00:02.0: reg 0x20: [io 0x3000-0x303f]
[ 0.467500] pci 0000:00:16.0: [8086:1c3a] type 00 class 0x078000
[ 0.467542] pci 0000:00:16.0: reg 0x10: [mem 0xf0705000-0xf070500f 64bit]
[ 0.467696] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[ 0.468112] pci 0000:00:1a.0: [8086:1c2d] type 00 class 0x0c0320
[ 0.468147] pci 0000:00:1a.0: reg 0x10: [mem 0xf070a000-0xf070a3ff]
[ 0.468323] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[ 0.468692] pci 0000:00:1b.0: [8086:1c20] type 00 class 0x040300
[ 0.468730] pci 0000:00:1b.0: reg 0x10: [mem 0xf0700000-0xf0703fff 64bit]
[ 0.468910] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[ 0.469136] pci 0000:00:1b.0: System wakeup disabled by ACPI
[ 0.469326] pci 0000:00:1c.0: [8086:1c10] type 01 class 0x060400
[ 0.469496] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[ 0.469699] pci 0000:00:1c.0: System wakeup disabled by ACPI
[ 0.469893] pci 0000:00:1c.3: [8086:1c16] type 01 class 0x060400
[ 0.470062] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[ 0.470263] pci 0000:00:1c.3: System wakeup disabled by ACPI
[ 0.470454] pci 0000:00:1c.4: [8086:1c18] type 01 class 0x060400
[ 0.470633] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[ 0.471026] pci 0000:00:1d.0: [8086:1c26] type 00 class 0x0c0320
[ 0.471060] pci 0000:00:1d.0: reg 0x10: [mem 0xf0709000-0xf07093ff]
[ 0.471236] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[ 0.471597] pci 0000:00:1f.0: [8086:1c49] type 00 class 0x060100
[ 0.472122] pci 0000:00:1f.2: [8086:1c03] type 00 class 0x010601
[ 0.472159] pci 0000:00:1f.2: reg 0x10: [io 0x3088-0x308f]
[ 0.472177] pci 0000:00:1f.2: reg 0x14: [io 0x3094-0x3097]
[ 0.472194] pci 0000:00:1f.2: reg 0x18: [io 0x3080-0x3087]
[ 0.472212] pci 0000:00:1f.2: reg 0x1c: [io 0x3090-0x3093]
[ 0.472229] pci 0000:00:1f.2: reg 0x20: [io 0x3060-0x307f]
[ 0.472247] pci 0000:00:1f.2: reg 0x24: [mem 0xf0708000-0xf07087ff]
[ 0.472355] pci 0000:00:1f.2: PME# supported from D3hot
[ 0.472715] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
[ 0.472749] pci 0000:00:1f.3: reg 0x10: [mem 0xf0704000-0xf07040ff 64bit]
[ 0.472798] pci 0000:00:1f.3: reg 0x20: [io 0xefa0-0xefbf]
[ 0.473550] pci 0000:01:00.0: [8086:0091] type 00 class 0x028000
[ 0.473957] pci 0000:01:00.0: reg 0x10: [mem 0xf0600000-0xf0601fff 64bit]
[ 0.475743] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[ 0.476174] pci 0000:01:00.0: System wakeup disabled by ACPI
[ 0.484074] pci 0000:00:1c.0: PCI bridge to [bus 01]
[ 0.484091] pci 0000:00:1c.0: bridge window [mem 0xf0600000-0xf06fffff]
[ 0.484322] pci 0000:02:00.0: [10ec:8168] type 00 class 0x020000
[ 0.484416] pci 0000:02:00.0: reg 0x10: [io 0x2000-0x20ff]
[ 0.484555] pci 0000:02:00.0: reg 0x18: [mem 0xf0404000-0xf0404fff 64bit pref]
[ 0.484641] pci 0000:02:00.0: reg 0x20: [mem 0xf0400000-0xf0403fff 64bit pref]
[ 0.485110] pci 0000:02:00.0: supports D1 D2
[ 0.485112] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.485322] pci 0000:02:00.0: System wakeup disabled by ACPI
[ 0.492005] pci 0000:00:1c.3: PCI bridge to [bus 02]
[ 0.492017] pci 0000:00:1c.3: bridge window [io 0x2000-0x2fff]
[ 0.492033] pci 0000:00:1c.3: bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[ 0.492238] pci 0000:03:00.0: [1b21:1042] type 00 class 0x0c0330
[ 0.492289] pci 0000:03:00.0: reg 0x10: [mem 0xf0500000-0xf0507fff 64bit]
[ 0.492570] pci 0000:03:00.0: PME# supported from D3hot D3cold
[ 0.492890] pci 0000:00:1c.4: PCI bridge to [bus 03]
[ 0.492906] pci 0000:00:1c.4: bridge window [mem 0xf0500000-0xf05fffff]
[ 0.495324] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[ 0.495548] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 10 11 12 14 15) *0, disabled.
[ 0.495773] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[ 0.496019] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[ 0.496240] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 10 11 12 14 15) *9
[ 0.496461] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 10 11 12 14 15) *0, disabled.
[ 0.496684] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[ 0.496915] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 10 11 12 14 15) *9
[ 0.498542] ACPI: Enabled 4 GPEs in block 00 to 3F
[ 0.498728] ACPI : EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[ 0.499096] ACPI : EC: 0 stale EC events cleared
[ 0.499912] vgaarb: setting as boot device: PCI:0000:00:02.0
[ 0.499920] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.499949] vgaarb: loaded
[ 0.499955] vgaarb: bridge control possible 0000:00:02.0
[ 0.500747] SCSI subsystem initialized
[ 0.500933] libata version 3.00 loaded.
[ 0.501045] ACPI: bus type USB registered
[ 0.501131] usbcore: registered new interface driver usbfs
[ 0.501181] usbcore: registered new interface driver hub
[ 0.501272] usbcore: registered new device driver usb
[ 0.501814] PCI: Using ACPI for IRQ routing
[ 0.505544] PCI: pci_cache_line_size set to 64 bytes
[ 0.505678] e820: reserve RAM buffer [mem 0x0009d800-0x0009ffff]
[ 0.505687] e820: reserve RAM buffer [mem 0xd9c9f000-0xdbffffff]
[ 0.505690] e820: reserve RAM buffer [mem 0xdb000000-0xdbffffff]
[ 0.505693] e820: reserve RAM buffer [mem 0x11fe00000-0x11fffffff]
[ 0.506533] NetLabel: Initializing
[ 0.506539] NetLabel: domain hash size = 128
[ 0.506544] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.506608] NetLabel: unlabeled traffic allowed by default
[ 0.506945] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[ 0.506960] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[ 0.510074] clocksource: Switched to clocksource hpet
[ 0.559359] VFS: Disk quotas dquot_6.6.0
[ 0.559422] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.560034] AppArmor: AppArmor Filesystem Enabled
[ 0.560296] pnp: PnP ACPI init
[ 0.561037] system 00:00: [io 0x0680-0x069f] has been reserved
[ 0.561048] system 00:00: [io 0x1000-0x100f] has been reserved
[ 0.561056] system 00:00: [io 0x5000-0x5003] has been reserved
[ 0.561064] system 00:00: [io 0xffff] has been reserved
[ 0.561073] system 00:00: [io 0x0400-0x0453] could not be reserved
[ 0.561081] system 00:00: [io 0x0458-0x047f] has been reserved
[ 0.561089] system 00:00: [io 0x0500-0x057f] has been reserved
[ 0.561097] system 00:00: [io 0x0a00-0x0a0f] has been reserved
[ 0.561105] system 00:00: [io 0x164e-0x164f] has been reserved
[ 0.561114] system 00:00: [io 0x5000-0x500f] could not be reserved
[ 0.561153] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.561272] pnp 00:01: Plug and Play ACPI device, IDs PNP0b00 (active)
[ 0.561475] system 00:02: [io 0x0454-0x0457] has been reserved
[ 0.561489] system 00:02: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active)
[ 0.561615] pnp 00:03: Plug and Play ACPI device, IDs PNP0303 (active)
[ 0.561773] pnp 00:04: Plug and Play ACPI device, IDs ETD0b00 SYN0002 PNP0f13 (active)
[ 0.562361] system 00:05: [mem 0xfed1c000-0xfed1ffff] has been reserved
[ 0.562371] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved
[ 0.562379] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved
[ 0.562388] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved
[ 0.562396] system 00:05: [mem 0xf8000000-0xfbffffff] has been reserved
[ 0.562405] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved
[ 0.562413] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved
[ 0.562421] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved
[ 0.562430] system 00:05: [mem 0xff000000-0xffffffff] could not be reserved
[ 0.562439] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved
[ 0.562452] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.563580] system 00:06: Plug and Play ACPI device, IDs PNP0c01 (active)
[ 0.563649] pnp: PnP ACPI: found 7 devices
[ 0.576168] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 0.576237] pci 0000:00:1c.0: PCI bridge to [bus 01]
[ 0.576252] pci 0000:00:1c.0: bridge window [mem 0xf0600000-0xf06fffff]
[ 0.576273] pci 0000:00:1c.3: PCI bridge to [bus 02]
[ 0.576281] pci 0000:00:1c.3: bridge window [io 0x2000-0x2fff]
[ 0.576299] pci 0000:00:1c.3: bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[ 0.576317] pci 0000:00:1c.4: PCI bridge to [bus 03]
[ 0.576330] pci 0000:00:1c.4: bridge window [mem 0xf0500000-0xf05fffff]
[ 0.576351] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window]
[ 0.576353] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window]
[ 0.576355] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[ 0.576357] pci_bus 0000:00: resource 7 [mem 0xdfa00000-0xfeafffff window]
[ 0.576359] pci_bus 0000:00: resource 8 [mem 0xfed40000-0xfed44fff window]
[ 0.576361] pci_bus 0000:01: resource 1 [mem 0xf0600000-0xf06fffff]
[ 0.576364] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff]
[ 0.576366] pci_bus 0000:02: resource 2 [mem 0xf0400000-0xf04fffff 64bit pref]
[ 0.576368] pci_bus 0000:03: resource 1 [mem 0xf0500000-0xf05fffff]
[ 0.576533] NET: Registered protocol family 2
[ 0.577197] TCP established hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.577500] TCP bind hash table entries: 32768 (order: 9, 2097152 bytes)
[ 0.579996] TCP: Hash tables configured (established 32768 bind 32768)
[ 0.580135] UDP hash table entries: 2048 (order: 6, 327680 bytes)
[ 0.580486] UDP-Lite hash table entries: 2048 (order: 6, 327680 bytes)
[ 0.581114] NET: Registered protocol family 1
[ 0.581160] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[ 0.583228] PCI: CLS 64 bytes, default 64
[ 0.583539] Trying to unpack rootfs image as initramfs...
[ 0.670574] Freeing initrd memory: 3572K (ffff8800378f6000 - ffff880037c73000)
[ 0.670682] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 0.670691] software IO TLB [mem 0xd5c9f000-0xd9c9f000] (64MB) mapped at [ffff8800d5c9f000-ffff8800d9c9efff]
[ 0.670890] RAPL PMU: API unit is 2^-32 Joules, 3 fixed counters, 163840 ms ovfl timer
[ 0.670900] RAPL PMU: hw unit of domain pp0-core 2^-16 Joules
[ 0.670905] RAPL PMU: hw unit of domain package 2^-16 Joules
[ 0.670911] RAPL PMU: hw unit of domain pp1-gpu 2^-16 Joules
[ 0.671270] Scanning for low memory corruption every 60 seconds
[ 0.672932] futex hash table entries: 2048 (order: 6, 262144 bytes)
[ 0.673155] audit: initializing netlink subsys (disabled)
[ 0.673251] audit: type=2000 audit(1459340876.660:1): initialized
[ 0.674894] Initialise system trusted keyring
[ 0.675373] workingset: timestamp_bits=38 max_order=20 bucket_order=0
[ 0.676626] fuse init (API version 7.24)
[ 0.679231] Key type asymmetric registered
[ 0.679257] Asymmetric key parser 'x509' registered
[ 0.679322] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[ 0.679487] io scheduler noop registered
[ 0.679499] io scheduler deadline registered (default)
[ 0.679569] io scheduler cfq registered
[ 0.679578] start plist test
[ 0.681876] end plist test
[ 0.683263] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 0.683296] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 0.683584] intel_idle: MWAIT substates: 0x21120
[ 0.683585] intel_idle: v0.4.1 model 0x2A
[ 0.683587] intel_idle: lapic_timer_reliable_states 0xffffffff
[ 0.685173] ACPI: AC Adapter [ADP1] (on-line)
[ 0.685478] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[ 0.685539] ACPI: Lid Switch [LID0]
[ 0.685723] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[ 0.685774] ACPI: Power Button [PWRB]
[ 0.685957] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[ 0.685971] ACPI: Power Button [PWRF]
[ 0.690480] thermal LNXTHERM:00: registered as thermal_zone0
[ 0.690488] ACPI: Thermal Zone [TZ00] (66 C)
[ 0.691347] thermal LNXTHERM:01: registered as thermal_zone1
[ 0.691354] ACPI: Thermal Zone [TZ01] (30 C)
[ 0.691489] GHES: HEST is not enabled!
[ 0.691857] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[ 0.699956] ACPI: Battery Slot [BAT1] (battery present)
[ 0.702859] Linux agpgart interface v0.103
[ 0.715634] brd: module loaded
[ 0.722315] loop: module loaded
[ 0.726916] ahci 0000:00:1f.2: version 3.0
[ 0.727408] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[ 0.737641] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 6 Gbps 0x1b impl SATA mode
[ 0.737656] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck stag pm led clo pio slum part ems sxs apst
[ 0.761076] scsi host0: ahci
[ 0.761839] scsi host1: ahci
[ 0.762417] scsi host2: ahci
[ 0.762882] scsi host3: ahci
[ 0.763419] scsi host4: ahci
[ 0.763960] scsi host5: ahci
[ 0.764224] ata1: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708100 irq 25
[ 0.764236] ata2: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708180 irq 25
[ 0.764245] ata3: DUMMY
[ 0.764251] ata4: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708280 irq 25
[ 0.764261] ata5: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708300 irq 25
[ 0.764269] ata6: DUMMY
[ 0.766294] libphy: Fixed MDIO Bus: probed
[ 0.766789] tun: Universal TUN/TAP device driver, 1.6
[ 0.766796] tun: (C) 1999-2004 Max Krasnyansky <maxk@xxxxxxxxxxxx>
[ 0.767063] PPP generic driver version 2.4.2
[ 0.767262] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.767272] ehci-pci: EHCI PCI platform driver
[ 0.767789] ehci-pci 0000:00:1a.0: EHCI Host Controller
[ 0.767981] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[ 0.768063] ehci-pci 0000:00:1a.0: debug port 2
[ 0.772040] ehci-pci 0000:00:1a.0: cache line size of 64 is not supported
[ 0.772116] ehci-pci 0000:00:1a.0: irq 16, io mem 0xf070a000
[ 0.782138] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[ 0.782507] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 0.782516] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.782525] usb usb1: Product: EHCI Host Controller
[ 0.782532] usb usb1: Manufacturer: Linux 4.6.0-rc1-7-iniza-small ehci_hcd
[ 0.782538] usb usb1: SerialNumber: 0000:00:1a.0
[ 0.783636] hub 1-0:1.0: USB hub found
[ 0.783699] hub 1-0:1.0: 2 ports detected
[ 0.785304] ehci-pci 0000:00:1d.0: EHCI Host Controller
[ 0.785332] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
[ 0.785364] ehci-pci 0000:00:1d.0: debug port 2
[ 0.789282] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
[ 0.789324] ehci-pci 0000:00:1d.0: irq 23, io mem 0xf0709000
[ 0.798123] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[ 0.798285] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 0.798294] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.798303] usb usb2: Product: EHCI Host Controller
[ 0.798309] usb usb2: Manufacturer: Linux 4.6.0-rc1-7-iniza-small ehci_hcd
[ 0.798315] usb usb2: SerialNumber: 0000:00:1d.0
[ 0.798919] hub 2-0:1.0: USB hub found
[ 0.798952] hub 2-0:1.0: 2 ports detected
[ 0.799502] ehci-platform: EHCI generic platform driver
[ 0.799560] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.799582] ohci-pci: OHCI PCI platform driver
[ 0.799634] ohci-platform: OHCI generic platform driver
[ 0.799673] uhci_hcd: USB Universal Host Controller Interface driver
[ 0.799943] xhci_hcd 0000:03:00.0: xHCI Host Controller
[ 0.799976] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 3
[ 0.804471] xhci_hcd 0000:03:00.0: hcc params 0x0200f180 hci version 0x96 quirks 0x00080000
[ 0.805038] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[ 0.805046] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.805055] usb usb3: Product: xHCI Host Controller
[ 0.805061] usb usb3: Manufacturer: Linux 4.6.0-rc1-7-iniza-small xhci-hcd
[ 0.805068] usb usb3: SerialNumber: 0000:03:00.0
[ 0.805637] hub 3-0:1.0: USB hub found
[ 0.805712] hub 3-0:1.0: 2 ports detected
[ 0.806269] xhci_hcd 0000:03:00.0: xHCI Host Controller
[ 0.806289] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 4
[ 0.806395] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[ 0.806446] usb usb4: No SuperSpeed endpoint companion for config 1 interface 0 altsetting 0 ep 129: using minimum values
[ 0.806521] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003
[ 0.806528] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.806537] usb usb4: Product: xHCI Host Controller
[ 0.806543] usb usb4: Manufacturer: Linux 4.6.0-rc1-7-iniza-small xhci-hcd
[ 0.806550] usb usb4: SerialNumber: 0000:03:00.0
[ 0.807137] hub 4-0:1.0: USB hub found
[ 0.807184] hub 4-0:1.0: 2 ports detected
[ 0.807896] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:EPAD] at 0x60,0x64 irq 1,12
[ 0.814175] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.814233] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 0.815082] mousedev: PS/2 mouse device common for all mice
[ 0.816430] rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0
[ 0.816476] rtc_cmos 00:01: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[ 0.816582] device-mapper: uevent: version 1.0.3
[ 0.816815] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@xxxxxxxxxx
[ 0.816862] Intel P-state driver initializing.
[ 0.817804] ledtrig-cpu: registered to indicate activity on CPUs
[ 0.818274] NET: Registered protocol family 10
[ 0.819178] NET: Registered protocol family 17
[ 0.819216] Key type dns_resolver registered
[ 0.820191] microcode: CPU0 sig=0x206a7, pf=0x10, revision=0x28
[ 0.820226] microcode: CPU1 sig=0x206a7, pf=0x10, revision=0x28
[ 0.820299] microcode: CPU2 sig=0x206a7, pf=0x10, revision=0x28
[ 0.820333] microcode: CPU3 sig=0x206a7, pf=0x10, revision=0x28
[ 0.820545] microcode: Microcode Update Driver: v2.01 <tigran@xxxxxxxxxxxxxxxxxxxx>, Peter Oruba
[ 0.821332] registered taskstats version 1
[ 0.821346] Loading compiled-in X.509 certificates
[ 0.822933] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3
[ 0.828421] Loaded X.509 cert 'Build time autogenerated kernel key: d861534734a1854c045ffb7a95ace7fffd94d654'
[ 0.833343] Key type trusted registered
[ 0.841768] Key type encrypted registered
[ 0.841784] AppArmor: AppArmor sha1 policy hashing enabled
[ 0.841792] evm: HMAC attrs: 0x1
[ 0.842991] rtc_cmos 00:01: setting system clock to 2016-03-30 12:27:57 UTC (1459340877)
[ 0.843197] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
[ 0.843206] EDD information not available.
[ 1.075311] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 1.076670] ata1.00: ATA-8: Hitachi HTS545050A7E380, GG2OA6C0, max UDMA/133
[ 1.076681] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 1.094249] usb 1-1: new high-speed USB device number 2 using ehci-pci
[ 1.107825] ata1.00: configured for UDMA/133
[ 1.109029] scsi 0:0:0:0: Direct-Access ATA Hitachi HTS54505 A6C0 PQ: 0 ANSI: 5
[ 1.110172] usb 2-1: new high-speed USB device number 2 using ehci-pci
[ 1.131356] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/466 GiB)
[ 1.131371] sd 0:0:0:0: [sda] 4096-byte physical blocks
[ 1.131691] sd 0:0:0:0: [sda] Write Protect is off
[ 1.131699] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 1.131795] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1.131799] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 1.171813] sda: sda1 sda2 sda3
[ 1.173471] sd 0:0:0:0: [sda] Attached SCSI disk
[ 1.227230] usb 1-1: New USB device found, idVendor=8087, idProduct=0024
[ 1.227241] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1.228178] hub 1-1:1.0: USB hub found
[ 1.228426] hub 1-1:1.0: 6 ports detected
[ 1.242915] usb 2-1: New USB device found, idVendor=8087, idProduct=0024
[ 1.242934] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1.243677] hub 2-1:1.0: USB hub found
[ 1.243947] hub 2-1:1.0: 6 ports detected
[ 1.443082] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 1.444079] ata2.00: ATA-8: SanDisk iSSD P4 16GB, SSD 9.14, max UDMA/133
[ 1.444091] ata2.00: 31277232 sectors, multi 1: LBA48
[ 1.444874] ata2.00: configured for UDMA/133
[ 1.445500] scsi 1:0:0:0: Direct-Access ATA SanDisk iSSD P4 9.14 PQ: 0 ANSI: 5
[ 1.470892] sd 1:0:0:0: [sdb] 31277232 512-byte logical blocks: (16.0 GB/14.9 GiB)
[ 1.471086] sd 1:0:0:0: Attached scsi generic sg1 type 0
[ 1.471379] sd 1:0:0:0: [sdb] Write Protect is off
[ 1.471393] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[ 1.471505] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1.472706] sdb: sdb1 sdb2
[ 1.474030] sd 1:0:0:0: [sdb] Attached SCSI disk
[ 1.502234] usb 1-1.4: new high-speed USB device number 3 using ehci-pci
[ 1.518235] usb 2-1.4: new low-speed USB device number 3 using ehci-pci
[ 1.617113] usb 2-1.4: New USB device found, idVendor=046d, idProduct=c00e
[ 1.617124] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1.617133] usb 2-1.4: Product: USB-PS/2 Optical Mouse
[ 1.617138] usb 2-1.4: Manufacturer: Logitech
[ 1.670339] tsc: Refined TSC clocksource calibration: 1596.373 MHz
[ 1.670351] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1702c2a0637, max_idle_ns: 440795222505 ns
[ 1.690144] usb 2-1.5: new full-speed USB device number 4 using ehci-pci
[ 1.755116] usb 1-1.4: New USB device found, idVendor=2232, idProduct=1018
[ 1.755129] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1.755139] usb 1-1.4: Product: WebCam SC-13HDL11431N
[ 1.755145] usb 1-1.4: Manufacturer: 123
[ 1.778121] ata4: SATA link down (SStatus 0 SControl 300)
[ 1.787613] usb 2-1.5: New USB device found, idVendor=8086, idProduct=0189
[ 1.787625] usb 2-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 2.086458] ata5: SATA link down (SStatus 0 SControl 300)
[ 2.088190] Freeing unused kernel memory: 1452K (ffffffff81f67000 - ffffffff820d2000)
[ 2.088202] Write protecting the kernel read-only data: 14336k
[ 2.089724] Freeing unused kernel memory: 1884K (ffff880001829000 - ffff880001a00000)
[ 2.092342] Freeing unused kernel memory: 776K (ffff880001d3e000 - ffff880001e00000)
[ 2.129993] udevd[171]: starting version 175
[ 2.458351] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[ 2.458382] r8169 0000:02:00.0: can't disable ASPM; OS doesn't have ASPM control
[ 2.460751] r8169 0000:02:00.0 eth0: RTL8168evl/8111evl at 0xffffc90000990000, e8:03:9a:36:17:a9, XID 0c900800 IRQ 31
[ 2.460773] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[ 2.468297] usbcore: registered new interface driver usbhid
[ 2.468314] usbhid: USB HID core driver
[ 2.556138] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/0003:046D:C00E.0001/input/input5
[ 2.556619] hid-generic 0003:046D:C00E.0001: input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:1d.0-1.4/input0
[ 2.670718] clocksource: Switched to clocksource tsc
[ 3.247771] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null)
[ 3.812395] random: nonblocking pool is initialized
[ 4.042137] usb 1-1.2: new high-speed USB device number 4 using ehci-pci
[ 4.136997] usb 1-1.2: New USB device found, idVendor=12d1, idProduct=1446
[ 4.137028] usb 1-1.2: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[ 4.137036] usb 1-1.2: Product: HUAWEI Mobile
[ 4.137041] usb 1-1.2: Manufacturer: HUAWEI Technology
[ 5.256858] init: ureadahead main process (451) terminated with status 5
[ 9.519797] Adding 262140k swap on /host/ubuntu/disks/swap.disk. Priority:-1 extents:1 across:262140k FS
[ 9.791149] EXT4-fs (loop0): re-mounted. Opts: errors=remount-ro
[ 9.939355] udevd[677]: starting version 175
[ 10.903992] lp: driver loaded but no devices found
[ 13.167662] wmi: Mapper loaded
[ 13.414639] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042F conflicts with OpRegion 0x0000000000000400-0x000000000000047F (\PMIO) (20160108/utaddress-255)
[ 13.414654] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.414664] ACPI Warning: SystemIO range 0x0000000000000540-0x000000000000054F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20160108/utaddress-255)
[ 13.414673] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.414678] ACPI Warning: SystemIO range 0x0000000000000530-0x000000000000053F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20160108/utaddress-255)
[ 13.414686] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.414690] ACPI Warning: SystemIO range 0x0000000000000500-0x000000000000052F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20160108/utaddress-255)
[ 13.414699] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.414702] lpc_ich: Resource conflict(s) found affecting gpio_ich
[ 13.612896] samsung_laptop: detected SABI interface: SwSmi@
[ 13.624162] [drm] Initialized drm 1.1.0 20060810
[ 14.188989] Bluetooth: Core ver 2.21
[ 14.189147] NET: Registered protocol family 31
[ 14.189148] Bluetooth: HCI device and connection manager initialized
[ 14.189440] Bluetooth: HCI socket layer initialized
[ 14.189449] Bluetooth: L2CAP socket layer initialized
[ 14.189545] Bluetooth: SCO socket layer initialized
[ 14.433657] Intel(R) Wireless WiFi driver for Linux
[ 14.433662] Copyright(c) 2003- 2015 Intel Corporation
[ 14.434062] iwlwifi 0000:01:00.0: can't disable ASPM; OS doesn't have ASPM control
[ 14.749581] usbcore: registered new interface driver btusb
[ 15.070044] usb-storage 1-1.2:1.0: USB Mass Storage device detected
[ 15.073198] scsi host6: usb-storage 1-1.2:1.0
[ 15.073819] usb-storage 1-1.2:1.1: USB Mass Storage device detected
[ 15.074375] scsi host7: usb-storage 1-1.2:1.1
[ 15.074876] usbcore: registered new interface driver usb-storage
[ 15.082186] Linux video capture interface: v2.00
[ 15.160570] psmouse serio1: elantech: assuming hardware version 3 (with firmware version 0x450f00)
[ 15.178343] psmouse serio1: elantech: Synaptics capabilities query result 0x08, 0x17, 0x0c.
[ 15.193327] psmouse serio1: elantech: Elan sample query result 03, 3f, 86
[ 15.271223] input: ETPS/2 Elantech Touchpad as /devices/platform/i8042/serio1/input/input6
[ 15.521512] iwlwifi 0000:01:00.0: loaded firmware version 18.168.6.1 op_mode iwldvm
[ 15.877869] [drm] Memory usable by graphics device = 2048M
[ 15.877936] [drm] Replacing VGA console driver
[ 15.884334] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 15.884339] [drm] Driver supports precise vblank timestamp query.
[ 15.887488] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 15.905634] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no)
[ 15.906605] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input7
[ 15.907607] [drm] Initialized i915 1.6.0 20160229 for 0000:00:02.0 on minor 0
[ 16.044613] fbcon: inteldrmfb (fb0) is primary device
[ 16.072335] scsi 6:0:0:0: CD-ROM HUAWEI Mass Storage 2.31 PQ: 0 ANSI: 2
[ 16.076165] sr 6:0:0:0: [sr0] scsi-1 drive
[ 16.076167] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 16.078047] sr 6:0:0:0: Attached scsi CD-ROM sr0
[ 16.079308] sr 6:0:0:0: Attached scsi generic sg2 type 5
[ 16.080744] scsi 7:0:0:0: Direct-Access HUAWEI SD Storage 2.31 PQ: 0 ANSI: 2
[ 16.085769] sd 7:0:0:0: Attached scsi generic sg3 type 0
[ 16.088791] sd 7:0:0:0: [sdc] Attached SCSI removable disk
[ 16.705437] audit: type=1400 audit(1459333693.356:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=1065 comm="apparmor_parser"
[ 16.705446] audit: type=1400 audit(1459333693.356:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1065 comm="apparmor_parser"
[ 16.705451] audit: type=1400 audit(1459333693.356:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=1065 comm="apparmor_parser"
[ 16.706206] audit: type=1400 audit(1459333693.360:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1065 comm="apparmor_parser"
[ 16.706214] audit: type=1400 audit(1459333693.360:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1065 comm="apparmor_parser"
[ 16.706565] audit: type=1400 audit(1459333693.360:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1065 comm="apparmor_parser"
[ 16.706666] audit: type=1400 audit(1459333693.360:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=1079 comm="apparmor_parser"
[ 16.706675] audit: type=1400 audit(1459333693.360:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1079 comm="apparmor_parser"
[ 16.706681] audit: type=1400 audit(1459333693.360:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1079 comm="apparmor_parser"
[ 16.707385] audit: type=1400 audit(1459333693.360:11): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1079 comm="apparmor_parser"
[ 17.223643] Console: switching to colour frame buffer device 170x48
[ 17.356072] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[ 17.413231] usb 1-1.2: USB disconnect, device number 4
[ 17.642731] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 17.642737] Bluetooth: BNEP filters: protocol multicast
[ 17.642752] Bluetooth: BNEP socket layer initialized
[ 17.670273] ppdev: user-space parallel port driver
[ 17.689026] Bluetooth: RFCOMM TTY layer initialized
[ 17.689057] Bluetooth: RFCOMM socket layer initialized
[ 17.689079] Bluetooth: RFCOMM ver 1.11
[ 17.975776] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC269VC: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[ 17.975783] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 17.975786] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x15/0x0/0x0/0x0/0x0)
[ 17.975788] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0
[ 17.975789] snd_hda_codec_realtek hdaudioC0D0: inputs:
[ 17.975793] snd_hda_codec_realtek hdaudioC0D0: Internal Mic=0x19
[ 17.975797] snd_hda_codec_realtek hdaudioC0D0: Mic=0x18
[ 18.003113] init: failsafe main process (1157) killed by TERM signal
[ 18.176756] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[ 18.177322] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[ 18.177634] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[ 18.331300] uvcvideo: Found UVC 1.00 device WebCam SC-13HDL11431N (2232:1018)
[ 18.351250] input: WebCam SC-13HDL11431N as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input11
[ 18.351831] usbcore: registered new interface driver uvcvideo
[ 18.351836] USB Video Class driver (1.1.1)
[ 18.576641] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUG disabled
[ 18.576647] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[ 18.576649] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled
[ 18.576652] iwlwifi 0000:01:00.0: Detected Intel(R) Centrino(R) Advanced-N 6230 AGN, REV=0xB0
[ 18.577012] iwlwifi 0000:01:00.0: L1 Enabled - LTR Disabled
[ 18.948668] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs'
[ 21.198023] usb 1-1.2: new high-speed USB device number 5 using ehci-pci
[ 21.292835] usb 1-1.2: New USB device found, idVendor=12d1, idProduct=1436
[ 21.292848] usb 1-1.2: New USB device strings: Mfr=4, Product=3, SerialNumber=0
[ 21.292854] usb 1-1.2: Product: HUAWEI Mobile
[ 21.292859] usb 1-1.2: Manufacturer: HUAWEI Technology
[ 21.296403] usb-storage 1-1.2:1.0: USB Mass Storage device detected
[ 21.297558] usb-storage 1-1.2:1.1: USB Mass Storage device detected
[ 21.298292] usb-storage 1-1.2:1.2: USB Mass Storage device detected
[ 21.302849] usb-storage 1-1.2:1.3: USB Mass Storage device detected
[ 21.303678] usb-storage 1-1.2:1.4: USB Mass Storage device detected
[ 21.304242] usb-storage 1-1.2:1.5: USB Mass Storage device detected
[ 21.304743] scsi host6: usb-storage 1-1.2:1.5
[ 21.305447] usb-storage 1-1.2:1.6: USB Mass Storage device detected
[ 21.306159] scsi host7: usb-storage 1-1.2:1.6
[ 21.370422] usbcore: registered new interface driver usbserial
[ 21.395643] cdc_ether 1-1.2:1.1 wwan0: register 'cdc_ether' at usb-0000:00:1a.0-1.2, Mobile Broadband Network Device, 02:50:f3:00:00:00
[ 21.395743] usbcore: registered new interface driver cdc_ether
[ 21.425717] usbcore: registered new interface driver option
[ 21.426402] usbserial: USB Serial support registered for GSM modem (1-port)
[ 21.426628] option 1-1.2:1.0: GSM modem (1-port) converter detected
[ 21.427962] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0
[ 21.428292] option 1-1.2:1.3: GSM modem (1-port) converter detected
[ 21.428743] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1
[ 21.429229] option 1-1.2:1.4: GSM modem (1-port) converter detected
[ 21.430210] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB2
[ 22.304117] scsi 6:0:0:0: CD-ROM HUAWEI Mass Storage 2.31 PQ: 0 ANSI: 2
[ 22.308236] sr 6:0:0:0: [sr0] scsi-1 drive
[ 22.308880] scsi 7:0:0:0: Direct-Access HUAWEI SD Storage 2.31 PQ: 0 ANSI: 2
[ 22.312260] sr 6:0:0:0: Attached scsi CD-ROM sr0
[ 22.313633] sr 6:0:0:0: Attached scsi generic sg2 type 5
[ 22.315686] sd 7:0:0:0: Attached scsi generic sg3 type 0
[ 22.323219] sd 7:0:0:0: [sdc] Attached SCSI removable disk
[ 23.708146] r8169 0000:02:00.0 eth0: link down
[ 23.708222] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 63.100443] PPP BSD Compression module registered
[ 63.185881] PPP Deflate Compression module registered
[ 70.678615] usb 2-1.5: USB disconnect, device number 4

Attachment: config-4.6.0-rc1-7-iniza-small
Description: Binary data

Alan Stern (1):
HID: usbhid: fix inconsistent reset/resume/reset-resume behavior

Benjamin Tissoires (1):
HID: wacom: fix Bamboo ONE oops

Cyan Ogilvie (1):
HID: wiimote: Fix wiimote mp scale linearization

Filipe Manana (1):
Btrfs: fix crash/invalid memory access on fsync when using overlayfs

Josh Boyer (1):
HID: lenovo: Don't use stack variables for DMA buffers

Miklos Szeredi (11):
vfs: rename: check backing inode being equal
vfs: export lookup_hash() to modules
ovl: ignore permissions on underlying lookup
fs: add file_dentry()
nfs: use file_dentry()
ext4: use dget_parent() in ext4_file_open()
ext4: use file_dentry()
fs: add file_dentry()
nfs: use file_dentry()
ext4: use dget_parent() in ext4_file_open()
ext4: use file_dentry()

Peter Zijlstra (1):
locking/lockdep: Improve sensible check_no_collision() code

Sedat Dilek (8):
Merge branch 'overlayfs-next' of git://git.kernel.org/.../mszeredi/vfs into for-4.6/ovl-fixes
Merge branch 'dev' of git://git.kernel.org/.../tytso/ext4 into for-4.6/ext4-fixes
Merge branch 'for-4.6/upstream-fixes' of git://git.kernel.org/.../jikos/hid into for-4.6/hid-fixes
liblockdep: Fix unsupported 'basename -s' in run_tests.sh
Merge branch 'for-4.6/ovl-fixes' into 4.6.0-rc1-7-iniza-small
Merge branch 'for-4.6/hid-fixes' into 4.6.0-rc1-7-iniza-small
Merge branch 'for-4.6/liblockdep-fixes' into 4.6.0-rc1-7-iniza-small
Merge branch 'for-4.6/locking-lockdep-fixes' into 4.6.0-rc1-7-iniza-small

Theodore Ts'o (3):
ext4: check if in-inode xattr is corrupted in ext4_expand_extra_isize_ea()
ext4 crypto: don't let data integrity writebacks fail with ENOMEM
ext4 crypto: use dget_parent() in ext4_d_revalidate()

drivers/hid/hid-lenovo.c | 16 +++++++--
drivers/hid/hid-wiimote-modules.c | 14 ++++----
drivers/hid/usbhid/hid-core.c | 73 ++++++++++++++++++++-------------------
drivers/hid/wacom_wac.c | 11 ++++++
fs/btrfs/file.c | 2 +-
fs/dcache.c | 5 ++-
fs/ext4/crypto.c | 49 +++++++++++++++-----------
fs/ext4/ext4.h | 6 ++--
fs/ext4/file.c | 12 ++++---
fs/ext4/page-io.c | 14 +++++++-
fs/ext4/readpage.c | 2 +-
fs/ext4/xattr.c | 32 ++++++++++++++---
fs/namei.c | 48 +++++++++++++++++++------
fs/nfs/dir.c | 6 ++--
fs/nfs/inode.c | 2 +-
fs/nfs/nfs4file.c | 4 +--
fs/overlayfs/super.c | 35 ++++++++++++++++++-
include/linux/dcache.h | 10 ++++++
include/linux/fs.h | 10 ++++++
include/linux/lockdep.h | 8 +++--
include/linux/namei.h | 2 ++
kernel/locking/lockdep.c | 30 ++++++++++++----
kernel/locking/lockdep_proc.c | 2 ++
tools/lib/lockdep/run_tests.sh | 12 ++++---
24 files changed, 296 insertions(+), 109 deletions(-)

diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
index 0125e356bd8d..1ac4ff4d57a6 100644
--- a/drivers/hid/hid-lenovo.c
+++ b/drivers/hid/hid-lenovo.c
@@ -184,21 +184,31 @@ static int lenovo_send_cmd_cptkbd(struct hid_device *hdev,
unsigned char byte2, unsigned char byte3)
{
int ret;
- unsigned char buf[] = {0x18, byte2, byte3};
+ unsigned char *buf;
+
+ buf = kzalloc(3, GFP_KERNEL);
+ if (!buf)
+ return -ENOMEM;
+
+ buf[0] = 0x18;
+ buf[1] = byte2;
+ buf[2] = byte3;

switch (hdev->product) {
case USB_DEVICE_ID_LENOVO_CUSBKBD:
- ret = hid_hw_raw_request(hdev, 0x13, buf, sizeof(buf),
+ ret = hid_hw_raw_request(hdev, 0x13, buf, 3,
HID_FEATURE_REPORT, HID_REQ_SET_REPORT);
break;
case USB_DEVICE_ID_LENOVO_CBTKBD:
- ret = hid_hw_output_report(hdev, buf, sizeof(buf));
+ ret = hid_hw_output_report(hdev, buf, 3);
break;
default:
ret = -EINVAL;
break;
}

+ kfree(buf);
+
return ret < 0 ? ret : 0; /* BT returns 0, USB returns sizeof(buf) */
}

diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c
index 4390eee2ce84..c830ed39348f 100644
--- a/drivers/hid/hid-wiimote-modules.c
+++ b/drivers/hid/hid-wiimote-modules.c
@@ -2049,9 +2049,11 @@ static void wiimod_mp_in_mp(struct wiimote_data *wdata, const __u8 *ext)
* -----+------------------------------+-----+-----+
* The single bits Yaw, Roll, Pitch in the lower right corner specify
* whether the wiimote is rotating fast (0) or slow (1). Speed for slow
- * roation is 440 deg/s and for fast rotation 2000 deg/s. To get a
- * linear scale we multiply by 2000/440 = ~4.5454 which is 18 for fast
- * and 9 for slow.
+ * roation is 8192/440 units / deg/s and for fast rotation 8192/2000
+ * units / deg/s. To get a linear scale for fast rotation we multiply
+ * by 2000/440 = ~4.5454 and scale both fast and slow by 9 to match the
+ * previous scale reported by this driver.
+ * This leaves a linear scale with 8192*9/440 (~167.564) units / deg/s.
* If the wiimote is not rotating the sensor reports 2^13 = 8192.
* Ext specifies whether an extension is connected to the motionp.
* which is parsed by wiimote-core.
@@ -2070,15 +2072,15 @@ static void wiimod_mp_in_mp(struct wiimote_data *wdata, const __u8 *ext)
z -= 8192;

if (!(ext[3] & 0x02))
- x *= 18;
+ x = (x * 2000 * 9) / 440;
else
x *= 9;
if (!(ext[4] & 0x02))
- y *= 18;
+ y = (y * 2000 * 9) / 440;
else
y *= 9;
if (!(ext[3] & 0x01))
- z *= 18;
+ z = (z * 2000 * 9) / 440;
else
z *= 9;

diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index ad71160b9ea4..ae83af649a60 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -951,14 +951,6 @@ static int usbhid_output_report(struct hid_device *hid, __u8 *buf, size_t count)
return ret;
}

-static void usbhid_restart_queues(struct usbhid_device *usbhid)
-{
- if (usbhid->urbout && !test_bit(HID_OUT_RUNNING, &usbhid->iofl))
- usbhid_restart_out_queue(usbhid);
- if (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl))
- usbhid_restart_ctrl_queue(usbhid);
-}
-
static void hid_free_buffers(struct usb_device *dev, struct hid_device *hid)
{
struct usbhid_device *usbhid = hid->driver_data;
@@ -1404,6 +1396,37 @@ static void hid_cease_io(struct usbhid_device *usbhid)
usb_kill_urb(usbhid->urbout);
}

+static void hid_restart_io(struct hid_device *hid)
+{
+ struct usbhid_device *usbhid = hid->driver_data;
+ int clear_halt = test_bit(HID_CLEAR_HALT, &usbhid->iofl);
+ int reset_pending = test_bit(HID_RESET_PENDING, &usbhid->iofl);
+
+ spin_lock_irq(&usbhid->lock);
+ clear_bit(HID_SUSPENDED, &usbhid->iofl);
+ usbhid_mark_busy(usbhid);
+
+ if (clear_halt || reset_pending)
+ schedule_work(&usbhid->reset_work);
+ usbhid->retry_delay = 0;
+ spin_unlock_irq(&usbhid->lock);
+
+ if (reset_pending || !test_bit(HID_STARTED, &usbhid->iofl))
+ return;
+
+ if (!clear_halt) {
+ if (hid_start_in(hid) < 0)
+ hid_io_error(hid);
+ }
+
+ spin_lock_irq(&usbhid->lock);
+ if (usbhid->urbout && !test_bit(HID_OUT_RUNNING, &usbhid->iofl))
+ usbhid_restart_out_queue(usbhid);
+ if (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl))
+ usbhid_restart_ctrl_queue(usbhid);
+ spin_unlock_irq(&usbhid->lock);
+}
+
/* Treat USB reset pretty much the same as suspend/resume */
static int hid_pre_reset(struct usb_interface *intf)
{
@@ -1453,14 +1476,14 @@ static int hid_post_reset(struct usb_interface *intf)
return 1;
}

+ /* No need to do another reset or clear a halted endpoint */
spin_lock_irq(&usbhid->lock);
clear_bit(HID_RESET_PENDING, &usbhid->iofl);
+ clear_bit(HID_CLEAR_HALT, &usbhid->iofl);
spin_unlock_irq(&usbhid->lock);
hid_set_idle(dev, intf->cur_altsetting->desc.bInterfaceNumber, 0, 0);
- status = hid_start_in(hid);
- if (status < 0)
- hid_io_error(hid);
- usbhid_restart_queues(usbhid);
+
+ hid_restart_io(hid);

return 0;
}
@@ -1483,25 +1506,9 @@ void usbhid_put_power(struct hid_device *hid)
#ifdef CONFIG_PM
static int hid_resume_common(struct hid_device *hid, bool driver_suspended)
{
- struct usbhid_device *usbhid = hid->driver_data;
- int status;
-
- spin_lock_irq(&usbhid->lock);
- clear_bit(HID_SUSPENDED, &usbhid->iofl);
- usbhid_mark_busy(usbhid);
-
- if (test_bit(HID_CLEAR_HALT, &usbhid->iofl) ||
- test_bit(HID_RESET_PENDING, &usbhid->iofl))
- schedule_work(&usbhid->reset_work);
- usbhid->retry_delay = 0;
-
- usbhid_restart_queues(usbhid);
- spin_unlock_irq(&usbhid->lock);
-
- status = hid_start_in(hid);
- if (status < 0)
- hid_io_error(hid);
+ int status = 0;

+ hid_restart_io(hid);
if (driver_suspended && hid->driver && hid->driver->resume)
status = hid->driver->resume(hid);
return status;
@@ -1570,12 +1577,8 @@ static int hid_suspend(struct usb_interface *intf, pm_message_t message)
static int hid_resume(struct usb_interface *intf)
{
struct hid_device *hid = usb_get_intfdata (intf);
- struct usbhid_device *usbhid = hid->driver_data;
int status;

- if (!test_bit(HID_STARTED, &usbhid->iofl))
- return 0;
-
status = hid_resume_common(hid, true);
dev_dbg(&intf->dev, "resume status %d\n", status);
return 0;
@@ -1584,10 +1587,8 @@ static int hid_resume(struct usb_interface *intf)
static int hid_reset_resume(struct usb_interface *intf)
{
struct hid_device *hid = usb_get_intfdata(intf);
- struct usbhid_device *usbhid = hid->driver_data;
int status;

- clear_bit(HID_SUSPENDED, &usbhid->iofl);
status = hid_post_reset(intf);
if (status >= 0 && hid->driver && hid->driver->reset_resume) {
int ret = hid->driver->reset_resume(hid);
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index bd198bbd4df0..02c4efea241c 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -2426,6 +2426,17 @@ void wacom_setup_device_quirks(struct wacom *wacom)
}

/*
+ * Hack for the Bamboo One:
+ * the device presents a PAD/Touch interface as most Bamboos and even
+ * sends ghosts PAD data on it. However, later, we must disable this
+ * ghost interface, and we can not detect it unless we set it here
+ * to WACOM_DEVICETYPE_PAD or WACOM_DEVICETYPE_TOUCH.
+ */
+ if (features->type == BAMBOO_PEN &&
+ features->pktlen == WACOM_PKGLEN_BBTOUCH3)
+ features->device_type |= WACOM_DEVICETYPE_PAD;
+
+ /*
* Raw Wacom-mode pen and touch events both come from interface
* 0, whose HID descriptor has an application usage of 0xFF0D
* (i.e., WACOM_VENDORDEFINED_PEN). We route pen packets back
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 15a09cb156ce..2f40482347af 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1905,7 +1905,7 @@ static int start_ordered_ops(struct inode *inode, loff_t start, loff_t end)
*/
int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
{
- struct dentry *dentry = file->f_path.dentry;
+ struct dentry *dentry = file_dentry(file);
struct inode *inode = d_inode(dentry);
struct btrfs_root *root = BTRFS_I(inode)->root;
struct btrfs_trans_handle *trans;
diff --git a/fs/dcache.c b/fs/dcache.c
index 32ceae3e6112..d5ecc6e477da 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1667,7 +1667,8 @@ void d_set_d_op(struct dentry *dentry, const struct dentry_operations *op)
DCACHE_OP_REVALIDATE |
DCACHE_OP_WEAK_REVALIDATE |
DCACHE_OP_DELETE |
- DCACHE_OP_SELECT_INODE));
+ DCACHE_OP_SELECT_INODE |
+ DCACHE_OP_REAL));
dentry->d_op = op;
if (!op)
return;
@@ -1685,6 +1686,8 @@ void d_set_d_op(struct dentry *dentry, const struct dentry_operations *op)
dentry->d_flags |= DCACHE_OP_PRUNE;
if (op->d_select_inode)
dentry->d_flags |= DCACHE_OP_SELECT_INODE;
+ if (op->d_real)
+ dentry->d_flags |= DCACHE_OP_REAL;

}
EXPORT_SYMBOL(d_set_d_op);
diff --git a/fs/ext4/crypto.c b/fs/ext4/crypto.c
index edc053a81914..ea69ce4f6d8f 100644
--- a/fs/ext4/crypto.c
+++ b/fs/ext4/crypto.c
@@ -91,7 +91,8 @@ void ext4_release_crypto_ctx(struct ext4_crypto_ctx *ctx)
* Return: An allocated and initialized encryption context on success; error
* value or NULL otherwise.
*/
-struct ext4_crypto_ctx *ext4_get_crypto_ctx(struct inode *inode)
+struct ext4_crypto_ctx *ext4_get_crypto_ctx(struct inode *inode,
+ gfp_t gfp_flags)
{
struct ext4_crypto_ctx *ctx = NULL;
int res = 0;
@@ -118,7 +119,7 @@ struct ext4_crypto_ctx *ext4_get_crypto_ctx(struct inode *inode)
list_del(&ctx->free_list);
spin_unlock_irqrestore(&ext4_crypto_ctx_lock, flags);
if (!ctx) {
- ctx = kmem_cache_zalloc(ext4_crypto_ctx_cachep, GFP_NOFS);
+ ctx = kmem_cache_zalloc(ext4_crypto_ctx_cachep, gfp_flags);
if (!ctx) {
res = -ENOMEM;
goto out;
@@ -255,7 +256,8 @@ static int ext4_page_crypto(struct inode *inode,
ext4_direction_t rw,
pgoff_t index,
struct page *src_page,
- struct page *dest_page)
+ struct page *dest_page,
+ gfp_t gfp_flags)

{
u8 xts_tweak[EXT4_XTS_TWEAK_SIZE];
@@ -266,7 +268,7 @@ static int ext4_page_crypto(struct inode *inode,
struct crypto_skcipher *tfm = ci->ci_ctfm;
int res = 0;

- req = skcipher_request_alloc(tfm, GFP_NOFS);
+ req = skcipher_request_alloc(tfm, gfp_flags);
if (!req) {
printk_ratelimited(KERN_ERR
"%s: crypto_request_alloc() failed\n",
@@ -307,9 +309,10 @@ static int ext4_page_crypto(struct inode *inode,
return 0;
}

-static struct page *alloc_bounce_page(struct ext4_crypto_ctx *ctx)
+static struct page *alloc_bounce_page(struct ext4_crypto_ctx *ctx,
+ gfp_t gfp_flags)
{
- ctx->w.bounce_page = mempool_alloc(ext4_bounce_page_pool, GFP_NOWAIT);
+ ctx->w.bounce_page = mempool_alloc(ext4_bounce_page_pool, gfp_flags);
if (ctx->w.bounce_page == NULL)
return ERR_PTR(-ENOMEM);
ctx->flags |= EXT4_WRITE_PATH_FL;
@@ -332,7 +335,8 @@ static struct page *alloc_bounce_page(struct ext4_crypto_ctx *ctx)
* error value or NULL.
*/
struct page *ext4_encrypt(struct inode *inode,
- struct page *plaintext_page)
+ struct page *plaintext_page,
+ gfp_t gfp_flags)
{
struct ext4_crypto_ctx *ctx;
struct page *ciphertext_page = NULL;
@@ -340,17 +344,17 @@ struct page *ext4_encrypt(struct inode *inode,

BUG_ON(!PageLocked(plaintext_page));

- ctx = ext4_get_crypto_ctx(inode);
+ ctx = ext4_get_crypto_ctx(inode, gfp_flags);
if (IS_ERR(ctx))
return (struct page *) ctx;

/* The encryption operation will require a bounce page. */
- ciphertext_page = alloc_bounce_page(ctx);
+ ciphertext_page = alloc_bounce_page(ctx, gfp_flags);
if (IS_ERR(ciphertext_page))
goto errout;
ctx->w.control_page = plaintext_page;
err = ext4_page_crypto(inode, EXT4_ENCRYPT, plaintext_page->index,
- plaintext_page, ciphertext_page);
+ plaintext_page, ciphertext_page, gfp_flags);
if (err) {
ciphertext_page = ERR_PTR(err);
errout:
@@ -378,8 +382,8 @@ int ext4_decrypt(struct page *page)
{
BUG_ON(!PageLocked(page));

- return ext4_page_crypto(page->mapping->host,
- EXT4_DECRYPT, page->index, page, page);
+ return ext4_page_crypto(page->mapping->host, EXT4_DECRYPT,
+ page->index, page, page, GFP_NOFS);
}

int ext4_encrypted_zeroout(struct inode *inode, ext4_lblk_t lblk,
@@ -398,11 +402,11 @@ int ext4_encrypted_zeroout(struct inode *inode, ext4_lblk_t lblk,

BUG_ON(inode->i_sb->s_blocksize != PAGE_CACHE_SIZE);

- ctx = ext4_get_crypto_ctx(inode);
+ ctx = ext4_get_crypto_ctx(inode, GFP_NOFS);
if (IS_ERR(ctx))
return PTR_ERR(ctx);

- ciphertext_page = alloc_bounce_page(ctx);
+ ciphertext_page = alloc_bounce_page(ctx, GFP_NOWAIT);
if (IS_ERR(ciphertext_page)) {
err = PTR_ERR(ciphertext_page);
goto errout;
@@ -410,11 +414,12 @@ int ext4_encrypted_zeroout(struct inode *inode, ext4_lblk_t lblk,

while (len--) {
err = ext4_page_crypto(inode, EXT4_ENCRYPT, lblk,
- ZERO_PAGE(0), ciphertext_page);
+ ZERO_PAGE(0), ciphertext_page,
+ GFP_NOFS);
if (err)
goto errout;

- bio = bio_alloc(GFP_KERNEL, 1);
+ bio = bio_alloc(GFP_NOWAIT, 1);
if (!bio) {
err = -ENOMEM;
goto errout;
@@ -473,13 +478,16 @@ uint32_t ext4_validate_encryption_key_size(uint32_t mode, uint32_t size)
*/
static int ext4_d_revalidate(struct dentry *dentry, unsigned int flags)
{
- struct inode *dir = d_inode(dentry->d_parent);
- struct ext4_crypt_info *ci = EXT4_I(dir)->i_crypt_info;
+ struct dentry *dir;
+ struct ext4_crypt_info *ci;
int dir_has_key, cached_with_key;

- if (!ext4_encrypted_inode(dir))
+ dir = dget_parent(dentry);
+ if (!ext4_encrypted_inode(d_inode(dir))) {
+ dput(dir);
return 0;
-
+ }
+ ci = EXT4_I(d_inode(dir))->i_crypt_info;
if (ci && ci->ci_keyring_key &&
(ci->ci_keyring_key->flags & ((1 << KEY_FLAG_INVALIDATED) |
(1 << KEY_FLAG_REVOKED) |
@@ -489,6 +497,7 @@ static int ext4_d_revalidate(struct dentry *dentry, unsigned int flags)
/* this should eventually be an flag in d_flags */
cached_with_key = dentry->d_fsdata != NULL;
dir_has_key = (ci != NULL);
+ dput(dir);

/*
* If the dentry was cached without the key, and it is a
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index c04743519865..7e4e3e9b4494 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -2282,11 +2282,13 @@ extern struct kmem_cache *ext4_crypt_info_cachep;
bool ext4_valid_contents_enc_mode(uint32_t mode);
uint32_t ext4_validate_encryption_key_size(uint32_t mode, uint32_t size);
extern struct workqueue_struct *ext4_read_workqueue;
-struct ext4_crypto_ctx *ext4_get_crypto_ctx(struct inode *inode);
+struct ext4_crypto_ctx *ext4_get_crypto_ctx(struct inode *inode,
+ gfp_t gfp_flags);
void ext4_release_crypto_ctx(struct ext4_crypto_ctx *ctx);
void ext4_restore_control_page(struct page *data_page);
struct page *ext4_encrypt(struct inode *inode,
- struct page *plaintext_page);
+ struct page *plaintext_page,
+ gfp_t gfp_flags);
int ext4_decrypt(struct page *page);
int ext4_encrypted_zeroout(struct inode *inode, ext4_lblk_t lblk,
ext4_fsblk_t pblk, ext4_lblk_t len);
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 6659e216385e..edba9fb9bb0d 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -329,7 +329,7 @@ static int ext4_file_open(struct inode * inode, struct file * filp)
struct super_block *sb = inode->i_sb;
struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
struct vfsmount *mnt = filp->f_path.mnt;
- struct inode *dir = filp->f_path.dentry->d_parent->d_inode;
+ struct dentry *dir;
struct path path;
char buf[64], *cp;
int ret;
@@ -373,14 +373,18 @@ static int ext4_file_open(struct inode * inode, struct file * filp)
if (ext4_encryption_info(inode) == NULL)
return -ENOKEY;
}
- if (ext4_encrypted_inode(dir) &&
- !ext4_is_child_context_consistent_with_parent(dir, inode)) {
+
+ dir = dget_parent(file_dentry(filp));
+ if (ext4_encrypted_inode(d_inode(dir)) &&
+ !ext4_is_child_context_consistent_with_parent(d_inode(dir), inode)) {
ext4_warning(inode->i_sb,
"Inconsistent encryption contexts: %lu/%lu\n",
- (unsigned long) dir->i_ino,
+ (unsigned long) d_inode(dir)->i_ino,
(unsigned long) inode->i_ino);
+ dput(dir);
return -EPERM;
}
+ dput(dir);
/*
* Set up the jbd2_inode if we are opening the inode for
* writing and the journal is present
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
index d77d15f4b674..51b349211da7 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -23,6 +23,7 @@
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mm.h>
+#include <linux/backing-dev.h>

#include "ext4_jbd2.h"
#include "xattr.h"
@@ -470,9 +471,20 @@ int ext4_bio_write_page(struct ext4_io_submit *io,

if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode) &&
nr_to_submit) {
- data_page = ext4_encrypt(inode, page);
+ gfp_t gfp_flags = GFP_NOFS;
+
+ retry_encrypt:
+ data_page = ext4_encrypt(inode, page, gfp_flags);
if (IS_ERR(data_page)) {
ret = PTR_ERR(data_page);
+ if (ret == ENOMEM && wbc->sync_mode == WB_SYNC_ALL) {
+ if (io->io_bio) {
+ ext4_io_submit(io);
+ congestion_wait(BLK_RW_ASYNC, HZ/50);
+ }
+ gfp_flags |= __GFP_NOFAIL;
+ goto retry_encrypt;
+ }
data_page = NULL;
goto out;
}
diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
index 5dc5e95063de..bc7642f57dc8 100644
--- a/fs/ext4/readpage.c
+++ b/fs/ext4/readpage.c
@@ -279,7 +279,7 @@ int ext4_mpage_readpages(struct address_space *mapping,

if (ext4_encrypted_inode(inode) &&
S_ISREG(inode->i_mode)) {
- ctx = ext4_get_crypto_ctx(inode);
+ ctx = ext4_get_crypto_ctx(inode, GFP_NOFS);
if (IS_ERR(ctx))
goto set_error_page;
}
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index 0441e055c8e8..e79bd32b9b79 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -230,6 +230,27 @@ ext4_xattr_check_block(struct inode *inode, struct buffer_head *bh)
return error;
}

+static int
+__xattr_check_inode(struct inode *inode, struct ext4_xattr_ibody_header *header,
+ void *end, const char *function, unsigned int line)
+{
+ struct ext4_xattr_entry *entry = IFIRST(header);
+ int error = -EFSCORRUPTED;
+
+ if (((void *) header >= end) ||
+ (header->h_magic != le32_to_cpu(EXT4_XATTR_MAGIC)))
+ goto errout;
+ error = ext4_xattr_check_names(entry, end, entry);
+errout:
+ if (error)
+ __ext4_error_inode(inode, function, line, 0,
+ "corrupted in-inode xattr");
+ return error;
+}
+
+#define xattr_check_inode(inode, header, end) \
+ __xattr_check_inode((inode), (header), (end), __func__, __LINE__)
+
static inline int
ext4_xattr_check_entry(struct ext4_xattr_entry *entry, size_t size)
{
@@ -341,7 +362,7 @@ ext4_xattr_ibody_get(struct inode *inode, int name_index, const char *name,
header = IHDR(inode, raw_inode);
entry = IFIRST(header);
end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
- error = ext4_xattr_check_names(entry, end, entry);
+ error = xattr_check_inode(inode, header, end);
if (error)
goto cleanup;
error = ext4_xattr_find_entry(&entry, name_index, name,
@@ -477,7 +498,7 @@ ext4_xattr_ibody_list(struct dentry *dentry, char *buffer, size_t buffer_size)
raw_inode = ext4_raw_inode(&iloc);
header = IHDR(inode, raw_inode);
end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
- error = ext4_xattr_check_names(IFIRST(header), end, IFIRST(header));
+ error = xattr_check_inode(inode, header, end);
if (error)
goto cleanup;
error = ext4_xattr_list_entries(dentry, IFIRST(header),
@@ -1040,8 +1061,7 @@ int ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
is->s.here = is->s.first;
is->s.end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
if (ext4_test_inode_state(inode, EXT4_STATE_XATTR)) {
- error = ext4_xattr_check_names(IFIRST(header), is->s.end,
- IFIRST(header));
+ error = xattr_check_inode(inode, header, is->s.end);
if (error)
return error;
/* Find the named attribute. */
@@ -1356,6 +1376,10 @@ retry:
last = entry;
total_ino = sizeof(struct ext4_xattr_ibody_header);

+ error = xattr_check_inode(inode, header, end);
+ if (error)
+ goto cleanup;
+
free = ext4_xattr_free_space(last, &min_offs, base, &total_ino);
if (free >= new_extra_isize) {
entry = IFIRST(header);
diff --git a/fs/namei.c b/fs/namei.c
index 794f81dce766..1b8fea82a872 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1492,8 +1492,24 @@ static struct dentry *lookup_real(struct inode *dir, struct dentry *dentry,
return dentry;
}

-static struct dentry *__lookup_hash(const struct qstr *name,
- struct dentry *base, unsigned int flags)
+/**
+ * lookup_hash - lookup single pathname component on already hashed name
+ * @name: name and hash to lookup
+ * @base: base directory to lookup from
+ * @flags: lookup flags
+ *
+ * The name must have been verified and hashed (see lookup_one_len()). Using
+ * this after just full_name_hash() is unsafe.
+ *
+ * This function also doesn't check for search permission on base directory.
+ *
+ * Use lookup_one_len() or lookup_one_len_unlocked() instead, unless you really
+ * know what you are doing.
+ *
+ * The caller must hold base->i_mutex.
+ */
+struct dentry *lookup_hash(const struct qstr *name,
+ struct dentry *base, unsigned int flags)
{
struct dentry *dentry = lookup_dcache(name, base, flags);

@@ -1506,6 +1522,7 @@ static struct dentry *__lookup_hash(const struct qstr *name,

return lookup_real(base->d_inode, dentry, flags);
}
+EXPORT_SYMBOL(lookup_hash);

static int lookup_fast(struct nameidata *nd,
struct path *path, struct inode **inode,
@@ -2229,7 +2246,7 @@ struct dentry *kern_path_locked(const char *name, struct path *path)
return ERR_PTR(-EINVAL);
}
inode_lock_nested(path->dentry->d_inode, I_MUTEX_PARENT);
- d = __lookup_hash(&last, path->dentry, 0);
+ d = lookup_hash(&last, path->dentry, 0);
if (IS_ERR(d)) {
inode_unlock(path->dentry->d_inode);
path_put(path);
@@ -2313,7 +2330,7 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
if (err)
return ERR_PTR(err);

- return __lookup_hash(&this, base, 0);
+ return lookup_hash(&this, base, 0);
}
EXPORT_SYMBOL(lookup_one_len);

@@ -3476,7 +3493,7 @@ static struct dentry *filename_create(int dfd, struct filename *name,
*/
lookup_flags |= LOOKUP_CREATE | LOOKUP_EXCL;
inode_lock_nested(path->dentry->d_inode, I_MUTEX_PARENT);
- dentry = __lookup_hash(&last, path->dentry, lookup_flags);
+ dentry = lookup_hash(&last, path->dentry, lookup_flags);
if (IS_ERR(dentry))
goto unlock;

@@ -3756,7 +3773,7 @@ retry:
goto exit1;

inode_lock_nested(path.dentry->d_inode, I_MUTEX_PARENT);
- dentry = __lookup_hash(&last, path.dentry, lookup_flags);
+ dentry = lookup_hash(&last, path.dentry, lookup_flags);
error = PTR_ERR(dentry);
if (IS_ERR(dentry))
goto exit2;
@@ -3878,7 +3895,7 @@ retry:
goto exit1;
retry_deleg:
inode_lock_nested(path.dentry->d_inode, I_MUTEX_PARENT);
- dentry = __lookup_hash(&last, path.dentry, lookup_flags);
+ dentry = lookup_hash(&last, path.dentry, lookup_flags);
error = PTR_ERR(dentry);
if (!IS_ERR(dentry)) {
/* Why not before? Because we want correct error value */
@@ -4150,6 +4167,17 @@ SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname
return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
}

+static struct inode *backing_inode(struct dentry *dentry)
+{
+ struct inode *inode = d_inode(dentry);
+
+ if (inode && dentry->d_flags & DCACHE_OP_SELECT_INODE) {
+ inode = dentry->d_op->d_select_inode(dentry, 0);
+ WARN_ON(IS_ERR(inode));
+ }
+ return inode;
+}
+
/**
* vfs_rename - rename a filesystem object
* @old_dir: parent of source
@@ -4211,7 +4239,7 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
bool new_is_dir = false;
unsigned max_links = new_dir->i_sb->s_max_links;

- if (source == target)
+ if (backing_inode(old_dentry) == backing_inode(new_dentry))
return 0;

error = may_delete(old_dir, old_dentry, is_dir);
@@ -4396,7 +4424,7 @@ retry:
retry_deleg:
trap = lock_rename(new_path.dentry, old_path.dentry);

- old_dentry = __lookup_hash(&old_last, old_path.dentry, lookup_flags);
+ old_dentry = lookup_hash(&old_last, old_path.dentry, lookup_flags);
error = PTR_ERR(old_dentry);
if (IS_ERR(old_dentry))
goto exit3;
@@ -4404,7 +4432,7 @@ retry_deleg:
error = -ENOENT;
if (d_is_negative(old_dentry))
goto exit4;
- new_dentry = __lookup_hash(&new_last, new_path.dentry, lookup_flags | target_flags);
+ new_dentry = lookup_hash(&new_last, new_path.dentry, lookup_flags | target_flags);
error = PTR_ERR(new_dentry);
if (IS_ERR(new_dentry))
goto exit4;
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 4bfa7d8bcade..a89d32a38e88 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -377,7 +377,7 @@ int nfs_readdir_xdr_filler(struct page **pages, nfs_readdir_descriptor_t *desc,
again:
timestamp = jiffies;
gencount = nfs_inc_attr_generation_counter();
- error = NFS_PROTO(inode)->readdir(file->f_path.dentry, cred, entry->cookie, pages,
+ error = NFS_PROTO(inode)->readdir(file_dentry(file), cred, entry->cookie, pages,
NFS_SERVER(inode)->dtsize, desc->plus);
if (error < 0) {
/* We requested READDIRPLUS, but the server doesn't grok it */
@@ -560,7 +560,7 @@ int nfs_readdir_page_filler(nfs_readdir_descriptor_t *desc, struct nfs_entry *en
count++;

if (desc->plus != 0)
- nfs_prime_dcache(desc->file->f_path.dentry, entry);
+ nfs_prime_dcache(file_dentry(desc->file), entry);

status = nfs_readdir_add_to_array(entry, page);
if (status != 0)
@@ -864,7 +864,7 @@ static bool nfs_dir_mapping_need_revalidate(struct inode *dir)
*/
static int nfs_readdir(struct file *file, struct dir_context *ctx)
{
- struct dentry *dentry = file->f_path.dentry;
+ struct dentry *dentry = file_dentry(file);
struct inode *inode = d_inode(dentry);
nfs_readdir_descriptor_t my_desc,
*desc = &my_desc;
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 33d18c411905..738c84a42eb0 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -940,7 +940,7 @@ int nfs_open(struct inode *inode, struct file *filp)
{
struct nfs_open_context *ctx;

- ctx = alloc_nfs_open_context(filp->f_path.dentry, filp->f_mode);
+ ctx = alloc_nfs_open_context(file_dentry(filp), filp->f_mode);
if (IS_ERR(ctx))
return PTR_ERR(ctx);
nfs_file_set_open_context(filp, ctx);
diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
index 22c35abbee9d..d0390516467c 100644
--- a/fs/nfs/nfs4file.c
+++ b/fs/nfs/nfs4file.c
@@ -26,7 +26,7 @@ static int
nfs4_file_open(struct inode *inode, struct file *filp)
{
struct nfs_open_context *ctx;
- struct dentry *dentry = filp->f_path.dentry;
+ struct dentry *dentry = file_dentry(filp);
struct dentry *parent = NULL;
struct inode *dir;
unsigned openflags = filp->f_flags;
@@ -57,7 +57,7 @@ nfs4_file_open(struct inode *inode, struct file *filp)
parent = dget_parent(dentry);
dir = d_inode(parent);

- ctx = alloc_nfs_open_context(filp->f_path.dentry, filp->f_mode);
+ ctx = alloc_nfs_open_context(file_dentry(filp), filp->f_mode);
err = PTR_ERR(ctx);
if (IS_ERR(ctx))
goto out;
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index ef64984c9bbc..42c74bb52443 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -295,6 +295,37 @@ static void ovl_dentry_release(struct dentry *dentry)
}
}

+static struct dentry *ovl_d_real(struct dentry *dentry, struct inode *inode)
+{
+ struct dentry *real;
+
+ if (d_is_dir(dentry)) {
+ if (!inode || inode == d_inode(dentry))
+ return dentry;
+ goto bug;
+ }
+
+ real = ovl_dentry_upper(dentry);
+ if (real && (!inode || inode == d_inode(real)))
+ return real;
+
+ real = ovl_dentry_lower(dentry);
+ if (!real)
+ goto bug;
+
+ if (!inode || inode == d_inode(real))
+ return real;
+
+ /* Handle recursion */
+ if (real->d_flags & DCACHE_OP_REAL)
+ return real->d_op->d_real(real, inode);
+
+bug:
+ WARN(1, "ovl_d_real(%pd4, %s:%lu\n): real dentry not found\n", dentry,
+ inode ? inode->i_sb->s_id : "NULL", inode ? inode->i_ino : 0);
+ return dentry;
+}
+
static int ovl_dentry_revalidate(struct dentry *dentry, unsigned int flags)
{
struct ovl_entry *oe = dentry->d_fsdata;
@@ -339,11 +370,13 @@ static int ovl_dentry_weak_revalidate(struct dentry *dentry, unsigned int flags)
static const struct dentry_operations ovl_dentry_operations = {
.d_release = ovl_dentry_release,
.d_select_inode = ovl_d_select_inode,
+ .d_real = ovl_d_real,
};

static const struct dentry_operations ovl_reval_dentry_operations = {
.d_release = ovl_dentry_release,
.d_select_inode = ovl_d_select_inode,
+ .d_real = ovl_d_real,
.d_revalidate = ovl_dentry_revalidate,
.d_weak_revalidate = ovl_dentry_weak_revalidate,
};
@@ -379,7 +412,7 @@ static inline struct dentry *ovl_lookup_real(struct dentry *dir,
struct dentry *dentry;

inode_lock(dir->d_inode);
- dentry = lookup_one_len(name->name, dir, name->len);
+ dentry = lookup_hash(name, dir, 0);
inode_unlock(dir->d_inode);

if (IS_ERR(dentry)) {
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 7cb043d8f4e8..4bb4de8d95ea 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -161,6 +161,7 @@ struct dentry_operations {
struct vfsmount *(*d_automount)(struct path *);
int (*d_manage)(struct dentry *, bool);
struct inode *(*d_select_inode)(struct dentry *, unsigned);
+ struct dentry *(*d_real)(struct dentry *, struct inode *);
} ____cacheline_aligned;

/*
@@ -229,6 +230,7 @@ struct dentry_operations {
#define DCACHE_OP_SELECT_INODE 0x02000000 /* Unioned entry: dcache op selects inode */

#define DCACHE_ENCRYPTED_WITH_KEY 0x04000000 /* dir is encrypted with a valid key */
+#define DCACHE_OP_REAL 0x08000000

extern seqlock_t rename_lock;

@@ -555,4 +557,12 @@ static inline struct dentry *d_backing_dentry(struct dentry *upper)
return upper;
}

+static inline struct dentry *d_real(struct dentry *dentry)
+{
+ if (unlikely(dentry->d_flags & DCACHE_OP_REAL))
+ return dentry->d_op->d_real(dentry, NULL);
+ else
+ return dentry;
+}
+
#endif /* __LINUX_DCACHE_H */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 14a97194b34b..6920f87a363d 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1241,6 +1241,16 @@ static inline struct inode *file_inode(const struct file *f)
return f->f_inode;
}

+static inline struct dentry *file_dentry(const struct file *file)
+{
+ struct dentry *dentry = file->f_path.dentry;
+
+ if (unlikely(dentry->d_flags & DCACHE_OP_REAL))
+ return dentry->d_op->d_real(dentry, file_inode(file));
+ else
+ return dentry;
+}
+
static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
{
return locks_lock_inode_wait(file_inode(filp), fl);
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index d026b190c530..d10ef06971b5 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -196,9 +196,11 @@ struct lock_list {
* We record lock dependency chains, so that we can cache them:
*/
struct lock_chain {
- u8 irq_context;
- u8 depth;
- u16 base;
+ /* see BUILD_BUG_ON()s in lookup_chain_cache() */
+ unsigned int irq_context : 2,
+ depth : 6,
+ base : 24;
+ /* 4 byte hole */
struct hlist_node entry;
u64 chain_key;
};
diff --git a/include/linux/namei.h b/include/linux/namei.h
index 77d01700daf7..d57a34baf862 100644
--- a/include/linux/namei.h
+++ b/include/linux/namei.h
@@ -79,6 +79,8 @@ extern int kern_path_mountpoint(int, const char *, struct path *, unsigned int);

extern struct dentry *lookup_one_len(const char *, struct dentry *, int);
extern struct dentry *lookup_one_len_unlocked(const char *, struct dentry *, int);
+struct qstr;
+extern struct dentry *lookup_hash(const struct qstr *, struct dentry *, unsigned int);

extern int follow_down_one(struct path *);
extern int follow_down(struct path *);
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 53ab2f85d77e..91a4b7780afb 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -2099,15 +2099,37 @@ cache_hit:
chain->irq_context = hlock->irq_context;
i = get_first_held_lock(curr, hlock);
chain->depth = curr->lockdep_depth + 1 - i;
+
+ BUILD_BUG_ON((1UL << 24) <= ARRAY_SIZE(chain_hlocks));
+ BUILD_BUG_ON((1UL << 6) <= ARRAY_SIZE(curr->held_locks));
+ BUILD_BUG_ON((1UL << 8*sizeof(chain_hlocks[0])) <= ARRAY_SIZE(lock_classes));
+
if (likely(nr_chain_hlocks + chain->depth <= MAX_LOCKDEP_CHAIN_HLOCKS)) {
chain->base = nr_chain_hlocks;
- nr_chain_hlocks += chain->depth;
for (j = 0; j < chain->depth - 1; j++, i++) {
int lock_id = curr->held_locks[i].class_idx - 1;
chain_hlocks[chain->base + j] = lock_id;
}
chain_hlocks[chain->base + j] = class - lock_classes;
}
+
+ if (nr_chain_hlocks < MAX_LOCKDEP_CHAIN_HLOCKS)
+ nr_chain_hlocks += chain->depth;
+
+#ifdef CONFIG_DEBUG_LOCKDEP
+ /*
+ * Important for check_no_collision().
+ */
+ if (unlikely(nr_chain_hlocks > MAX_LOCKDEP_CHAIN_HLOCKS)) {
+ if (debug_locks_off_graph_unlock())
+ return 0;
+
+ print_lockdep_off("BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!");
+ dump_stack();
+ return 0;
+ }
+#endif
+
hlist_add_head_rcu(&chain->entry, hash_head);
debug_atomic_inc(chain_lookup_misses);
inc_chains();
@@ -2860,11 +2882,6 @@ static int separate_irq_context(struct task_struct *curr,
{
unsigned int depth = curr->lockdep_depth;

- /*
- * Keep track of points where we cross into an interrupt context:
- */
- hlock->irq_context = 2*(curr->hardirq_context ? 1 : 0) +
- curr->softirq_context;
if (depth) {
struct held_lock *prev_hlock;

@@ -3164,6 +3181,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
hlock->acquire_ip = ip;
hlock->instance = lock;
hlock->nest_lock = nest_lock;
+ hlock->irq_context = 2*(!!curr->hardirq_context) + !!curr->softirq_context;
hlock->trylock = trylock;
hlock->read = read;
hlock->check = check;
diff --git a/kernel/locking/lockdep_proc.c b/kernel/locking/lockdep_proc.c
index dbb61a302548..a0f61effad25 100644
--- a/kernel/locking/lockdep_proc.c
+++ b/kernel/locking/lockdep_proc.c
@@ -141,6 +141,8 @@ static int lc_show(struct seq_file *m, void *v)
int i;

if (v == SEQ_START_TOKEN) {
+ if (nr_chain_hlocks > MAX_LOCKDEP_CHAIN_HLOCKS)
+ seq_printf(m, "(buggered) ");
seq_printf(m, "all lock chains:\n");
return 0;
}
diff --git a/tools/lib/lockdep/run_tests.sh b/tools/lib/lockdep/run_tests.sh
index 5334ad9d39b7..1069d96248c1 100755
--- a/tools/lib/lockdep/run_tests.sh
+++ b/tools/lib/lockdep/run_tests.sh
@@ -3,7 +3,7 @@
make &> /dev/null

for i in `ls tests/*.c`; do
- testname=$(basename -s .c "$i")
+ testname=$(basename "$i" .c)
gcc -o tests/$testname -pthread -lpthread $i liblockdep.a -Iinclude -D__USE_LIBLOCKDEP &> /dev/null
echo -ne "$testname... "
if [ $(timeout 1 ./tests/$testname | wc -l) -gt 0 ]; then
@@ -11,11 +11,13 @@ for i in `ls tests/*.c`; do
else
echo "FAILED!"
fi
- rm tests/$testname
+ if [ -f "tests/$testname" ]; then
+ rm tests/$testname
+ fi
done

for i in `ls tests/*.c`; do
- testname=$(basename -s .c "$i")
+ testname=$(basename "$i" .c)
gcc -o tests/$testname -pthread -lpthread -Iinclude $i &> /dev/null
echo -ne "(PRELOAD) $testname... "
if [ $(timeout 1 ./lockdep ./tests/$testname | wc -l) -gt 0 ]; then
@@ -23,5 +25,7 @@ for i in `ls tests/*.c`; do
else
echo "FAILED!"
fi
- rm tests/$testname
+ if [ -f "tests/$testname" ]; then
+ rm tests/$testname
+ fi
done