31 Mar, 2017

2 commits


26 Aug, 2016

1 commit


24 Aug, 2016

1 commit


17 Aug, 2016

1 commit


02 Jun, 2016

35 commits

  • TI-Feature: ti_linux_base_lsk
    TI-Tree: git@git.ti.com:ti-linux-kernel/ti-linux-kernel.git
    TI-Branch: ti-linux-4.4.y

    * 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel:
    ARM: dts: keystone: increase number of descriptors in region-12
    ti_config_fragments/connectivity.cfg: Enable IPSec config

    Signed-off-by: LCPD Auto Merger

    LCPD Auto Merger
     
  • …rnel-integration-tree into ti-linux-4.4.y

    TI-Feature: integration
    TI-Tree: git://git.ti.com/ti-linux-kernel/kernel-integration-tree.git
    TI-Branch: integration-ti-linux-4.4.y

    * 'integration-ti-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/kernel-integration-tree:
    ARM: dts: keystone: increase number of descriptors in region-12
    ti_config_fragments/connectivity.cfg: Enable IPSec config

    Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>

    LCPD Auto Merger
     
  • New interfaces were added recently but number of descriptors
    were not adjusted accordingly. This patch updates the
    number of descriptors in descriptor pool region-12 so that
    it is enough for 2 gbe+pa and 2 10gbe interfaces.

    Signed-off-by: WingMan Kwok
    Acked-by: Kishon Vijay Abraham I

    WingMan Kwok
     
  • Configs which are required for a successful ipsec association need
    to be enabled. Doing that here.

    Signed-off-by: Aparna Balasubramanian
    [nsekhar@ti.com: remove duplicates, use modules where possible]
    Signed-off-by: Sekhar Nori
    [grygorii.strashko@ti.com: remove option not related to IPSec]
    Signed-off-by: Grygorii Strashko

    Aparna Balasubramanian
     
  • TI-Feature: ti_linux_base_lsk
    TI-Tree: git@git.ti.com:ti-linux-kernel/ti-linux-kernel.git
    TI-Branch: ti-linux-4.4.y

    * 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel:
    ti_config_fragments/connectivity.cfg: build matrix-keypad as module
    ARM: dts: keystone: remove bogus PCI IO resources in DT bindings

    Signed-off-by: LCPD Auto Merger

    LCPD Auto Merger
     
  • …gration-tree/connectivity-ti-linux-kernel into ti-linux-4.4.y

    TI-Feature: connectivity
    TI-Tree: git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel.git
    TI-Branch: connectivity-ti-linux-4.4.y

    * 'connectivity-ti-linux-4.4.y' of git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel:
    ti_config_fragments/connectivity.cfg: build matrix-keypad as module
    ARM: dts: keystone: remove bogus PCI IO resources in DT bindings

    Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>

    LCPD Auto Merger
     
  • am335x-evm and several of the am437x platforms make use of the
    matrix-keypad driver so make sure to set CONFIG_KEYBOARD_MATRIX=m so
    that it is built as a module as it was with omap2plus_defconfig.

    Signed-off-by: Dave Gerlach
    Signed-off-by: Sekhar Nori

    Dave Gerlach
     
  • In the past, the PCI controller required a IO resource to be specified
    without which it fails in PCI core when creating the RC device. So
    to overcome this, a bogus entry was added. In recent kernel, this
    requirement is removed and we could initialize without specifying an IO
    resource. Keystone PCI controller hardware doesn't support IO window.
    So it is not required.

    The flip side of this is that during boot, following error log is thrown
    in, but doesn't cause any issues with SATA hard drive access. So remove
    the bogus entry as having it can causes the device to fail for access to
    the IO window (only snapshot of first few lines of dump shown)

    [ 37.182381] Unable to handle kernel paging request at virtual address fee01020
    [ 37.189598] pgd = d9d5fec0
    [ 37.192297] [fee01020] *pgd=80000800007003, *pmd=00000000
    [ 37.197700] Internal error: Oops: 206 [#1] PREEMPT SMP ARM
    [ 37.203176] Modules linked in: xhci_plat_hcd ahci libahci dwc3 libata udc_core extcon dwc3_keystone
    [ 37.212258] CPU: 0 PID: 1797 Comm: udevadm Not tainted 4.4.11-00323-ge3a9adb #1
    [ 37.219557] Hardware name: Keystone
    [ 37.223038] task: daaec600 ti: d9eba000 task.ti: d9eba000
    [ 37.228433] PC is at pci_read_resource_io+0xe4/0xf4
    [ 37.233302] LR is at 0x0
    [ 37.235830] pc : [] lr : [] psr: 60010013
    [ 37.235830] sp : d9ebbe50 ip : da11a240 fp : d9ebbe6c
    [ 37.247295] r10: d9fe4000 r9 : da31e9cc r8 : d9ebbf80
    [ 37.252511] r7 : 00000000 r6 : 00001023 r5 : 00000000 r4 : 00001023
    [ 37.259029] r3 : d9fe4000 r2 : fee01020 r1 : 00001020 r0 : 00000004
    [ 37.265548] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    [ 37.272673] Control: 30c5387d Table: 19d5fec0 DAC: fffffffd
    [ 37.278410] Process udevadm (pid: 1797, stack limit = 0xd9eba210)

    Signed-off-by: Murali Karicheri
    Signed-off-by: Sekhar Nori

    Murali Karicheri
     
  • TI-Feature: ti_linux_base_lsk
    TI-Tree: git@git.ti.com:ti-linux-kernel/ti-linux-kernel.git
    TI-Branch: ti-linux-4.4.y

    * 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel: (87 commits)
    Linux 4.4.12
    kbuild: move -Wunused-const-variable to W=1 warning level
    Revert "scsi: fix soft lockup in scsi_remove_target() on module removal"
    scsi: Add intermediate STARGET_REMOVE state to scsi_target_state
    hpfs: implement the show_options method
    hpfs: fix remount failure when there are no options changed
    UBI: Fix static volume checks when Fastmap is used
    SIGNAL: Move generic copy_siginfo() to signal.h
    thunderbolt: Fix double free of drom buffer
    IB/srp: Fix a debug kernel crash
    ALSA: hda - Fix headset mic detection problem for one Dell machine
    ALSA: hda/realtek - Add support for ALC295/ALC3254
    ALSA: hda - Fix headphone noise on Dell XPS 13 9360
    ALSA: hda/realtek - New codecs support for ALC234/ALC274/ALC294
    mcb: Fixed bar number assignment for the gdd
    clk: bcm2835: add locking to pll*_on/off methods
    locking,qspinlock: Fix spin_is_locked() and spin_unlock_wait()
    serial: samsung: Reorder the sequence of clock control when call s3c24xx_serial_set_termios()
    serial: 8250_mid: recognize interrupt source in handler
    serial: 8250_mid: use proper bar for DNV platform
    ...

    Signed-off-by: LCPD Auto Merger

    LCPD Auto Merger
     
  • …ux-stable into ti-linux-4.4.y

    This is the 4.4.12 stable release

    * tag 'v4.4.12' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable: (87 commits)
    Linux 4.4.12
    kbuild: move -Wunused-const-variable to W=1 warning level
    Revert "scsi: fix soft lockup in scsi_remove_target() on module removal"
    scsi: Add intermediate STARGET_REMOVE state to scsi_target_state
    hpfs: implement the show_options method
    hpfs: fix remount failure when there are no options changed
    UBI: Fix static volume checks when Fastmap is used
    SIGNAL: Move generic copy_siginfo() to signal.h
    thunderbolt: Fix double free of drom buffer
    IB/srp: Fix a debug kernel crash
    ALSA: hda - Fix headset mic detection problem for one Dell machine
    ALSA: hda/realtek - Add support for ALC295/ALC3254
    ALSA: hda - Fix headphone noise on Dell XPS 13 9360
    ALSA: hda/realtek - New codecs support for ALC234/ALC274/ALC294
    mcb: Fixed bar number assignment for the gdd
    clk: bcm2835: add locking to pll*_on/off methods
    locking,qspinlock: Fix spin_is_locked() and spin_unlock_wait()
    serial: samsung: Reorder the sequence of clock control when call s3c24xx_serial_set_termios()
    serial: 8250_mid: recognize interrupt source in handler
    serial: 8250_mid: use proper bar for DNV platform
    ...

    Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>

    LCPD Auto Merger
     
  • Greg Kroah-Hartman
     
  • commit c9c6837d39311b0cc14cdbe7c18e815ab44aefb1 upstream.

    gcc-6 started warning by default about variables that are not
    used anywhere and that are marked 'const', generating many
    false positives in an allmodconfig build, e.g.:

    arch/arm/mach-davinci/board-da830-evm.c:282:20: warning: 'da830_evm_emif25_pins' defined but not used [-Wunused-const-variable=]
    arch/arm/plat-omap/dmtimer.c:958:34: warning: 'omap_timer_match' defined but not used [-Wunused-const-variable=]
    drivers/bluetooth/hci_bcm.c:625:39: warning: 'acpi_bcm_default_gpios' defined but not used [-Wunused-const-variable=]
    drivers/char/hw_random/omap-rng.c:92:18: warning: 'reg_map_omap4' defined but not used [-Wunused-const-variable=]
    drivers/devfreq/exynos/exynos5_bus.c:381:32: warning: 'exynos5_busfreq_int_pm' defined but not used [-Wunused-const-variable=]
    drivers/dma/mv_xor.c:1139:34: warning: 'mv_xor_dt_ids' defined but not used [-Wunused-const-variable=]

    This is similar to the existing -Wunused-but-set-variable warning
    that was added in an earlier release and that we disable by default
    now and only enable when W=1 is set, so it makes sense to do
    the same here. Once we have eliminated the majority of the
    warnings for both, we can put them back into the default list.

    We probably want this in backport kernels as well, to allow building
    them with gcc-6 without introducing extra warnings.

    Signed-off-by: Arnd Bergmann
    Acked-by: Olof Johansson
    Acked-by: Lee Jones
    Signed-off-by: Michal Marek
    Signed-off-by: Greg Kroah-Hartman

    Arnd Bergmann
     
  • commit 305c2e71b3d733ec065cb716c76af7d554bd5571 upstream.

    Now that we've done a more comprehensive fix with the intermediate
    target state we can remove the previous hack introduced with commit
    90a88d6ef88e ("scsi: fix soft lockup in scsi_remove_target() on module
    removal").

    Signed-off-by: Johannes Thumshirn
    Reviewed-by: Ewan D. Milne
    Reviewed-by: Hannes Reinecke
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Greg Kroah-Hartman

    Johannes Thumshirn
     
  • commit f05795d3d771f30a7bdc3a138bf714b06d42aa95 upstream.

    Add intermediate STARGET_REMOVE state to scsi_target_state to avoid
    running into the BUG_ON() in scsi_target_reap(). The STARGET_REMOVE
    state is only valid in the path from scsi_remove_target() to
    scsi_target_destroy() indicating this target is going to be removed.

    This re-fixes the problem introduced in commits bc3f02a795d3 ("[SCSI]
    scsi_remove_target: fix softlockup regression on hot remove") and
    40998193560d ("scsi: restart list search after unlock in
    scsi_remove_target") in a more comprehensive way.

    [mkp: Included James' fix for scsi_target_destroy()]

    Signed-off-by: Johannes Thumshirn
    Fixes: 40998193560dab6c3ce8d25f4fa58a23e252ef38
    Reported-by: Sergey Senozhatsky
    Tested-by: Sergey Senozhatsky
    Reviewed-by: Ewan D. Milne
    Reviewed-by: Hannes Reinecke
    Reviewed-by: James Bottomley
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Greg Kroah-Hartman

    Johannes Thumshirn
     
  • commit 037369b872940cd923835a0a589763180c4a36bc upstream.

    The HPFS filesystem used generic_show_options to produce string that is
    displayed in /proc/mounts. However, there is a problem that the options
    may disappear after remount. If we mount the filesystem with option1
    and then remount it with option2, /proc/mounts should show both option1
    and option2, however it only shows option2 because the whole option
    string is replaced with replace_mount_options in hpfs_remount_fs.

    To fix this bug, implement the hpfs_show_options function that prints
    options that are currently selected.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Mikulas Patocka
     
  • commit 44d51706b4685f965cd32acde3fe0fcc1e6198e8 upstream.

    Commit ce657611baf9 ("hpfs: kstrdup() out of memory handling") checks if
    the kstrdup function returns NULL due to out-of-memory condition.

    However, if we are remounting a filesystem with no change to
    filesystem-specific options, the parameter data is NULL. In this case,
    kstrdup returns NULL (because it was passed NULL parameter), although no
    out of memory condition exists. The mount syscall then fails with
    ENOMEM.

    This patch fixes the bug. We fail with ENOMEM only if data is non-NULL.

    The patch also changes the call to replace_mount_options - if we didn't
    pass any filesystem-specific options, we don't call
    replace_mount_options (thus we don't erase existing reported options).

    Fixes: ce657611baf9 ("hpfs: kstrdup() out of memory handling")
    Signed-off-by: Mikulas Patocka
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Mikulas Patocka
     
  • commit 1900149c835ab5b48bea31a823ea5e5a401fb560 upstream.

    Ezequiel reported that he's facing UBI going into read-only
    mode after power cut. It turned out that this behavior happens
    only when updating a static volume is interrupted and Fastmap is
    used.

    A possible trace can look like:
    ubi0 warning: ubi_io_read_vid_hdr [ubi]: no VID header found at PEB 2323, only 0xFF bytes
    ubi0 warning: ubi_eba_read_leb [ubi]: switch to read-only mode
    CPU: 0 PID: 833 Comm: ubiupdatevol Not tainted 4.6.0-rc2-ARCH #4
    Hardware name: SAMSUNG ELECTRONICS CO., LTD. 300E4C/300E5C/300E7C/NP300E5C-AD8AR, BIOS P04RAP 10/15/2012
    0000000000000286 00000000eba949bd ffff8800c45a7b38 ffffffff8140d841
    ffff8801964be000 ffff88018eaa4800 ffff8800c45a7bb8 ffffffffa003abf6
    ffffffff850e2ac0 8000000000000163 ffff8801850e2ac0 ffff8801850e2ac0
    Call Trace:
    [] dump_stack+0x63/0x82
    [] ubi_eba_read_leb+0x486/0x4a0 [ubi]
    [] ubi_check_volume+0x83/0xf0 [ubi]
    [] ubi_open_volume+0x177/0x350 [ubi]
    [] vol_cdev_open+0x58/0xb0 [ubi]
    [] chrdev_open+0xae/0x1d0
    [] do_dentry_open+0x1ff/0x300
    [] ? cdev_put+0x30/0x30
    [] vfs_open+0x56/0x60
    [] path_openat+0x4f4/0x1190
    [] do_filp_open+0x91/0x100
    [] ? __alloc_fd+0xc7/0x190
    [] do_sys_open+0x13f/0x210
    [] SyS_open+0x1e/0x20
    [] entry_SYSCALL_64_fastpath+0x1a/0xa4

    UBI checks static volumes for data consistency and reads the
    whole volume upon first open. If the volume is found erroneous
    users of UBI cannot read from it, but another volume update is
    possible to fix it. The check is performed by running
    ubi_eba_read_leb() on every allocated LEB of the volume.
    For static volumes ubi_eba_read_leb() computes the checksum of all
    data stored in a LEB. To verify the computed checksum it has to read
    the LEB's volume header which stores the original checksum.
    If the volume header is not found UBI treats this as fatal internal
    error and switches to RO mode. If the UBI device was attached via a
    full scan the assumption is correct, the volume header has to be
    present as it had to be there while scanning to get known as mapped.
    If the attach operation happened via Fastmap the assumption is no
    longer correct. When attaching via Fastmap UBI learns the mapping
    table from Fastmap's snapshot of the system state and not via a full
    scan. It can happen that a LEB got unmapped after a Fastmap was
    written to the flash. Then UBI can learn the LEB still as mapped and
    accessing it returns only 0xFF bytes. As UBI is not a FTL it is
    allowed to have mappings to empty PEBs, it assumes that the layer
    above takes care of LEB accounting and referencing.
    UBIFS does so using the LEB property tree (LPT).
    For static volumes UBI blindly assumes that all LEBs are present and
    therefore special actions have to be taken.

    The described situation can happen when updating a static volume is
    interrupted, either by a user or a power cut.
    The volume update code first unmaps all LEBs of a volume and then
    writes LEB by LEB. If the sequence of operations is interrupted UBI
    detects this either by the absence of LEBs, no volume header present
    at scan time, or corrupted payload, detected via checksum.
    In the Fastmap case the former method won't trigger as no scan
    happened and UBI automatically thinks all LEBs are present.
    Only by reading data from a LEB it detects that the volume header is
    missing and incorrectly treats this as fatal error.
    To deal with the situation ubi_eba_read_leb() from now on checks
    whether we attached via Fastmap and handles the absence of a
    volume header like a data corruption error.
    This way interrupted static volume updates will correctly get detected
    also when Fastmap is used.

    Reported-by: Ezequiel Garcia
    Tested-by: Ezequiel Garcia
    Signed-off-by: Richard Weinberger
    Signed-off-by: Greg Kroah-Hartman

    Richard Weinberger
     
  • commit ca9eb49aa9562eaadf3cea071ec7018ad6800425 upstream.

    The generic copy_siginfo() is currently defined in
    asm-generic/siginfo.h, after including uapi/asm-generic/siginfo.h which
    defines the generic struct siginfo. However this makes it awkward for an
    architecture to use it if it has to define its own struct siginfo (e.g.
    MIPS and potentially IA64), since it means that asm-generic/siginfo.h
    can only be included after defining the arch-specific siginfo, which may
    be problematic if the arch-specific definition needs definitions from
    uapi/asm-generic/siginfo.h.

    It is possible to work around this by first including
    uapi/asm-generic/siginfo.h to get the constants before defining the
    arch-specific siginfo, and include asm-generic/siginfo.h after. However
    uapi headers can't be included by other uapi headers, so that first
    include has to be in an ifdef __kernel__, with the non __kernel__ case
    including the non-UAPI header instead.

    Instead of that mess, move the generic copy_siginfo() definition into
    linux/signal.h, which allows an arch-specific uapi/asm/siginfo.h to
    include asm-generic/siginfo.h and define the arch-specific siginfo, and
    for the generic copy_siginfo() to see that arch-specific definition.

    Signed-off-by: James Hogan
    Cc: Arnd Bergmann
    Cc: Ralf Baechle
    Cc: Petr Malat
    Cc: Tony Luck
    Cc: Fenghua Yu
    Cc: Christopher Ferris
    Cc: linux-arch@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/12478/
    Signed-off-by: Ralf Baechle
    Signed-off-by: Greg Kroah-Hartman

    James Hogan
     
  • commit 2ffa9a5d76a75abbc1f95c17959fced666095bdd upstream.

    If tb_drom_read() fails, sw->drom is freed but not set to NULL. sw->drom
    is then freed again in the error path of tb_switch_alloc().

    The bug can be triggered by unplugging a thunderbolt device shortly after
    it is detected by the thunderbolt driver.

    Clear sw->drom if tb_drom_read() fails.

    [bhelgaas: add Fixes:, stable versions of interest]
    Fixes: 343fcb8c70d7 ("thunderbolt: Fix nontrivial endpoint devices.")
    Signed-off-by: Andreas Noever
    Signed-off-by: Bjorn Helgaas
    CC: Lukas Wunner
    Signed-off-by: Greg Kroah-Hartman

    Andreas Noever
     
  • commit 54f5c9c52d69afa55abf2b034df8d45f588466c3 upstream.

    Avoid that the following BUG() is triggered against a debug
    kernel:

    kernel BUG at include/linux/scatterlist.h:92!
    RIP: 0010:[] [] srp_map_idb+0x199/0x1a0 [ib_srp]
    Call Trace:
    [] srp_map_data+0x84a/0x890 [ib_srp]
    [] srp_queuecommand+0x1e4/0x610 [ib_srp]
    [] scsi_dispatch_cmd+0x9e/0x180
    [] scsi_request_fn+0x477/0x610
    [] __blk_run_queue+0x2e/0x40
    [] blk_delay_work+0x20/0x30
    [] process_one_work+0x197/0x480
    [] worker_thread+0x49/0x490
    [] kthread+0xea/0x100
    [] ret_from_fork+0x22/0x40

    Fixes: f7f7aab1a5c0 ("IB/srp: Convert to new registration API")
    Signed-off-by: Bart Van Assche
    Cc: Sagi Grimberg
    Cc: Christoph Hellwig
    Reviewed-by: Max Gurtovoy
    Reviewed-by: Sagi Grimberg
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Bart Van Assche
     
  • commit 86c72d1ce91d804e4fa8d90b316a89597dd220f1 upstream.

    Add the pin configuration value of this machine into the pin_quirk
    table to make DELL1_MIC_NO_PRESENCE apply to this machine.

    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Hui Wang
     
  • commit 7d727869c7b86da0874436ac5675dcdadaf3a0a1 upstream.

    Add support for ALC295/ALC3254.
    They are simply compatible with ALC225 chip.

    Signed-off-by: Kailang Yang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit 423cd785619ac6778252fbdb916505aa1c153959 upstream.

    The headphone has noise when playing sound or switching microphone sources.
    It uses the same codec on XPS 13 9350, but with different subsystem ID.
    Applying the fixup can solve the issue.
    Also, changing the model name to better differentiate models.

    v2: Reorder by device ID.

    Signed-off-by: Kai-Heng Feng
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kai-Heng Feng
     
  • commit dcd4f0db6141d6bf2cb897309d5d6f53d1b1696f upstream.

    Support new codecs for ALC234/ALC274/ALC294.
    This three codecs was the same IC.
    But bonding is not the same.

    Signed-off-by: Kailang Yang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit f75564d343010b025301d9548f2304f48eb25f01 upstream.

    The bar number is found in reg2 within the gdd. Therefore
    we need to change the assigment from reg1 to reg2 which
    is the correct location.

    Signed-off-by: Andreas Werner
    Fixes: '3764e82e5' drivers: Introduce MEN Chameleon Bus
    Signed-off-by: Johannes Thumshirn
    Signed-off-by: Greg Kroah-Hartman

    Andreas Werner
     
  • commit ec36a5c6682fdd5328abf15c3c67281bed0241d7 upstream.

    Add missing locking to:
    * bcm2835_pll_divider_on
    * bcm2835_pll_divider_off
    to protect the read modify write cycle for the
    register access protecting both cm_reg and a2w_reg
    registers.

    Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the
    audio domain clocks")

    Signed-off-by: Martin Sperl
    Signed-off-by: Eric Anholt
    Reviewed-by: Eric Anholt
    Signed-off-by: Greg Kroah-Hartman

    Martin Sperl
     
  • commit 54cf809b9512be95f53ed4a5e3b631d1ac42f0fa upstream.

    Similar to commits:

    51d7d5205d33 ("powerpc: Add smp_mb() to arch_spin_is_locked()")
    d86b8da04dfa ("arm64: spinlock: serialise spin_unlock_wait against concurrent lockers")

    qspinlock suffers from the fact that the _Q_LOCKED_VAL store is
    unordered inside the ACQUIRE of the lock.

    And while this is not a problem for the regular mutual exclusive
    critical section usage of spinlocks, it breaks creative locking like:

    spin_lock(A) spin_lock(B)
    spin_unlock_wait(B) if (!spin_is_locked(A))
    do_something() do_something()

    In that both CPUs can end up running do_something at the same time,
    because our _Q_LOCKED_VAL store can drop past the spin_unlock_wait()
    spin_is_locked() loads (even on x86!!).

    To avoid making the normal case slower, add smp_mb()s to the less used
    spin_unlock_wait() / spin_is_locked() side of things to avoid this
    problem.

    Reported-and-tested-by: Davidlohr Bueso
    Reported-by: Giovanni Gherdovich
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Peter Zijlstra
     
  • commit b8995f527aac143e83d3900ff39357651ea4e0f6 upstream.

    This patch fixes the broken serial log when changing the clock source
    of uart device. Before disabling the original clock source, this patch
    enables the new clock source to protect the clock off state for a split second.

    Signed-off-by: Chanwoo Choi
    Reviewed-by: Marek Szyprowski
    Signed-off-by: Greg Kroah-Hartman
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Krzysztof Kozlowski

    Chanwoo Choi
     
  • commit c42850f1ae7e70056f852e67bb9dddf927853b47 upstream.

    There is a special register that shows interrupt status by source. In
    particular case the source can be a combination of DMA Tx, DMA Rx, and UART.

    Read the register and call the handlers only for sources that request an
    interrupt.

    Fixes: 6ede6dcd87aa ("serial: 8250_mid: add support for DMA engine handling from UART MMIO")
    Reviewed-by: Heikki Krogerus
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Greg Kroah-Hartman

    Andy Shevchenko
     
  • commit 107e15fc1f8d6ef69eac5f175971252f76e82f0d upstream.

    Unlike Intel Medfield and Tangier platforms DNV uses PCI BAR0 for IO compatible
    resources and BAR1 for MMIO. We need latter in a way to support DMA. Introduce
    an additional field in the internal structure and pass PCI BAR based on device
    ID.

    Reported-by: "Lai, Poey Seng"
    Fixes: 6ede6dcd87aa ("serial: 8250_mid: add support for DMA engine handling from UART MMIO")
    Reviewed-by: Heikki Krogerus
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Greg Kroah-Hartman

    Andy Shevchenko
     
  • commit 6f210c18c1c0f016772c8cd51ae12a02bfb9e7ef upstream.

    Since commit 21947ba654a6 ("serial: 8250_pci: replace switch-case by
    formula"), the 8250 driver crashes in the byt_set_termios() function
    with a divide error. This is caused by the fact that a baud rate of 0 (B0)
    is not handled properly. Fix it by falling back to B9600 in this case.

    Signed-off-by: David Müller
    Fixes: 21947ba654a6 ("serial: 8250_pci: replace switch-case by formula")
    Suggested-by: Andy Shevchenko
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Greg Kroah-Hartman

    David Müller
     
  • commit 0f40fbbcc34e093255a2b2d70b6b0fb48c3f39aa upstream.

    OpenSSH expects the (non-blocking) read() of pty master to return
    EAGAIN only if it has received all of the slave-side output after
    it has received SIGCHLD. This used to work on pre-3.12 kernels.

    This fix effectively forces non-blocking read() and poll() to
    block for parallel i/o to complete for all ttys. It also unwinds
    these changes:

    1) f8747d4a466ab2cafe56112c51b3379f9fdb7a12
    tty: Fix pty master read() after slave closes

    2) 52bce7f8d4fc633c9a9d0646eef58ba6ae9a3b73
    pty, n_tty: Simplify input processing on final close

    3) 1a48632ffed61352a7810ce089dc5a8bcd505a60
    pty: Fix input race when closing

    Inspired by analysis and patch from Marc Aurele La France

    Reported-by: Volth
    Reported-by: Marc Aurele La France
    BugLink: https://bugzilla.mindrot.org/show_bug.cgi?id=52
    BugLink: https://bugzilla.mindrot.org/show_bug.cgi?id=2492
    Signed-off-by: Brian Bloniarz
    Reviewed-by: Peter Hurley
    Signed-off-by: Greg Kroah-Hartman

    Brian Bloniarz
     
  • commit 5be605ac9af979265d7b64c160ad9928088a78be upstream.

    Commit 1cf6e8fc8341 ("tty/serial: at91: fix RTS line management when
    hardware handshake is enabled") actually allowed to enable hardware
    handshaking.
    Before, the CRTSCTS flags was silently ignored.

    As the DMA controller can't drive RTS (as explain in the commit message).
    Ensure that hardware flow control stays disabled when DMA is used and FIFOs
    are not available.

    Signed-off-by: Alexandre Belloni
    Acked-by: Nicolas Ferre
    Fixes: 1cf6e8fc8341 ("tty/serial: at91: fix RTS line management when hardware handshake is enabled")
    Signed-off-by: Greg Kroah-Hartman

    Alexandre Belloni
     
  • commit d175feca89a1c162f60f4e3560ca7bc9437c65eb upstream.

    Dmitry reported, that the current cleanup code in n_gsm can trigger a
    warning:
    WARNING: CPU: 2 PID: 24238 at drivers/tty/n_gsm.c:2048 gsm_cleanup_mux+0x166/0x6b0()
    ...
    Call Trace:
    ...
    [] warn_slowpath_null+0x29/0x30 kernel/panic.c:490
    [] gsm_cleanup_mux+0x166/0x6b0 drivers/tty/n_gsm.c:2048
    [] gsmld_open+0x5b7/0x7a0 drivers/tty/n_gsm.c:2386
    [] tty_ldisc_open.isra.2+0x78/0xd0 drivers/tty/tty_ldisc.c:447
    [] tty_set_ldisc+0x1ca/0xa70 drivers/tty/tty_ldisc.c:567
    [< inline >] tiocsetd drivers/tty/tty_io.c:2650
    [] tty_ioctl+0xb2a/0x2140 drivers/tty/tty_io.c:2883
    ...

    But this is a legal path when open fails to find a space in the
    gsm_mux array and tries to clean up. So make it a standard test
    instead of a warning.

    Reported-by: "Dmitry Vyukov"
    Cc: Alan Cox
    Link: http://lkml.kernel.org/r/CACT4Y+bHQbAB68VFi7Romcs-Z9ZW3kQRvcq+BvHH1oa5NcAdLA@mail.gmail.com
    Fixes: 5a640967 ("tty/n_gsm.c: fix a memory leak in gsmld_open()")
    Signed-off-by: Jiri Slaby
    Signed-off-by: Greg Kroah-Hartman

    Jiri Slaby
     
  • commit 6798df4c5fe0a7e6d2065cf79649a794e5ba7114 upstream.

    When csw->con_startup() fails in do_register_con_driver, we return no
    error (i.e. 0). This was changed back in 2006 by commit 3e795de763.
    Before that we used to return -ENODEV.

    So fix the return value to be -ENODEV in that case again.

    Fixes: 3e795de763 ("VT binding: Add binding/unbinding support for the VT console")
    Signed-off-by: Jiri Slaby
    Reported-by: "Dan Carpenter"
    Signed-off-by: Greg Kroah-Hartman

    Jiri Slaby