29 Apr, 2014

2 commits

  • …it/rostedt/linux-trace

    Pull ftrace bugfix from Steven Rostedt:
    "Takao Indoh reported that he was able to cause a ftrace bug while
    loading a module and enabling function tracing at the same time.

    He uncovered a race where the module when loaded will convert the
    calls to mcount into nops, and expects the module's text to be RW.
    But when function tracing is enabled, it will convert all kernel text
    (core and module) from RO to RW to convert the nops to calls to ftrace
    to record the function. After the convertion, it will convert all the
    text back from RW to RO.

    The issue is, it will also convert the module's text that is loading.
    If it converts it to RO before ftrace does its conversion, it will
    cause ftrace to fail and require a reboot to fix it again.

    This patch moves the ftrace module update that converts calls to
    mcount into nops to be done when the module state is still
    MODULE_STATE_UNFORMED. This will ignore the module when the text is
    being converted from RW back to RO"

    * tag 'trace-fixes-v3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    ftrace/module: Hardcode ftrace_module_init() call into load_module()

    Linus Torvalds
     
  • Pull devicetree bug fixes from Grant Likely:
    "These are some important bug fixes that need to get into v3.15.

    This branch contains a pair of important bug fixes for the DT code:

    - Fix some incorrect binding property names before they enter common
    usage

    - Fix bug where some platform devices will be unable to get their
    interrupt number when they depend on an interrupt controller that
    is not available at device creation time. This is a problem
    causing mainline to fail on a number of ARM platforms"

    * tag 'dt-for-linus' of git://git.secretlab.ca/git/linux:
    of/irq: do irq resolution in platform_get_irq
    of: selftest: add deferred probe interrupt test
    dt: Fix binding typos in clock-names and interrupt-names

    Linus Torvalds
     

28 Apr, 2014

5 commits

  • A race exists between module loading and enabling of function tracer.

    CPU 1 CPU 2
    ----- -----
    load_module()
    module->state = MODULE_STATE_COMING

    register_ftrace_function()
    mutex_lock(&ftrace_lock);
    ftrace_startup()
    update_ftrace_function();
    ftrace_arch_code_modify_prepare()
    set_all_module_text_rw();

    ftrace_arch_code_modify_post_process()
    set_all_module_text_ro();

    [ here all module text is set to RO,
    including the module that is
    loading!! ]

    blocking_notifier_call_chain(MODULE_STATE_COMING);
    ftrace_init_module()

    [ tries to modify code, but it's RO, and fails!
    ftrace_bug() is called]

    When this race happens, ftrace_bug() will produces a nasty warning and
    all of the function tracing features will be disabled until reboot.

    The simple solution is to treate module load the same way the core
    kernel is treated at boot. To hardcode the ftrace function modification
    of converting calls to mcount into nops. This is done in init/main.c
    there's no reason it could not be done in load_module(). This gives
    a better control of the changes and doesn't tie the state of the
    module to its notifiers as much. Ftrace is special, it needs to be
    treated as such.

    The reason this would work, is that the ftrace_module_init() would be
    called while the module is in MODULE_STATE_UNFORMED, which is ignored
    by the set_all_module_text_ro() call.

    Link: http://lkml.kernel.org/r/1395637826-3312-1-git-send-email-indou.takao@jp.fujitsu.com

    Reported-by: Takao Indoh
    Acked-by: Rusty Russell
    Cc: stable@vger.kernel.org # 2.6.38+
    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • The asm-generic, big-endian version of zero_bytemask creates a mask of
    bytes preceding the first zero-byte by left shifting ~0ul based on the
    position of the first zero byte.

    Unfortunately, if the first (top) byte is zero, the output of
    prep_zero_mask has only the top bit set, resulting in undefined C
    behaviour as we shift left by an amount equal to the width of the type.
    As it happens, GCC doesn't manage to spot this through the call to fls(),
    but the issue remains if architectures choose to implement their shift
    instructions differently.

    An example would be arch/arm/ (AArch32), where LSL Rd, Rn, #32 results
    in Rd == 0x0, whilst on arch/arm64 (AArch64) LSL Xd, Xn, #64 results in
    Xd == Xn.

    Rather than check explicitly for the problematic shift, this patch adds
    an extra shift by 1, replacing fls with __fls. Since zero_bytemask is
    never called with a zero argument (has_zero() is used to check the data
    first), we don't need to worry about calling __fls(0), which is
    undefined.

    Cc:
    Cc: Victor Kamensky
    Signed-off-by: Will Deacon
    Signed-off-by: Linus Torvalds

    Will Deacon
     
  • Pull irq fixes from Thomas Gleixner:
    "A slighlty large fix for a subtle issue in the CPU hotplug code of
    certain ARM SoCs, where the not yet online cpu needs to setup the cpu
    local timer and needs to set the interrupt affinity to itself.
    Setting interrupt affinity to a not online cpu is prohibited and
    therefor the timer interrupt ends up on the wrong cpu, which leads to
    nasty complications.

    The SoC folks tried to hack around that in the SoC code in some more
    than nasty ways. The proper solution is to have a way to enforce the
    affinity setting to a not online cpu. The core patch to the genirq
    code provides that facility and the follow up patches make use of it
    in the GIC interrupt controller and the exynos timer driver.

    The change to the core code has no implications to existing users,
    except for the rename of the locked function and therefor the
    necessary fixup in mips/cavium. Aside of that, no runtime impact is
    possible, as none of the existing interrupt chips implements anything
    which depends on the force argument of the irq_set_affinity()
    callback"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clocksource: Exynos_mct: Register clock event after request_irq()
    clocksource: Exynos_mct: Use irq_force_affinity() in cpu bringup
    irqchip: Gic: Support forced affinity setting
    genirq: Allow forcing cpu affinity of interrupts

    Linus Torvalds
     
  • Pull tty/serial fixes from Greg KH:
    "Here are a few tty/serial fixes for 3.15-rc3 that resolve a number of
    reported issues in the 8250 and samsung serial drivers, as well as a
    character loss fix for the tty core that was caused by the lock
    removal patches a release ago"

    * tag 'tty-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    serial_core: fix uart PORT_UNKNOWN handling
    serial: samsung: Change barrier() to cpu_relax() in console output
    serial: samsung: don't check config for every character
    serial: samsung: Use the passed in "port", fixing kgdb w/ no console
    serial: 8250: Fix thread unsafe __dma_tx_complete function
    8250_core: Fix unwanted TX chars write
    tty: Fix race condition between __tty_buffer_request_room and flush_to_ldisc

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are a number of USB fixes for 3.15-rc3. The majority are gadget
    fixes, as we didn't get any of those in for 3.15-rc2. The others are
    all over the place, and there's a number of new device id addtions as
    well."

    * tag 'usb-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (35 commits)
    usb: option: add and update a number of CMOTech devices
    usb: option: add Alcatel L800MA
    usb: option: add Olivetti Olicard 500
    usb: qcserial: add Sierra Wireless MC7305/MC7355
    usb: qcserial: add Sierra Wireless MC73xx
    usb: qcserial: add Sierra Wireless EM7355
    USB: io_ti: fix firmware download on big-endian machines
    usb/xhci: fix compilation warning when !CONFIG_PCI && !CONFIG_PM
    xhci: extend quirk for Renesas cards
    xhci: Switch Intel Lynx Point ports to EHCI on shutdown.
    usb: xhci: Prefer endpoint context dequeue pointer over stopped_trb
    phy: core: make NULL a valid phy reference if !CONFIG_GENERIC_PHY
    phy: fix kernel oops in phy_lookup()
    phy: restore OMAP_CONTROL_PHY dependencies
    phy: exynos: fix building as a module
    USB: serial: fix sysfs-attribute removal deadlock
    usb: wusbcore: fix panic in wusbhc_chid_set
    usb: wusbcore: convert nested lock to use spin_lock instead of spin_lock_irq
    uwb: don't call spin_unlock_irq in a USB completion handler
    usb: chipidea: coordinate usb phy initialization for different phy type
    ...

    Linus Torvalds
     

26 Apr, 2014

2 commits

  • Pull ARM SoC fixes from Arnd Bergmann:
    "Since we didn't get around to collect fixes in time for -rc2 over the
    easter vacation, this one is unfortunately a bit larger than we'd like
    for an -rc3 merge.

    A large set of the changes is in the device tree sources, so I'm
    splitting out the description between code changes and DT changes.
    Aside from omap and versatile express, the actual code bugs are and
    trivial. Here is an overview:

    imx:
    - fix video clock settings
    - fix one clock refcounting bug

    omap:
    - update defconfig for renamed USB PHY driver
    - fix error handling in gpmc
    - fix N900 video initialization regression
    - fix reression in hwmod code from missing braces
    - fix am43xx and omap3 clocks
    - remove bogus write to voltage control register

    pxa:
    - fix build regression from 3.13 header cleanup

    rockchip:
    - fix a misleading printk string

    shmobile:
    - fix incorrect sound setting on multiple machines

    spear:
    - remove incorrect __init section annotation

    tegra:
    - remove a stale Kconfig entry

    u300:
    - update defconfig

    ux500:
    - enable common wireless and sensor drivers in defconfig
    - more defconfig updates

    vexpress:
    - fix voltage calculation for opp
    - fix reboot hang and warning
    - fix out-of-bounds array access
    - improve error handling in clock driver

    overall:
    - always select CLKSRC_OF in multiplatform builds

    And these are the devicetree related changes:

    imx:
    - add missing #clock-cell properties
    - fix pinctrl setting in imx6sl-evk
    - fix video endpoint on imx53
    - remove obsolete lvds-channel nodes (multiple patches)
    - add missing second stmpe node
    - fix usb host mode on dmo-edmqmx6 (multiple patches)
    - fix gic node #address-cells to match usage
    - add missing legacy IRQ map for PCIe
    - fix microsom pincontrol setting for rgmii
    - fix fatal typo in touchscreen DT usage for mx5
    - list all RAM present on m53evk and mx53qsb

    omap:
    - fix bug in DT handling of gpmc external bus
    - add DT for older revision of beagleboard
    - fix regression after DT node name fixes
    - remove obsolete properties for gpmc
    - fix pinmux comment to match DT it refers to
    - fix newly added dra7xx clock node data
    - add missing clock for USB PHY

    mvebu:
    - add missing clock for mdio node
    - fix nonstandard vendor prefixes on i2c nodes

    rockchip:
    - fix pin control setting for uart

    shmobile:
    - fix typo in DT data for pin control (multiple patches)
    - fix gic node #address-cells to match usage

    tegra:
    - fix clock and uart DT representation to match hardware

    zynq:
    - add DT nodes for newly added driver
    - add DT properties required for cpufreq-ondemand

    overall:
    - restore alphabetic order in Makefile
    - grammar fixes in bindings"

    * tag 'fixes-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (66 commits)
    ARM: vexpress/TC2: Convert OPP voltage to uV before storing
    power/reset: vexpress: Fix restart/power off operation
    dt: tegra: remove non-existent clock IDs
    clk: tegra: remove non-existent clocks
    ARM: tegra: remove UART5/UARTE from tegra124.dtsi
    ARM: tegra: remove TEGRA_EMC_SCALING_ENABLE
    ARM: Tidy up DTB Makefile entries
    ARM: fix missing CLKSRC_OF on multi-platform
    ARM: spear: add __init to spear_clocksource_init()
    ARM: pxa: hx4700.h: include "irqs.h" for PXA_NR_BUILTIN_GPIO
    arm/mach-vexpress: array accessed out of bounds
    clk: vexpress: NULL dereference on error path
    ARM: OMAP2+: Fix GPMC remap for devices using an offset
    ARM: zynq: dt: Add I2C nodes to Zynq device tree
    ARM: zynq: DT: Add 'clock-latency' property
    ARM: OMAP2+: Fix oops for GPMC free
    ARM: dts: Add support for the BeagleBoard xM A/B
    ARM: dts: Grammar /that will/it will/
    ARM: dts: Grammar /is uses/ is used/
    ARM: OMAP2+: Fix config name for USB3 PHY
    ...

    Linus Torvalds
     
  • Pull file locking fixes from Jeff Layton:
    "File locking related bugfixes for v3.15 (pile #2)

    - fix for a long-standing bug in __break_lease that can cause soft
    lockups
    - renaming of file-private locks to "open file description" locks,
    and the command macros to more visually distinct names

    The fix for __break_lease is also in the pile of patches for which
    Bruce sent a pull request, but I assume that your merge procedure will
    handle that correctly.

    For the other patches, I don't like the fact that we need to rename
    this stuff at this late stage, but it should be settled now
    (hopefully)"

    * tag 'locks-v3.15-2' of git://git.samba.org/jlayton/linux:
    locks: rename FL_FILE_PVT and IS_FILE_PVT to use "*_OFDLCK" instead
    locks: rename file-private locks to "open file description locks"
    locks: allow __break_lease to sleep even when break_time is 0

    Linus Torvalds
     

25 Apr, 2014

6 commits

  • The race was introduced while development of linux-3.11 by
    e8437d7ecbc50198705331449367d401ebb3181f and
    e9975fdec0138f1b2a85b9624e41660abd9865d4.
    Originally it was found and reproduced on linux-3.12.15 and
    linux-3.12.15-rt25, by sending 500 byte blocks with 115kbaud to the
    target uart in a loop with 100 milliseconds delay.

    In short:
    1. The consumer flush_to_ldisc is on to remove the head tty_buffer.
    2. The producer adds a number of bytes, so that a new tty_buffer must
    be allocated and added by __tty_buffer_request_room.
    3. The consumer removes the head tty_buffer element, without handling
    newly committed data.

    Detailed example:
    * Initial buffer:
    * Head, Tail -> 0: used=250; commit=250; read=240; next=NULL
    * Consumer: ''flush_to_ldisc''
    * consumed 10 Byte
    * buffer:
    * Head, Tail -> 0: used=250; commit=250; read=250; next=NULL
    {{{
    count = head->commit - head->read; // count = 0
    if (!count) { // enter
    // INTERRUPTED BY PRODUCER ->
    if (head->next == NULL)
    break;
    buf->head = head->next;
    tty_buffer_free(port, head);
    continue;
    }
    }}}
    * Producer: tty_insert_flip_... 10 bytes + tty_flip_buffer_push
    * buffer:
    * Head, Tail -> 0: used=250; commit=250; read=250; next=NULL
    * added 6 bytes: head-element filled to maximum.
    * buffer:
    * Head, Tail -> 0: used=256; commit=250; read=250; next=NULL
    * added 4 bytes: __tty_buffer_request_room is called
    * buffer:
    * Head -> 0: used=256; commit=256; read=250; next=1
    * Tail -> 1: used=4; commit=0; read=250 next=NULL
    * push (tty_flip_buffer_push)
    * buffer:
    * Head -> 0: used=256; commit=256; read=250; next=1
    * Tail -> 1: used=4; commit=4; read=250 next=NULL
    * Consumer
    {{{
    count = head->commit - head->read;
    if (!count) {
    // INTERRUPTED BY PRODUCER next == NULL) // -> no break
    break;
    buf->head = head->next;
    tty_buffer_free(port, head);
    // ERROR: tty_buffer head freed -> 6 bytes lost
    continue;
    }
    }}}

    This patch reintroduces a spin_lock to protect this case. Perhaps later
    a lock-less solution could be found.

    Signed-off-by: Manfred Schlaegl
    Cc: stable # 3.11
    Signed-off-by: Greg Kroah-Hartman

    Manfred Schlaegl
     
  • ARM Versatile Express fixes for 3.15

    This series contains straight-forward fixes for different
    Versatile Express infrastructure drivers:

    - NULL pointer dereference on the error path in the clk driver
    - out of boundary array access in the dcscb driver
    - broken restart/power off implementation
    - mis-interpreted voltage unit in the spc driver

    * tag 'vexpress/fixes-for-3.15' of git://git.linaro.org/people/pawel.moll/linux:
    ARM: vexpress/TC2: Convert OPP voltage to uV before storing
    power/reset: vexpress: Fix restart/power off operation
    arm/mach-vexpress: array accessed out of bounds
    clk: vexpress: NULL dereference on error path

    Includes an update to 3.15-rc2

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Currently we get the following kind of errors if we try to use interrupt
    phandles to irqchips that have not yet initialized:

    irq: no irq domain found for /ocp/pinmux@48002030 !
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 1 at drivers/of/platform.c:171 of_device_alloc+0x144/0x184()
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.12.0-00038-g42a9708 #1012
    (show_stack+0x14/0x1c)
    (dump_stack+0x6c/0xa0)
    (warn_slowpath_common+0x64/0x84)
    (warn_slowpath_null+0x1c/0x24)
    (of_device_alloc+0x144/0x184)
    (of_platform_device_create_pdata+0x44/0x9c)
    (of_platform_bus_create+0xd0/0x170)
    (of_platform_bus_create+0x12c/0x170)
    (of_platform_populate+0x60/0x98)

    This is because we're wrongly trying to populate resources that are not
    yet available. It's perfectly valid to create irqchips dynamically, so
    let's fix up the issue by resolving the interrupt resources when
    platform_get_irq is called.

    And then we also need to accept the fact that some irqdomains do not
    exist that early on, and only get initialized later on. So we can
    make the current WARN_ON into just into a pr_debug().

    We still attempt to populate irq resources when we create the devices.
    This allows current drivers which don't use platform_get_irq to continue
    to function. Once all drivers are fixed, this code can be removed.

    Suggested-by: Russell King
    Signed-off-by: Rob Herring
    Signed-off-by: Tony Lindgren
    Tested-by: Tony Lindgren
    Cc: stable@vger.kernel.org # v3.10+
    Signed-off-by: Grant Likely

    Rob Herring
     
  • This fixes a regression on Keystone 2 platforms caused by patch
    57303488cd37da58263e842de134dc65f7c626d5
    "usb: dwc3: adapt dwc3 core to use Generic PHY Framework" which adds
    optional support of generic phy in DWC3 core.

    On Keystone 2 platforms the USB is not working now because
    CONFIG_GENERIC_PHY isn't set and, as result, Generic PHY APIs stubs
    return -ENOSYS always. The log shows:
    dwc3 2690000.dwc3: failed to initialize core
    dwc3: probe of 2690000.dwc3 failed with error -38

    Hence, fix it by making NULL a valid phy reference in Generic PHY
    APIs stubs in the same way as it was done by the patch
    04c2facad8fee66c981a51852806d8923336f362 "drivers: phy: Make NULL
    a valid phy reference".

    Acked-by: Felipe Balbi
    Acked-by: Santosh Shilimkar
    Signed-off-by: Grygorii Strashko
    Signed-off-by: Kishon Vijay Abraham I
    Signed-off-by: Greg Kroah-Hartman

    Grygorii Strashko
     
  • Pull regulator fixes from Mark Brown:
    "A couple of things here:

    - Fixes for pbias that didn't make it in during the merge window due
    to the driver coming in via MMC. The conversion to use helpers is
    a fix as it implements list_voltage() which the main user (MMC)
    relies on for correct functioning.
    - Change the !REGULATOR stub for optional regulators to return an
    error rather than a dummy; this is more in keeping with the
    intended use of optional regulators and fixes some issues seen MMC
    where it got confused by a dummy being provided"

    * tag 'regulator-v3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
    regulator: core: Return error in get optional stub
    regulator: pbias: Convert to use regmap helper functions
    regulator: pbias: Fix is_enabled callback implementation

    Linus Torvalds
     
  • Pull libata fixes from Tejun Heo:
    "Dan updated tag allocation to accomodate devices which choke when tags
    jump back and forth. Quite a few ahci MSI related fixes. A couple
    config dependency fixes and other misc fixes"

    * 'for-3.15-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
    libata/ahci: accommodate tag ordered controllers
    ahci: Do not receive interrupts sent by dummy ports
    ahci: Use pci_enable_msi_exact() instead of pci_enable_msi_range()
    ahci: Ensure "MSI Revert to Single Message" mode is not enforced
    ahci: do not request irq for dummy port
    pata_samsung_cf: fix ata_host_activate() failure handling
    pata_arasan_cf: fix ata_host_activate() failure handling
    ata: fix i.MX AHCI driver dependencies
    pata_at91: fix ata_host_activate() failure handling
    libata: Update queued trim blacklist for M5x0 drives
    libata: make AHCI_XGENE depend on PHY_XGENE

    Linus Torvalds
     

24 Apr, 2014

2 commits


23 Apr, 2014

2 commits

  • Pull input updates from Dmitry Torokhov:
    "The main change is that we now publish "firmware ID" for the serio
    devices to help userspace figure out the kind of touchpads it is
    dealing with: i8042 will export PS/2 port's PNP IDs as firmware IDs.

    You will also get more quirks for Synaptics touchpads in various
    Lenovo laptops, a change to elantech driver to recognize even more
    models, and fixups to wacom and couple other drivers"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: elantech - add support for newer elantech touchpads
    Input: soc_button_array - fix a crash during rmmod
    Input: synaptics - add min/max quirk for ThinkPad T431s, L440, L540, S1 Yoga and X1
    Input: synaptics - report INPUT_PROP_TOPBUTTONPAD property
    Input: Add INPUT_PROP_TOPBUTTONPAD device property
    Input: i8042 - add firmware_id support
    Input: serio - add firmware_id sysfs attribute
    Input: wacom - handle 1024 pressure levels in wacom_tpc_pen
    Input: wacom - references to 'wacom->data' should use 'unsigned char*'
    Input: wacom - override 'pressure_max' with value from HID_USAGE_PRESSURE
    Input: wacom - use full 32-bit HID Usage value in switch statement
    Input: wacom - missed the last bit of expresskey for DTU-1031
    Input: ads7846 - fix device usage within attribute show
    Input: da9055_onkey - remove use of regmap_irq_get_virq()

    Linus Torvalds
     
  • Mark Brown
     

22 Apr, 2014

1 commit

  • File-private locks have been merged into Linux for v3.15, and *now*
    people are commenting that the name and macro definitions for the new
    file-private locks suck.

    ...and I can't even disagree. The names and command macros do suck.

    We're going to have to live with these for a long time, so it's
    important that we be happy with the names before we're stuck with them.
    The consensus on the lists so far is that they should be rechristened as
    "open file description locks".

    The name isn't a big deal for the kernel, but the command macros are not
    visually distinct enough from the traditional POSIX lock macros. The
    glibc and documentation folks are recommending that we change them to
    look like F_OFD_{GETLK|SETLK|SETLKW}. That lessens the chance that a
    programmer will typo one of the commands wrong, and also makes it easier
    to spot this difference when reading code.

    This patch makes the following changes that I think are necessary before
    v3.15 ships:

    1) rename the command macros to their new names. These end up in the uapi
    headers and so are part of the external-facing API. It turns out that
    glibc doesn't actually use the fcntl.h uapi header, but it's hard to
    be sure that something else won't. Changing it now is safest.

    2) make the the /proc/locks output display these as type "OFDLCK"

    Cc: Michael Kerrisk
    Cc: Christoph Hellwig
    Cc: Carlos O'Donell
    Cc: Stefan Metzmacher
    Cc: Andy Lutomirski
    Cc: Frank Filz
    Cc: Theodore Ts'o
    Signed-off-by: Jeff Layton

    Jeff Layton
     

21 Apr, 2014

1 commit

  • Pull ext4 fixes from Ted Ts'o:
    "These are regression and bug fixes for ext4.

    We had a number of new features in ext4 during this merge window
    (ZERO_RANGE and COLLAPSE_RANGE fallocate modes, renameat, etc.) so
    there were many more regression and bug fixes this time around. It
    didn't help that xfstests hadn't been fully updated to fully stress
    test COLLAPSE_RANGE until after -rc1"

    * tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (31 commits)
    ext4: disable COLLAPSE_RANGE for bigalloc
    ext4: fix COLLAPSE_RANGE failure with 1KB block size
    ext4: use EINVAL if not a regular file in ext4_collapse_range()
    ext4: enforce we are operating on a regular file in ext4_zero_range()
    ext4: fix extent merging in ext4_ext_shift_path_extents()
    ext4: discard preallocations after removing space
    ext4: no need to truncate pagecache twice in collapse range
    ext4: fix removing status extents in ext4_collapse_range()
    ext4: use filemap_write_and_wait_range() correctly in collapse range
    ext4: use truncate_pagecache() in collapse range
    ext4: remove temporary shim used to merge COLLAPSE_RANGE and ZERO_RANGE
    ext4: fix ext4_count_free_clusters() with EXT4FS_DEBUG and bigalloc enabled
    ext4: always check ext4_ext_find_extent result
    ext4: fix error handling in ext4_ext_shift_extents
    ext4: silence sparse check warning for function ext4_trim_extent
    ext4: COLLAPSE_RANGE only works on extent-based files
    ext4: fix byte order problems introduced by the COLLAPSE_RANGE patches
    ext4: use i_size_read in ext4_unaligned_aio()
    fs: disallow all fallocate operation on active swapfile
    fs: move falloc collapse range check into the filesystem methods
    ...

    Linus Torvalds
     

20 Apr, 2014

3 commits

  • On some newer laptops with a trackpoint the physical buttons for the
    trackpoint have been removed to allow for a larger touchpad. On these
    laptops the buttonpad has clearly marked areas on the top which are to be
    used as trackpad buttons.

    Users of the event device-node need to know about this, so that they can
    properly interpret BTN_LEFT events as being a left / right / middle click
    depending on where on the button pad the clicking finger is.

    This commits adds a INPUT_PROP_TOPBUTTONPAD device property which drivers
    for such buttonpads will use to signal to the user that this buttonpad not
    only has the normal bottom button area, but also a top button area.

    Signed-off-by: Hans de Goede
    Signed-off-by: Dmitry Torokhov

    Hans de Goede
     
  • serio devices exposed via platform firmware interfaces such as ACPI may
    provide additional identifying information of use to userspace.

    We don't associate the serio devices with the firmware device (we don't
    set it as parent), so there's no way for userspace to make use of this
    information.

    We cannot change the parent for serio devices instantiated though a
    firmware interface as that would break suspend / resume ordering.

    Therefore this patch adds a new firmware_id sysfs attribute so that
    userspace can get a string from there with any additional identifying
    information the firmware interface may provide.

    Signed-off-by: Hans de Goede
    Acked-by: Peter Hutterer
    Signed-off-by: Dmitry Torokhov

    Hans de Goede
     
  • Pull drm fixes from Dave Airlie:
    "Unfortunately this contains no easter eggs, its a bit larger than I'd
    like, but I included a patch that just moves code from one file to
    another and I'd like to avoid merge conflicts with that later, so it
    makes it seem worse than it is,

    Otherwise:
    - radeon: fixes to use new microcode to stabilise some cards, use
    some common displayport code, some runtime pm fixes, pll regression
    fixes
    - i915: fix for some context oopses, a warn in a used path, backlight
    fixes
    - nouveau: regression fix
    - omap: a bunch of fixes"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (51 commits)
    drm: bochs: drop unused struct fields
    drm: bochs: add power management support
    drm: cirrus: add power management support
    drm: Split out drm_probe_helper.c from drm_crtc_helper.c
    drm/plane-helper: Don't fake-implement primary plane disabling
    drm/ast: fix value check in cbr_scan2
    drm/nouveau/bios: fix a bit shift error introduced by 457e77b
    drm/radeon/ci: make sure mc ucode is loaded before checking the size
    drm/radeon/si: make sure mc ucode is loaded before checking the size
    drm/radeon: improve PLL params if we don't match exactly v2
    drm/radeon: memory leak on bo reservation failure. v2
    drm/radeon: fix VCE fence command
    drm/radeon: re-enable mclk dpm on R7 260X asics
    drm/radeon: add support for newer mc ucode on CI (v2)
    drm/radeon: add support for newer mc ucode on SI (v2)
    drm/radeon: apply more strict limits for PLL params v2
    drm/radeon: update CI DPM powertune settings
    drm/radeon: fix runpm handling on APUs (v4)
    drm/radeon: disable mclk dpm on R7 260X
    drm/tegra: Remove gratuitous pad field
    ...

    Linus Torvalds
     

19 Apr, 2014

12 commits

  • Some i2c fixes over DisplayPort.

    * 'drm-next-3.15-wip' of git://people.freedesktop.org/~deathsimple/linux:
    drm/radeon: Improve vramlimit module param documentation
    drm/radeon: fix audio pin counts for DCE6+ (v2)
    drm/radeon/dp: switch to the common i2c over aux code
    drm/dp/i2c: Update comments about common i2c over dp assumptions (v3)
    drm/dp/i2c: send bare addresses to properly reset i2c connections (v4)
    drm/radeon/dp: handle zero sized i2c over aux transactions (v2)
    drm/i915: support address only i2c-over-aux transactions
    drm/tegra: dp: Support address-only I2C-over-AUX transactions

    Dave Airlie
     
  • Pull more networking fixes from David Miller:

    1) Fix mlx4_en_netpoll implementation, it needs to schedule a NAPI
    context, not synchronize it. From Chris Mason.

    2) Ipv4 flow input interface should never be zero, it should be
    LOOPBACK_IFINDEX instead. From Cong Wang and Julian Anastasov.

    3) Properly configure MAC to PHY connection in mvneta devices, from
    Thomas Petazzoni.

    4) sys_recv should use SYSCALL_DEFINE. From Jan Glauber.

    5) Tunnel driver ioctls do not use the correct namespace, fix from
    Nicolas Dichtel.

    6) Fix memory leak on seccomp filter attach, from Kees Cook.

    7) Fix lockdep warning for nested vlans, from Ding Tianhong.

    8) Crashes can happen in SCTP due to how the auth_enable value is
    managed, fix from Vlad Yasevich.

    9) Wireless fixes from John W Linville and co.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (45 commits)
    net: sctp: cache auth_enable per endpoint
    tg3: update rx_jumbo_pending ring param only when jumbo frames are enabled
    vlan: Fix lockdep warning when vlan dev handle notification
    seccomp: fix memory leak on filter attach
    isdn: icn: buffer overflow in icn_command()
    ip6_tunnel: use the right netns in ioctl handler
    sit: use the right netns in ioctl handler
    ip_tunnel: use the right netns in ioctl handler
    net: use SYSCALL_DEFINEx for sys_recv
    net: mdio-gpio: Add support for separate MDI and MDO gpio pins
    net: mdio-gpio: Add support for active low gpio pins
    net: mdio-gpio: Use devm_ functions where possible
    ipv4, route: pass 0 instead of LOOPBACK_IFINDEX to fib_validate_source()
    ipv4, fib: pass LOOPBACK_IFINDEX instead of 0 to flowi4_iif
    mlx4_en: don't use napi_synchronize inside mlx4_en_netpoll
    net: mvneta: properly configure the MAC PHY connection in all situations
    net: phy: add minimal support for QSGMII PHY
    sfc:On MCDI timeout, issue an FLR (and mark MCDI to fail-fast)
    mwifiex: fix hung task on command timeout
    mwifiex: process event before command response
    ...

    Linus Torvalds
     
  • Pull char/misc driver fixes from Greg KH:
    "Here are a few driver fixes for char/misc drivers that resolve
    reported issues.

    All have been in linux-next successfully for a few days"

    * tag 'char-misc-3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    Drivers: hv: vmbus: Negotiate version 3.0 when running on ws2012r2 hosts
    Tools: hv: Handle the case when the target file exists correctly
    vme_tsi148: Utilize to_pci_dev() macro
    vme_tsi148: Fix PCI address mapping assumption
    vme_tsi148: Fix typo in tsi148_slave_get()
    w1: avoid recursive device_add
    w1: fix netlink refcnt leak on error path
    misc: Grammar s/addition/additional/
    drivers: mcb: fix memory leak in chameleon_parse_cells() error path
    mei: ignore client writing state during cb completion
    mei: me: do not load the driver if the FW doesn't support MEI interface
    GenWQE: Increase driver version number
    GenWQE: Fix multithreading problems
    GenWQE: Ensure rc is not returning an uninitialized value
    GenWQE: Add wmb before DDCB is started
    GenWQE: Enable access to VPD flash area

    Linus Torvalds
     
  • Pull driver core fixes from Greg KH:
    "Here are some driver core fixes for 3.15-rc2. Also in here are some
    documentation updates, as well as an API removal that had to wait for
    after -rc1 due to the cleanups coming into you from multiple developer
    trees (this one and the PPC tree.)

    All have been in linux next successfully"

    * tag 'driver-core-3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    drivers/base/dd.c incorrect pr_debug() parameters
    Documentation: Update stable address in Chinese and Japanese translations
    topology: Fix compilation warning when not in SMP
    Chinese: add translation of io_ordering.txt
    stable_kernel_rules: spelling/word usage
    sysfs, driver-core: remove unused {sysfs|device}_schedule_callback_owner()
    kernfs: protect lazy kernfs_iattrs allocation with mutex
    fs: Don't return 0 from get_anon_bdev

    Linus Torvalds
     
  • Merge misc fixes from Andrew Morton:
    "13 fixes"

    * emailed patches from Andrew Morton :
    thp: close race between split and zap huge pages
    mm: fix new kernel-doc warning in filemap.c
    mm: fix CONFIG_DEBUG_VM_RB description
    mm: use paravirt friendly ops for NUMA hinting ptes
    mips: export flush_icache_range
    mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages()
    wait: explain the shadowing and type inconsistencies
    Shiraz has moved
    Documentation/vm/numa_memory_policy.txt: fix wrong document in numa_memory_policy.txt
    powerpc/mm: fix ".__node_distance" undefined
    kernel/watchdog.c:touch_softlockup_watchdog(): use raw_cpu_write()
    init/Kconfig: move the trusted keyring config option to general setup
    vmscan: reclaim_clean_pages_from_list() must use mod_zone_page_state()

    Linus Torvalds
     
  • David Vrabel identified a regression when using automatic NUMA balancing
    under Xen whereby page table entries were getting corrupted due to the
    use of native PTE operations. Quoting him

    Xen PV guest page tables require that their entries use machine
    addresses if the preset bit (_PAGE_PRESENT) is set, and (for
    successful migration) non-present PTEs must use pseudo-physical
    addresses. This is because on migration MFNs in present PTEs are
    translated to PFNs (canonicalised) so they may be translated back
    to the new MFN in the destination domain (uncanonicalised).

    pte_mknonnuma(), pmd_mknonnuma(), pte_mknuma() and pmd_mknuma()
    set and clear the _PAGE_PRESENT bit using pte_set_flags(),
    pte_clear_flags(), etc.

    In a Xen PV guest, these functions must translate MFNs to PFNs
    when clearing _PAGE_PRESENT and translate PFNs to MFNs when setting
    _PAGE_PRESENT.

    His suggested fix converted p[te|md]_[set|clear]_flags to using
    paravirt-friendly ops but this is overkill. He suggested an alternative
    of using p[te|md]_modify in the NUMA page table operations but this is
    does more work than necessary and would require looking up a VMA for
    protections.

    This patch modifies the NUMA page table operations to use paravirt
    friendly operations to set/clear the flags of interest. Unfortunately
    this will take a performance hit when updating the PTEs on
    CONFIG_PARAVIRT but I do not see a way around it that does not break
    Xen.

    Signed-off-by: Mel Gorman
    Acked-by: David Vrabel
    Tested-by: David Vrabel
    Cc: Ingo Molnar
    Cc: Peter Anvin
    Cc: Fengguang Wu
    Cc: Linus Torvalds
    Cc: Steven Noonan
    Cc: Rik van Riel
    Cc: Peter Zijlstra
    Cc: Andrea Arcangeli
    Cc: Dave Hansen
    Cc: Srikar Dronamraju
    Cc: Cyrill Gorcunov
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mel Gorman
     
  • Stick in a comment before someone else tries to fix the sparse warning
    this generates.

    Suggested-by: Andrew Morton
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/n/tip-o2ro6f3vkxklni0bc8f7m68s@git.kernel.org
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Zijlstra
     
  • shiraz.hashim@st.com email-id doesn't exist anymore as he has left the
    company. Replace ST's id with shiraz.linux.kernel@gmail.com.

    It also updates .mailmap file to fix address for 'git shortlog'.

    Signed-off-by: Viresh Kumar
    Cc: Shiraz Hashim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Viresh Kumar
     
  • Currently, it is possible to create an SCTP socket, then switch
    auth_enable via sysctl setting to 1 and crash the system on connect:

    Oops[#1]:
    CPU: 0 PID: 0 Comm: swapper Not tainted 3.14.1-mipsgit-20140415 #1
    task: ffffffff8056ce80 ti: ffffffff8055c000 task.ti: ffffffff8055c000
    [...]
    Call Trace:
    [] sctp_auth_asoc_set_default_hmac+0x68/0x80
    [] sctp_process_init+0x5e0/0x8a4
    [] sctp_sf_do_5_1B_init+0x234/0x34c
    [] sctp_do_sm+0xb4/0x1e8
    [] sctp_endpoint_bh_rcv+0x1c4/0x214
    [] sctp_rcv+0x588/0x630
    [] sctp6_rcv+0x10/0x24
    [] ip6_input+0x2c0/0x440
    [] __netif_receive_skb_core+0x4a8/0x564
    [] process_backlog+0xb4/0x18c
    [] net_rx_action+0x12c/0x210
    [] __do_softirq+0x17c/0x2ac
    [] irq_exit+0x54/0xb0
    [] ret_from_irq+0x0/0x4
    [] rm7k_wait_irqoff+0x24/0x48
    [] cpu_startup_entry+0xc0/0x148
    [] start_kernel+0x37c/0x398
    Code: dd0900b8 000330f8 0126302d 50c0fff1 0047182a a48306a0
    03e00008 00000000
    ---[ end trace b530b0551467f2fd ]---
    Kernel panic - not syncing: Fatal exception in interrupt

    What happens while auth_enable=0 in that case is, that
    ep->auth_hmacs is initialized to NULL in sctp_auth_init_hmacs()
    when endpoint is being created.

    After that point, if an admin switches over to auth_enable=1,
    the machine can crash due to NULL pointer dereference during
    reception of an INIT chunk. When we enter sctp_process_init()
    via sctp_sf_do_5_1B_init() in order to respond to an INIT chunk,
    the INIT verification succeeds and while we walk and process
    all INIT params via sctp_process_param() we find that
    net->sctp.auth_enable is set, therefore do not fall through,
    but invoke sctp_auth_asoc_set_default_hmac() instead, and thus,
    dereference what we have set to NULL during endpoint
    initialization phase.

    The fix is to make auth_enable immutable by caching its value
    during endpoint initialization, so that its original value is
    being carried along until destruction. The bug seems to originate
    from the very first days.

    Fix in joint work with Daniel Borkmann.

    Reported-by: Joshua Kinard
    Signed-off-by: Vlad Yasevich
    Signed-off-by: Daniel Borkmann
    Acked-by: Neil Horman
    Tested-by: Joshua Kinard
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • Pull infiniband/rdma updates from Roland Dreier:

    - mostly cxgb4 fixes unblocked by the merge of some prerequisites via
    the net tree

    - drop deprecated MSI-X API use.

    - a couple other miscellaneous things.

    * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
    RDMA/cxgb4: Fix over-dereference when terminating
    RDMA/cxgb4: Use uninitialized_var()
    RDMA/cxgb4: Add missing debug stats
    RDMA/cxgb4: Initialize reserved fields in a FW work request
    RDMA/cxgb4: Use pr_warn_ratelimited
    RDMA/cxgb4: Max fastreg depth depends on DSGL support
    RDMA/cxgb4: SQ flush fix
    RDMA/cxgb4: rmb() after reading valid gen bit
    RDMA/cxgb4: Endpoint timeout fixes
    RDMA/cxgb4: Use the BAR2/WC path for kernel QPs and T5 devices
    IB/mlx5: Add block multicast loopback support
    IB/mthca: Use pci_enable_msix_exact() instead of pci_enable_msix()
    IB/qib: Use pci_enable_msix_range() instead of pci_enable_msix()

    Linus Torvalds
     
  • The AHCI spec allows implementations to issue commands in tag order
    rather than FIFO order:

    5.3.2.12 P:SelectCmd
    HBA sets pSlotLoc = (pSlotLoc + 1) mod (CAP.NCS + 1)
    or HBA selects the command to issue that has had the
    PxCI bit set to '1' longer than any other command
    pending to be issued.

    The result is that commands posted sequentially (time-wise) may play out
    of sequence when issued by hardware.

    This behavior has likely been hidden by drives that arrange for commands
    to complete in issue order. However, it appears recent drives (two from
    different vendors that we have found so far) inflict out-of-order
    completions as a matter of course. So, we need to take care to maintain
    ordered submission, otherwise we risk triggering a drive to fall out of
    sequential-io automation and back to random-io processing, which incurs
    large latency and degrades throughput.

    This issue was found in simple benchmarks where QD=2 seq-write
    performance was 30-50% *greater* than QD=32 seq-write performance.

    Tagging for -stable and making the change globally since it has a low
    risk-to-reward ratio. Also, word is that recent versions of an unnamed
    OS also does it this way now. So, drives in the field are already
    experienced with this tag ordering scheme.

    Cc:
    Cc: Dave Jiang
    Cc: Ed Ciechanowski
    Reviewed-by: Matthew Wilcox
    Signed-off-by: Dan Williams
    Signed-off-by: Tejun Heo

    Dan Williams
     
  • Pull devicetree fixes from Rob Herring:
    - fix error handling in of_update_property
    - fix section mismatch warnings in __reserved_mem_check_root
    - add empty of_find_node_by_path for !OF builds
    - add various missing binding documentation

    * tag 'dt-fixes-for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    of: add empty of_find_node_by_path() for !OF
    of: Clean up of_update_property
    DT: add vendor prefix for EBV Elektronik
    of: Fix the section mismatch warnings.
    of: Add vendor prefix for Digi International Inc.
    DT: I2C: Add trivial bindings used by kirkwood boards
    DT: Vendor: Add prefixes used by Kirkwood devices
    DT: bindings: add missing Marvell Kirkwood SoC documentation
    dt-bindings: add vendor-prefix for Newhaven Display
    of: add vendor prefix for I2SE GmbH
    of: add vendor prefix for ISEE 2007 S.L.

    Linus Torvalds
     

18 Apr, 2014

4 commits

  • Drivers that call regulator_get_optional are tolerant to the absence of
    that regulator. By modifying the value returned from the stub function
    to match that seen when a regulator isn't present, callers can wrap the
    regulator logic with an IS_ERR based conditional even if they happen to
    call regulator_is_supported_voltage. This improves efficiency as well
    as eliminates the possibility for a very subtle bug.

    Signed-off-by: Tim Kryger
    Reviewed-by: Alex Elder
    Signed-off-by: Mark Brown

    Tim Kryger
     
  • Add an empty version of of_find_node_by_path().
    This fixes following build error for asoc tree:
    sound/soc/fsl/fsl_ssi.c: In function 'fsl_ssi_probe':
    sound/soc/fsl/fsl_ssi.c:1471:2: error: implicit declaration of function 'of_find_node_by_path' [-Werror=implicit-function-declaration]
    sprop = of_get_property(of_find_node_by_path("/"), "compatible", NULL);

    Reported-by: Stephen Rothwell
    Signed-off-by: Alexander Shiyan
    Signed-off-by: Rob Herring

    Alexander Shiyan
     
  • This is leftover stuff from my previous doc round which I kinda wanted
    to do but didn't yet due to rebase hell.

    The modeset helpers and the probing helpers a independent and e.g.
    i915 uses the probing stuff but has its own modeset infrastructure. It
    hence makes to split this up. While at it add a DOC: comment for the
    probing libraray.

    It would be rather neat to pull some of the DocBook documenting these
    two helpers into in-line DOC: comments. But unfortunately kerneldoc
    doesn't support markdown or something similar to make nice-looking
    documentation, so the current state is better.

    Signed-off-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    Daniel Vetter
     
  • The current implementation of irq_set_affinity() refuses rightfully to
    route an interrupt to an offline cpu.

    But there is a special case, where this is actually desired. Some of
    the ARM SoCs have per cpu timers which require setting the affinity
    during cpu startup where the cpu is not yet in the online mask.

    If we can't do that, then the local timer interrupt for the about to
    become online cpu is routed to some random online cpu.

    The developers of the affected machines tried to work around that
    issue, but that results in a massive mess in that timer code.

    We have a yet unused argument in the set_affinity callbacks of the irq
    chips, which I added back then for a similar reason. It was never
    required so it got not used. But I'm happy that I never removed it.

    That allows us to implement a sane handling of the above scenario. So
    the affected SoC drivers can add the required force handling to their
    interrupt chip, switch the timer code to irq_force_affinity() and
    things just work.

    This does not affect any existing user of irq_set_affinity().

    Tagged for stable to allow a simple fix of the affected SoC clock
    event drivers.

    Reported-and-tested-by: Krzysztof Kozlowski
    Signed-off-by: Thomas Gleixner
    Cc: Kyungmin Park
    Cc: Marek Szyprowski
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Tomasz Figa ,
    Cc: Daniel Lezcano ,
    Cc: Kukjin Kim
    Cc: linux-arm-kernel@lists.infradead.org,
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20140416143315.717251504@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner