12 Feb, 2014

3 commits

  • Pull microblaze fixes from Michal Simek:
    - Fix two compilation issues - HZ, readq/writeq
    - Fix stack protection support

    * tag 'microblaze-3.14-rc3' of git://git.monstr.eu/linux-2.6-microblaze:
    microblaze: Fix a typo when disabling stack protection
    microblaze: Define readq and writeq IO helper function
    microblaze: Fix missing HZ macro

    Linus Torvalds
     
  • Pull s390 bugfixes from Martin Schwidefsky:
    "A collection a bug fixes. Most of them are minor but two of them are
    more severe. The linkage stack bug can be used by user space to force
    an oops, with panic_on_oops this is a denial-of-service. And the dump
    memory detection issue can cause incomplete memory dumps"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/cio: improve cio_commit_config
    s390: fix kernel crash due to linkage stack instructions
    s390/dump: Fix dump memory detection
    s390/appldata: restore missing init_virt_timer()
    s390/qdio: correct program-controlled interruption checking
    s390/qdio: for_each macro correctness

    Linus Torvalds
     
  • Pull networking updates from David Miller:

    1) Fix flexcan build on big endian, from Arnd Bergmann

    2) Correctly attach cpsw to GPIO bitbang MDIO drive, from Stefan Roese

    3) udp_add_offload has to use GFP_ATOMIC since it can be invoked from
    non-sleepable contexts. From Or Gerlitz

    4) vxlan_gro_receive() does not iterate over all possible flows
    properly, fix also from Or Gerlitz

    5) CAN core doesn't use a proper SKB destructor when it hooks up
    sockets to SKBs. Fix from Oliver Hartkopp

    6) ip_tunnel_xmit() can use an uninitialized route pointer, fix from
    Eric Dumazet

    7) Fix address family assignment in IPVS, from Michal Kubecek

    8) Fix ath9k build on ARM, from Sujith Manoharan

    9) Make sure fail_over_mac only applies for the correct bonding modes,
    from Ding Tianhong

    10) The udp offload code doesn't use RCU correctly, from Shlomo Pongratz

    11) Handle gigabit features properly in generic PHY code, from Florian
    Fainelli

    12) Don't blindly invoke link operations in
    rtnl_link_get_slave_info_data_size, they are optional. Fix from
    Fernando Luis Vazquez Cao

    13) Add USB IDs for Netgear Aircard 340U, from Bjørn Mork

    14) Handle netlink packet padding properly in openvswitch, from Thomas
    Graf

    15) Fix oops when deleting chains in nf_tables, from Patrick McHardy

    16) Fix RX stalls in xen-netback driver, from Zoltan Kiss

    17) Fix deadlock in mac80211 stack, from Emmanuel Grumbach

    18) inet_nlmsg_size() forgets to consider ifa_cacheinfo, fix from Geert
    Uytterhoeven

    19) tg3_change_mtu() can deadlock, fix from Nithin Sujir

    20) Fix regression in setting SCTP local source addresses on accepted
    sockets, caused by some generic ipv6 socket changes. Fix from
    Matija Glavinic Pecotic

    21) IPPROTO_* must be pure defines, otherwise module aliases don't get
    constructed properly. Fix from Jan Moskyto

    22) IPV6 netconsole setup doesn't work properly unless an explicit
    source address is specified, fix from Sabrina Dubroca

    23) Use __GFP_NORETRY for high order skb page allocations in
    sock_alloc_send_pskb and skb_page_frag_refill. From Eric Dumazet

    24) Fix a regression added in netconsole over bridging, from Cong Wang

    25) TCP uses an artificial offset of 1ms for SRTT, but this doesn't jive
    well with TCP pacing which needs the SRTT to be accurate. Fix from
    Eric Dumazet

    26) Several cases of missing header file includes from Rashika Kheria

    27) Add ZTE MF667 device ID to qmi_wwan driver, from Raymond Wanyoike

    28) TCP Small Queues doesn't handle nonagle properly in some corner
    cases, fix from Eric Dumazet

    29) Remove extraneous read_unlock in bond_enslave, whoops. From Ding
    Tianhong

    30) Fix 9p trans_virtio handling of vmalloc buffers, from Richard Yao

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (136 commits)
    6lowpan: fix lockdep splats
    alx: add missing stats_lock spinlock init
    9p/trans_virtio.c: Fix broken zero-copy on vmalloc() buffers
    bonding: remove unwanted bond lock for enslave processing
    USB2NET : SR9800 : One chip USB2.0 USB2NET SR9800 Device Driver Support
    tcp: tsq: fix nonagle handling
    bridge: Prevent possible race condition in br_fdb_change_mac_address
    bridge: Properly check if local fdb entry can be deleted when deleting vlan
    bridge: Properly check if local fdb entry can be deleted in br_fdb_delete_by_port
    bridge: Properly check if local fdb entry can be deleted in br_fdb_change_mac_address
    bridge: Fix the way to check if a local fdb entry can be deleted
    bridge: Change local fdb entries whenever mac address of bridge device changes
    bridge: Fix the way to find old local fdb entries in br_fdb_change_mac_address
    bridge: Fix the way to insert new local fdb entries in br_fdb_changeaddr
    bridge: Fix the way to find old local fdb entries in br_fdb_changeaddr
    tcp: correct code comment stating 3 min timeout for FIN_WAIT2, we only do 1 min
    net: vxge: Remove unused device pointer
    net: qmi_wwan: add ZTE MF667
    3c59x: Remove unused pointer in vortex_eisa_cleanup()
    net: fix 'ip rule' iif/oif device rename
    ...

    Linus Torvalds
     

11 Feb, 2014

1 commit

  • Steven Noonan forwarded a users report where they had a problem starting
    vsftpd on a Xen paravirtualized guest, with this in dmesg:

    BUG: Bad page map in process vsftpd pte:8000000493b88165 pmd:e9cc01067
    page:ffffea00124ee200 count:0 mapcount:-1 mapping: (null) index:0x0
    page flags: 0x2ffc0000000014(referenced|dirty)
    addr:00007f97eea74000 vm_flags:00100071 anon_vma:ffff880e98f80380 mapping: (null) index:7f97eea74
    CPU: 4 PID: 587 Comm: vsftpd Not tainted 3.12.7-1-ec2 #1
    Call Trace:
    dump_stack+0x45/0x56
    print_bad_pte+0x22e/0x250
    unmap_single_vma+0x583/0x890
    unmap_vmas+0x65/0x90
    exit_mmap+0xc5/0x170
    mmput+0x65/0x100
    do_exit+0x393/0x9e0
    do_group_exit+0xcc/0x140
    SyS_exit_group+0x14/0x20
    system_call_fastpath+0x1a/0x1f
    Disabling lock debugging due to kernel taint
    BUG: Bad rss-counter state mm:ffff880e9ca60580 idx:0 val:-1
    BUG: Bad rss-counter state mm:ffff880e9ca60580 idx:1 val:1

    The issue could not be reproduced under an HVM instance with the same
    kernel, so it appears to be exclusive to paravirtual Xen guests. He
    bisected the problem to commit 1667918b6483 ("mm: numa: clear numa
    hinting information on mprotect") that was also included in 3.12-stable.

    The problem was related to how xen translates ptes because it was not
    accounting for the _PAGE_NUMA bit. This patch splits pte_present to add
    a pteval_present helper for use by xen so both bare metal and xen use
    the same code when checking if a PTE is present.

    [mgorman@suse.de: wrote changelog, proposed minor modifications]
    [akpm@linux-foundation.org: fix typo in comment]
    Reported-by: Steven Noonan
    Tested-by: Steven Noonan
    Signed-off-by: Elena Ufimtseva
    Signed-off-by: Mel Gorman
    Reviewed-by: David Vrabel
    Acked-by: Konrad Rzeszutek Wilk
    Cc: [3.12+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mel Gorman
     

10 Feb, 2014

3 commits


09 Feb, 2014

1 commit

  • Pull x86 fixes from Peter Anvin:
    "Quite a varied little collection of fixes. Most of them are
    relatively small or isolated; the biggest one is Mel Gorman's fixes
    for TLB range flushing.

    A couple of AMD-related fixes (including not crashing when given an
    invalid microcode image) and fix a crash when compiled with gcov"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, microcode, AMD: Unify valid container checks
    x86, hweight: Fix BUG when booting with CONFIG_GCOV_PROFILE_ALL=y
    x86/efi: Allow mapping BGRT on x86-32
    x86: Fix the initialization of physnode_map
    x86, cpu hotplug: Fix stack frame warning in check_irq_vectors_for_cpu_disable()
    x86/intel/mid: Fix X86_INTEL_MID dependencies
    arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT
    mm, x86: Revisit tlb_flushall_shift tuning for page flushes except on IvyBridge
    x86: mm: change tlb_flushall_shift for IvyBridge
    x86/mm: Eliminate redundant page table walk during TLB range flushing
    x86/mm: Clean up inconsistencies when flushing TLB ranges
    mm, x86: Account for TLB flushes only when debugging
    x86/AMD/NB: Fix amd_set_subcaches() parameter type
    x86/quirks: Add workaround for AMD F16h Erratum792
    x86, doc, kconfig: Fix dud URL for Microcode data

    Linus Torvalds
     

08 Feb, 2014

6 commits

  • Pull arm64 fixes from Catalin Marinas:
    - Relax VDSO alignment requirements so that the kernel-picked one (4K)
    does not conflict with the dynamic linker's one (64K)
    - VDSO gettimeofday fix
    - Barrier fixes for atomic operations and cache flushing
    - TLB invalidation when overriding early page mappings during boot
    - Wired up new 32-bit arm (compat) syscalls
    - LSM_MMAP_MIN_ADDR when COMPAT is enabled
    - defconfig update
    - Clean-up (comments, pgd_alloc).

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: defconfig: Expand default enabled features
    arm64: asm: remove redundant "cc" clobbers
    arm64: atomics: fix use of acquire + release for full barrier semantics
    arm64: barriers: allow dsb macro to take option parameter
    security: select correct default LSM_MMAP_MIN_ADDR on arm on arm64
    arm64: compat: Wire up new AArch32 syscalls
    arm64: vdso: update wtm fields for CLOCK_MONOTONIC_COARSE
    arm64: vdso: fix coarse clock handling
    arm64: simplify pgd_alloc
    arm64: fix typo: s/SERRROR/SERROR/
    arm64: Invalidate the TLB when replacing pmd entries during boot
    arm64: Align CMA sizes to PAGE_SIZE
    arm64: add DSB after icache flush in __flush_icache_all()
    arm64: vdso: prevent ld from aligning PT_LOAD segments to 64k

    Linus Torvalds
     
  • Pull MIPS updates from Ralf Baechle:
    "hree minor patches. All have sat in -next for a few days"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: fpu.h: Fix build when CONFIG_BUG is not set
    MIPS: Wire up sched_setattr/sched_getattr syscalls
    MIPS: Alchemy: Fix DB1100 GPIO registration

    Linus Torvalds
     
  • * Avoid WARN_ON() when mapping BGRT on Baytrail (EFI 32-bit).

    Signed-off-by: H. Peter Anvin

    H. Peter Anvin
     
  • FPGA implementations of the Cortex-A57 and Cortex-A53 are now available
    in the form of the SMM-A57 and SMM-A53 Soft Macrocell Models (SMMs) for
    Versatile Express. As these attach to a Motherboard Express V2M-P1 it
    would be useful to have support for some V2M-P1 peripherals enabled by
    default.

    Additionally a couple of of features have been introduced since the last
    defconfig update (CMA, jump labels) that would be good to have enabled
    by default to ensure they are build and boot tested.

    This patch updates the arm64 defconfig to enable support for these
    devices and features. The arm64 Kconfig is modified to select
    HAVE_PATA_PLATFORM, which is required to enable support for the
    CompactFlash controller on the V2M-P1.

    A few options which don't need to appear in defconfig are trimmed:

    * BLK_DEV - selected by default
    * EXPERIMENTAL - otherwise gone from the kernel
    * MII - selected by drivers which require it
    * USB_SUPPORT - selected by default

    Signed-off-by: Mark Rutland
    Signed-off-by: Catalin Marinas

    Mark Rutland
     
  • cbnz/tbnz don't update the condition flags, so remove the "cc" clobbers
    from inline asm blocks that only use these instructions to implement
    conditional branches.

    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     
  • Linux requires a number of atomic operations to provide full barrier
    semantics, that is no memory accesses after the operation can be
    observed before any accesses up to and including the operation in
    program order.

    On arm64, these operations have been incorrectly implemented as follows:

    // A, B, C are independent memory locations

    // atomic_op (B)
    1: ldaxr x0, [B] // Exclusive load with acquire

    stlxr w1, x0, [B] // Exclusive store with release
    cbnz w1, 1b

    The assumption here being that two half barriers are equivalent to a
    full barrier, so the only permitted ordering would be A -> B -> C
    (where B is the atomic operation involving both a load and a store).

    Unfortunately, this is not the case by the letter of the architecture
    and, in fact, the accesses to A and C are permitted to pass their
    nearest half barrier resulting in orderings such as Bl -> A -> C -> Bs
    or Bl -> C -> A -> Bs (where Bl is the load-acquire on B and Bs is the
    store-release on B). This is a clear violation of the full barrier
    requirement.

    The simple way to fix this is to implement the same algorithm as ARMv7
    using explicit barriers:

    // atomic_op (B)
    dmb ish // Full barrier
    1: ldxr x0, [B] // Exclusive load

    stxr w1, x0, [B] // Exclusive store
    cbnz w1, 1b
    dmb ish // Full barrier

    but this has the undesirable effect of introducing *two* full barrier
    instructions. A better approach is actually the following, non-intuitive
    sequence:

    // atomic_op (B)
    1: ldxr x0, [B] // Exclusive load

    stlxr w1, x0, [B] // Exclusive store with release
    cbnz w1, 1b
    dmb ish // Full barrier

    The simple observations here are:

    - The dmb ensures that no subsequent accesses (e.g. the access to C)
    can enter or pass the atomic sequence.

    - The dmb also ensures that no prior accesses (e.g. the access to A)
    can pass the atomic sequence.

    - Therefore, no prior access can pass a subsequent access, or
    vice-versa (i.e. A is strictly ordered before C).

    - The stlxr ensures that no prior access can pass the store component
    of the atomic operation.

    The only tricky part remaining is the ordering between the ldxr and the
    access to A, since the absence of the first dmb means that we're now
    permitting re-ordering between the ldxr and any prior accesses.

    From an (arbitrary) observer's point of view, there are two scenarios:

    1. We have observed the ldxr. This means that if we perform a store to
    [B], the ldxr will still return older data. If we can observe the
    ldxr, then we can potentially observe the permitted re-ordering
    with the access to A, which is clearly an issue when compared to
    the dmb variant of the code. Thankfully, the exclusive monitor will
    save us here since it will be cleared as a result of the store and
    the ldxr will retry. Notice that any use of a later memory
    observation to imply observation of the ldxr will also imply
    observation of the access to A, since the stlxr/dmb ensure strict
    ordering.

    2. We have not observed the ldxr. This means we can perform a store
    and influence the later ldxr. However, that doesn't actually tell
    us anything about the access to [A], so we've not lost anything
    here either when compared to the dmb variant.

    This patch implements this solution for our barriered atomic operations,
    ensuring that we satisfy the full barrier requirements where they are
    needed.

    Cc:
    Cc: Peter Zijlstra
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     

07 Feb, 2014

4 commits

  • Switch the device tree to the new compatibles introduced in the ethernet and
    mdio drivers to have a common pattern accross all Allwinner SoCs.

    Signed-off-by: Maxime Ripard
    Signed-off-by: David S. Miller

    Maxime Ripard
     
  • The following path will cause array out of bound.

    memblock_add_region() will always set nid in memblock.reserved to
    MAX_NUMNODES. In numa_register_memblks(), after we set all nid to
    correct valus in memblock.reserved, we called setup_node_data(), and
    used memblock_alloc_nid() to allocate memory, with nid set to
    MAX_NUMNODES.

    The nodemask_t type can be seen as a bit array. And the index is 0 ~
    MAX_NUMNODES-1.

    After that, when we call node_set() in numa_clear_kernel_node_hotplug(),
    the nodemask_t got an index of value MAX_NUMNODES, which is out of [0 ~
    MAX_NUMNODES-1].

    See below:

    numa_init()
    |---> numa_register_memblks()
    | |---> memblock_set_node(memory) set correct nid in memblock.memory
    | |---> memblock_set_node(reserved) set correct nid in memblock.reserved
    | |......
    | |---> setup_node_data()
    | |---> memblock_alloc_nid() here, nid is set to MAX_NUMNODES (1024)
    |......
    |---> numa_clear_kernel_node_hotplug()
    |---> node_set() here, we have an index 1024, and overflowed

    This patch moves nid setting to numa_clear_kernel_node_hotplug() to fix
    this problem.

    Reported-by: Dave Jones
    Signed-off-by: Tang Chen
    Tested-by: Gu Zheng
    Reported-by: Dave Jones
    Cc: David Rientjes
    Tested-by: Dave Jones
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tang Chen
     
  • On-stack variable numa_kernel_nodes in numa_clear_kernel_node_hotplug()
    was not initialized. So we need to initialize it.

    [akpm@linux-foundation.org: use NODE_MASK_NONE, per David]
    Signed-off-by: Tang Chen
    Tested-by: Gu Zheng
    Reported-by: Dave Jones
    Reported-by: David Rientjes
    Tested-by: Dave Jones
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tang Chen
     
  • For additional coverage, BorisO and friends unknowlingly did swap AMD
    microcode with Intel microcode blobs in order to see what happens. What
    did happen on 32-bit was

    [ 5.722656] BUG: unable to handle kernel paging request at be3a6008
    [ 5.722693] IP: [] load_microcode_amd+0x24/0x3f0
    [ 5.722716] *pdpt = 0000000000000000 *pde = 0000000000000000

    because there was a valid initrd there but without valid microcode in it
    and the container check happened *after* the relocated ramdisk handling
    on 32-bit, which was clearly wrong.

    While at it, take care of the ramdisk relocation on both 32- and 64-bit
    as it is done on both. Also, comment what we're doing because this code
    is a bit tricky.

    Reported-and-tested-by: Boris Ostrovsky
    Signed-off-by: Borislav Petkov
    Link: http://lkml.kernel.org/r/1391460104-7261-1-git-send-email-bp@alien8.de
    Signed-off-by: H. Peter Anvin

    Borislav Petkov
     

06 Feb, 2014

8 commits

  • __enable_fpu produces a build failure when CONFIG_BUG is not set:

    In file included from arch/mips/kernel/cpu-probe.c:24:0:
    arch/mips/include/asm/fpu.h: In function '__enable_fpu':
    arch/mips/include/asm/fpu.h:77:1: error: control reaches end of non-void function [-Werror=return-type]

    This is regression introduced in 3.14-rc1. Fix that.

    Signed-off-by: Aaro Koskinen
    Acked-by: Paul Burton
    Cc: John Crispin
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/6504/
    Signed-off-by: Ralf Baechle

    Aaro Koskinen
     
  • The dsb instruction takes an option specifying both the target access
    types and shareability domain.

    This patch allows such an option to be passed to the dsb macro,
    resulting in potentially more efficient code. Currently the option is
    ignored until all callers are updated (unlike ARM, the option is
    mandated by the assembler).

    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     
  • Pull Xen fixes from Konrad Rzeszutek Wilk:
    "Bug-fixes:
    - Revert "xen/grant-table: Avoid m2p_override during mapping" as it
    broke Xen ARM build.
    - Fix CR4 not being set on AP processors in Xen PVH mode"

    * tag 'stable/for-linus-3.14-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen/pvh: set CR4 flags for APs
    Revert "xen/grant-table: Avoid m2p_override during mapping"

    Linus Torvalds
     
  • Pull ia64 update from Tony Luck:
    "Wire up new sched_setattr and sched_getattr syscalls"

    * tag 'please-pull-ia64-syscalls' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
    [IA64] Wire up new sched_setattr and sched_getattr syscalls

    Linus Torvalds
     
  • Pull crypto fixes from Herbert Xu:
    "This fixes a number of concurrency issues on s390 where multiple users
    of the same crypto transform may clobber each other's results"

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: s390 - fix des and des3_ede ctr concurrency issue
    crypto: s390 - fix des and des3_ede cbc concurrency issue
    crypto: s390 - fix concurrency issue in aes-ctr mode

    Linus Torvalds
     
  • CONFIG_X86_32 doesn't map the boot services regions into the EFI memory
    map (see commit 700870119f49 ("x86, efi: Don't map Boot Services on
    i386")), and so efi_lookup_mapped_addr() will fail to return a valid
    address. Executing the ioremap() path in efi_bgrt_init() causes the
    following warning on x86-32 because we're trying to ioremap() RAM,

    WARNING: CPU: 0 PID: 0 at arch/x86/mm/ioremap.c:102 __ioremap_caller+0x2ad/0x2c0()
    Modules linked in:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.13.0-0.rc5.git0.1.2.fc21.i686 #1
    Hardware name: DellInc. Venue 8 Pro 5830/09RP78, BIOS A02 10/17/2013
    00000000 00000000 c0c0df08 c09a5196 00000000 c0c0df38 c0448c1e c0b41310
    00000000 00000000 c0b37bc1 00000066 c043bbfd c043bbfd 00e7dfe0 00073eff
    00073eff c0c0df48 c0448ce2 00000009 00000000 c0c0df9c c043bbfd 00078d88
    Call Trace:
    [] dump_stack+0x41/0x52
    [] warn_slowpath_common+0x7e/0xa0
    [] ? __ioremap_caller+0x2ad/0x2c0
    [] ? __ioremap_caller+0x2ad/0x2c0
    [] warn_slowpath_null+0x22/0x30
    [] __ioremap_caller+0x2ad/0x2c0
    [] ? acpi_tb_verify_table+0x1c/0x43
    [] ? acpi_get_table_with_size+0x63/0xb5
    [] ? efi_lookup_mapped_addr+0xe/0xf0
    [] ioremap_nocache+0x1b/0x20
    [] ? efi_bgrt_init+0x83/0x10c
    [] efi_bgrt_init+0x83/0x10c
    [] efi_late_init+0x8/0xa
    [] start_kernel+0x3ae/0x3c3
    [] ? repair_env_string+0x51/0x51
    [] i386_start_kernel+0x12e/0x131

    Switch to using early_memremap(), which won't trigger this warning, and
    has the added benefit of more accurately conveying what we're trying to
    do - map a chunk of memory.

    This patch addresses the following bug report,

    https://bugzilla.kernel.org/show_bug.cgi?id=67911

    Reported-by: Adam Williamson
    Cc: Josh Triplett
    Cc: Matthew Garrett
    Cc: Rafael J. Wysocki
    Signed-off-by: Matt Fleming

    Matt Fleming
     
  • It can take some time to validate the image, make sure
    {allyes|allmod}config doesn't enable it.

    I'd say randconfig will cover it often enough, and the failure is also
    borderline build coverage related: you cannot really make the decoder
    test fail via source level changes, only with changes in the build
    environment, so I agree with Andi that we can disable this one too.

    Signed-off-by: Ingo Molnar
    Acked-by: Paul Gortmaker paul.gortmaker@windriver.com>
    Suggested-and-acked-by: Andi Kleen andi@firstfloor.org>
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • This changes 'do_execve()' to get the executable name as a 'struct
    filename', and to free it when it is done. This is what the normal
    users want, and it simplifies and streamlines their error handling.

    The controlled lifetime of the executable name also fixes a
    use-after-free problem with the trace_sched_process_exec tracepoint: the
    lifetime of the passed-in string for kernel users was not at all
    obvious, and the user-mode helper code used UMH_WAIT_EXEC to serialize
    the pathname allocation lifetime with the execve() having finished,
    which in turn meant that the trace point that happened after
    mm_release() of the old process VM ended up using already free'd memory.

    To solve the kernel string lifetime issue, this simply introduces
    "getname_kernel()" that works like the normal user-space getname()
    function, except with the source coming from kernel memory.

    As Oleg points out, this also means that we could drop the tcomm[] array
    from 'struct linux_binprm', since the pathname lifetime now covers
    setup_new_exec(). That would be a separate cleanup.

    Reported-by: Igor Zhbanov
    Tested-by: Steven Rostedt
    Cc: Oleg Nesterov
    Cc: Al Viro
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

05 Feb, 2014

10 commits

  • This patch enables sys_compat, sys_finit_module, sys_sched_setattr and
    sys_sched_getattr for compat (AArch32) applications.

    Signed-off-by: Catalin Marinas

    Catalin Marinas
     
  • Update wall-to-monotonic fields in the VDSO data page
    unconditionally. These are used to service CLOCK_MONOTONIC_COARSE,
    which is not guarded by use_syscall.

    Signed-off-by: Nathan Lynch
    Acked-by: Will Deacon
    Cc:
    Signed-off-by: Catalin Marinas

    Nathan Lynch
     
  • When __kernel_clock_gettime is called with a CLOCK_MONOTONIC_COARSE or
    CLOCK_REALTIME_COARSE clock id, it returns incorrectly to whatever the
    caller has placed in x2 ("ret x2" to return from the fast path). Fix
    this by saving x30/LR to x2 only in code that will call
    __do_get_tspec, restoring x30 afterward, and using a plain "ret" to
    return from the routine.

    Also: while the resulting tv_nsec value for CLOCK_REALTIME and
    CLOCK_MONOTONIC must be computed using intermediate values that are
    left-shifted by cs_shift (x12, set by __do_get_tspec), the results for
    coarse clocks should be calculated using unshifted values
    (xtime_coarse_nsec is in units of actual nanoseconds). The current
    code shifts intermediate values by x12 unconditionally, but x12 is
    uninitialized when servicing a coarse clock. Fix this by setting x12
    to 0 once we know we are dealing with a coarse clock id.

    Signed-off-by: Nathan Lynch
    Acked-by: Will Deacon
    Cc:
    Signed-off-by: Catalin Marinas

    Nathan Lynch
     
  • Currently pgd_alloc has a redundant NULL check in its return path that
    can be removed with no ill effects. With that removed it's also possible
    to return early and eliminate the new_pgd temporary variable.

    This patch applies said modifications, making the logic of pgd_alloc
    correspond 1-1 with that of pgd_free.

    Signed-off-by: Mark Rutland
    Cc: Will Deacon
    Signed-off-by: Catalin Marinas

    Mark Rutland
     
  • Somehow SERROR has acquired an additional 'R' in a couple of headers.
    This patch removes them before they spread further. As neither instance
    is in use yet, no other sites need to be fixed up.

    Signed-off-by: Mark Rutland
    Acked-by: Marc Zyngier
    Signed-off-by: Catalin Marinas

    Mark Rutland
     
  • With the 64K page size configuration, __create_page_tables in head.S
    maps enough memory to get started but using 64K pages rather than 512M
    sections with a single pgd/pud/pmd entry pointing to a pte table.
    create_mapping() may override the pgd/pud/pmd table entry with a block
    (section) one if the RAM size is more than 512MB and aligned correctly.
    For the end of this block to be accessible, the old TLB entry must be
    invalidated.

    Cc:
    Reported-by: Mark Salter
    Tested-by: Mark Salter
    Signed-off-by: Catalin Marinas

    Catalin Marinas
     
  • dma_alloc_from_contiguous takes number of pages for a size.
    Align up the dma size passed in to page size to avoid truncation
    and allocation failures on sizes less than PAGE_SIZE.

    Cc: Will Deacon
    Signed-off-by: Laura Abbott
    Signed-off-by: Catalin Marinas

    Laura Abbott
     
  • Add DSB after icache flush to complete the cache maintenance operation.
    The function __flush_icache_all() is used only for user space mappings
    and an ISB is not required because of an exception return before executing
    user instructions. An exception return would behave like an ISB.

    Signed-off-by: Vinayak Kale
    Acked-by: Will Deacon
    Cc:
    Signed-off-by: Catalin Marinas

    Vinayak Kale
     
  • The kernel currently crashes with a low-address-protection exception
    if a user space process executes an instruction that tries to use the
    linkage stack. Set the base-ASTE origin and the subspace-ASTE origin
    of the dispatchable-unit-control-table to point to a dummy ASTE.
    Set up control register 15 to point to an empty linkage stack with no
    room left.

    A user space process with a linkage stack instruction will still crash
    but with a different exception which is correctly translated to a
    segmentation fault instead of a kernel oops.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Whilst the text segment for our VDSO is marked as PT_LOAD in the ELF
    headers, it is mapped by the kernel and not actually subject to
    demand-paging. ld doesn't realise this, and emits a p_align field of 64k
    (the maximum supported page size), which conflicts with the load address
    picked by the kernel on 4k systems, which will be 4k aligned. This
    causes GDB to fail with "Failed to read a valid object file image from
    memory" when attempting to load the VDSO.

    This patch passes the -n option to ld, which prevents it from aligning
    PT_LOAD segments to the maximum page size.

    Cc:
    Reported-by: Kyle McMartin
    Acked-by: Kyle McMartin
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     

04 Feb, 2014

4 commits

  • Dumps created by kdump or zfcpdump can contain invalid memory holes when
    dumping z/VM systems that have memory pressure.

    For example:

    # zgetdump -i /proc/vmcore.
    Memory map:
    0000000000000000 - 0000000000bfffff (12 MB)
    0000000000e00000 - 00000000014fffff (7 MB)
    000000000bd00000 - 00000000f3bfffff (3711 MB)

    The memory detection function find_memory_chunks() issues tprot to
    find valid memory chunks. In case of CMM it can happen that pages are
    marked as unstable via set_page_unstable() in arch_free_page().
    If z/VM has released that pages, tprot returns -EFAULT and indicates
    a memory hole.

    So fix this and switch off CMM in case of kdump or zfcpdump.

    Cc:
    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     
  • Wire up for MIPS the new sched_setattr and sched_getattr system calls
    added in commit d50dde5a10f3 (sched: Add new scheduler syscalls to
    support an extended scheduling parameters ABI) merged in v3.14-rc1.

    Signed-off-by: James Hogan
    Reviewed-by: Markos Chandras
    Cc: Ralf Baechle
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/6502/
    Signed-off-by: Ralf Baechle

    James Hogan
     
  • With CONFIG_GPIOLIB=y gpios need to be requested before they can be
    modified. Request the SD carddetect pins, and drop the SPI direction
    setup, as the driver does that for us anyway. This gets rid of a
    lot of WARN_ON()s triggered by GPIO core, and restores functionality
    of the touschreen controller.

    Signed-off-by: Manuel Lauss
    Cc: Linux-MIPS
    Patchwork: https://patchwork.linux-mips.org/patch/6497/
    Signed-off-by: Ralf Baechle

    Manuel Lauss
     
  • During bootup in the 'probe_page_size_mask' these CR4 flags are
    set in there. But for AP processors they are not set as we do not
    use 'secondary_startup_64' which the baremetal kernels uses.
    Instead do it in this function which we use in Xen PVH during our
    startup for AP processors.

    As such fix it up to make sure we have that flag set.

    Signed-off-by: Mukesh Rathor
    Signed-off-by: Konrad Rzeszutek Wilk

    Mukesh Rathor