23 Oct, 2015

1 commit

  • commit 8474ba74193d302e8340dddd1e16c85cc4b98caf upstream.

    Make sure the compiler does not modify arguments of syscall functions.
    This can happen if the compiler generates a tailcall to another
    function. For example, without asmlinkage_protect sys_openat is compiled
    into this function:

    sys_openat:
    clr.l %d0
    move.w 18(%sp),%d0
    move.l %d0,16(%sp)
    jbra do_sys_open

    Note how the fourth argument is modified in place, modifying the register
    %d4 that gets restored from this stack slot when the function returns to
    user-space. The caller may expect the register to be unmodified across
    system calls.

    Signed-off-by: Andreas Schwab
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Greg Kroah-Hartman

    Andreas Schwab
     

04 Aug, 2015

2 commits

  • commit d9ee489619744ee5ac246b8fb3dd65bb078d2f0a upstream.

    It is possible to disable the clock selection at configuration time,
    but for ColdFire targets we always expect a clock frequency to be
    selected. This results in the following compile time error:

    CC arch/m68k/kernel/asm-offsets.s
    In file included from ./arch/m68k/include/asm/timex.h:14:0,
    from include/linux/timex.h:65,
    from include/linux/sched.h:19,
    from arch/m68k/kernel/asm-offsets.c:14:
    ./arch/m68k/include/asm/coldfire.h:25:2: error: #error "Don't know what your ColdFire CPU clock frequency is??"

    Remove CONFIG_CLOCK_SELECT completely and always enable CONFIG_CLOCK_FREQ
    for ColdFire.

    Signed-off-by: Greg Ungerer
    Acked-by: Geert Uytterhoeven
    Cc: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Greg Ungerer
     
  • commit fa95a1dd0819c9041a873b10a6d83b5134964154 upstream.

    It would be nice if we could support multiple ColdFire SoC types in a
    single binary - but currently the code simply does not support it.
    Change the SoC selection config options to be a choice instead of
    individual selectable entries.

    This fixes problems with building allnoconfig, and means that a sane
    linux kernel is generated for a single ColdFire SoC type.

    Signed-off-by: Greg Ungerer
    Acked-by: Geert Uytterhoeven
    Cc: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Greg Ungerer
     

21 Apr, 2015

1 commit


16 Apr, 2015

1 commit

  • Pull exec domain removal from Richard Weinberger:
    "This series removes execution domain support from Linux.

    The idea behind exec domains was to support different ABIs. The
    feature was never complete nor stable. Let's rip it out and make the
    kernel signal handling code less complicated"

    * 'exec_domain_rip_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc: (27 commits)
    arm64: Removed unused variable
    sparc: Fix execution domain removal
    Remove rest of exec domains.
    arch: Remove exec_domain from remaining archs
    arc: Remove signal translation and exec_domain
    xtensa: Remove signal translation and exec_domain
    xtensa: Autogenerate offsets in struct thread_info
    x86: Remove signal translation and exec_domain
    unicore32: Remove signal translation and exec_domain
    um: Remove signal translation and exec_domain
    tile: Remove signal translation and exec_domain
    sparc: Remove signal translation and exec_domain
    sh: Remove signal translation and exec_domain
    s390: Remove signal translation and exec_domain
    mn10300: Remove signal translation and exec_domain
    microblaze: Remove signal translation and exec_domain
    m68k: Remove signal translation and exec_domain
    m32r: Remove signal translation and exec_domain
    m32r: Autogenerate offsets in struct thread_info
    frv: Remove signal translation and exec_domain
    ...

    Linus Torvalds
     

15 Apr, 2015

1 commit


14 Apr, 2015

1 commit

  • Pull PCI changes from Bjorn Helgaas:
    "Enumeration
    - Read capability list as dwords, not bytes (Sean O. Stalley)

    Resource management
    - Don't check for PNP overlaps with unassigned PCI BARs (Bjorn Helgaas)
    - Mark invalid BARs as unassigned (Bjorn Helgaas)
    - Show driver, BAR#, and resource on pci_ioremap_bar() failure (Bjorn Helgaas)
    - Fail pci_ioremap_bar() on unassigned resources (Bjorn Helgaas)
    - Assign resources before drivers claim devices (Yijing Wang)
    - Claim bus resources before pci_bus_add_devices() (Yijing Wang)

    Power management
    - Optimize device state transition delays (Aaron Lu)
    - Don't clear ASPM bits when the FADT declares it's unsupported (Matthew Garrett)

    Virtualization
    - Add ACS quirks for Intel 1G NICs (Alex Williamson)

    IOMMU
    - Add ptr to OF node arg to of_iommu_configure() (Murali Karicheri)
    - Move of_dma_configure() to device.c to help re-use (Murali Karicheri)
    - Fix size when dma-range is not used (Murali Karicheri)
    - Add helper functions pci_get[put]_host_bridge_device() (Murali Karicheri)
    - Add of_pci_dma_configure() to update DMA configuration (Murali Karicheri)
    - Update DMA configuration from DT (Murali Karicheri)
    - dma-mapping: limit IOMMU mapping size (Murali Karicheri)
    - Calculate device DMA masks based on DT dma-range size (Murali Karicheri)

    ARM Versatile host bridge driver
    - Check for devm_ioremap_resource() failures (Jisheng Zhang)

    Broadcom iProc host bridge driver
    - Add Broadcom iProc PCIe driver (Ray Jui)

    Marvell MVEBU host bridge driver
    - Add suspend/resume support (Thomas Petazzoni)

    Renesas R-Car host bridge driver
    - Fix position of MSI enable bit (Nobuhiro Iwamatsu)
    - Write zeroes to reserved PCIEPARL bits (Nobuhiro Iwamatsu)
    - Change PCIEPARL and PCIEPARH to PCIEPALR and PCIEPAUR (Nobuhiro Iwamatsu)
    - Verify that mem_res is 64K-aligned (Nobuhiro Iwamatsu)

    Samsung Exynos host bridge driver
    - Fix INTx enablement statement termination error (Jaehoon Chung)

    Miscellaneous
    - Make a shareable UUID for PCI firmware ACPI _DSM (Aaron Lu)
    - Clarify policy for vendor IDs in pci.txt (Michael S. Tsirkin)"

    * tag 'pci-v4.1-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (36 commits)
    PCI: Read capability list as dwords, not bytes
    PCI: layerscape: Simplify platform_get_resource_byname() failure checking
    PCI: keystone: Don't dereference possible NULL pointer
    PCI: versatile: Check for devm_ioremap_resource() failures
    PCI: Don't clear ASPM bits when the FADT declares it's unsupported
    PCI: Clarify policy for vendor IDs in pci.txt
    PCI/ACPI: Optimize device state transition delays
    PCI: Export pci_find_host_bridge() for use inside PCI core
    PCI: Make a shareable UUID for PCI firmware ACPI _DSM
    PCI: Fix typo in Thunderbolt kernel message
    PCI: exynos: Fix INTx enablement statement termination error
    PCI: iproc: Add Broadcom iProc PCIe support
    PCI: iproc: Add DT docs for Broadcom iProc PCIe driver
    PCI: Export symbols required for loadable host driver modules
    PCI: Add ACS quirks for Intel 1G NICs
    PCI: mvebu: Add suspend/resume support
    PCI: Cleanup control flow
    sparc/PCI: Claim bus resources before pci_bus_add_devices()
    PCI: Assign resources before drivers claim devices (pci_scan_root_bus())
    PCI: Fail pci_ioremap_bar() on unassigned resources
    ...

    Linus Torvalds
     

13 Apr, 2015

1 commit


30 Mar, 2015

4 commits


24 Mar, 2015

1 commit


15 Mar, 2015

4 commits


13 Mar, 2015

1 commit

  • Previously, pci_scan_bus() created a root PCI bus, enumerated the devices
    on it, and called pci_bus_add_devices(), which made the devices available
    for drivers to claim them.

    Most callers assigned resources to devices after pci_scan_bus() returns,
    which may be after drivers have claimed the devices. This is incorrect;
    the PCI core should not change device resources while a driver is managing
    the device.

    Remove pci_bus_add_devices() from pci_scan_bus() and do it after any
    resource assignment in the callers.

    [bhelgaas: changelog, check for failure in mcf_pci_init()]
    Signed-off-by: Yijing Wang
    Signed-off-by: Bjorn Helgaas
    CC: "David S. Miller"
    CC: Geert Uytterhoeven
    CC: Guan Xuetao
    CC: Richard Henderson
    CC: Ivan Kokshaysky
    CC: Matt Turner

    Yijing Wang
     

01 Mar, 2015

1 commit

  • Core mm expects __PAGETABLE_{PUD,PMD}_FOLDED to be defined if these page
    table levels folded. Usually, these defines are provided by
    and .

    But some architectures fold page table levels in a custom way. They
    need to define these macros themself. This patch adds missing defines.

    The patch fixes mm->nr_pmds underflow and eliminates dead __pmd_alloc()
    and __pud_alloc() on architectures without these page table levels.

    Signed-off-by: Kirill A. Shutemov
    Cc: Aaro Koskinen
    Cc: David Howells
    Cc: Geert Uytterhoeven
    Cc: Heiko Carstens
    Cc: Helge Deller
    Cc: "James E.J. Bottomley"
    Cc: Koichi Yasutake
    Cc: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     

19 Feb, 2015

1 commit

  • Pull asm-generic uaccess.h cleanup from Arnd Bergmann:
    "Like in 3.19, I once more have a multi-stage cleanup for one
    asm-generic header file, this time the work was done by Michael
    Tsirkin and cleans up the uaccess.h file in asm-generic, as well as
    all architectures for which the respective maintainers did not pick up
    his patches directly"

    * tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: (37 commits)
    sparc32: nocheck uaccess coding style tweaks
    sparc64: nocheck uaccess coding style tweaks
    xtensa: macro whitespace fixes
    sh: macro whitespace fixes
    parisc: macro whitespace fixes
    m68k: macro whitespace fixes
    m32r: macro whitespace fixes
    frv: macro whitespace fixes
    cris: macro whitespace fixes
    avr32: macro whitespace fixes
    arm64: macro whitespace fixes
    arm: macro whitespace fixes
    alpha: macro whitespace fixes
    blackfin: macro whitespace fixes
    sparc64: uaccess_64 macro whitespace fixes
    sparc32: uaccess_32 macro whitespace fixes
    avr32: whitespace fix
    sh: fix put_user sparse errors
    metag: fix put_user sparse errors
    ia64: fix put_user sparse errors
    ...

    Linus Torvalds
     

17 Feb, 2015

1 commit


13 Feb, 2015

1 commit

  • If an attacker can cause a controlled kernel stack overflow, overwriting
    the restart block is a very juicy exploit target. This is because the
    restart_block is held in the same memory allocation as the kernel stack.

    Moving the restart block to struct task_struct prevents this exploit by
    making the restart_block harder to locate.

    Note that there are other fields in thread_info that are also easy
    targets, at least on some architectures.

    It's also a decent simplification, since the restart code is more or less
    identical on all architectures.

    [james.hogan@imgtec.com: metag: align thread_info::supervisor_stack]
    Signed-off-by: Andy Lutomirski
    Cc: Thomas Gleixner
    Cc: Al Viro
    Cc: "H. Peter Anvin"
    Cc: Ingo Molnar
    Cc: Kees Cook
    Cc: David Miller
    Acked-by: Richard Weinberger
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: Vineet Gupta
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Steven Miao
    Cc: Mark Salter
    Cc: Aurelien Jacquiot
    Cc: Mikael Starvik
    Cc: Jesper Nilsson
    Cc: David Howells
    Cc: Richard Kuo
    Cc: "Luck, Tony"
    Cc: Geert Uytterhoeven
    Cc: Michal Simek
    Cc: Ralf Baechle
    Cc: Jonas Bonn
    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Acked-by: Michael Ellerman (powerpc)
    Tested-by: Michael Ellerman (powerpc)
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Chen Liqin
    Cc: Lennox Wu
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Chris Zankel
    Cc: Max Filippov
    Cc: Oleg Nesterov
    Cc: Guenter Roeck
    Signed-off-by: James Hogan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Lutomirski
     

12 Feb, 2015

1 commit

  • LKP has triggered a compiler warning after my recent patch "mm: account
    pmd page tables to the process":

    mm/mmap.c: In function 'exit_mmap':
    >> mm/mmap.c:2857:2: warning: right shift count >= width of type [enabled by default]

    The code:

    > 2857 WARN_ON(mm_nr_pmds(mm) >
    2858 round_up(FIRST_USER_ADDRESS, PUD_SIZE) >> PUD_SHIFT);

    In this, on tile, we have FIRST_USER_ADDRESS defined as 0. round_up() has
    the same type -- int. PUD_SHIFT.

    I think the best way to fix it is to define FIRST_USER_ADDRESS as unsigned
    long. On every arch for consistency.

    Signed-off-by: Kirill A. Shutemov
    Reported-by: Wu Fengguang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     

11 Feb, 2015

3 commits

  • Merge misc updates from Andrew Morton:
    "Bite-sized chunks this time, to avoid the MTA ratelimiting woes.

    - fs/notify updates

    - ocfs2

    - some of MM"

    That laconic "some MM" is mainly the removal of remap_file_pages(),
    which is a big simplification of the VM, and which gets rid of a *lot*
    of random cruft and special cases because we no longer support the
    non-linear mappings that it used.

    From a user interface perspective, nothing has changed, because the
    remap_file_pages() syscall still exists, it's just done by emulating the
    old behavior by creating a lot of individual small mappings instead of
    one non-linear one.

    The emulation is slower than the old "native" non-linear mappings, but
    nobody really uses or cares about remap_file_pages(), and simplifying
    the VM is a big advantage.

    * emailed patches from Andrew Morton : (78 commits)
    memcg: zap memcg_slab_caches and memcg_slab_mutex
    memcg: zap memcg_name argument of memcg_create_kmem_cache
    memcg: zap __memcg_{charge,uncharge}_slab
    mm/page_alloc.c: place zone_id check before VM_BUG_ON_PAGE check
    mm: hugetlb: fix type of hugetlb_treat_as_movable variable
    mm, hugetlb: remove unnecessary lower bound on sysctl handlers"?
    mm: memory: merge shared-writable dirtying branches in do_wp_page()
    mm: memory: remove ->vm_file check on shared writable vmas
    xtensa: drop _PAGE_FILE and pte_file()-related helpers
    x86: drop _PAGE_FILE and pte_file()-related helpers
    unicore32: drop pte_file()-related helpers
    um: drop _PAGE_FILE and pte_file()-related helpers
    tile: drop pte_file()-related helpers
    sparc: drop pte_file()-related helpers
    sh: drop _PAGE_FILE and pte_file()-related helpers
    score: drop _PAGE_FILE and pte_file()-related helpers
    s390: drop pte_file()-related helpers
    parisc: drop _PAGE_FILE and pte_file()-related helpers
    openrisc: drop _PAGE_FILE and pte_file()-related helpers
    nios2: drop _PAGE_FILE and pte_file()-related helpers
    ...

    Linus Torvalds
     
  • We've replaced remap_file_pages(2) implementation with emulation. Nobody
    creates non-linear mapping anymore.

    Signed-off-by: Kirill A. Shutemov
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • Pull m68k updates from Geert Uytterhoeven:
    "Summary:

    - switch to asm-generic/futex.h

    - various cleanups

    - defconfig updates"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k/defconfig: Enable Ethernet bridging
    m68k/defconfig: Enable Atari EtherNAT and EtherNEC Ethernet support
    m68k/defconfig: Enable automounting of devtmpfs at /dev
    m68k/defconfig: Enable early printk support
    m68k/defconfig: Enable test modules
    m68k/defconfig: Refresh defconfigs for v3.16-rc1--v3.19-rc2
    m68k/atari: Remove obsolete IRQ_TYPE_*
    sound: dmasound_atari: Remove obsolete IRQ_TYPE_SLOW
    video: atafb: Remove obsolete IRQ_TYPE_PRIO
    parport: parport_atari: Remove obsolete IRQ_TYPE_SLOW
    net: atarilance: Remove obsolete IRQ_TYPE_PRIO
    m68k/atari: Remove obsolete keyboard_tasklet scheduling
    m68k/mac: Fix scsi_type for Mac LC and similar models
    m68k: Switch to asm-generic/futex.h
    m68k/mvme147: config.c - Remove unused functions
    m68k/atari: atakeyb.c - Remove some unused functions
    m68k/mvme16x: rtc - Don't use module_init in non-modular code

    Linus Torvalds
     

03 Feb, 2015

3 commits

  • Remove the function BSP_set_clock_mmss() that is not used anywhere.

    This was partially found by using a static code analysis program called cppcheck.

    Signed-off-by: Rickard Strandqvist
    Signed-off-by: Greg Ungerer

    Rickard Strandqvist
     
  • Compilation of arch/m68k/68360/commproc.c fails with the following errors:

    arch/m68k/68360/commproc.c:75:1: error: function declaration isn’t a prototype
    arch/m68k/68360/commproc.c:211:1: error: function declaration isn’t a prototype
    arch/m68k/68360/commproc.c: In function ‘cpm_install_handler’:
    arch/m68k/68360/commproc.c:214:2: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
    include/linux/interrupt.h:128:1: note: expected ‘irq_handler_t’ but argument is of type ‘void (*)()’

    It should be using the proper irq hander type, irq_handler_t. Modify it
    to use that.

    Signed-off-by: Greg Ungerer

    Greg Ungerer
     
  • There used to be a Kconfig symbol BSEIP. It was PPC specific and was
    removed in v2.6.27. So the check for CONFIG_BSEIP can be removed. This
    means a few defines will be removed. None of the macros involved are
    used, so no one should care.

    Signed-off-by: Paul Bolle
    Signed-off-by: Greg Ungerer

    Paul Bolle
     

31 Jan, 2015

6 commits


30 Jan, 2015

1 commit

  • The core VM already knows about VM_FAULT_SIGBUS, but cannot return a
    "you should SIGSEGV" error, because the SIGSEGV case was generally
    handled by the caller - usually the architecture fault handler.

    That results in lots of duplication - all the architecture fault
    handlers end up doing very similar "look up vma, check permissions, do
    retries etc" - but it generally works. However, there are cases where
    the VM actually wants to SIGSEGV, and applications _expect_ SIGSEGV.

    In particular, when accessing the stack guard page, libsigsegv expects a
    SIGSEGV. And it usually got one, because the stack growth is handled by
    that duplicated architecture fault handler.

    However, when the generic VM layer started propagating the error return
    from the stack expansion in commit fee7e49d4514 ("mm: propagate error
    from stack expansion even for guard page"), that now exposed the
    existing VM_FAULT_SIGBUS result to user space. And user space really
    expected SIGSEGV, not SIGBUS.

    To fix that case, we need to add a VM_FAULT_SIGSEGV, and teach all those
    duplicate architecture fault handlers about it. They all already have
    the code to handle SIGSEGV, so it's about just tying that new return
    value to the existing code, but it's all a bit annoying.

    This is the mindless minimal patch to do this. A more extensive patch
    would be to try to gather up the mostly shared fault handling logic into
    one generic helper routine, and long-term we really should do that
    cleanup.

    Just from this patch, you can generally see that most architectures just
    copied (directly or indirectly) the old x86 way of doing things, but in
    the meantime that original x86 model has been improved to hold the VM
    semaphore for shorter times etc and to handle VM_FAULT_RETRY and other
    "newer" things, so it would be a good idea to bring all those
    improvements to the generic case and teach other architectures about
    them too.

    Reported-and-tested-by: Takashi Iwai
    Tested-by: Jan Engelhardt
    Acked-by: Heiko Carstens # "s390 still compiles and boots"
    Cc: linux-arch@vger.kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

15 Jan, 2015

1 commit

  • IRQ_TYPE_SLOW, IRQ_TYPE_FAST, and IRQ_TYPE_PRIO are no longer used by
    the Atari platform interrupt code since commit 734085651c9b80aa
    ("[PATCH] m68k: convert atari irq code") in v2.6.18-rc1, so drop them.

    Note that their values have been reused for different purposes
    (IRQ_TYPE_NONE, IRQ_TYPE_EDGE_RISING, and IRQ_TYPE_EDGE_FALLING) since
    commit 6a6de9ef5850d063 ("[PATCH] genirq: core") in v2.6.18-rc1.

    Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     

13 Jan, 2015

3 commits

  • While working on arch/m68k/include/asm/uaccess.h, I noticed
    that one macro within this header is made harder to read because it
    violates a coding style rule: space is missing after comma.

    Fix it up.

    Signed-off-by: Michael S. Tsirkin
    Acked-by: Geert Uytterhoeven

    Michael S. Tsirkin
     
  • virtio wants to read bitwise types from userspace using get_user. At the
    moment this triggers sparse errors, since the value is passed through an
    integer.

    Fix that up using __force.

    Signed-off-by: Michael S. Tsirkin
    Acked-by: Geert Uytterhoeven

    Michael S. Tsirkin
     
  • If CONFIG_VT=n:

    arch/m68k/atari/built-in.o: In function `atari_keyboard_interrupt':
    atakeyb.c:(.text+0x1846): undefined reference to `keyboard_tasklet'
    atakeyb.c:(.text+0x1852): undefined reference to `keyboard_tasklet'

    I think the keyboard_tasklet scheduling is no longer needed, as I
    believe it's handled by drivers/tty/vt/keyboard.c based on events
    received from the input subsystem. So just remove it.

    Signed-off-by: Geert Uytterhoeven
    Tested-by: Michael Schmitz

    Geert Uytterhoeven