1. 27 5月, 2015 4 次提交
    • T
      x86/mm/mtrr: Use symbolic define as a retval for disabled MTRRs · 3d3ca416
      Toshi Kani 提交于
      mtrr_type_lookup() returns verbatim 0xFF when MTRRs are
      disabled. This patch defines MTRR_TYPE_INVALID to clarify the
      meaning of this value, and documents its usage.
      
      Document the return values of the kernel virtual address mapping
      helpers pud_set_huge(), pmd_set_huge, pud_clear_huge() and
      pmd_clear_huge().
      
      There is no functional change in this patch.
      Signed-off-by: NToshi Kani <toshi.kani@hp.com>
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Gerst <brgerst@gmail.com>
      Cc: Denys Vlasenko <dvlasenk@redhat.com>
      Cc: Elliott@hp.com
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Luis R. Rodriguez <mcgrof@suse.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: dave.hansen@intel.com
      Cc: linux-mm <linux-mm@kvack.org>
      Cc: pebolle@tiscali.nl
      Link: http://lkml.kernel.org/r/1431714237-880-5-git-send-email-toshi.kani@hp.com
      Link: http://lkml.kernel.org/r/1432628901-18044-5-git-send-email-bp@alien8.deSigned-off-by: NIngo Molnar <mingo@kernel.org>
      3d3ca416
    • T
      x86/mm/mtrr: Fix MTRR state checks in mtrr_type_lookup() · 9b3aca62
      Toshi Kani 提交于
      'mtrr_state.enabled' contains the FE (fixed MTRRs enabled)
      and E (MTRRs enabled) flags in MSR_MTRRdefType.  Intel SDM,
      section 11.11.2.1, defines these flags as follows:
      
       - All MTRRs are disabled when the E flag is clear.
         The FE flag has no affect when the E flag is clear.
       - The default type is enabled when the E flag is set.
       - MTRR variable ranges are enabled when the E flag is set.
       - MTRR fixed ranges are enabled when both E and FE flags
         are set.
      
      MTRR state checks in __mtrr_type_lookup() do not match with SDM.
      
      Hence, this patch makes the following changes:
       - The current code detects MTRRs disabled when both E and
         FE flags are clear in mtrr_state.enabled.  Fix to detect
         MTRRs disabled when the E flag is clear.
       - The current code does not check if the FE bit is set in
         mtrr_state.enabled when looking at the fixed entries.
         Fix to check the FE flag.
       - The current code returns the default type when the E flag
         is clear in mtrr_state.enabled. However, the default type
         is UC when the E flag is clear.  Remove the code as this
         case is handled as MTRR disabled with the 1st change.
      
      In addition, this patch defines the E and FE flags in
      mtrr_state.enabled as follows.
       - FE flag: MTRR_STATE_MTRR_FIXED_ENABLED
       - E  flag: MTRR_STATE_MTRR_ENABLED
      
      print_mtrr_state() and x86_get_mtrr_mem_range() are also updated
      accordingly.
      Signed-off-by: NToshi Kani <toshi.kani@hp.com>
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Gerst <brgerst@gmail.com>
      Cc: Denys Vlasenko <dvlasenk@redhat.com>
      Cc: Elliott@hp.com
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Luis R. Rodriguez <mcgrof@suse.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: dave.hansen@intel.com
      Cc: linux-mm <linux-mm@kvack.org>
      Cc: pebolle@tiscali.nl
      Link: http://lkml.kernel.org/r/1431714237-880-4-git-send-email-toshi.kani@hp.com
      Link: http://lkml.kernel.org/r/1432628901-18044-4-git-send-email-bp@alien8.deSigned-off-by: NIngo Molnar <mingo@kernel.org>
      9b3aca62
    • T
      x86/mm/mtrr: Fix MTRR lookup to handle an inclusive entry · 7f0431e3
      Toshi Kani 提交于
      When an MTRR entry is inclusive to a requested range, i.e. the
      start and end of the request are not within the MTRR entry range
      but the range contains the MTRR entry entirely:
      
        range_start ... [mtrr_start ... mtrr_end] ... range_end
      
      __mtrr_type_lookup() ignores such a case because both
      start_state and end_state are set to zero.
      
      This bug can cause the following issues:
      
      1) reserve_memtype() tracks an effective memory type in case
         a request type is WB (ex. /dev/mem blindly uses WB). Missing
         to track with its effective type causes a subsequent request
         to map the same range with the effective type to fail.
      
      2) pud_set_huge() and pmd_set_huge() check if a requested range
         has any overlap with MTRRs. Missing to detect an overlap may
         cause a performance penalty or undefined behavior.
      
      This patch fixes the bug by adding a new flag, 'inclusive',
      to detect the inclusive case.  This case is then handled in
      the same way as end_state:1 since the first region is the same.
      With this fix, __mtrr_type_lookup() handles the inclusive case
      properly.
      Signed-off-by: NToshi Kani <toshi.kani@hp.com>
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Gerst <brgerst@gmail.com>
      Cc: Denys Vlasenko <dvlasenk@redhat.com>
      Cc: Elliott@hp.com
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Luis R. Rodriguez <mcgrof@suse.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: dave.hansen@intel.com
      Cc: linux-mm <linux-mm@kvack.org>
      Cc: pebolle@tiscali.nl
      Link: http://lkml.kernel.org/r/1431714237-880-3-git-send-email-toshi.kani@hp.com
      Link: http://lkml.kernel.org/r/1432628901-18044-3-git-send-email-bp@alien8.deSigned-off-by: NIngo Molnar <mingo@kernel.org>
      7f0431e3
    • T
      x86/mm/kconfig: Simplify conditions for HAVE_ARCH_HUGE_VMAP · 10455f64
      Toshi Kani 提交于
      Simplify the conditions selecting HAVE_ARCH_HUGE_VMAP since
      X86_PAE depends on X86_32 already.
      Signed-off-by: NToshi Kani <toshi.kani@hp.com>
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Gerst <brgerst@gmail.com>
      Cc: Denys Vlasenko <dvlasenk@redhat.com>
      Cc: Elliott@hp.com
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Luis R. Rodriguez <mcgrof@suse.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: dave.hansen@intel.com
      Cc: linux-mm <linux-mm@kvack.org>
      Cc: pebolle@tiscali.nl
      Link: http://lkml.kernel.org/r/1431714237-880-2-git-send-email-toshi.kani@hp.com
      Link: http://lkml.kernel.org/r/1432628901-18044-2-git-send-email-bp@alien8.deSigned-off-by: NIngo Molnar <mingo@kernel.org>
      10455f64
  2. 23 5月, 2015 1 次提交
  3. 22 5月, 2015 1 次提交
  4. 20 5月, 2015 3 次提交
    • L
      kvm/fpu: Enable eager restore kvm FPU for MPX · c447e76b
      Liang Li 提交于
      The MPX feature requires eager KVM FPU restore support. We have verified
      that MPX cannot work correctly with the current lazy KVM FPU restore
      mechanism. Eager KVM FPU restore should be enabled if the MPX feature is
      exposed to VM.
      Signed-off-by: NYang Zhang <yang.z.zhang@intel.com>
      Signed-off-by: NLiang Li <liang.z.li@intel.com>
      [Also activate the FPU on AMD processors. - Paolo]
      Cc: stable@vger.kernel.org
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c447e76b
    • P
      Revert "KVM: x86: drop fpu_activate hook" · 0fdd74f7
      Paolo Bonzini 提交于
      This reverts commit 4473b570.  We'll
      use the hook again.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      0fdd74f7
    • A
      kvm: fix crash in kvm_vcpu_reload_apic_access_page · e8fd5e9e
      Andrea Arcangeli 提交于
      memslot->userfault_addr is set by the kernel with a mmap executed
      from the kernel but the userland can still munmap it and lead to the
      below oops after memslot->userfault_addr points to a host virtual
      address that has no vma or mapping.
      
      [  327.538306] BUG: unable to handle kernel paging request at fffffffffffffffe
      [  327.538407] IP: [<ffffffff811a7b55>] put_page+0x5/0x50
      [  327.538474] PGD 1a01067 PUD 1a03067 PMD 0
      [  327.538529] Oops: 0000 [#1] SMP
      [  327.538574] Modules linked in: macvtap macvlan xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT iptable_filter ip_tables tun bridge stp llc rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache xprtrdma ib_isert iscsi_target_mod ib_iser libiscsi scsi_transport_iscsi ib_srpt target_core_mod ib_srp scsi_transport_srp scsi_tgt ib_ipoib rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm ipmi_devintf iTCO_wdt iTCO_vendor_support intel_powerclamp coretemp dcdbas intel_rapl kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper cryptd pcspkr sb_edac edac_core ipmi_si ipmi_msghandler acpi_pad wmi acpi_power_meter lpc_ich mfd_core mei_me
      [  327.539488]  mei shpchp nfsd auth_rpcgss nfs_acl lockd grace sunrpc mlx4_ib ib_sa ib_mad ib_core mlx4_en vxlan ib_addr ip_tunnel xfs libcrc32c sd_mod crc_t10dif crct10dif_common crc32c_intel mgag200 syscopyarea sysfillrect sysimgblt i2c_algo_bit drm_kms_helper ttm drm ahci i2c_core libahci mlx4_core libata tg3 ptp pps_core megaraid_sas ntb dm_mirror dm_region_hash dm_log dm_mod
      [  327.539956] CPU: 3 PID: 3161 Comm: qemu-kvm Not tainted 3.10.0-240.el7.userfault19.4ca4011.x86_64.debug #1
      [  327.540045] Hardware name: Dell Inc. PowerEdge R420/0CN7CM, BIOS 2.1.2 01/20/2014
      [  327.540115] task: ffff8803280ccf00 ti: ffff880317c58000 task.ti: ffff880317c58000
      [  327.540184] RIP: 0010:[<ffffffff811a7b55>]  [<ffffffff811a7b55>] put_page+0x5/0x50
      [  327.540261] RSP: 0018:ffff880317c5bcf8  EFLAGS: 00010246
      [  327.540313] RAX: 00057ffffffff000 RBX: ffff880616a20000 RCX: 0000000000000000
      [  327.540379] RDX: 0000000000002014 RSI: 00057ffffffff000 RDI: fffffffffffffffe
      [  327.540445] RBP: ffff880317c5bd10 R08: 0000000000000103 R09: 0000000000000000
      [  327.540511] R10: 0000000000000000 R11: 0000000000000000 R12: fffffffffffffffe
      [  327.540576] R13: 0000000000000000 R14: ffff880317c5bd70 R15: ffff880317c5bd50
      [  327.540643] FS:  00007fd230b7f700(0000) GS:ffff880630800000(0000) knlGS:0000000000000000
      [  327.540717] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  327.540771] CR2: fffffffffffffffe CR3: 000000062a2c3000 CR4: 00000000000427e0
      [  327.540837] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  327.540904] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [  327.540974] Stack:
      [  327.541008]  ffffffffa05d6d0c ffff880616a20000 0000000000000000 ffff880317c5bdc0
      [  327.541093]  ffffffffa05ddaa2 0000000000000000 00000000002191bf 00000042f3feab2d
      [  327.541177]  00000042f3feab2d 0000000000000002 0000000000000001 0321000000000000
      [  327.541261] Call Trace:
      [  327.541321]  [<ffffffffa05d6d0c>] ? kvm_vcpu_reload_apic_access_page+0x6c/0x80 [kvm]
      [  327.543615]  [<ffffffffa05ddaa2>] vcpu_enter_guest+0x3f2/0x10f0 [kvm]
      [  327.545918]  [<ffffffffa05e2f10>] kvm_arch_vcpu_ioctl_run+0x2b0/0x5a0 [kvm]
      [  327.548211]  [<ffffffffa05e2d02>] ? kvm_arch_vcpu_ioctl_run+0xa2/0x5a0 [kvm]
      [  327.550500]  [<ffffffffa05ca845>] kvm_vcpu_ioctl+0x2b5/0x680 [kvm]
      [  327.552768]  [<ffffffff810b8d12>] ? creds_are_invalid.part.1+0x12/0x50
      [  327.555069]  [<ffffffff810b8d71>] ? creds_are_invalid+0x21/0x30
      [  327.557373]  [<ffffffff812d6066>] ? inode_has_perm.isra.49.constprop.65+0x26/0x80
      [  327.559663]  [<ffffffff8122d985>] do_vfs_ioctl+0x305/0x530
      [  327.561917]  [<ffffffff8122dc51>] SyS_ioctl+0xa1/0xc0
      [  327.564185]  [<ffffffff816de829>] system_call_fastpath+0x16/0x1b
      [  327.566480] Code: 0b 31 f6 4c 89 e7 e8 4b 7f ff ff 0f 0b e8 24 fd ff ff e9 a9 fd ff ff 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 90 <48> f7 07 00 c0 00 00 55 48 89 e5 75 2a 8b 47 1c 85 c0 74 1e f0
      Signed-off-by: NAndrea Arcangeli <aarcange@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e8fd5e9e
  5. 19 5月, 2015 1 次提交
  6. 18 5月, 2015 1 次提交
  7. 16 5月, 2015 2 次提交
  8. 14 5月, 2015 3 次提交
  9. 13 5月, 2015 13 次提交
    • H
      Revert "ARM: rockchip: fix undefined instruction of reset_ctrl_regs" · 3f937cf3
      Heiko Stuebner 提交于
      This reverts commit b403125d.
      
      As reported by Chris, both commits
              b403125d "ARM: rockchip: fix undefined instruction of reset_ctrl_regs"
              0ea001d3 "ARM: rockchip: disable dapswjdp during suspend"
      actually fix the same issue and b403125d is the older one, which got
      superseded by 0ea001d3. Therefore revert the obsolete one again.
      Reported-by: NChris Zhong <zyw@rock-chips.com>
      Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
      3f937cf3
    • K
      ARM: EXYNOS: Fix dereference of ERR_PTR returned by of_genpd_get_from_provider · 0b7dc0ff
      Krzysztof Kozlowski 提交于
      ERR_PTR was dereferenced during sub domain parsing, if parent domain
      could not be obtained (because of invalid phandle or deferred
      registration of parent domain).
      
      The Exynos power domain code checked whether
      of_genpd_get_from_provider() returned NULL and in that case it skipped
      that power domain node. However this function returns ERR_PTR or valid
      pointer, not NULL.
      
      Fixes: 0f780751 ("ARM: EXYNOS: add support for sub-power domains")
      Cc: <stable@vger.kernel.org>	[4.0+]
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: NKukjin Kim <kgene@kernel.org>
      0b7dc0ff
    • H
      s390/crypto: fix stckf loop · c431761d
      Harald Freudenberger 提交于
      The store-clock-fast loop in generate_entropy() mixes (exors)
      only the first 64 bytes of the initial page before doing the
      first SHA256. Fix the loop to mix the store-clock-fast values
      all over the page.
      Signed-off-by: NHarald Freudenberger <freude@linux.vnet.ibm.com>
      Reported-by: NDavid Binderman <dcb314@hotmail.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c431761d
    • A
      x86: bpf_jit: fix FROM_BE16 and FROM_LE16/32 instructions · 343f845b
      Alexei Starovoitov 提交于
      FROM_BE16:
      'ror %reg, 8' doesn't clear upper bits of the register,
      so use additional 'movzwl' insn to zero extend 16 bits into 64
      
      FROM_LE16:
      should zero extend lower 16 bits into 64 bit
      
      FROM_LE32:
      should zero extend lower 32 bits into 64 bit
      
      Fixes: 89aa0758 ("net: sock: allow eBPF programs to be attached to sockets")
      Signed-off-by: NAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      343f845b
    • J
      MIPS: IP32: Fix build errors in reset code in DS1685 platform hook. · 4305689d
      Joshua Kinard 提交于
      Fix two build errors in reset code introduced in DS1685 platform hook patch.
      Signed-off-by: NJoshua Kinard <kumba@gentoo.org>
      Fixes: 15beb694: "mips: ip32: add platform data hooks to use DS1685 driver"
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Cc: LKML <linux-kernel@vger.kernel.org>
      Cc: rtc-linux@googlegroups.com
      Cc: Linux MIPS List <linux-mips@linux-mips.org>
      Patchwork: https://patchwork.linux-mips.org/patch/9787/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      4305689d
    • N
      MIPS: KVM: Fix unused variable build warning · 5f508c43
      Nicholas Mc Guire 提交于
      As kvm_mips_complete_mmio_load() did not yet modify PC at this point
      as James Hogans <james.hogan@imgtec.com> explained the curr_pc variable
      and the comments along with it can be dropped.
      Signed-off-by: NNicholas Mc Guire <hofrat@osadl.org>
      Link: http://lkml.org/lkml/2015/5/8/422
      Cc: Gleb Natapov <gleb@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: kvm@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/9993/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      5f508c43
    • P
      MIPS: traps: remove extra Tainted: line from __show_regs() output · 2d2ec2f7
      Petri Gynther 提交于
      __show_regs() calls show_regs_print_info(), which already outputs
      the Tainted: information. So, no need to output it twice.
      Signed-off-by: NPetri Gynther <pgynther@google.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/9997/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      2d2ec2f7
    • A
      MIPS: Fix wrong CHECKFLAGS (sparse builds) with GCC 5.1 · 73d8f99c
      Aaro Koskinen 提交于
      GCC 5.1 defines __REGISTER_PREFIX__ to $. This will break sparse
      command line (and build fails with: /bin/sh: syntax error:
      unexpected "(") since make tries to expand starting with the dollar
      sign with a make variable. Prevent that by using double dollar sign.
      Signed-off-by: NAaro Koskinen <aaro.koskinen@iki.fi>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10025/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      73d8f99c
    • M
      MIPS: Fix a preemption issue with thread's FPU defaults · 03dce595
      Maciej W. Rozycki 提交于
      Fix "BUG: using smp_processor_id() in preemptible" reported in accesses
      to thread's FPU defaults: the value to initialise FSCR to at program
      startup, the FCSR r/w mask and the contents of FIR in full FPU
      emulation, removing a regression introduced with 9b26616c [MIPS: Respect
      the ISA level in FCSR handling] and f6843626 [MIPS: math-emu: Set FIR
      feature flags for full emulation].
      
      Use `boot_cpu_data' to obtain the data from, following the approach that
      `cpu_has_*' macros take and avoiding the call to `smp_processor_id' made
      in the reference to `current_cpu_data'.  The contents of FSCR have to be
      consistent across processors in an SMP system, the settings there must
      not change as a thread is migrated across processors.  And the contents
      of FIR are guaranteed to be consistent in FPU emulation, by definition.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Tested-by: NEzequiel Garcia <ezequiel.garcia@imgtec.com>
      Tested-by: NPaul Martin <paul.martin@codethink.co.uk>
      Cc: Markos Chandras <Markos.Chandras@imgtec.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10030/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      03dce595
    • H
      parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures · d045c77c
      Helge Deller 提交于
      On architectures where the stack grows upwards (CONFIG_STACK_GROWSUP=y,
      currently parisc and metag only) stack randomization sometimes leads to crashes
      when the stack ulimit is set to lower values than STACK_RND_MASK (which is 8 MB
      by default if not defined in arch-specific headers).
      
      The problem is, that when the stack vm_area_struct is set up in fs/exec.c, the
      additional space needed for the stack randomization (as defined by the value of
      STACK_RND_MASK) was not taken into account yet and as such, when the stack
      randomization code added a random offset to the stack start, the stack
      effectively got smaller than what the user defined via rlimit_max(RLIMIT_STACK)
      which then sometimes leads to out-of-stack situations and crashes.
      
      This patch fixes it by adding the maximum possible amount of memory (based on
      STACK_RND_MASK) which theoretically could be added by the stack randomization
      code to the initial stack size. That way, the user-defined stack size is always
      guaranteed to be at minimum what is defined via rlimit_max(RLIMIT_STACK).
      
      This bug is currently not visible on the metag architecture, because on metag
      STACK_RND_MASK is defined to 0 which effectively disables stack randomization.
      
      The changes to fs/exec.c are inside an "#ifdef CONFIG_STACK_GROWSUP"
      section, so it does not affect other platformws beside those where the
      stack grows upwards (parisc and metag).
      Signed-off-by: NHelge Deller <deller@gmx.de>
      Cc: linux-parisc@vger.kernel.org
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: linux-metag@vger.kernel.org
      Cc: stable@vger.kernel.org # v3.16+
      d045c77c
    • J
      ARM: EXYNOS: Don't try to initialize suspend on old DT · e5cbec61
      Julien Grall 提交于
      Since commit 8b283c02 ("ARM: exynos4/5: convert pmu wakeup to
      stacked domains"), a suspend/resume is not supported on old DT.
      
      Although, rather than printing a warning and continue to boot, the
      kernel will segfault just after:
      
      ------------[ cut here ]------------
      
      WARNING: CPU: 1 PID: 1 at arch/arm/mach-exynos/suspend.c:726 exynos_pm_init+0x4c/0xc8()
      Modules linked in:
      CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.1.0-rc3 #1
      Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      [<c02181c4>] (unwind_backtrace) from [<c0213b2c>] (show_stack+0x10/0x14)
      [<c0213b2c>] (show_stack) from [<c0949890>] (dump_stack+0x70/0x8c)
      [<c0949890>] (dump_stack) from [<c024f0b0>] (warn_slowpath_common+0x74/0xac)
      [<c024f0b0>] (warn_slowpath_common) from [<c024f104>] (warn_slowpath_null+0x1c/0x24)
      [<c024f104>] (warn_slowpath_null) from [<c0cf1d28>] (exynos_pm_init+0x4c/0xc8)
      [<c0cf1d28>] (exynos_pm_init) from [<c0ceaae8>] (init_machine_late+0x1c/0x28)
      [<c0ceaae8>] (init_machine_late) from [<c020aa64>] (do_one_initcall+0x80/0x1d0)
      [<c020aa64>] (do_one_initcall) from [<c0ce8d4c>] (kernel_init_freeable+0x10c/0x1d8)
      [<c0ce8d4c>] (kernel_init_freeable) from [<c0944a2c>] (kernel_init+0x8/0xe4)
      [<c0944a2c>] (kernel_init) from [<c0210e60>] (ret_from_fork+0x14/0x34)
      ---[ end trace 335bd937d409f3c7 ]---
      Outdated DT detected, suspend/resume will NOT work
      Unable to handle kernel NULL pointer dereference at virtual address 00000608
      pgd = c0204000
      [00000608] *pgd=00000000
      Internal error: Oops: 5 [#1] SMP ARM
      Modules linked in:
      CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W       4.1.0-rc3 #1
      Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      task: db06c000 ti: db05a000 task.ti: db05a000
      PC is at exynos_pm_init+0x6c/0xc8
      LR is at exynos_pm_init+0x54/0xc8
      pc : [<c0cf1d48>]    lr : [<c0cf1d30>]    psr: 60000113
      sp : db05bee8  ip : 00000000  fp : 00000000
      r10: 00000116  r9 : c0dab2d4  r8 : d8d5f440
      r7 : c0db7ad8  r6 : c0db7ad8  r5 : 00000000  r4 : c0ceaacc
      r3 : c0eb2aec  r2 : c0951e40  r1 : 00000000  r0 : c0eb2acc
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c5387d  Table: 6020406a  DAC: 00000015
      Process swapper/0 (pid: 1, stack limit = 0xdb05a220)
      Stack: (0xdb05bee8 to 0xdb05c000)
      bee0:                   c0db7ad8 c0d8fe34 c0cf17c8 c0ceaae8 00000000 c020aa64
      bf00: 00000033 c09580b8 db04fd00 c0ed79a4 c0eb1000 c0ce8588 c0ca2bc4 c0353fcc
      bf20: 00000000 c0df358c 60000113 00000000 dbfffba4 00000000 c0ca2bc4 c026654c
      bf40: c0b80134 c0ca1a64 00000007 00000007 c0df3554 c0d6c2f4 00000007 c0d6c2d4
      bf60: c0eb1000 c0ce8588 c0dab2d4 00000116 00000000 c0ce8d4c 00000007 00000007
      bf80: c0ce8588 c0944a24 00000000 c0944a24 00000000 00000000 00000000 00000000
      bfa0: 00000000 c0944a2c 00000000 c0210e60 00000000 00000000 00000000 00000000
      bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
      [<c0cf1d48>] (exynos_pm_init) from [<c0ceaae8>] (init_machine_late+0x1c/0x28)
      [<c0ceaae8>] (init_machine_late) from [<c020aa64>] (do_one_initcall+0x80/0x1d0)
      [<c020aa64>] (do_one_initcall) from [<c0ce8d4c>] (kernel_init_freeable+0x10c/0x1d8)
      [<c0ce8d4c>] (kernel_init_freeable) from [<c0944a2c>] (kernel_init+0x8/0xe4)
      [<c0944a2c>] (kernel_init) from [<c0210e60>] (ret_from_fork+0x14/0x34)
      Code: e59f005c e59220c0 e5901000 e5832000 (e591e608)
      ---[ end trace 335bd937d409f3c8 ]---
      
      This is happening because pmu_base_addr is only initialized when the
      PMU is an interrupt controller. It's not the case on old DT.
      Signed-off-by: NJulien Grall <julien.grall@citrix.com>
      Signed-off-by: NKukjin Kim <kgene@kernel.org>
      e5cbec61
    • J
      ARM: dts: Add keep-power-in-suspend to WiFi SDIO node for Peach Boards · b2706879
      Javier Martinez Canillas 提交于
      The Marvell mwifiex driver prevents the system to enter into a suspend
      state if the card power is not preserved during a suspend/resume cycle.
      
      So Suspend-to-RAM and Suspend-to-idle is failing on Exynos5800 Peach Pi
      and Exynos5420 Peach Pit Chromebooks.
      
      Add the keep-power-in-suspend Power Management property to the SDIO/MMC
      node so the mwifiex suspend handler doesn't fail and the system is able
      to enter into a suspend state.
      Signed-off-by: NJavier Martinez Canillas <javier.martinez@collabora.co.uk>
      Reviewed-by: NDoug Anderson <dianders@chromium.org>
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: NKukjin Kim <kgene@kernel.org>
      b2706879
    • P
      MIPS: fix FP mode selection in lieu of .MIPS.abiflags data · 620b1550
      Paul Burton 提交于
      Commit 46490b57 ("MIPS: kernel: elf: Improve the overall ABI and FPU
      mode checks") reworked the ELF FP ABI mode selection logic, but when
      CONFIG_MIPS_O32_FP64_SUPPORT is enabled it breaks the use of binaries
      which have no PT_MIPS_ABIFLAGS program header & associated
      .MIPS.abiflags section.
      
      A default mode is selected based upon whether the ELF contains MIPS32 or
      MIPS64 code, but that selection is made in arch_elf_pt_proc.
      arch_elf_pt_proc only executes when a PT_MIPS_ABIFLAGS program header is
      found. If one is not found then arch_elf_pt_proc is never called, and no
      default overall_fp_mode value is selected. When arch_check_elf is
      called, both abi0 & abi1 are MIPS_ABI_FP_UNKNOWN which leads to both
      prog_req & interp_req being set to none_req. none_req matches none of
      the conditions for mode selection at the end of arch_check_elf, so
      overall_fp_mode is left untouched. Finally once mips_set_personality_fp
      is called the BUG() in the default case is then hit & the kernel likely
      panics.
      
      Fix this by moving the selection of a default overall mode to the start
      of arch_check_elf, which runs once per ELF executed regardless of
      whether it has a PT_MIPS_ABIFLAGS program header.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Cc: stable@vger.kernel.org # v4.0+
      Patchwork: http://patchwork.linux-mips.org/patch/9978/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      620b1550
  10. 12 5月, 2015 11 次提交
    • W
      arm64: perf: fix memory leak when probing PMU PPIs · 4801ba33
      Will Deacon 提交于
      Commit d795ef9a ("arm64: perf: don't warn about missing
      interrupt-affinity property for PPIs") added a check for PPIs so that
      we avoid parsing the interrupt-affinity property for these naturally
      affine interrupts.
      
      Unfortunately, this check can trigger an early (successful) return and
      we will leak the irqs array. This patch fixes the issue by reordering
      the code so that the check is performed before any independent
      allocation.
      Reported-by: NDavid Binderman <dcb314@hotmail.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      4801ba33
    • H
      ARM: gemini: fix compiler warning due wrong data type · 31fc835f
      Hans Ulli Kroll 提交于
      This patch fixes a compiler warning in gemini_restart()
      issued by commit 7b6d864b ("reboot:arm: reboot_mode
      changes from char to enum reboot_mode").
      
      arch/arm/mach-gemini/board-rut1xx.c:93:2: warning: initialization from incompatible pointer type
      
      The warning is harmless, and the patch does not need to
      be backported to stable kernels.
      
      Fixes: 7b6d864b ("reboot:arm: reboot_mode changes from char to enum reboot_mode.")
      Signed-off-by: NHans Ulli Kroll <ulli.kroll@googlemail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      31fc835f
    • S
      ARM: vexpress/tc2: Add interrupt-affinity to the PMU node · 51ef519c
      Sudeep Holla 提交于
      Commit 9fd85eb5 ("ARM: pmu: add support for interrupt-affinity
      property") added an optional "interrupt-affinity" property, to specify
      the CPU affinity for each SPI listed in the interrupts property.
      
      Without this property, we get this boot warning:
      
        CPU PMU: Failed to parse <no-node>/interrupt-affinity[0]
      
      This patch adds interrupt-affinity to the PMU node in the
      vexpress-ca15_a7(a.k.a TC2) device tree.
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      51ef519c
    • R
      ARM: vexpress/ca9: Add interrupt-affinity to the PMU node · 613880a1
      Robert Schwebel 提交于
      Commit 9fd85eb5 ("ARM: pmu: add support for interrupt-affinity
      property") added an optional "interrupt-affinity" property, to specify
      the CPU affinity for each SPI listed in the interrupts property.
      
      Without this property, we get this boot warning:
      
        CPU PMU: Failed to parse <no-node>/interrupt-affinity[0]
      
      This patch adds interrupt-affinity to the PMU node in the
      vexpress-v2p-ca9 device tree.
      Signed-off-by: NRobert Schwebel <r.schwebel@pengutronix.de>
      Acked-by: NSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      613880a1
    • R
      ARM: vexpress/ca9: Add unified-cache property to l2 cache node · 2004f98a
      Robert Schwebel 提交于
      Commit d9d1f3e2 ("ARM: l2c: check that DT files specify the required
      "cache-unified" property") mandates to specify this required property.
      Without this property, we get this boot warning:
      
      "L2C: device tree omits to specify unified cache"
      
      This patch adds "cache-unified" property to L2 cache node in vexpress
      CA9 device tree.
      Signed-off-by: NRobert Schwebel <r.schwebel@pengutronix.de>
      Acked-by: NSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      2004f98a
    • S
      ARM64: juno: add sp810 support and fix sp804 clock frequency · 3bb1555c
      Sudeep Holla 提交于
      The clock generator in IOFPGA generates the two source clocks: 32kHz and
      1MHz for the SP810 System Controller.
      
      The SP810 System Controller selects 32kHz or 1MHz as the sources for
      TIM_CLK[3:0], the SP804 timer clocks. The powerup default is 32kHz but
      the maximum of "refclk" and "timclk" is chosen by the SP810 driver.
      
      This patch adds support for SP810 system controller and also fixes the
      SP804 timer clock frequency.
      
      However the SP804 driver needs to be enabled on ARM64 to test this,
      which requires SP804 driver to be moved out of arch/arm.
      
      Fixes: 71f867ec ("arm64: Add Juno board device tree.")
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Olof Johansson <olof@lixom.net>
      Acked-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      3bb1555c
    • D
      powerpc/mce: fix off by one errors in mce event handling · ffb2d78e
      Daniel Axtens 提交于
      Before 69111bac ("powerpc: Replace __get_cpu_var uses"), in
      save_mce_event, index got the value of mce_nest_count, and
      mce_nest_count was incremented *after* index was set.
      
      However, that patch changed the behaviour so that mce_nest count was
      incremented *before* setting index.
      
      This causes an off-by-one error, as get_mce_event sets index as
      mce_nest_count - 1 before reading mce_event.  Thus get_mce_event reads
      bogus data, causing warnings like
      "Machine Check Exception, Unknown event version 0 !"
      and breaking MCEs handling.
      
      Restore the old behaviour and unbreak MCE handling by subtracting one
      from the newly incremented value.
      
      The same broken change occured in machine_check_queue_event (which set
      a queue read by machine_check_process_queued_event).  Fix that too,
      unbreaking printing of MCE information.
      
      Fixes: 69111bac ("powerpc: Replace __get_cpu_var uses")
      CC: stable@vger.kernel.org
      CC: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
      CC: Christoph Lameter <cl@linux.com>
      Signed-off-by: NDaniel Axtens <dja@axtens.net>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      ffb2d78e
    • R
      MIPS: SMP: Fix build error. · cafb45b2
      Ralf Baechle 提交于
        CC      arch/mips/kernel/smp.o
      arch/mips/kernel/smp.c: In function ‘start_secondary’:
      arch/mips/kernel/smp.c:149:2: error: passing argument 2 of ‘cpumask_set_cpu’ discards ‘volatile’ qualifier from pointer target type [-Werror]
        cpumask_set_cpu(cpu, &cpu_callin_map);
        ^
      In file included from ./arch/mips/include/asm/processor.h:14:0,
                       from ./arch/mips/include/asm/thread_info.h:15,
                       from include/linux/thread_info.h:54,
                       from include/asm-generic/preempt.h:4,
                       from arch/mips/include/generated/asm/preempt.h:1,
                       from include/linux/preempt.h:18,
                       from include/linux/interrupt.h:8,
                       from arch/mips/kernel/smp.c:24:
      include/linux/cpumask.h:272:91: note: expected ‘struct cpumask *’ but argument is of type ‘volatile struct cpumask_t *’
       static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)
                                                                                                 ^
      arch/mips/kernel/smp.c: In function ‘smp_prepare_boot_cpu’:
      arch/mips/kernel/smp.c:211:2: error: passing argument 2 of ‘cpumask_set_cpu’ discards ‘volatile’ qualifier from pointer target type [-Werror]
        cpumask_set_cpu(0, &cpu_callin_map);
        ^
      In file included from ./arch/mips/include/asm/processor.h:14:0,
                       from ./arch/mips/include/asm/thread_info.h:15,
                       from include/linux/thread_info.h:54,
                       from include/asm-generic/preempt.h:4,
                       from arch/mips/include/generated/asm/preempt.h:1,
                       from include/linux/preempt.h:18,
                       from include/linux/interrupt.h:8,
                       from arch/mips/kernel/smp.c:24:
      include/linux/cpumask.h:272:91: note: expected ‘struct cpumask *’ but argument is of type ‘volatile struct cpumask_t *’
       static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)
                                                                                                 ^
      arch/mips/kernel/smp.c: In function ‘__cpu_up’:
      arch/mips/kernel/smp.c:221:10: error: passing argument 2 of ‘cpumask_test_cpu’ discards ‘volatile’ qualifier from pointer target type [-Werror]
        while (!cpumask_test_cpu(cpu, &cpu_callin_map))
                ^
      In file included from ./arch/mips/include/asm/processor.h:14:0,
                       from ./arch/mips/include/asm/thread_info.h:15,
                       from include/linux/thread_info.h:54,
                       from include/asm-generic/preempt.h:4,
                       from arch/mips/include/generated/asm/preempt.h:1,
                       from include/linux/preempt.h:18,
                       from include/linux/interrupt.h:8,
                       from arch/mips/kernel/smp.c:24:
      include/linux/cpumask.h:294:90: note: expected ‘const struct cpumask *’ but argument is of type ‘volatile struct cpumask_t *’
       static inline int cpumask_test_cpu(int cpu, const struct cpumask *cpumask)
                                                                                                ^
      cc1: all warnings being treated as errors
      make[2]: *** [arch/mips/kernel/smp.o] Error 1
      make[1]: *** [arch/mips/kernel] Error 2
      make: *** [arch/mips] Error 2
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      cafb45b2
    • A
      powerpc/mm: Return NULL for not present hugetlb page · 7b868e81
      Aneesh Kumar K.V 提交于
      We need to check whether pte is present in follow_huge_addr() and
      properly return NULL if mapping is not present. Also use READ_ONCE
      when dereferencing pte_t address.
      
      Without this patch, we may wrongly return a zero pfn page in
      follow_huge_addr().
      Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      7b868e81
    • A
      powerpc/thp: Serialize pmd clear against a linux page table walk. · 13bd817b
      Aneesh Kumar K.V 提交于
      Serialize against find_linux_pte_or_hugepte() which does lock-less
      lookup in page tables with local interrupts disabled. For huge pages it
      casts pmd_t to pte_t. Since the format of pte_t is different from pmd_t
      we want to prevent transit from pmd pointing to page table to pmd
      pointing to huge page (and back) while interrupts are disabled.  We
      clear pmd to possibly replace it with page table pointer in different
      code paths. So make sure we wait for the parallel
      find_linux_pte_or_hugepage() to finish.
      
      Without this patch, a find_linux_pte_or_hugepte() running in parallel to
      __split_huge_zero_page_pmd() or do_huge_pmd_wp_page_fallback() or
      zap_huge_pmd() can run into the above issue. With
      __split_huge_zero_page_pmd() and do_huge_pmd_wp_page_fallback() we clear
      the hugepage pte before inserting the pmd entry with a regular pgtable
      address. Such a clear need to wait for the parallel
      find_linux_pte_or_hugepte() to finish.
      
      With zap_huge_pmd(), we can run into issues, with a hugepage pte getting
      zapped due to a MADV_DONTNEED while other cpu fault it in as small
      pages.
      Reported-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Reviewed-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      13bd817b
    • T
      ARM: OMAP2+: Remove bogus struct clk comparison for timer clock · b0897972
      Tony Lindgren 提交于
      With recent changes to use determine_rate, the comparison of two
      clocks won't work without clk_is_match that does __clk_get_hw
      on the clocks first.
      
      As we've been unconditionally already calling clk_set_parent
      already because of the bogus comparison, let's just remove the
      check as suggested by Stephen Boyd <sboyd@codeaurora.org>.
      
      Cc: Michael Turquette <mturquette@linaro.org>
      Cc: Paul Walmsley <paul@pwsan.com>
      Cc: Tero Kristo <t-kristo@ti.com>
      Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
      Acked-by: NStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      b0897972