linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 3.19 000/177] 3.19.7-stable review
@ 2015-05-02 19:00 Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 001/177] ip_forward: Drop frames with attached skb->sk Greg Kroah-Hartman
                   ` (175 more replies)
  0 siblings, 176 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, torvalds, akpm, linux, shuah.kh, stable

This is the start of the stable review cycle for the 3.19.7 release.
There are 177 patches in this series, all will be posted as a response
to this one.  If anyone has any issues with these being applied, please
let me know.

Responses should be made by Mon May  4 18:59:31 UTC 2015.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Linux 3.19.7-rc1

Florian Westphal <fw@strlen.de>
    netfilter: bridge: really save frag_max_size between PRE and POST_ROUTING

Daniel Borkmann <daniel@iogearbox.net>
    netfilter: x_tables: fix cgroup matching on non-full sks

Junjie Mao <junjie_mao@yeah.net>
    driver core: bus: Goto appropriate labels on failure in bus_add_device

Linus Walleij <linus.walleij@linaro.org>
    drivers: platform: parse IRQ flags from resources

Dan Carpenter <dan.carpenter@oracle.com>
    memstick: mspro_block: add missing curly braces

Nishanth Menon <nm@ti.com>
    C6x: time: Ensure consistency in __init

Vutla, Lokesh <lokeshvutla@ti.com>
    crypto: omap-aes - Fix support for unequal lengths

Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    wl18xx: show rx_frames_per_rates as an array as it really is

mancha security <mancha1@zoho.com>
    lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR

Daniel Borkmann <daniel@iogearbox.net>
    ebpf: verifier: check that call reg with ARG_ANYTHING is initialized

Johannes Berg <johannes.berg@intel.com>
    mac80211: send AP probe as unicast again

Sabrina Dubroca <sd@queasysnail.net>
    e1000: add dummy allocator to fix race condition between mtu change and netpoll

Anna Schumaker <Anna.Schumaker@netapp.com>
    NFS: Add a stub for GETDEVICELIST

Mark Salter <msalter@redhat.com>
    nfsd: eliminate NFSD_DEBUG

J. Bruce Fields <bfields@redhat.com>
    nfsd4: disallow SEEK with special stateids

J. Bruce Fields <bfields@redhat.com>
    nfsd4: fix READ permission checking

J. Bruce Fields <bfields@redhat.com>
    nfsd4: disallow ALLOCATE with special stateids

Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    Revert "nfs: replace nfs_add_stats with nfs_inc_stats when add one"

Al Viro <viro@zeniv.linux.org.uk>
    RCU pathwalk breakage when running into a symlink overmounting something

Dmitry Torokhov <dmitry.torokhov@gmail.com>
    drm/i915: cope with large i2c transfers

Imre Deak <imre.deak@intel.com>
    drm/i915: vlv: fix save/restore of GFX_MAX_REQ_COUNT reg

Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    drm: adv7511: Fix nested sleep when reading EDID

Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    drm: adv7511: Fix DDC error interrupt handling

Daniel Vetter <daniel.vetter@ffwll.ch>
    drm/i915: Dont enable CS_PARSER_ERROR interrupts at all

Alex Deucher <alexander.deucher@amd.com>
    drm/radeon: fix doublescan modes (v2)

Mark Brown <broonie@kernel.org>
    i2c: core: Export bus recovery functions

Dmitry Torokhov <dmitry.torokhov@gmail.com>
    i2c: rk3x: report number of messages transmitted

Wolfram Sang <wsa+renesas@sang-engineering.com>
    i2c: mux: use proper dev when removing "channel-X" symlinks

Joonsoo Kim <iamjoonsoo.kim@lge.com>
    tracing: Fix incorrect enabling of trace events by boot cmdline

Rabin Vincent <rabin@rab.in>
    tracing: Handle ftrace_dump() atomic context in graph_trace_open()

Sagi Grimberg <sagig@mellanox.com>
    IB/iser: Fix wrong calculation of protection buffer length

Erez Shitrit <erezsh@mellanox.com>
    IB/mlx4: Fix WQE LSO segment calculation

Yann Droneaud <ydroneaud@opteya.com>
    IB/core: don't disallow registering region starting at 0x0

Yann Droneaud <ydroneaud@opteya.com>
    IB/core: disallow registering 0-sized memory region

Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
    stk1160: Make sure current buffer is released

Sifan Naeem <sifan.naeem@imgtec.com>
    rc: img-ir: fix error in parameters passed to irq_free()

James Bottomley <JBottomley@Odin.com>
    mvsas: fix panic on expander attached SATA devices

K. Y. Srinivasan <kys@microsoft.com>
    Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open()

Martin K. Petersen <martin.petersen@oracle.com>
    sd: Fix missing ATO tag check

Martin K. Petersen <martin.petersen@oracle.com>
    sd: Unregister integrity profile

Ben Collins <ben.c@servergy.com>
    dm crypt: fix deadlock when async crypto algorithm returns -EBUSY

Archit Taneja <architt@codeaurora.org>
    clk: qcom: fix RCG M/N counter configuration

Stephen Boyd <sboyd@codeaurora.org>
    clk: qcom: Fix i2c frequency table

Thierry Reding <treding@nvidia.com>
    clk: tegra: Register the proper number of resets

Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    clk: samsung: exynos4: Disable ARMCLK down feature on Exynos4210 SoC

Gregory CLEMENT <gregory.clement@free-electrons.com>
    gpio: mvebu: Fix mask/unmask managment per irq chip type

Max Filippov <jcmvbkbc@gmail.com>
    xtensa: ISS: fix locking in TAP network adapter

Max Filippov <jcmvbkbc@gmail.com>
    xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range

Max Filippov <jcmvbkbc@gmail.com>
    xtensa: xtfpga: fix hardware lockup caused by LCD driver

Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    ACPI / scan: Annotate physical_node_lock in acpi_scan_is_offline()

Octavian Purdila <octavian.purdila@intel.com>
    ACPICA: Tables: Don't release ACPI_MTX_TABLES in acpi_tb_install_standard_table().

Lv Zheng <lv.zheng@intel.com>
    ACPICA: Utilities: split IO address types from data type models.

Howard Mitchell <hm@hmbedded.co.uk>
    ASoC: pcm512x: Add 'Analogue' prefix to analogue volume controls

Manish Badarkhe <manishvb@ti.com>
    ASoC: davinci-evm: drop un-necessary remove function

Sergej Sawazki <ce3a@gmx.de>
    ASoC: wm8741: Fix rates constraints values

Pascal Huerst <pascal.huerst@gmail.com>
    ASoC: cs4271: Increase delay time after reset

Michael Ellerman <mpe@ellerman.id.au>
    powerpc/cell: Fix cell iommu after it_page_shift changes

Michael Ellerman <mpe@ellerman.id.au>
    powerpc/cell: Fix crash in iic_setup_cpu() after per_cpu changes

Dave Olson <olson@cumulusnetworks.com>
    powerpc: Fix missing L2 cache size in /sys/devices/system/cpu

Anton Blanchard <anton@samba.org>
    powerpc, jump_label: Include linux/jump_label.h to get HAVE_JUMP_LABEL define

Gavin Shan <gwshan@linux.vnet.ibm.com>
    powerpc/powernv: Don't map M64 segments using M32DT

Will Deacon <will.deacon@arm.com>
    arm64: errata: add workaround for cortex-a53 erratum #845719

Mark Rutland <mark.rutland@arm.com>
    arm64: apply alternatives for !SMP kernels

Mark Rutland <mark.rutland@arm.com>
    arm64: head.S: ensure visibility of page tables

Bo Yan <byan@nvidia.com>
    arm64: fix midr range for Cortex-A57 erratum 832075

Alexander Ploumistos <alex.ploumistos@gmail.com>
    Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card

Sagi Grimberg <sagig@mellanox.com>
    iser-target: Fix possible deadlock in RDMA_CM connection error

Sagi Grimberg <sagig@mellanox.com>
    iser-target: Fix session hang in case of an rdma read DIF error

Akinobu Mita <akinobu.mita@gmail.com>
    target/file: Fix SG table for prot_buf initialization

Akinobu Mita <akinobu.mita@gmail.com>
    target/file: Fix UNMAP with DIF protection support

Akinobu Mita <akinobu.mita@gmail.com>
    target/file: Fix BUG() when CONFIG_DEBUG_SG=y and DIF protection enabled

Nicholas Bellinger <nab@linux-iscsi.org>
    target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling

K. Y. Srinivasan <kys@microsoft.com>
    scsi: storvsc: Fix a bug in copy_from_bounce_buffer()

Brian Norris <computersforpeace@gmail.com>
    UBI: fix check for "too many bytes"

Brian Norris <computersforpeace@gmail.com>
    UBI: initialize LEB number variable

Brian Norris <computersforpeace@gmail.com>
    UBI: fix out of bounds write

Brian Norris <computersforpeace@gmail.com>
    UBI: account for bitflips in both the VID header and data

Thomas D <whissi@whissi.de>
    tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile

Steven Rostedt (Red Hat) <rostedt@goodmis.org>
    tools lib traceevent kbuffer: Remove extra update to data pointer in PADDING

Anton Blanchard <anton@samba.org>
    powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH

Vinson Lee <vlee@twitter.com>
    perf tools: Work around lack of sched_getcpu in glibc < 2.6.

H.J. Lu <hjl.tools@gmail.com>
    perf tools: Fix perf-read-vdsox32 not building and lib64 install dir

Vinson Lee <vlee@twitter.com>
    perf symbols: Define STT_GNU_IFUNC for glibc 2.9 and older.

Eric W. Biederman <ebiederm@xmission.com>
    mnt: Don't propagate umounts in __detach_mounts

Eric W. Biederman <ebiederm@xmission.com>
    mnt: Improve the umount_tree flags

Lukas Czerner <lczerner@redhat.com>
    ext4: make fsync to sync parent dir in no-journal for real this time

Marek Vasut <marex@denx.de>
    rtlwifi: rtl8192cu: Add new device ID

Larry Finger <Larry.Finger@lwfinger.net>
    rtlwifi: rtl8192cu: Add new USB ID

Christophe Ricard <christophe.ricard@gmail.com>
    NFC: st21nfcb: Retry i2c_master_send if it returns a negative value

Oleg Nesterov <oleg@redhat.com>
    ptrace: fix race between ptrace_resume() and wait_task_stopped()

Michael Davidson <md@google.com>
    fs/binfmt_elf.c: fix bug in loading of PIE binaries

Johan Hovold <johan@kernel.org>
    mfd: core: Fix platform-device name collisions

Ulrik De Bie <ulrik.debie-os@e2big.org>
    Input: elantech - fix absolute mode setting on some ASUS laptops

Kailang Yang <kailang@realtek.com>
    ALSA: hda/realtek - Fix Headphone Mic doesn't recording for ALC256

David Henningsson <david.henningsson@canonical.com>
    ALSA: hda - fix "num_steps = 0" error on ALC256

Jo-Philipp Wich <jow@openwrt.org>
    ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T450

Michael Gernoth <michael@gernoth.net>
    ALSA: emu10k1: don't deadlock in proc-functions

Yves-Alexis Perez <corsac@debian.org>
    ALSA: hda - Add dock support for ThinkPad X250 (17aa:2226)

Boris Brezillon <boris.brezillon@free-electrons.com>
    clk: at91: usb: propagate rate modification to the parent clk

Felipe Balbi <balbi@ti.com>
    usb: core: hub: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: sl811: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: ehci: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: xhci: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: isp116x: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: r8a66597: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: fotg210: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: uhci: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: fusbh200: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: host: oxu210hp: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: musb: use new USB_RESUME_TIMEOUT

Felipe Balbi <balbi@ti.com>
    usb: define a generic USB_RESUME_TIMEOUT macro

Axel Lin <axel.lin@ingics.com>
    usb: phy: Find the right match in devm_usb_phy_match

Felipe Balbi <balbi@ti.com>
    usb: musb: core: fix TX/RX endpoint order

Andreas Faerber <afaerber@suse.de>
    ARM: dts: fix mmc node updates for exynos5250-spring

Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
    ARM: dts: dove: Fix uart[23] reg property

Nicolas Ferre <nicolas.ferre@atmel.com>
    ARM: at91/dt: sama5d3 xplained: add phy address for macb1

Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore

Gregory CLEMENT <gregory.clement@free-electrons.com>
    ARM: mvebu: Disable CPU Idle on Armada 38x

Andrey Ryabinin <a.ryabinin@samsung.com>
    ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE

Russell King <rmk+kernel@arm.linux.org.uk>
    ARM: fix broken hibernation

Andrew Elble <aweits@rit.edu>
    NFS: fix BUG() crash in notify_change() with patch to chown_common()

Krzysztof Kozlowski <k.kozlowski@samsung.com>
    power_supply: ipaq_micro_battery: Check return values in probe

Krzysztof Kozlowski <k.kozlowski@samsung.com>
    power_supply: ipaq_micro_battery: Fix leaking workqueue

Krzysztof Kozlowski <k.kozlowski@samsung.com>
    power_supply: lp8788-charger: Fix leaked power supply on probe fail

Krzysztof Kozlowski <k.kozlowski@samsung.com>
    power_supply: twl4030_madc: Check return value of power_supply_register

Steven Rostedt <rostedt@goodmis.org>
    ring-buffer: Replace this_cpu_*() with __this_cpu_*()

Krzysztof Kozlowski <k.kozlowski@samsung.com>
    compal-laptop: Check return value of power_supply_register

Krzysztof Kozlowski <k.kozlowski@samsung.com>
    compal-laptop: Fix leaking hwmon device

Ian Abbott <abbotti@mev.co.uk>
    spi: spidev: fix possible arithmetic overflow for multi-transfer message

Lucas Stach <l.stach@pengutronix.de>
    spi: imx: read back the RX/TX watermark levels earlier

Chen-Yu Tsai <wens@csie.org>
    mmc: sunxi: Use devm_reset_control_get_optional() for reset control

Oliver Neukum <oneukum@suse.de>
    cdc-wdm: fix endianness bug in debug statements

Sudeep Holla <sudeep.holla@arm.com>
    drivers/base: cacheinfo: validate device node for all the caches

NeilBrown <neilb@suse.de>
    md/raid0: fix bug with chunksize not a power of 2.

Malcolm Priestley <tvboxspy@gmail.com>
    staging: vt6655: use ieee80211_tx_info to select packet type.

Alistair Strachan <alistair.strachan@imgtec.com>
    staging: android: sync: Fix memory corruption in sync_timeline_signal().

Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    staging: panel: fix lcd type

Huacai Chen <chenhc@lemote.com>
    MIPS: Hibernate: flush TLB entries earlier

Huacai Chen <chenhc@lemote.com>
    MIPS: Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction

Markos Chandras <markos.chandras@imgtec.com>
    MIPS: unaligned: Fix regular load/store instruction emulation for EVA

Markos Chandras <markos.chandras@imgtec.com>
    MIPS: asm: asm-eva: Introduce kernel load/store variants

Markos Chandras <markos.chandras@imgtec.com>
    MIPS: Malta: Detect and fix bad memsize values

James Hogan <james.hogan@imgtec.com>
    MIPS: lose_fpu(): Disable FPU when MSA enabled

James Hogan <james.hogan@imgtec.com>
    MIPS: KVM: Handle MSA Disabled exceptions from guest

Christoffer Dall <christoffer.dall@linaro.org>
    arm/arm64: KVM: Keep elrsr/aisr in sync with software model

Marc Zyngier <marc.zyngier@arm.com>
    arm64: KVM: Do not use pgd_index to index stage-2 pgd

Marc Zyngier <marc.zyngier@arm.com>
    arm64: KVM: Fix stage-2 PGD allocation to have per-page refcounting

Jan Kiszka <jan.kiszka@siemens.com>
    ARM: KVM: Fix size check in __coherent_cache_guest_page

Eric Auger <eric.auger@linaro.org>
    KVM: arm/arm64: vgic: vgic_init returns -ENODEV when no online vcpu

Andre Przywara <andre.przywara@arm.com>
    KVM: arm/arm64: check IRQ number on userland injection

Radim Krčmář <rkrcmar@redhat.com>
    KVM: use slowpath for cross page cached accesses

Heiko Carstens <heiko.carstens@de.ibm.com>
    s390/hibernate: fix save and restore of kernel text section

Jens Freimann <jfrei@linux.vnet.ibm.com>
    KVM: s390: fix get_all_floating_irqs

Christian Borntraeger <borntraeger@de.ibm.com>
    KVM: s390: no need to hold the kvm->mutex for floating interrupts

Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
    KVM: s390: Zero out current VMDB of STSI before including level3 data.

David Hildenbrand <dahi@linux.vnet.ibm.com>
    KVM: s390: reinjection of irqs can fail in the tpi handler

David Hildenbrand <dahi@linux.vnet.ibm.com>
    KVM: s390: fix handling of write errors in the tpi handler

Andrzej Pietrasiewicz <andrzej.p@samsung.com>
    usb: gadget: printer: enqueue printer's response for setup request

Filipe Manana <fdmanana@suse.com>
    Btrfs: fix inode eviction infinite loop after extent_same ioctl

Filipe Manana <fdmanana@suse.com>
    Btrfs: fix inode eviction infinite loop after cloning into it

David Sterba <dsterba@suse.cz>
    btrfs: don't accept bare namespace as a valid xattr

Filipe Manana <fdmanana@suse.com>
    Btrfs: fix log tree corruption when fs mounted with -o discard

Nadav Amit <namit@cs.technion.ac.il>
    KVM: x86: Fix MSR_IA32_BNDCFGS in msrs_to_save

Peter Zijlstra <peterz@infradead.org>
    perf/x86/intel: Fix Core2,Atom,NHM,WSM cycles:pp events

Mike Galbraith <bitbucket@online.de>
    sched/idle/x86: Optimize unnecessary mwait_idle() resched IPIs

Len Brown <len.brown@intel.com>
    sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve power savings and to improve performance

Andy Lutomirski <luto@amacapital.net>
    x86/asm/decoder: Fix and enforce max instruction size in the insn decoder

Gu Zheng <guz.fnst@cn.fujitsu.com>
    md: fix md io stats accounting broken

Amir Vadai <amirv@mellanox.com>
    net/mlx4_en: Prevent setting invalid RSS hash function

Alexey Khoroshilov <khoroshilov@ispras.ru>
    pxa168: fix double deallocation of managed resources

Eric Dumazet <edumazet@google.com>
    net: fix crash in build_skb()

Eric Dumazet <edumazet@google.com>
    net: do not deplete pfmemalloc reserve

Eric Dumazet <edumazet@google.com>
    tcp: avoid looping in tcp_send_fin()

Eric Dumazet <edumazet@google.com>
    tcp: fix possible deadlock in tcp_send_fin()

Tom Herbert <tom@herbertland.com>
    ppp: call skb_checksum_complete_unset in ppp_receive_frame

Tom Herbert <tom@herbertland.com>
    net: add skb_checksum_complete_unset

Sebastian Pöhn <sebastian.poehn@gmail.com>
    ip_forward: Drop frames with attached skb->sk


-------------

Diffstat:

 Documentation/virtual/kvm/devices/s390_flic.txt    |   3 +
 Makefile                                           |   4 +-
 arch/arm/boot/dts/at91-sama5d3_xplained.dts        |   6 +
 arch/arm/boot/dts/dove.dtsi                        |   4 +-
 arch/arm/boot/dts/exynos5250-spring.dts            |  16 +--
 arch/arm/include/asm/elf.h                         |   2 +-
 arch/arm/include/asm/kvm_mmu.h                     |  15 ++-
 arch/arm/include/uapi/asm/kvm.h                    |   8 +-
 arch/arm/kernel/hibernate.c                        |   5 +-
 arch/arm/kernel/process.c                          |  10 +-
 arch/arm/kernel/reboot.h                           |   6 +
 arch/arm/kvm/arm.c                                 |   3 +-
 arch/arm/kvm/mmu.c                                 |  73 +++++++----
 arch/arm/mach-mvebu/pmsu.c                         |  16 ++-
 arch/arm/mach-s3c64xx/crag6410.h                   |   1 +
 arch/arm/mach-s3c64xx/mach-crag6410.c              |   1 +
 arch/arm64/Kconfig                                 |  25 ++++
 arch/arm64/include/asm/cpufeature.h                |   3 +-
 arch/arm64/include/asm/kvm_mmu.h                   |  48 +-------
 arch/arm64/include/asm/smp_plat.h                  |   2 +
 arch/arm64/include/uapi/asm/kvm.h                  |   8 +-
 arch/arm64/kernel/cpu_errata.c                     |  11 +-
 arch/arm64/kernel/entry.S                          |  20 +++
 arch/arm64/kernel/head.S                           |   1 +
 arch/arm64/kernel/setup.c                          |  12 ++
 arch/arm64/kernel/smp.c                            |   2 +-
 arch/c6x/kernel/time.c                             |   2 +-
 arch/mips/include/asm/asm-eva.h                    | 137 ++++++++++++++-------
 arch/mips/include/asm/fpu.h                        |   1 +
 arch/mips/include/asm/kvm_host.h                   |   2 +
 arch/mips/kernel/unaligned.c                       |  52 +++++++-
 arch/mips/kvm/emulate.c                            |   1 +
 arch/mips/kvm/mips.c                               |   4 +
 arch/mips/kvm/trap_emul.c                          |  28 +++++
 arch/mips/loongson/loongson-3/irq.c                |   1 +
 arch/mips/mti-malta/malta-memory.c                 |   6 +
 arch/mips/power/hibernate.S                        |   3 +-
 arch/powerpc/kernel/cacheinfo.c                    |  44 +++++--
 arch/powerpc/perf/callchain.c                      |   2 +-
 arch/powerpc/platforms/cell/interrupt.c            |   2 +-
 arch/powerpc/platforms/cell/iommu.c                |   2 +-
 arch/powerpc/platforms/powernv/opal-wrappers.S     |   2 +-
 arch/powerpc/platforms/powernv/pci-ioda.c          |   3 +-
 arch/powerpc/platforms/pseries/hvCall.S            |   2 +-
 arch/powerpc/platforms/pseries/lpar.c              |   2 +-
 arch/s390/kernel/suspend.c                         |   4 +
 arch/s390/kvm/interrupt.c                          |  70 +++++------
 arch/s390/kvm/kvm-s390.h                           |   4 +-
 arch/s390/kvm/priv.c                               |  42 ++++---
 arch/x86/include/asm/insn.h                        |   2 +-
 arch/x86/include/asm/mwait.h                       |   8 ++
 arch/x86/kernel/cpu/perf_event_intel_ds.c          |   8 ++
 arch/x86/kernel/process.c                          |  51 ++++++++
 arch/x86/kvm/x86.c                                 |  10 +-
 arch/x86/lib/insn.c                                |   7 ++
 arch/xtensa/Kconfig                                |  30 +++++
 arch/xtensa/include/uapi/asm/unistd.h              |   2 +-
 arch/xtensa/platforms/iss/network.c                |  29 ++---
 arch/xtensa/platforms/xtfpga/Makefile              |   3 +-
 .../platforms/xtfpga/include/platform/hardware.h   |   3 -
 .../xtensa/platforms/xtfpga/include/platform/lcd.h |  15 +++
 arch/xtensa/platforms/xtfpga/lcd.c                 |  55 +++++----
 drivers/acpi/acpica/tbinstal.c                     |   1 -
 drivers/acpi/scan.c                                |   6 +-
 drivers/base/bus.c                                 |   4 +-
 drivers/base/cacheinfo.c                           |  13 +-
 drivers/base/platform.c                            |   9 ++
 drivers/bluetooth/ath3k.c                          |   1 +
 drivers/bluetooth/btusb.c                          |   1 +
 drivers/clk/at91/clk-usb.c                         |  64 +++++++---
 drivers/clk/qcom/clk-rcg2.c                        |   2 +-
 drivers/clk/qcom/gcc-ipq806x.c                     |   2 +-
 drivers/clk/samsung/clk-exynos4.c                  |  11 +-
 drivers/clk/tegra/clk.c                            |   2 +-
 drivers/crypto/omap-aes.c                          |  14 ++-
 drivers/gpio/gpio-mvebu.c                          |  24 ++--
 drivers/gpu/drm/i2c/adv7511.c                      | 102 +++++++--------
 drivers/gpu/drm/i915/i915_drv.c                    |   4 +-
 drivers/gpu/drm/i915/i915_irq.c                    |   8 +-
 drivers/gpu/drm/i915/i915_reg.h                    |   1 +
 drivers/gpu/drm/i915/intel_i2c.c                   |  66 ++++++++--
 drivers/gpu/drm/radeon/atombios_crtc.c             |   8 +-
 drivers/hv/channel.c                               |   7 +-
 drivers/i2c/busses/i2c-rk3x.c                      |   2 +-
 drivers/i2c/i2c-core.c                             |   3 +
 drivers/i2c/i2c-mux.c                              |   8 +-
 drivers/infiniband/core/umem.c                     |   7 +-
 drivers/infiniband/hw/mlx4/qp.c                    |   3 +-
 drivers/infiniband/ulp/iser/iser_initiator.c       |   4 +-
 drivers/infiniband/ulp/isert/ib_isert.c            |  20 +--
 drivers/input/mouse/elantech.c                     |  22 ++++
 drivers/input/mouse/elantech.h                     |   1 +
 drivers/md/dm-crypt.c                              |  12 +-
 drivers/md/md.c                                    |   6 +-
 drivers/md/raid0.c                                 |   3 +-
 drivers/media/rc/img-ir/img-ir-core.c              |   2 +-
 drivers/media/usb/stk1160/stk1160-v4l.c            |  17 ++-
 drivers/memstick/core/mspro_block.c                |   3 +-
 drivers/mfd/mfd-core.c                             |   2 +-
 drivers/mmc/host/sunxi-mmc.c                       |   4 +-
 drivers/mtd/ubi/attach.c                           |   2 +-
 drivers/mtd/ubi/cdev.c                             |   2 +-
 drivers/mtd/ubi/eba.c                              |   3 +-
 drivers/mtd/ubi/wl.c                               |   2 +-
 drivers/net/ethernet/intel/e1000/e1000_main.c      |  10 +-
 drivers/net/ethernet/marvell/pxa168_eth.c          |  16 +--
 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c    |  29 +++--
 drivers/net/ppp/ppp_generic.c                      |   1 +
 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c        |   2 +
 drivers/net/wireless/ti/wl18xx/debugfs.c           |   2 +-
 drivers/net/wireless/ti/wlcore/debugfs.h           |   4 +-
 drivers/nfc/st21nfcb/i2c.c                         |   4 +-
 drivers/platform/x86/compal-laptop.c               |  10 +-
 drivers/power/ipaq_micro_battery.c                 |  22 +++-
 drivers/power/lp8788-charger.c                     |   4 +-
 drivers/power/twl4030_madc_battery.c               |   7 +-
 drivers/scsi/mvsas/mv_sas.c                        |   5 +-
 drivers/scsi/sd.c                                  |   1 +
 drivers/scsi/sd_dif.c                              |   2 +-
 drivers/scsi/storvsc_drv.c                         |  15 +--
 drivers/spi/spi-imx.c                              |   4 +-
 drivers/spi/spidev.c                               |   5 +-
 drivers/staging/android/sync.c                     |   2 +-
 drivers/staging/panel/panel.c                      |  12 +-
 drivers/staging/vt6655/rxtx.c                      |  14 ++-
 drivers/target/target_core_file.c                  | 122 +++++++++++-------
 drivers/target/target_core_sbc.c                   |  15 ++-
 drivers/target/target_core_transport.c             |  37 +++++-
 drivers/usb/class/cdc-wdm.c                        |  12 +-
 drivers/usb/core/hub.c                             |   4 +-
 drivers/usb/gadget/legacy/printer.c                |   9 ++
 drivers/usb/host/ehci-hcd.c                        |  10 +-
 drivers/usb/host/ehci-hub.c                        |   9 +-
 drivers/usb/host/fotg210-hcd.c                     |   2 +-
 drivers/usb/host/fusbh200-hcd.c                    |   3 +-
 drivers/usb/host/isp116x-hcd.c                     |   2 +-
 drivers/usb/host/oxu210hp-hcd.c                    |   7 +-
 drivers/usb/host/r8a66597-hcd.c                    |   2 +-
 drivers/usb/host/sl811-hcd.c                       |   2 +-
 drivers/usb/host/uhci-hub.c                        |   5 +-
 drivers/usb/host/xhci-ring.c                       |   2 +-
 drivers/usb/musb/musb_core.c                       |  49 +++++---
 drivers/usb/musb/musb_virthub.c                    |   2 +-
 drivers/usb/phy/phy.c                              |   4 +-
 fs/binfmt_elf.c                                    |   9 +-
 fs/btrfs/extent-tree.c                             |   5 +-
 fs/btrfs/ioctl.c                                   |   8 ++
 fs/btrfs/xattr.c                                   |  53 +++++---
 fs/ext4/namei.c                                    |  20 +--
 fs/lockd/svcsubs.c                                 |   2 +-
 fs/namei.c                                         |   6 +-
 fs/namespace.c                                     |  31 ++---
 fs/nfs/nfs4xdr.c                                   |   6 +
 fs/nfs/read.c                                      |   2 +-
 fs/nfs/write.c                                     |   2 +-
 fs/nfsd/nfs4proc.c                                 |   4 +
 fs/nfsd/nfs4state.c                                |   2 +-
 fs/nfsd/nfs4xdr.c                                  |  12 +-
 fs/nfsd/nfsd.h                                     |   2 +-
 fs/open.c                                          |   2 +-
 fs/pnode.h                                         |   1 -
 include/acpi/actypes.h                             |  20 +++
 include/acpi/platform/acenv.h                      |   1 +
 include/kvm/arm_vgic.h                             |   1 +
 include/linux/bpf.h                                |   4 +-
 include/linux/skbuff.h                             |  13 ++
 include/linux/usb.h                                |  26 ++++
 include/target/target_core_base.h                  |   2 +-
 include/uapi/linux/nfsd/debug.h                    |   8 --
 kernel/bpf/verifier.c                              |   5 +-
 kernel/ptrace.c                                    |  20 +++
 kernel/trace/ring_buffer.c                         |  11 +-
 kernel/trace/trace_events.c                        |   9 +-
 kernel/trace/trace_functions_graph.c               |   8 +-
 lib/string.c                                       |   2 +-
 net/bridge/br_netfilter.c                          |  17 ++-
 net/core/skbuff.c                                  |  30 ++++-
 net/ipv4/ip_forward.c                              |   3 +
 net/ipv4/tcp_output.c                              |  64 +++++++---
 net/mac80211/mlme.c                                |   2 +-
 net/netfilter/xt_cgroup.c                          |   2 +-
 net/netlink/af_netlink.c                           |   6 +-
 sound/pci/emu10k1/emuproc.c                        |  12 --
 sound/pci/hda/patch_realtek.c                      |   8 +-
 sound/soc/codecs/cs4271.c                          |   4 +-
 sound/soc/codecs/pcm512x.c                         |   4 +-
 sound/soc/codecs/wm8741.c                          |   8 +-
 sound/soc/davinci/davinci-evm.c                    |  10 --
 tools/lib/traceevent/kbuffer-parse.c               |   1 -
 tools/perf/config/Makefile                         |   4 +-
 tools/perf/tests/make                              |   2 +-
 tools/perf/util/cloexec.c                          |   6 +
 tools/perf/util/cloexec.h                          |   6 +
 tools/perf/util/symbol-elf.c                       |   4 +
 tools/power/x86/turbostat/Makefile                 |   6 +-
 virt/kvm/arm/vgic-v2.c                             |   8 ++
 virt/kvm/arm/vgic-v3.c                             |   8 ++
 virt/kvm/arm/vgic.c                                |  21 +++-
 virt/kvm/kvm_main.c                                |   4 +-
 199 files changed, 1697 insertions(+), 731 deletions(-)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 001/177] ip_forward: Drop frames with attached skb->sk
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 002/177] net: add skb_checksum_complete_unset Greg Kroah-Hartman
                   ` (174 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Sebastian Poehn, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: =?UTF-8?q?Sebastian=20P=C3=B6hn?= <sebastian.poehn@gmail.com>

[ Upstream commit 2ab957492d13bb819400ac29ae55911d50a82a13 ]

Initial discussion was:
[FYI] xfrm: Don't lookup sk_policy for timewait sockets

Forwarded frames should not have a socket attached. Especially
tw sockets will lead to panics later-on in the stack.

This was observed with TPROXY assigning a tw socket and broken
policy routing (misconfigured). As a result frame enters
forwarding path instead of input. We cannot solve this in
TPROXY as it cannot know that policy routing is broken.

v2:
Remove useless comment

Signed-off-by: Sebastian Poehn <sebastian.poehn@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ipv4/ip_forward.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/net/ipv4/ip_forward.c
+++ b/net/ipv4/ip_forward.c
@@ -81,6 +81,9 @@ int ip_forward(struct sk_buff *skb)
 	if (skb->pkt_type != PACKET_HOST)
 		goto drop;
 
+	if (unlikely(skb->sk))
+		goto drop;
+
 	if (skb_warn_if_lro(skb))
 		goto drop;
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 002/177] net: add skb_checksum_complete_unset
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 001/177] ip_forward: Drop frames with attached skb->sk Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 003/177] ppp: call skb_checksum_complete_unset in ppp_receive_frame Greg Kroah-Hartman
                   ` (173 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Tom Herbert, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Tom Herbert <tom@herbertland.com>

[ Upstream commit 4e18b9adf2f910ec4d30b811a74a5b626e6c6125 ]

This function changes ip_summed to CHECKSUM_NONE if CHECKSUM_COMPLETE
is set. This is called to discard checksum-complete when packet
is being modified and checksum is not pulled for headers in a layer.

Signed-off-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/linux/skbuff.h |   12 ++++++++++++
 1 file changed, 12 insertions(+)

--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -2998,6 +2998,18 @@ static inline bool __skb_checksum_valida
  */
 #define CHECKSUM_BREAK 76
 
+/* Unset checksum-complete
+ *
+ * Unset checksum complete can be done when packet is being modified
+ * (uncompressed for instance) and checksum-complete value is
+ * invalidated.
+ */
+static inline void skb_checksum_complete_unset(struct sk_buff *skb)
+{
+	if (skb->ip_summed == CHECKSUM_COMPLETE)
+		skb->ip_summed = CHECKSUM_NONE;
+}
+
 /* Validate (init) checksum based on checksum complete.
  *
  * Return values:



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 003/177] ppp: call skb_checksum_complete_unset in ppp_receive_frame
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 001/177] ip_forward: Drop frames with attached skb->sk Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 002/177] net: add skb_checksum_complete_unset Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 004/177] tcp: fix possible deadlock in tcp_send_fin() Greg Kroah-Hartman
                   ` (172 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Tom Herbert, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Tom Herbert <tom@herbertland.com>

[ Upstream commit 3dfb05340ec6676e6fc71a9ae87bbbe66d3c2998 ]

Call checksum_complete_unset in PPP receive to discard checksum-complete
value. PPP does not pull checksum for headers and also modifies packet
as in VJ compression.

Signed-off-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ppp/ppp_generic.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -1716,6 +1716,7 @@ ppp_receive_frame(struct ppp *ppp, struc
 {
 	/* note: a 0-length skb is used as an error indication */
 	if (skb->len > 0) {
+		skb_checksum_complete_unset(skb);
 #ifdef CONFIG_PPP_MULTILINK
 		/* XXX do channel-level decompression here */
 		if (PPP_PROTO(skb) == PPP_MP)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 004/177] tcp: fix possible deadlock in tcp_send_fin()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (2 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 003/177] ppp: call skb_checksum_complete_unset in ppp_receive_frame Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 005/177] tcp: avoid looping " Greg Kroah-Hartman
                   ` (171 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Eric Dumazet, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit d83769a580f1132ac26439f50068a29b02be535e ]

Using sk_stream_alloc_skb() in tcp_send_fin() is dangerous in
case a huge process is killed by OOM, and tcp_mem[2] is hit.

To be able to free memory we need to make progress, so this
patch allows FIN packets to not care about tcp_mem[2], if
skb allocation succeeded.

In a follow-up patch, we might abort tcp_send_fin() infinite loop
in case TIF_MEMDIE is set on this thread, as memory allocator
did its best getting extra memory already.

This patch reverts d22e15371811 ("tcp: fix tcp fin memory accounting")

Fixes: d22e15371811 ("tcp: fix tcp fin memory accounting")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ipv4/tcp_output.c |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2753,6 +2753,21 @@ begin_fwd:
 	}
 }
 
+/* We allow to exceed memory limits for FIN packets to expedite
+ * connection tear down and (memory) recovery.
+ * Otherwise tcp_send_fin() could loop forever.
+ */
+static void sk_forced_wmem_schedule(struct sock *sk, int size)
+{
+	int amt, status;
+
+	if (size <= sk->sk_forward_alloc)
+		return;
+	amt = sk_mem_pages(size);
+	sk->sk_forward_alloc += amt * SK_MEM_QUANTUM;
+	sk_memory_allocated_add(sk, amt, &status);
+}
+
 /* Send a fin.  The caller locks the socket for us.  This cannot be
  * allowed to fail queueing a FIN frame under any circumstances.
  */
@@ -2775,11 +2790,14 @@ void tcp_send_fin(struct sock *sk)
 	} else {
 		/* Socket is locked, keep trying until memory is available. */
 		for (;;) {
-			skb = sk_stream_alloc_skb(sk, 0, sk->sk_allocation);
+			skb = alloc_skb_fclone(MAX_TCP_HEADER,
+					       sk->sk_allocation);
 			if (skb)
 				break;
 			yield();
 		}
+		skb_reserve(skb, MAX_TCP_HEADER);
+		sk_forced_wmem_schedule(sk, skb->truesize);
 		/* FIN eats a sequence byte, write_seq advanced by tcp_queue_skb(). */
 		tcp_init_nondata_skb(skb, tp->write_seq,
 				     TCPHDR_ACK | TCPHDR_FIN);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 005/177] tcp: avoid looping in tcp_send_fin()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (3 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 004/177] tcp: fix possible deadlock in tcp_send_fin() Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 006/177] net: do not deplete pfmemalloc reserve Greg Kroah-Hartman
                   ` (170 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Eric Dumazet, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit 845704a535e9b3c76448f52af1b70e4422ea03fd ]

Presence of an unbound loop in tcp_send_fin() had always been hard
to explain when analyzing crash dumps involving gigantic dying processes
with millions of sockets.

Lets try a different strategy :

In case of memory pressure, try to add the FIN flag to last packet
in write queue, even if packet was already sent. TCP stack will
be able to deliver this FIN after a timeout event. Note that this
FIN being delivered by a retransmit, it also carries a Push flag
given our current implementation.

By checking sk_under_memory_pressure(), we anticipate that cooking
many FIN packets might deplete tcp memory.

In the case we could not allocate a packet, even with __GFP_WAIT
allocation, then not sending a FIN seems quite reasonable if it allows
to get rid of this socket, free memory, and not block the process from
eventually doing other useful work.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ipv4/tcp_output.c |   50 +++++++++++++++++++++++++++++---------------------
 1 file changed, 29 insertions(+), 21 deletions(-)

--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2755,7 +2755,8 @@ begin_fwd:
 
 /* We allow to exceed memory limits for FIN packets to expedite
  * connection tear down and (memory) recovery.
- * Otherwise tcp_send_fin() could loop forever.
+ * Otherwise tcp_send_fin() could be tempted to either delay FIN
+ * or even be forced to close flow without any FIN.
  */
 static void sk_forced_wmem_schedule(struct sock *sk, int size)
 {
@@ -2768,33 +2769,40 @@ static void sk_forced_wmem_schedule(stru
 	sk_memory_allocated_add(sk, amt, &status);
 }
 
-/* Send a fin.  The caller locks the socket for us.  This cannot be
- * allowed to fail queueing a FIN frame under any circumstances.
+/* Send a FIN. The caller locks the socket for us.
+ * We should try to send a FIN packet really hard, but eventually give up.
  */
 void tcp_send_fin(struct sock *sk)
 {
+	struct sk_buff *skb, *tskb = tcp_write_queue_tail(sk);
 	struct tcp_sock *tp = tcp_sk(sk);
-	struct sk_buff *skb = tcp_write_queue_tail(sk);
-	int mss_now;
 
-	/* Optimization, tack on the FIN if we have a queue of
-	 * unsent frames.  But be careful about outgoing SACKS
-	 * and IP options.
+	/* Optimization, tack on the FIN if we have one skb in write queue and
+	 * this skb was not yet sent, or we are under memory pressure.
+	 * Note: in the latter case, FIN packet will be sent after a timeout,
+	 * as TCP stack thinks it has already been transmitted.
 	 */
-	mss_now = tcp_current_mss(sk);
-
-	if (tcp_send_head(sk) != NULL) {
-		TCP_SKB_CB(skb)->tcp_flags |= TCPHDR_FIN;
-		TCP_SKB_CB(skb)->end_seq++;
+	if (tskb && (tcp_send_head(sk) || sk_under_memory_pressure(sk))) {
+coalesce:
+		TCP_SKB_CB(tskb)->tcp_flags |= TCPHDR_FIN;
+		TCP_SKB_CB(tskb)->end_seq++;
 		tp->write_seq++;
+		if (!tcp_send_head(sk)) {
+			/* This means tskb was already sent.
+			 * Pretend we included the FIN on previous transmit.
+			 * We need to set tp->snd_nxt to the value it would have
+			 * if FIN had been sent. This is because retransmit path
+			 * does not change tp->snd_nxt.
+			 */
+			tp->snd_nxt++;
+			return;
+		}
 	} else {
-		/* Socket is locked, keep trying until memory is available. */
-		for (;;) {
-			skb = alloc_skb_fclone(MAX_TCP_HEADER,
-					       sk->sk_allocation);
-			if (skb)
-				break;
-			yield();
+		skb = alloc_skb_fclone(MAX_TCP_HEADER, sk->sk_allocation);
+		if (unlikely(!skb)) {
+			if (tskb)
+				goto coalesce;
+			return;
 		}
 		skb_reserve(skb, MAX_TCP_HEADER);
 		sk_forced_wmem_schedule(sk, skb->truesize);
@@ -2803,7 +2811,7 @@ void tcp_send_fin(struct sock *sk)
 				     TCPHDR_ACK | TCPHDR_FIN);
 		tcp_queue_skb(sk, skb);
 	}
-	__tcp_push_pending_frames(sk, mss_now, TCP_NAGLE_OFF);
+	__tcp_push_pending_frames(sk, tcp_current_mss(sk), TCP_NAGLE_OFF);
 }
 
 /* We get here when a process closes a file descriptor (either due to



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 006/177] net: do not deplete pfmemalloc reserve
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (4 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 005/177] tcp: avoid looping " Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 007/177] net: fix crash in build_skb() Greg Kroah-Hartman
                   ` (169 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Eric Dumazet, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit 79930f5892e134c6da1254389577fffb8bd72c66 ]

build_skb() should look at the page pfmemalloc status.
If set, this means page allocator allocated this page in the
expectation it would help to free other pages. Networking
stack can do that only if skb->pfmemalloc is also set.

Also, we must refrain using high order pages from the pfmemalloc
reserve, so __page_frag_refill() must also use __GFP_NOMEMALLOC for
them. Under memory pressure, using order-0 pages is probably the best
strategy.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/core/skbuff.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -309,7 +309,11 @@ struct sk_buff *build_skb(void *data, un
 
 	memset(skb, 0, offsetof(struct sk_buff, tail));
 	skb->truesize = SKB_TRUESIZE(size);
-	skb->head_frag = frag_size != 0;
+	if (frag_size) {
+		skb->head_frag = 1;
+		if (virt_to_head_page(data)->pfmemalloc)
+			skb->pfmemalloc = 1;
+	}
 	atomic_set(&skb->users, 1);
 	skb->head = data;
 	skb->data = data;
@@ -346,7 +350,8 @@ static struct page *__page_frag_refill(s
 	gfp_t gfp = gfp_mask;
 
 	if (order) {
-		gfp_mask |= __GFP_COMP | __GFP_NOWARN | __GFP_NORETRY;
+		gfp_mask |= __GFP_COMP | __GFP_NOWARN | __GFP_NORETRY |
+			    __GFP_NOMEMALLOC;
 		page = alloc_pages_node(NUMA_NO_NODE, gfp_mask, order);
 		nc->frag.size = PAGE_SIZE << (page ? order : 0);
 	}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 007/177] net: fix crash in build_skb()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (5 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 006/177] net: do not deplete pfmemalloc reserve Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 008/177] pxa168: fix double deallocation of managed resources Greg Kroah-Hartman
                   ` (168 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eric Dumazet, Sasha Levin, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit 2ea2f62c8bda242433809c7f4e9eae1c52c40bbe ]

When I added pfmemalloc support in build_skb(), I forgot netlink
was using build_skb() with a vmalloc() area.

In this patch I introduce __build_skb() for netlink use,
and build_skb() is a wrapper handling both skb->head_frag and
skb->pfmemalloc

This means netlink no longer has to hack skb->head_frag

[ 1567.700067] kernel BUG at arch/x86/mm/physaddr.c:26!
[ 1567.700067] invalid opcode: 0000 [#1] PREEMPT SMP KASAN
[ 1567.700067] Dumping ftrace buffer:
[ 1567.700067]    (ftrace buffer empty)
[ 1567.700067] Modules linked in:
[ 1567.700067] CPU: 9 PID: 16186 Comm: trinity-c182 Not tainted 4.0.0-next-20150424-sasha-00037-g4796e21 #2167
[ 1567.700067] task: ffff880127efb000 ti: ffff880246770000 task.ti: ffff880246770000
[ 1567.700067] RIP: __phys_addr (arch/x86/mm/physaddr.c:26 (discriminator 3))
[ 1567.700067] RSP: 0018:ffff8802467779d8  EFLAGS: 00010202
[ 1567.700067] RAX: 000041000ed8e000 RBX: ffffc9008ed8e000 RCX: 000000000000002c
[ 1567.700067] RDX: 0000000000000004 RSI: 0000000000000000 RDI: ffffffffb3fd6049
[ 1567.700067] RBP: ffff8802467779f8 R08: 0000000000000019 R09: ffff8801d0168000
[ 1567.700067] R10: ffff8801d01680c7 R11: ffffed003a02d019 R12: ffffc9000ed8e000
[ 1567.700067] R13: 0000000000000f40 R14: 0000000000001180 R15: ffffc9000ed8e000
[ 1567.700067] FS:  00007f2a7da3f700(0000) GS:ffff8801d1000000(0000) knlGS:0000000000000000
[ 1567.700067] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1567.700067] CR2: 0000000000738308 CR3: 000000022e329000 CR4: 00000000000007e0
[ 1567.700067] Stack:
[ 1567.700067]  ffffc9000ed8e000 ffff8801d0168000 ffffc9000ed8e000 ffff8801d0168000
[ 1567.700067]  ffff880246777a28 ffffffffad7c0a21 0000000000001080 ffff880246777c08
[ 1567.700067]  ffff88060d302e68 ffff880246777b58 ffff880246777b88 ffffffffad9a6821
[ 1567.700067] Call Trace:
[ 1567.700067] build_skb (include/linux/mm.h:508 net/core/skbuff.c:316)
[ 1567.700067] netlink_sendmsg (net/netlink/af_netlink.c:1633 net/netlink/af_netlink.c:2329)
[ 1567.774369] ? sched_clock_cpu (kernel/sched/clock.c:311)
[ 1567.774369] ? netlink_unicast (net/netlink/af_netlink.c:2273)
[ 1567.774369] ? netlink_unicast (net/netlink/af_netlink.c:2273)
[ 1567.774369] sock_sendmsg (net/socket.c:614 net/socket.c:623)
[ 1567.774369] sock_write_iter (net/socket.c:823)
[ 1567.774369] ? sock_sendmsg (net/socket.c:806)
[ 1567.774369] __vfs_write (fs/read_write.c:479 fs/read_write.c:491)
[ 1567.774369] ? get_lock_stats (kernel/locking/lockdep.c:249)
[ 1567.774369] ? default_llseek (fs/read_write.c:487)
[ 1567.774369] ? vtime_account_user (kernel/sched/cputime.c:701)
[ 1567.774369] ? rw_verify_area (fs/read_write.c:406 (discriminator 4))
[ 1567.774369] vfs_write (fs/read_write.c:539)
[ 1567.774369] SyS_write (fs/read_write.c:586 fs/read_write.c:577)
[ 1567.774369] ? SyS_read (fs/read_write.c:577)
[ 1567.774369] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
[ 1567.774369] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2594 kernel/locking/lockdep.c:2636)
[ 1567.774369] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
[ 1567.774369] system_call_fastpath (arch/x86/kernel/entry_64.S:261)

Fixes: 79930f5892e ("net: do not deplete pfmemalloc reserve")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/linux/skbuff.h   |    1 +
 net/core/skbuff.c        |   31 ++++++++++++++++++++++---------
 net/netlink/af_netlink.c |    6 ++----
 3 files changed, 25 insertions(+), 13 deletions(-)

--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -762,6 +762,7 @@ bool skb_try_coalesce(struct sk_buff *to
 
 struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,
 			    int node);
+struct sk_buff *__build_skb(void *data, unsigned int frag_size);
 struct sk_buff *build_skb(void *data, unsigned int frag_size);
 static inline struct sk_buff *alloc_skb(unsigned int size,
 					gfp_t priority)
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -278,13 +278,14 @@ nodata:
 EXPORT_SYMBOL(__alloc_skb);
 
 /**
- * build_skb - build a network buffer
+ * __build_skb - build a network buffer
  * @data: data buffer provided by caller
- * @frag_size: size of fragment, or 0 if head was kmalloced
+ * @frag_size: size of data, or 0 if head was kmalloced
  *
  * Allocate a new &sk_buff. Caller provides space holding head and
  * skb_shared_info. @data must have been allocated by kmalloc() only if
- * @frag_size is 0, otherwise data should come from the page allocator.
+ * @frag_size is 0, otherwise data should come from the page allocator
+ *  or vmalloc()
  * The return is the new skb buffer.
  * On a failure the return is %NULL, and @data is not freed.
  * Notes :
@@ -295,7 +296,7 @@ EXPORT_SYMBOL(__alloc_skb);
  *  before giving packet to stack.
  *  RX rings only contains data buffers, not full skbs.
  */
-struct sk_buff *build_skb(void *data, unsigned int frag_size)
+struct sk_buff *__build_skb(void *data, unsigned int frag_size)
 {
 	struct skb_shared_info *shinfo;
 	struct sk_buff *skb;
@@ -309,11 +310,6 @@ struct sk_buff *build_skb(void *data, un
 
 	memset(skb, 0, offsetof(struct sk_buff, tail));
 	skb->truesize = SKB_TRUESIZE(size);
-	if (frag_size) {
-		skb->head_frag = 1;
-		if (virt_to_head_page(data)->pfmemalloc)
-			skb->pfmemalloc = 1;
-	}
 	atomic_set(&skb->users, 1);
 	skb->head = data;
 	skb->data = data;
@@ -330,6 +326,23 @@ struct sk_buff *build_skb(void *data, un
 
 	return skb;
 }
+
+/* build_skb() is wrapper over __build_skb(), that specifically
+ * takes care of skb->head and skb->pfmemalloc
+ * This means that if @frag_size is not zero, then @data must be backed
+ * by a page fragment, not kmalloc() or vmalloc()
+ */
+struct sk_buff *build_skb(void *data, unsigned int frag_size)
+{
+	struct sk_buff *skb = __build_skb(data, frag_size);
+
+	if (skb && frag_size) {
+		skb->head_frag = 1;
+		if (virt_to_head_page(data)->pfmemalloc)
+			skb->pfmemalloc = 1;
+	}
+	return skb;
+}
 EXPORT_SYMBOL(build_skb);
 
 struct netdev_alloc_cache {
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -1616,13 +1616,11 @@ static struct sk_buff *netlink_alloc_lar
 	if (data == NULL)
 		return NULL;
 
-	skb = build_skb(data, size);
+	skb = __build_skb(data, size);
 	if (skb == NULL)
 		vfree(data);
-	else {
-		skb->head_frag = 0;
+	else
 		skb->destructor = netlink_skb_destructor;
-	}
 
 	return skb;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 008/177] pxa168: fix double deallocation of managed resources
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (6 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 007/177] net: fix crash in build_skb() Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 009/177] net/mlx4_en: Prevent setting invalid RSS hash function Greg Kroah-Hartman
                   ` (167 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alexey Khoroshilov, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alexey Khoroshilov <khoroshilov@ispras.ru>

[ Upstream commit 0e03fd3e335d272bee88fe733d5fd13f5c5b7140 ]

Commit 43d3ddf87a57 ("net: pxa168_eth: add device tree support") starts
to use managed resources by adding devm_clk_get() and
devm_ioremap_resource(), but it leaves explicit iounmap() and clock_put()
in pxa168_eth_remove() and in failure handling code of pxa168_eth_probe().
As a result double free can happen.

The patch removes explicit resource deallocation. Also it converts
clk_disable() to clk_disable_unprepare() to make it symmetrical with
clk_prepare_enable().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/marvell/pxa168_eth.c |   16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

--- a/drivers/net/ethernet/marvell/pxa168_eth.c
+++ b/drivers/net/ethernet/marvell/pxa168_eth.c
@@ -1508,7 +1508,8 @@ static int pxa168_eth_probe(struct platf
 		np = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0);
 		if (!np) {
 			dev_err(&pdev->dev, "missing phy-handle\n");
-			return -EINVAL;
+			err = -EINVAL;
+			goto err_netdev;
 		}
 		of_property_read_u32(np, "reg", &pep->phy_addr);
 		pep->phy_intf = of_get_phy_mode(pdev->dev.of_node);
@@ -1526,7 +1527,7 @@ static int pxa168_eth_probe(struct platf
 	pep->smi_bus = mdiobus_alloc();
 	if (pep->smi_bus == NULL) {
 		err = -ENOMEM;
-		goto err_base;
+		goto err_netdev;
 	}
 	pep->smi_bus->priv = pep;
 	pep->smi_bus->name = "pxa168_eth smi";
@@ -1551,13 +1552,10 @@ err_mdiobus:
 	mdiobus_unregister(pep->smi_bus);
 err_free_mdio:
 	mdiobus_free(pep->smi_bus);
-err_base:
-	iounmap(pep->base);
 err_netdev:
 	free_netdev(dev);
 err_clk:
-	clk_disable(clk);
-	clk_put(clk);
+	clk_disable_unprepare(clk);
 	return err;
 }
 
@@ -1574,13 +1572,9 @@ static int pxa168_eth_remove(struct plat
 	if (pep->phy)
 		phy_disconnect(pep->phy);
 	if (pep->clk) {
-		clk_disable(pep->clk);
-		clk_put(pep->clk);
-		pep->clk = NULL;
+		clk_disable_unprepare(pep->clk);
 	}
 
-	iounmap(pep->base);
-	pep->base = NULL;
 	mdiobus_unregister(pep->smi_bus);
 	mdiobus_free(pep->smi_bus);
 	unregister_netdev(dev);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 009/177] net/mlx4_en: Prevent setting invalid RSS hash function
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (7 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 008/177] pxa168: fix double deallocation of managed resources Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 010/177] md: fix md io stats accounting broken Greg Kroah-Hartman
                   ` (166 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Amir Vadai, David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Amir Vadai <amirv@mellanox.com>

[ Upstream commit b37069090b7c5615610a8aa6b36533d67b364d38 ]

mlx4_en_check_rxfh_func() was checking for hardware support before
setting a known RSS hash function, but didn't do any check before
setting unknown RSS hash function. Need to make it fail on such values.
In this occasion, moved the actual setting of the new value from the
check function into mlx4_en_set_rxfh().

Fixes: 947cbb0 ("net/mlx4_en: Support for configurable RSS hash function")
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c |   29 +++++++++++++-----------
 1 file changed, 16 insertions(+), 13 deletions(-)

--- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
@@ -983,20 +983,21 @@ static int mlx4_en_check_rxfh_func(struc
 	struct mlx4_en_priv *priv = netdev_priv(dev);
 
 	/* check if requested function is supported by the device */
-	if ((hfunc == ETH_RSS_HASH_TOP &&
-	     !(priv->mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_RSS_TOP)) ||
-	    (hfunc == ETH_RSS_HASH_XOR &&
-	     !(priv->mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_RSS_XOR)))
-		return -EINVAL;
+	if (hfunc == ETH_RSS_HASH_TOP) {
+		if (!(priv->mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_RSS_TOP))
+			return -EINVAL;
+		if (!(dev->features & NETIF_F_RXHASH))
+			en_warn(priv, "Toeplitz hash function should be used in conjunction with RX hashing for optimal performance\n");
+		return 0;
+	} else if (hfunc == ETH_RSS_HASH_XOR) {
+		if (!(priv->mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_RSS_XOR))
+			return -EINVAL;
+		if (dev->features & NETIF_F_RXHASH)
+			en_warn(priv, "Enabling both XOR Hash function and RX Hashing can limit RPS functionality\n");
+		return 0;
+	}
 
-	priv->rss_hash_fn = hfunc;
-	if (hfunc == ETH_RSS_HASH_TOP && !(dev->features & NETIF_F_RXHASH))
-		en_warn(priv,
-			"Toeplitz hash function should be used in conjunction with RX hashing for optimal performance\n");
-	if (hfunc == ETH_RSS_HASH_XOR && (dev->features & NETIF_F_RXHASH))
-		en_warn(priv,
-			"Enabling both XOR Hash function and RX Hashing can limit RPS functionality\n");
-	return 0;
+	return -EINVAL;
 }
 
 static int mlx4_en_get_rxfh(struct net_device *dev, u32 *ring_index, u8 *key,
@@ -1070,6 +1071,8 @@ static int mlx4_en_set_rxfh(struct net_d
 		priv->prof->rss_rings = rss_rings;
 	if (key)
 		memcpy(priv->rss_key, key, MLX4_EN_RSS_KEY_SIZE);
+	if (hfunc !=  ETH_RSS_HASH_NO_CHANGE)
+		priv->rss_hash_fn = hfunc;
 
 	if (port_up) {
 		err = mlx4_en_start_port(dev);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 010/177] md: fix md io stats accounting broken
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (8 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 009/177] net/mlx4_en: Prevent setting invalid RSS hash function Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 011/177] x86/asm/decoder: Fix and enforce max instruction size in the insn decoder Greg Kroah-Hartman
                   ` (165 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Simon Kirby, Gu Zheng, NeilBrown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Gu Zheng <guz.fnst@cn.fujitsu.com>

commit 74672d069b298b03e9f657fd70915e055739882e upstream.

Simon reported the md io stats accounting issue:
"
I'm seeing "iostat -x -k 1" print this after a RAID1 rebuild on 4.0-rc5.
It's not abnormal other than it's 3-disk, with one being SSD (sdc) and
the other two being write-mostly:

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00   345.00    0.00    0.00    0.00   0.00 100.00
md2               0.00     0.00    0.00    0.00     0.00     0.00     0.00 58779.00    0.00    0.00    0.00   0.00 100.00
md1               0.00     0.00    0.00    0.00     0.00     0.00     0.00    12.00    0.00    0.00    0.00   0.00 100.00
"
The cause is commit "18c0b223cf9901727ef3b02da6711ac930b4e5d4" uses the
generic_start_io_acct to account the disk stats rather than the open code,
but it also introduced the increase to .in_flight[rw] which is needless to
md. So we re-use the open code here to fix it.

Reported-by: Simon Kirby <sim@hostway.ca>
Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/md/md.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -248,6 +248,7 @@ static void md_make_request(struct reque
 	const int rw = bio_data_dir(bio);
 	struct mddev *mddev = q->queuedata;
 	unsigned int sectors;
+	int cpu;
 
 	if (mddev == NULL || mddev->pers == NULL
 	    || !mddev->ready) {
@@ -283,7 +284,10 @@ static void md_make_request(struct reque
 	sectors = bio_sectors(bio);
 	mddev->pers->make_request(mddev, bio);
 
-	generic_start_io_acct(rw, sectors, &mddev->gendisk->part0);
+	cpu = part_stat_lock();
+	part_stat_inc(cpu, &mddev->gendisk->part0, ios[rw]);
+	part_stat_add(cpu, &mddev->gendisk->part0, sectors[rw], sectors);
+	part_stat_unlock();
 
 	if (atomic_dec_and_test(&mddev->active_io) && mddev->suspended)
 		wake_up(&mddev->sb_wait);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 011/177] x86/asm/decoder: Fix and enforce max instruction size in the insn decoder
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (9 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 010/177] md: fix md io stats accounting broken Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 012/177] sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve power savings and to improve performance Greg Kroah-Hartman
                   ` (164 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andy Lutomirski, Masami Hiramatsu,
	Dave Hansen, Ingo Molnar

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Andy Lutomirski <luto@amacapital.net>

commit 91e5ed49fca09c2b83b262b9757d1376ee2b46c3 upstream.

x86 instructions cannot exceed 15 bytes, and the instruction
decoder should enforce that.  Prior to 6ba48ff46f76, the
instruction length limit was implicitly set to 16, which was an
approximation of 15, but there is currently no limit at all.

Fix MAX_INSN_SIZE (it should be 15, not 16), and fix the decoder
to reject instructions that exceed MAX_INSN_SIZE.

Other than potentially confusing some of the decoder sanity
checks, I'm not aware of any actual problems that omitting this
check would cause, nor am I aware of any practical problems
caused by the MAX_INSN_SIZE error.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Fixes: 6ba48ff46f76 ("x86: Remove arbitrary instruction size limit ...
Link: http://lkml.kernel.org/r/f8f0bc9b8c58cfd6830f7d88400bf1396cbdcd0f.1422403511.git.luto@amacapital.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/x86/include/asm/insn.h |    2 +-
 arch/x86/lib/insn.c         |    7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

--- a/arch/x86/include/asm/insn.h
+++ b/arch/x86/include/asm/insn.h
@@ -69,7 +69,7 @@ struct insn {
 	const insn_byte_t *next_byte;
 };
 
-#define MAX_INSN_SIZE	16
+#define MAX_INSN_SIZE	15
 
 #define X86_MODRM_MOD(modrm) (((modrm) & 0xc0) >> 6)
 #define X86_MODRM_REG(modrm) (((modrm) & 0x38) >> 3)
--- a/arch/x86/lib/insn.c
+++ b/arch/x86/lib/insn.c
@@ -52,6 +52,13 @@
  */
 void insn_init(struct insn *insn, const void *kaddr, int buf_len, int x86_64)
 {
+	/*
+	 * Instructions longer than MAX_INSN_SIZE (15 bytes) are invalid
+	 * even if the input buffer is long enough to hold them.
+	 */
+	if (buf_len > MAX_INSN_SIZE)
+		buf_len = MAX_INSN_SIZE;
+
 	memset(insn, 0, sizeof(*insn));
 	insn->kaddr = kaddr;
 	insn->end_kaddr = kaddr + buf_len;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 012/177] sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve power savings and to improve performance
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (10 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 011/177] x86/asm/decoder: Fix and enforce max instruction size in the insn decoder Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 013/177] sched/idle/x86: Optimize unnecessary mwait_idle() resched IPIs Greg Kroah-Hartman
                   ` (163 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mike Galbraith, Len Brown,
	Borislav Petkov, H. Peter Anvin, Ian Malone, Josh Boyer,
	Linus Torvalds, Mike Galbraith, Peter Zijlstra, Thomas Gleixner,
	Ingo Molnar

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Len Brown <len.brown@intel.com>

commit b253149b843f89cd300cbdbea27ce1f847506f99 upstream.

In Linux-3.9 we removed the mwait_idle() loop:

  69fb3676df33 ("x86 idle: remove mwait_idle() and "idle=mwait" cmdline param")

The reasoning was that modern machines should be sufficiently
happy during the boot process using the default_idle() HALT
loop, until cpuidle loads and either acpi_idle or intel_idle
invoke the newer MWAIT-with-hints idle loop.

But two machines reported problems:

 1. Certain Core2-era machines support MWAIT-C1 and HALT only.
    MWAIT-C1 is preferred for optimal power and performance.
    But if they support just C1, cpuidle never loads and
    so they use the boot-time default idle loop forever.

 2. Some laptops will boot-hang if HALT is used,
    but will boot successfully if MWAIT is used.
    This appears to be a hidden assumption in BIOS SMI,
    that is presumably valid on the proprietary OS
    where the BIOS was validated.

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

So here we effectively revert the patch above, restoring
the mwait_idle() loop.  However, we don't bother restoring
the idle=mwait cmdline parameter, since it appears to add
no value.

Maintainer notes:

  For 3.9, simply revert 69fb3676df
  for 3.10, patch -F3 applies, fuzz needed due to __cpuinit use in
  context For 3.11, 3.12, 3.13, this patch applies cleanly

Tested-by: Mike Galbraith <bitbucket@online.de>
Signed-off-by: Len Brown <len.brown@intel.com>
Acked-by: Mike Galbraith <bitbucket@online.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ian Malone <ibmalone@gmail.com>
Cc: Josh Boyer <jwboyer@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/345254a551eb5a6a866e048d7ab570fd2193aca4.1389763084.git.len.brown@intel.com
[ Ported to recent kernels. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/x86/include/asm/mwait.h |    8 +++++++
 arch/x86/kernel/process.c    |   47 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+)

--- a/arch/x86/include/asm/mwait.h
+++ b/arch/x86/include/asm/mwait.h
@@ -30,6 +30,14 @@ static inline void __mwait(unsigned long
 		     :: "a" (eax), "c" (ecx));
 }
 
+static inline void __sti_mwait(unsigned long eax, unsigned long ecx)
+{
+	trace_hardirqs_on();
+	/* "mwait %eax, %ecx;" */
+	asm volatile("sti; .byte 0x0f, 0x01, 0xc9;"
+		     :: "a" (eax), "c" (ecx));
+}
+
 /*
  * This uses new MONITOR/MWAIT instructions on P4 processors with PNI,
  * which can obviate IPI to trigger checking of need_resched.
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -24,6 +24,7 @@
 #include <asm/syscalls.h>
 #include <asm/idle.h>
 #include <asm/uaccess.h>
+#include <asm/mwait.h>
 #include <asm/i387.h>
 #include <asm/fpu-internal.h>
 #include <asm/debugreg.h>
@@ -398,6 +399,49 @@ static void amd_e400_idle(void)
 		default_idle();
 }
 
+/*
+ * Intel Core2 and older machines prefer MWAIT over HALT for C1.
+ * We can't rely on cpuidle installing MWAIT, because it will not load
+ * on systems that support only C1 -- so the boot default must be MWAIT.
+ *
+ * Some AMD machines are the opposite, they depend on using HALT.
+ *
+ * So for default C1, which is used during boot until cpuidle loads,
+ * use MWAIT-C1 on Intel HW that has it, else use HALT.
+ */
+static int prefer_mwait_c1_over_halt(const struct cpuinfo_x86 *c)
+{
+	if (c->x86_vendor != X86_VENDOR_INTEL)
+		return 0;
+
+	if (!cpu_has(c, X86_FEATURE_MWAIT))
+		return 0;
+
+	return 1;
+}
+
+/*
+ * MONITOR/MWAIT with no hints, used for default default C1 state.
+ * This invokes MWAIT with interrutps enabled and no flags,
+ * which is backwards compatible with the original MWAIT implementation.
+ */
+
+static void mwait_idle(void)
+{
+	if (!need_resched()) {
+		if (this_cpu_has(X86_BUG_CLFLUSH_MONITOR))
+			clflush((void *)&current_thread_info()->flags);
+
+		__monitor((void *)&current_thread_info()->flags, 0, 0);
+		smp_mb();
+		if (!need_resched())
+			__sti_mwait(0, 0);
+		else
+			local_irq_enable();
+	} else
+		local_irq_enable();
+}
+
 void select_idle_routine(const struct cpuinfo_x86 *c)
 {
 #ifdef CONFIG_SMP
@@ -411,6 +455,9 @@ void select_idle_routine(const struct cp
 		/* E400: APIC timer interrupt does not wake up CPU from C1e */
 		pr_info("using AMD E400 aware idle routine\n");
 		x86_idle = amd_e400_idle;
+	} else if (prefer_mwait_c1_over_halt(c)) {
+		pr_info("using mwait in idle threads\n");
+		x86_idle = mwait_idle;
 	} else
 		x86_idle = default_idle;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 013/177] sched/idle/x86: Optimize unnecessary mwait_idle() resched IPIs
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (11 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 012/177] sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve power savings and to improve performance Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 014/177] perf/x86/intel: Fix Core2,Atom,NHM,WSM cycles:pp events Greg Kroah-Hartman
                   ` (162 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mike Galbraith, Borislav Petkov,
	H. Peter Anvin, Ian Malone, Josh Boyer, Len Brown, Len Brown,
	Linus Torvalds, Mike Galbraith, Peter Zijlstra, Thomas Gleixner,
	Ingo Molnar

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Mike Galbraith <bitbucket@online.de>

commit f8e617f4582995f7c25ef25b4167213120ad122b upstream.

To fully take advantage of MWAIT, apparently the CLFLUSH instruction needs
another quirk on certain CPUs: proper barriers around it on certain machines.

On a Q6600 SMP system, pipe-test scheduling performance, cross core,
improves significantly:

  3.8.13                   487.2 KHz    1.000
  3.13.0-master            415.5 KHz     .852
  3.13.0-master+           415.2 KHz     .852     + restore mwait_idle
  3.13.0-master++          488.5 KHz    1.002     + restore mwait_idle + IPI fix

Since X86_BUG_CLFLUSH_MONITOR is already a quirk, don't create a separate
quirk for the extra smp_mb()s.

Signed-off-by: Mike Galbraith <bitbucket@online.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ian Malone <ibmalone@gmail.com>
Cc: Josh Boyer <jwboyer@redhat.com>
Cc: Len Brown <len.brown@intel.com>
Cc: Len Brown <lenb@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1390061684.5566.4.camel@marge.simpson.net
[ Ported to recent kernel, added comments about the quirk. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/x86/kernel/process.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -428,18 +428,22 @@ static int prefer_mwait_c1_over_halt(con
 
 static void mwait_idle(void)
 {
-	if (!need_resched()) {
-		if (this_cpu_has(X86_BUG_CLFLUSH_MONITOR))
+	if (!current_set_polling_and_test()) {
+		if (this_cpu_has(X86_BUG_CLFLUSH_MONITOR)) {
+			smp_mb(); /* quirk */
 			clflush((void *)&current_thread_info()->flags);
+			smp_mb(); /* quirk */
+		}
 
 		__monitor((void *)&current_thread_info()->flags, 0, 0);
-		smp_mb();
 		if (!need_resched())
 			__sti_mwait(0, 0);
 		else
 			local_irq_enable();
-	} else
+	} else {
 		local_irq_enable();
+	}
+	__current_clr_polling();
 }
 
 void select_idle_routine(const struct cpuinfo_x86 *c)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 014/177] perf/x86/intel: Fix Core2,Atom,NHM,WSM cycles:pp events
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (12 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 013/177] sched/idle/x86: Optimize unnecessary mwait_idle() resched IPIs Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 015/177] KVM: x86: Fix MSR_IA32_BNDCFGS in msrs_to_save Greg Kroah-Hartman
                   ` (161 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ingo Molnar, Peter Zijlstra (Intel),
	Arnaldo Carvalho de Melo, Jiri Olsa, Linus Torvalds

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Peter Zijlstra <peterz@infradead.org>

commit 517e6341fa123ec3a2f9ea78ad547be910529881 upstream.

Ingo reported that cycles:pp didn't work for him on some machines.

It turns out that in this commit:

  af4bdcf675cf perf/x86/intel: Disallow flags for most Core2/Atom/Nehalem/Westmere events

Andi forgot to explicitly allow that event when he
disabled event flags for PEBS on those uarchs.

Reported-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Fixes: af4bdcf675cf ("perf/x86/intel: Disallow flags for most Core2/Atom/Nehalem/Westmere events")
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/x86/kernel/cpu/perf_event_intel_ds.c |    8 ++++++++
 1 file changed, 8 insertions(+)

--- a/arch/x86/kernel/cpu/perf_event_intel_ds.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_ds.c
@@ -557,6 +557,8 @@ struct event_constraint intel_core2_pebs
 	INTEL_FLAGS_UEVENT_CONSTRAINT(0x00c5, 0x1), /* BR_INST_RETIRED.MISPRED */
 	INTEL_FLAGS_UEVENT_CONSTRAINT(0x1fc7, 0x1), /* SIMD_INST_RETURED.ANY */
 	INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0x1),    /* MEM_LOAD_RETIRED.* */
+	/* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
+	INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x01),
 	EVENT_CONSTRAINT_END
 };
 
@@ -564,6 +566,8 @@ struct event_constraint intel_atom_pebs_
 	INTEL_FLAGS_UEVENT_CONSTRAINT(0x00c0, 0x1), /* INST_RETIRED.ANY */
 	INTEL_FLAGS_UEVENT_CONSTRAINT(0x00c5, 0x1), /* MISPREDICTED_BRANCH_RETIRED */
 	INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0x1),    /* MEM_LOAD_RETIRED.* */
+	/* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
+	INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x01),
 	EVENT_CONSTRAINT_END
 };
 
@@ -587,6 +591,8 @@ struct event_constraint intel_nehalem_pe
 	INTEL_FLAGS_UEVENT_CONSTRAINT(0x20c8, 0xf), /* ITLB_MISS_RETIRED */
 	INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0xf),    /* MEM_LOAD_RETIRED.* */
 	INTEL_FLAGS_EVENT_CONSTRAINT(0xf7, 0xf),    /* FP_ASSIST.* */
+	/* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
+	INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
 	EVENT_CONSTRAINT_END
 };
 
@@ -602,6 +608,8 @@ struct event_constraint intel_westmere_p
 	INTEL_FLAGS_UEVENT_CONSTRAINT(0x20c8, 0xf), /* ITLB_MISS_RETIRED */
 	INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0xf),    /* MEM_LOAD_RETIRED.* */
 	INTEL_FLAGS_EVENT_CONSTRAINT(0xf7, 0xf),    /* FP_ASSIST.* */
+	/* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
+	INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
 	EVENT_CONSTRAINT_END
 };
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 015/177] KVM: x86: Fix MSR_IA32_BNDCFGS in msrs_to_save
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (13 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 014/177] perf/x86/intel: Fix Core2,Atom,NHM,WSM cycles:pp events Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 016/177] Btrfs: fix log tree corruption when fs mounted with -o discard Greg Kroah-Hartman
                   ` (160 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Nadav Amit, Paolo Bonzini

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nadav Amit <namit@cs.technion.ac.il>

commit 9e9c3fe40bcd28e3f98f0ad8408435f4503f2781 upstream.

kvm_init_msr_list is currently called before hardware_setup. As a result,
vmx_mpx_supported always returns false when kvm_init_msr_list checks whether to
save MSR_IA32_BNDCFGS.

Move kvm_init_msr_list after vmx_hardware_setup is called to fix this issue.

Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Message-Id: <1428864435-4732-1-git-send-email-namit@cs.technion.ac.il>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

---
 arch/x86/kvm/x86.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -5781,7 +5781,6 @@ int kvm_arch_init(void *opaque)
 	kvm_set_mmio_spte_mask();
 
 	kvm_x86_ops = ops;
-	kvm_init_msr_list();
 
 	kvm_mmu_set_mask_ptes(PT_USER_MASK, PT_ACCESSED_MASK,
 			PT_DIRTY_MASK, PT64_NX_MASK, 0);
@@ -7218,7 +7217,14 @@ void kvm_arch_hardware_disable(void)
 
 int kvm_arch_hardware_setup(void)
 {
-	return kvm_x86_ops->hardware_setup();
+	int r;
+
+	r = kvm_x86_ops->hardware_setup();
+	if (r != 0)
+		return r;
+
+	kvm_init_msr_list();
+	return 0;
 }
 
 void kvm_arch_hardware_unsetup(void)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 016/177] Btrfs: fix log tree corruption when fs mounted with -o discard
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (14 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 015/177] KVM: x86: Fix MSR_IA32_BNDCFGS in msrs_to_save Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 017/177] btrfs: dont accept bare namespace as a valid xattr Greg Kroah-Hartman
                   ` (159 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Filipe Manana, Chris Mason

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Filipe Manana <fdmanana@suse.com>

commit dcc82f4783ad91d4ab654f89f37ae9291cdc846a upstream.

While committing a transaction we free the log roots before we write the
new super block. Freeing the log roots implies marking the disk location
of every node/leaf (metadata extent) as pinned before the new super block
is written. This is to prevent the disk location of log metadata extents
from being reused before the new super block is written, otherwise we
would have a corrupted log tree if before the new super block is written
a crash/reboot happens and the location of any log tree metadata extent
ended up being reused and rewritten.

Even though we pinned the log tree's metadata extents, we were issuing a
discard against them if the fs was mounted with the -o discard option,
resulting in corruption of the log tree if a crash/reboot happened before
writing the new super block - the next time the fs was mounted, during
the log replay process we would find nodes/leafs of the log btree with
a content full of zeroes, causing the process to fail and require the
use of the tool btrfs-zero-log to wipeout the log tree (and all data
previously fsynced becoming lost forever).

Fix this by not doing a discard when pinning an extent. The discard will
be done later when it's safe (after the new super block is committed) at
extent-tree.c:btrfs_finish_extent_commit().

Fixes: e688b7252f78 (Btrfs: fix extent pinning bugs in the tree log)
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/extent-tree.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -6967,12 +6967,11 @@ static int __btrfs_free_reserved_extent(
 		return -ENOSPC;
 	}
 
-	if (btrfs_test_opt(root, DISCARD))
-		ret = btrfs_discard_extent(root, start, len, NULL);
-
 	if (pin)
 		pin_down_extent(root, cache, start, len, 1);
 	else {
+		if (btrfs_test_opt(root, DISCARD))
+			ret = btrfs_discard_extent(root, start, len, NULL);
 		btrfs_add_free_space(cache, start, len);
 		btrfs_update_reserved_bytes(cache, len, RESERVE_FREE, delalloc);
 	}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 017/177] btrfs: dont accept bare namespace as a valid xattr
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (15 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 016/177] Btrfs: fix log tree corruption when fs mounted with -o discard Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 018/177] Btrfs: fix inode eviction infinite loop after cloning into it Greg Kroah-Hartman
                   ` (158 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, William Douglas, David Sterba, Chris Mason

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: David Sterba <dsterba@suse.cz>

commit 3c3b04d10ff1811a27f86684ccd2f5ba6983211d upstream.

Due to insufficient check in btrfs_is_valid_xattr, this unexpectedly
works:

 $ touch file
 $ setfattr -n user. -v 1 file
 $ getfattr -d file
user.="1"

ie. the missing attribute name after the namespace.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94291
Reported-by: William Douglas <william.douglas@intel.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/xattr.c |   53 +++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 39 insertions(+), 14 deletions(-)

--- a/fs/btrfs/xattr.c
+++ b/fs/btrfs/xattr.c
@@ -360,22 +360,42 @@ const struct xattr_handler *btrfs_xattr_
 /*
  * Check if the attribute is in a supported namespace.
  *
- * This applied after the check for the synthetic attributes in the system
+ * This is applied after the check for the synthetic attributes in the system
  * namespace.
  */
-static bool btrfs_is_valid_xattr(const char *name)
+static int btrfs_is_valid_xattr(const char *name)
 {
-	return !strncmp(name, XATTR_SECURITY_PREFIX,
-			XATTR_SECURITY_PREFIX_LEN) ||
-	       !strncmp(name, XATTR_SYSTEM_PREFIX, XATTR_SYSTEM_PREFIX_LEN) ||
-	       !strncmp(name, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN) ||
-	       !strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN) ||
-		!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN);
+	int len = strlen(name);
+	int prefixlen = 0;
+
+	if (!strncmp(name, XATTR_SECURITY_PREFIX,
+			XATTR_SECURITY_PREFIX_LEN))
+		prefixlen = XATTR_SECURITY_PREFIX_LEN;
+	else if (!strncmp(name, XATTR_SYSTEM_PREFIX, XATTR_SYSTEM_PREFIX_LEN))
+		prefixlen = XATTR_SYSTEM_PREFIX_LEN;
+	else if (!strncmp(name, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN))
+		prefixlen = XATTR_TRUSTED_PREFIX_LEN;
+	else if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN))
+		prefixlen = XATTR_USER_PREFIX_LEN;
+	else if (!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN))
+		prefixlen = XATTR_BTRFS_PREFIX_LEN;
+	else
+		return -EOPNOTSUPP;
+
+	/*
+	 * The name cannot consist of just prefix
+	 */
+	if (len <= prefixlen)
+		return -EINVAL;
+
+	return 0;
 }
 
 ssize_t btrfs_getxattr(struct dentry *dentry, const char *name,
 		       void *buffer, size_t size)
 {
+	int ret;
+
 	/*
 	 * If this is a request for a synthetic attribute in the system.*
 	 * namespace use the generic infrastructure to resolve a handler
@@ -384,8 +404,9 @@ ssize_t btrfs_getxattr(struct dentry *de
 	if (!strncmp(name, XATTR_SYSTEM_PREFIX, XATTR_SYSTEM_PREFIX_LEN))
 		return generic_getxattr(dentry, name, buffer, size);
 
-	if (!btrfs_is_valid_xattr(name))
-		return -EOPNOTSUPP;
+	ret = btrfs_is_valid_xattr(name);
+	if (ret)
+		return ret;
 	return __btrfs_getxattr(dentry->d_inode, name, buffer, size);
 }
 
@@ -393,6 +414,7 @@ int btrfs_setxattr(struct dentry *dentry
 		   size_t size, int flags)
 {
 	struct btrfs_root *root = BTRFS_I(dentry->d_inode)->root;
+	int ret;
 
 	/*
 	 * The permission on security.* and system.* is not checked
@@ -409,8 +431,9 @@ int btrfs_setxattr(struct dentry *dentry
 	if (!strncmp(name, XATTR_SYSTEM_PREFIX, XATTR_SYSTEM_PREFIX_LEN))
 		return generic_setxattr(dentry, name, value, size, flags);
 
-	if (!btrfs_is_valid_xattr(name))
-		return -EOPNOTSUPP;
+	ret = btrfs_is_valid_xattr(name);
+	if (ret)
+		return ret;
 
 	if (!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN))
 		return btrfs_set_prop(dentry->d_inode, name,
@@ -426,6 +449,7 @@ int btrfs_setxattr(struct dentry *dentry
 int btrfs_removexattr(struct dentry *dentry, const char *name)
 {
 	struct btrfs_root *root = BTRFS_I(dentry->d_inode)->root;
+	int ret;
 
 	/*
 	 * The permission on security.* and system.* is not checked
@@ -442,8 +466,9 @@ int btrfs_removexattr(struct dentry *den
 	if (!strncmp(name, XATTR_SYSTEM_PREFIX, XATTR_SYSTEM_PREFIX_LEN))
 		return generic_removexattr(dentry, name);
 
-	if (!btrfs_is_valid_xattr(name))
-		return -EOPNOTSUPP;
+	ret = btrfs_is_valid_xattr(name);
+	if (ret)
+		return ret;
 
 	if (!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN))
 		return btrfs_set_prop(dentry->d_inode, name,



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 018/177] Btrfs: fix inode eviction infinite loop after cloning into it
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (16 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 017/177] btrfs: dont accept bare namespace as a valid xattr Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 019/177] Btrfs: fix inode eviction infinite loop after extent_same ioctl Greg Kroah-Hartman
                   ` (157 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Filipe Manana, Omar Sandoval, Chris Mason

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Filipe Manana <fdmanana@suse.com>

commit ccccf3d67294714af2d72a6fd6fd7d73b01c9329 upstream.

If we attempt to clone a 0 length region into a file we can end up
inserting a range in the inode's extent_io tree with a start offset
that is greater then the end offset, which triggers immediately the
following warning:

[ 3914.619057] WARNING: CPU: 17 PID: 4199 at fs/btrfs/extent_io.c:435 insert_state+0x4b/0x10b [btrfs]()
[ 3914.620886] BTRFS: end < start 4095 4096
(...)
[ 3914.638093] Call Trace:
[ 3914.638636]  [<ffffffff81425fd9>] dump_stack+0x4c/0x65
[ 3914.639620]  [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb
[ 3914.640789]  [<ffffffffa03ca44f>] ? insert_state+0x4b/0x10b [btrfs]
[ 3914.642041]  [<ffffffff810453f0>] warn_slowpath_fmt+0x46/0x48
[ 3914.643236]  [<ffffffffa03ca44f>] insert_state+0x4b/0x10b [btrfs]
[ 3914.644441]  [<ffffffffa03ca729>] __set_extent_bit+0x107/0x3f4 [btrfs]
[ 3914.645711]  [<ffffffffa03cb256>] lock_extent_bits+0x65/0x1bf [btrfs]
[ 3914.646914]  [<ffffffff8142b2fb>] ? _raw_spin_unlock+0x28/0x33
[ 3914.648058]  [<ffffffffa03cbac4>] ? test_range_bit+0xcc/0xde [btrfs]
[ 3914.650105]  [<ffffffffa03cb3c3>] lock_extent+0x13/0x15 [btrfs]
[ 3914.651361]  [<ffffffffa03db39e>] lock_extent_range+0x3d/0xcd [btrfs]
[ 3914.652761]  [<ffffffffa03de1fe>] btrfs_ioctl_clone+0x278/0x388 [btrfs]
[ 3914.654128]  [<ffffffff811226dd>] ? might_fault+0x58/0xb5
[ 3914.655320]  [<ffffffffa03e0909>] btrfs_ioctl+0xb51/0x2195 [btrfs]
(...)
[ 3914.669271] ---[ end trace 14843d3e2e622fc1 ]---

This later makes the inode eviction handler enter an infinite loop that
keeps dumping the following warning over and over:

[ 3915.117629] WARNING: CPU: 22 PID: 4228 at fs/btrfs/extent_io.c:435 insert_state+0x4b/0x10b [btrfs]()
[ 3915.119913] BTRFS: end < start 4095 4096
(...)
[ 3915.137394] Call Trace:
[ 3915.137913]  [<ffffffff81425fd9>] dump_stack+0x4c/0x65
[ 3915.139154]  [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb
[ 3915.140316]  [<ffffffffa03ca44f>] ? insert_state+0x4b/0x10b [btrfs]
[ 3915.141505]  [<ffffffff810453f0>] warn_slowpath_fmt+0x46/0x48
[ 3915.142709]  [<ffffffffa03ca44f>] insert_state+0x4b/0x10b [btrfs]
[ 3915.143849]  [<ffffffffa03ca729>] __set_extent_bit+0x107/0x3f4 [btrfs]
[ 3915.145120]  [<ffffffffa038c1e3>] ? btrfs_kill_super+0x17/0x23 [btrfs]
[ 3915.146352]  [<ffffffff811548f6>] ? deactivate_locked_super+0x3b/0x50
[ 3915.147565]  [<ffffffffa03cb256>] lock_extent_bits+0x65/0x1bf [btrfs]
[ 3915.148785]  [<ffffffff8142b7e2>] ? _raw_write_unlock+0x28/0x33
[ 3915.149931]  [<ffffffffa03bc325>] btrfs_evict_inode+0x196/0x482 [btrfs]
[ 3915.151154]  [<ffffffff81168904>] evict+0xa0/0x148
[ 3915.152094]  [<ffffffff811689e5>] dispose_list+0x39/0x43
[ 3915.153081]  [<ffffffff81169564>] evict_inodes+0xdc/0xeb
[ 3915.154062]  [<ffffffff81154418>] generic_shutdown_super+0x49/0xef
[ 3915.155193]  [<ffffffff811546d1>] kill_anon_super+0x13/0x1e
[ 3915.156274]  [<ffffffffa038c1e3>] btrfs_kill_super+0x17/0x23 [btrfs]
(...)
[ 3915.167404] ---[ end trace 14843d3e2e622fc2 ]---

So just bail out of the clone ioctl if the length of the region to clone
is zero, without locking any extent range, in order to prevent this issue
(same behaviour as a pwrite with a 0 length for example).

This is trivial to reproduce. For example, the steps for the test I just
made for fstests:

  mkfs.btrfs -f SCRATCH_DEV
  mount SCRATCH_DEV $SCRATCH_MNT

  touch $SCRATCH_MNT/foo
  touch $SCRATCH_MNT/bar

  $CLONER_PROG -s 0 -d 4096 -l 0 $SCRATCH_MNT/foo $SCRATCH_MNT/bar
  umount $SCRATCH_MNT

A test case for fstests follows soon.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Omar Sandoval <osandov@osandov.com>
Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/ioctl.c |    5 +++++
 1 file changed, 5 insertions(+)

--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -3626,6 +3626,11 @@ static noinline long btrfs_ioctl_clone(s
 	if (off + len == src->i_size)
 		len = ALIGN(src->i_size, bs) - off;
 
+	if (len == 0) {
+		ret = 0;
+		goto out_unlock;
+	}
+
 	/* verify the end result is block aligned */
 	if (!IS_ALIGNED(off, bs) || !IS_ALIGNED(off + len, bs) ||
 	    !IS_ALIGNED(destoff, bs))



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 019/177] Btrfs: fix inode eviction infinite loop after extent_same ioctl
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (17 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 018/177] Btrfs: fix inode eviction infinite loop after cloning into it Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 020/177] usb: gadget: printer: enqueue printers response for setup request Greg Kroah-Hartman
                   ` (156 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Filipe Manana, Omar Sandoval, Chris Mason

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Filipe Manana <fdmanana@suse.com>

commit 113e8283869b9855c8b999796aadd506bbac155f upstream.

If we pass a length of 0 to the extent_same ioctl, we end up locking an
extent range with a start offset greater then its end offset (if the
destination file's offset is greater than zero). This results in a warning
from extent_io.c:insert_state through the following call chain:

  btrfs_extent_same()
    btrfs_double_lock()
      lock_extent_range()
        lock_extent(inode->io_tree, offset, offset + len - 1)
          lock_extent_bits()
            __set_extent_bit()
              insert_state()
                --> WARN_ON(end < start)

This leads to an infinite loop when evicting the inode. This is the same
problem that my previous patch titled
"Btrfs: fix inode eviction infinite loop after cloning into it" addressed
but for the extent_same ioctl instead of the clone ioctl.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Omar Sandoval <osandov@osandov.com>
Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/ioctl.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -2897,6 +2897,9 @@ static int btrfs_extent_same(struct inod
 	if (src == dst)
 		return -EINVAL;
 
+	if (len == 0)
+		return 0;
+
 	btrfs_double_lock(src, loff, dst, dst_loff, len);
 
 	ret = extent_same_check_offsets(src, loff, len);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 020/177] usb: gadget: printer: enqueue printers response for setup request
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (18 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 019/177] Btrfs: fix inode eviction infinite loop after extent_same ioctl Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 021/177] KVM: s390: fix handling of write errors in the tpi handler Greg Kroah-Hartman
                   ` (155 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andrzej Pietrasiewicz, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Andrzej Pietrasiewicz <andrzej.p@samsung.com>

commit eb132ccbdec5df46e29c9814adf76075ce83576b upstream.

Function-specific setup requests should be handled in such a way, that
apart from filling in the data buffer, the requests are also actually
enqueued: if function-specific setup is called from composte_setup(),
the "usb_ep_queue()" block of code in composite_setup() is skipped.

The printer function lacks this part and it results in e.g. get device id
requests failing: the host expects some response, the device prepares it
but does not equeue it for sending to the host, so the host finally asserts
timeout.

This patch adds enqueueing the prepared responses.

Fixes: 2e87edf49227: "usb: gadget: make g_printer use composite"
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/gadget/legacy/printer.c |    9 +++++++++
 1 file changed, 9 insertions(+)

--- a/drivers/usb/gadget/legacy/printer.c
+++ b/drivers/usb/gadget/legacy/printer.c
@@ -1031,6 +1031,15 @@ unknown:
 		break;
 	}
 	/* host either stalls (value < 0) or reports success */
+	if (value >= 0) {
+		req->length = value;
+		req->zero = value < wLength;
+		value = usb_ep_queue(cdev->gadget->ep0, req, GFP_ATOMIC);
+		if (value < 0) {
+			ERROR(dev, "%s:%d Error!\n", __func__, __LINE__);
+			req->status = 0;
+		}
+	}
 	return value;
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 021/177] KVM: s390: fix handling of write errors in the tpi handler
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (19 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 020/177] usb: gadget: printer: enqueue printers response for setup request Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 022/177] KVM: s390: reinjection of irqs can fail " Greg Kroah-Hartman
                   ` (154 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, David Hildenbrand, Christian Borntraeger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: David Hildenbrand <dahi@linux.vnet.ibm.com>

commit 261520dcfcba93ca5dfe671b88ffab038cd940c8 upstream.

If the I/O interrupt could not be written to the guest provided
area (e.g. access exception), a program exception was injected into the
guest but "inti" wasn't freed, therefore resulting in a memory leak.

In addition, the I/O interrupt wasn't reinjected. Therefore the dequeued
interrupt is lost.

This patch fixes the problem while cleaning up the function and making the
cc and rc logic easier to handle.

Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/s390/kvm/priv.c |   40 +++++++++++++++++++++++-----------------
 1 file changed, 23 insertions(+), 17 deletions(-)

--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -229,18 +229,19 @@ static int handle_tpi(struct kvm_vcpu *v
 	struct kvm_s390_interrupt_info *inti;
 	unsigned long len;
 	u32 tpi_data[3];
-	int cc, rc;
+	int rc;
 	u64 addr;
 
-	rc = 0;
 	addr = kvm_s390_get_base_disp_s(vcpu);
 	if (addr & 3)
 		return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
-	cc = 0;
+
 	inti = kvm_s390_get_io_int(vcpu->kvm, vcpu->arch.sie_block->gcr[6], 0);
-	if (!inti)
-		goto no_interrupt;
-	cc = 1;
+	if (!inti) {
+		kvm_s390_set_psw_cc(vcpu, 0);
+		return 0;
+	}
+
 	tpi_data[0] = inti->io.subchannel_id << 16 | inti->io.subchannel_nr;
 	tpi_data[1] = inti->io.io_int_parm;
 	tpi_data[2] = inti->io.io_int_word;
@@ -251,30 +252,35 @@ static int handle_tpi(struct kvm_vcpu *v
 		 */
 		len = sizeof(tpi_data) - 4;
 		rc = write_guest(vcpu, addr, &tpi_data, len);
-		if (rc)
-			return kvm_s390_inject_prog_cond(vcpu, rc);
+		if (rc) {
+			rc = kvm_s390_inject_prog_cond(vcpu, rc);
+			goto reinject_interrupt;
+		}
 	} else {
 		/*
 		 * Store the three-word I/O interruption code into
 		 * the appropriate lowcore area.
 		 */
 		len = sizeof(tpi_data);
-		if (write_guest_lc(vcpu, __LC_SUBCHANNEL_ID, &tpi_data, len))
+		if (write_guest_lc(vcpu, __LC_SUBCHANNEL_ID, &tpi_data, len)) {
+			/* failed writes to the low core are not recoverable */
 			rc = -EFAULT;
+			goto reinject_interrupt;
+		}
 	}
+
+	/* irq was successfully handed to the guest */
+	kfree(inti);
+	kvm_s390_set_psw_cc(vcpu, 1);
+	return 0;
+reinject_interrupt:
 	/*
 	 * If we encounter a problem storing the interruption code, the
 	 * instruction is suppressed from the guest's view: reinject the
 	 * interrupt.
 	 */
-	if (!rc)
-		kfree(inti);
-	else
-		kvm_s390_reinject_io_int(vcpu->kvm, inti);
-no_interrupt:
-	/* Set condition code and we're done. */
-	if (!rc)
-		kvm_s390_set_psw_cc(vcpu, cc);
+	kvm_s390_reinject_io_int(vcpu->kvm, inti);
+	/* don't set the cc, a pgm irq was injected or we drop to user space */
 	return rc ? -EFAULT : 0;
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 022/177] KVM: s390: reinjection of irqs can fail in the tpi handler
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (20 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 021/177] KVM: s390: fix handling of write errors in the tpi handler Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 023/177] KVM: s390: Zero out current VMDB of STSI before including level3 data Greg Kroah-Hartman
                   ` (153 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, David Hildenbrand, Christian Borntraeger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: David Hildenbrand <dahi@linux.vnet.ibm.com>

commit 15462e37ca848abac7477dece65f8af25febd744 upstream.

The reinjection of an I/O interrupt can fail if the list is at the limit
and between the dequeue and the reinjection, another I/O interrupt is
injected (e.g. if user space floods kvm with I/O interrupts).

This patch avoids this memory leak and returns -EFAULT in this special
case. This error is not recoverable, so let's fail hard. This can later
be avoided by not dequeuing the interrupt but working directly on the
locked list.

Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/s390/kvm/interrupt.c |    4 ++--
 arch/s390/kvm/kvm-s390.h  |    4 ++--
 arch/s390/kvm/priv.c      |    5 ++++-
 3 files changed, 8 insertions(+), 5 deletions(-)

--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -1287,10 +1287,10 @@ int kvm_s390_inject_vm(struct kvm *kvm,
 	return rc;
 }
 
-void kvm_s390_reinject_io_int(struct kvm *kvm,
+int kvm_s390_reinject_io_int(struct kvm *kvm,
 			      struct kvm_s390_interrupt_info *inti)
 {
-	__inject_vm(kvm, inti);
+	return __inject_vm(kvm, inti);
 }
 
 int s390int_to_s390irq(struct kvm_s390_interrupt *s390int,
--- a/arch/s390/kvm/kvm-s390.h
+++ b/arch/s390/kvm/kvm-s390.h
@@ -146,8 +146,8 @@ int __must_check kvm_s390_inject_vcpu(st
 int __must_check kvm_s390_inject_program_int(struct kvm_vcpu *vcpu, u16 code);
 struct kvm_s390_interrupt_info *kvm_s390_get_io_int(struct kvm *kvm,
 						    u64 cr6, u64 schid);
-void kvm_s390_reinject_io_int(struct kvm *kvm,
-			      struct kvm_s390_interrupt_info *inti);
+int kvm_s390_reinject_io_int(struct kvm *kvm,
+			     struct kvm_s390_interrupt_info *inti);
 int kvm_s390_mask_adapter(struct kvm *kvm, unsigned int id, bool masked);
 
 /* implemented in intercept.c */
--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -279,7 +279,10 @@ reinject_interrupt:
 	 * instruction is suppressed from the guest's view: reinject the
 	 * interrupt.
 	 */
-	kvm_s390_reinject_io_int(vcpu->kvm, inti);
+	if (kvm_s390_reinject_io_int(vcpu->kvm, inti)) {
+		kfree(inti);
+		rc = -EFAULT;
+	}
 	/* don't set the cc, a pgm irq was injected or we drop to user space */
 	return rc ? -EFAULT : 0;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 023/177] KVM: s390: Zero out current VMDB of STSI before including level3 data.
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (21 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 022/177] KVM: s390: reinjection of irqs can fail " Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 024/177] KVM: s390: no need to hold the kvm->mutex for floating interrupts Greg Kroah-Hartman
                   ` (152 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ekaterina Tumanova,
	David Hildenbrand, Christian Borntraeger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>

commit b75f4c9afac2604feb971441116c07a24ecca1ec upstream.

s390 documentation requires words 0 and 10-15 to be reserved and stored as
zeros. As we fill out all other fields, we can memset the full structure.

Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/s390/kvm/priv.c |    1 +
 1 file changed, 1 insertion(+)

--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -471,6 +471,7 @@ static void handle_stsi_3_2_2(struct kvm
 	for (n = mem->count - 1; n > 0 ; n--)
 		memcpy(&mem->vm[n], &mem->vm[n - 1], sizeof(mem->vm[0]));
 
+	memset(&mem->vm[0], 0, sizeof(mem->vm[0]));
 	mem->vm[0].cpus_total = cpus;
 	mem->vm[0].cpus_configured = cpus;
 	mem->vm[0].cpus_standby = 0;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 024/177] KVM: s390: no need to hold the kvm->mutex for floating interrupts
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (22 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 023/177] KVM: s390: Zero out current VMDB of STSI before including level3 data Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 025/177] KVM: s390: fix get_all_floating_irqs Greg Kroah-Hartman
                   ` (151 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christian Borntraeger, Cornelia Huck,
	Jens Freimann

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Christian Borntraeger <borntraeger@de.ibm.com>

commit 69a8d456263849152826542c7cb0a164b90e68a8 upstream.

The kvm mutex was (probably) used to protect against cpu hotplug.
The current code no longer needs to protect against that, as we only
rely on CPU data structures that are guaranteed to be available
if we can access the CPU. (e.g. vcpu_create will put the cpu
in the array AFTER the cpu is ready).

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/s390/kvm/interrupt.c |    8 --------
 1 file changed, 8 deletions(-)

--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -1131,7 +1131,6 @@ struct kvm_s390_interrupt_info *kvm_s390
 
 	if ((!schid && !cr6) || (schid && cr6))
 		return NULL;
-	mutex_lock(&kvm->lock);
 	fi = &kvm->arch.float_int;
 	spin_lock(&fi->lock);
 	inti = NULL;
@@ -1159,7 +1158,6 @@ struct kvm_s390_interrupt_info *kvm_s390
 	if (list_empty(&fi->list))
 		atomic_set(&fi->active, 0);
 	spin_unlock(&fi->lock);
-	mutex_unlock(&kvm->lock);
 	return inti;
 }
 
@@ -1172,7 +1170,6 @@ static int __inject_vm(struct kvm *kvm,
 	int sigcpu;
 	int rc = 0;
 
-	mutex_lock(&kvm->lock);
 	fi = &kvm->arch.float_int;
 	spin_lock(&fi->lock);
 	if (fi->irq_count >= KVM_S390_MAX_FLOAT_IRQS) {
@@ -1225,7 +1222,6 @@ static int __inject_vm(struct kvm *kvm,
 	kvm_s390_vcpu_wakeup(kvm_get_vcpu(kvm, sigcpu));
 unlock_fi:
 	spin_unlock(&fi->lock);
-	mutex_unlock(&kvm->lock);
 	return rc;
 }
 
@@ -1379,7 +1375,6 @@ void kvm_s390_clear_float_irqs(struct kv
 	struct kvm_s390_float_interrupt *fi;
 	struct kvm_s390_interrupt_info	*n, *inti = NULL;
 
-	mutex_lock(&kvm->lock);
 	fi = &kvm->arch.float_int;
 	spin_lock(&fi->lock);
 	list_for_each_entry_safe(inti, n, &fi->list, list) {
@@ -1389,7 +1384,6 @@ void kvm_s390_clear_float_irqs(struct kv
 	fi->irq_count = 0;
 	atomic_set(&fi->active, 0);
 	spin_unlock(&fi->lock);
-	mutex_unlock(&kvm->lock);
 }
 
 static inline int copy_irq_to_user(struct kvm_s390_interrupt_info *inti,
@@ -1429,7 +1423,6 @@ static int get_all_floating_irqs(struct
 	int ret = 0;
 	int n = 0;
 
-	mutex_lock(&kvm->lock);
 	fi = &kvm->arch.float_int;
 	spin_lock(&fi->lock);
 
@@ -1448,7 +1441,6 @@ static int get_all_floating_irqs(struct
 	}
 
 	spin_unlock(&fi->lock);
-	mutex_unlock(&kvm->lock);
 
 	return ret < 0 ? ret : n;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 025/177] KVM: s390: fix get_all_floating_irqs
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (23 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 024/177] KVM: s390: no need to hold the kvm->mutex for floating interrupts Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 026/177] s390/hibernate: fix save and restore of kernel text section Greg Kroah-Hartman
                   ` (150 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, David Hildenbrand, Jens Freimann,
	Christian Borntraeger, Cornelia Huck

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jens Freimann <jfrei@linux.vnet.ibm.com>

commit 94aa033efcac47b09db22cb561e135baf37b7887 upstream.

This fixes a bug introduced with commit c05c4186bbe4 ("KVM: s390:
add floating irq controller").

get_all_floating_irqs() does copy_to_user() while holding
a spin lock. Let's fix this by filling a temporary buffer
first and copy it to userspace after giving up the lock.

Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 Documentation/virtual/kvm/devices/s390_flic.txt |    3 +
 arch/s390/kvm/interrupt.c                       |   58 +++++++++++++-----------
 2 files changed, 35 insertions(+), 26 deletions(-)

--- a/Documentation/virtual/kvm/devices/s390_flic.txt
+++ b/Documentation/virtual/kvm/devices/s390_flic.txt
@@ -27,6 +27,9 @@ Groups:
     Copies all floating interrupts into a buffer provided by userspace.
     When the buffer is too small it returns -ENOMEM, which is the indication
     for userspace to try again with a bigger buffer.
+    -ENOBUFS is returned when the allocation of a kernelspace buffer has
+    failed.
+    -EFAULT is returned when copying data to userspace failed.
     All interrupts remain pending, i.e. are not deleted from the list of
     currently pending interrupts.
     attr->addr contains the userspace address of the buffer into which all
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -17,6 +17,7 @@
 #include <linux/signal.h>
 #include <linux/slab.h>
 #include <linux/bitmap.h>
+#include <linux/vmalloc.h>
 #include <asm/asm-offsets.h>
 #include <asm/uaccess.h>
 #include "kvm-s390.h"
@@ -1386,61 +1387,66 @@ void kvm_s390_clear_float_irqs(struct kv
 	spin_unlock(&fi->lock);
 }
 
-static inline int copy_irq_to_user(struct kvm_s390_interrupt_info *inti,
-				   u8 *addr)
+static void inti_to_irq(struct kvm_s390_interrupt_info *inti,
+		       struct kvm_s390_irq *irq)
 {
-	struct kvm_s390_irq __user *uptr = (struct kvm_s390_irq __user *) addr;
-	struct kvm_s390_irq irq = {0};
-
-	irq.type = inti->type;
+	irq->type = inti->type;
 	switch (inti->type) {
 	case KVM_S390_INT_PFAULT_INIT:
 	case KVM_S390_INT_PFAULT_DONE:
 	case KVM_S390_INT_VIRTIO:
 	case KVM_S390_INT_SERVICE:
-		irq.u.ext = inti->ext;
+		irq->u.ext = inti->ext;
 		break;
 	case KVM_S390_INT_IO_MIN...KVM_S390_INT_IO_MAX:
-		irq.u.io = inti->io;
+		irq->u.io = inti->io;
 		break;
 	case KVM_S390_MCHK:
-		irq.u.mchk = inti->mchk;
+		irq->u.mchk = inti->mchk;
 		break;
-	default:
-		return -EINVAL;
 	}
-
-	if (copy_to_user(uptr, &irq, sizeof(irq)))
-		return -EFAULT;
-
-	return 0;
 }
 
-static int get_all_floating_irqs(struct kvm *kvm, __u8 *buf, __u64 len)
+static int get_all_floating_irqs(struct kvm *kvm, u8 __user *usrbuf, u64 len)
 {
 	struct kvm_s390_interrupt_info *inti;
 	struct kvm_s390_float_interrupt *fi;
+	struct kvm_s390_irq *buf;
+	int max_irqs;
 	int ret = 0;
 	int n = 0;
 
+	if (len > KVM_S390_FLIC_MAX_BUFFER || len == 0)
+		return -EINVAL;
+
+	/*
+	 * We are already using -ENOMEM to signal
+	 * userspace it may retry with a bigger buffer,
+	 * so we need to use something else for this case
+	 */
+	buf = vzalloc(len);
+	if (!buf)
+		return -ENOBUFS;
+
+	max_irqs = len / sizeof(struct kvm_s390_irq);
+
 	fi = &kvm->arch.float_int;
 	spin_lock(&fi->lock);
-
 	list_for_each_entry(inti, &fi->list, list) {
-		if (len < sizeof(struct kvm_s390_irq)) {
+		if (n == max_irqs) {
 			/* signal userspace to try again */
 			ret = -ENOMEM;
 			break;
 		}
-		ret = copy_irq_to_user(inti, buf);
-		if (ret)
-			break;
-		buf += sizeof(struct kvm_s390_irq);
-		len -= sizeof(struct kvm_s390_irq);
+		inti_to_irq(inti, &buf[n]);
 		n++;
 	}
-
 	spin_unlock(&fi->lock);
+	if (!ret && n > 0) {
+		if (copy_to_user(usrbuf, buf, sizeof(struct kvm_s390_irq) * n))
+			ret = -EFAULT;
+	}
+	vfree(buf);
 
 	return ret < 0 ? ret : n;
 }
@@ -1451,7 +1457,7 @@ static int flic_get_attr(struct kvm_devi
 
 	switch (attr->group) {
 	case KVM_DEV_FLIC_GET_ALL_IRQS:
-		r = get_all_floating_irqs(dev->kvm, (u8 *) attr->addr,
+		r = get_all_floating_irqs(dev->kvm, (u8 __user *) attr->addr,
 					  attr->attr);
 		break;
 	default:



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 026/177] s390/hibernate: fix save and restore of kernel text section
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (24 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 025/177] KVM: s390: fix get_all_floating_irqs Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 028/177] KVM: arm/arm64: check IRQ number on userland injection Greg Kroah-Hartman
                   ` (149 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Heiko Carstens, Martin Schwidefsky

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Heiko Carstens <heiko.carstens@de.ibm.com>

commit d74419495633493c9cd3f2bbeb7f3529d0edded6 upstream.

Sebastian reported a crash caused by a jump label mismatch after resume.
This happens because we do not save the kernel text section during suspend
and therefore also do not restore it during resume, but use the kernel image
that restores the old system.

This means that after a suspend/resume cycle we lost all modifications done
to the kernel text section.
The reason for this is the pfn_is_nosave() function, which incorrectly
returns that read-only pages don't need to be saved. This is incorrect since
we mark the kernel text section read-only.
We still need to make sure to not save and restore pages contained within
NSS and DCSS segment.
To fix this add an extra case for the kernel text section and only save
those pages if they are not contained within an NSS segment.

Fixes the following crash (and the above bugs as well):

Jump label code mismatch at netif_receive_skb_internal+0x28/0xd0
Found:    c0 04 00 00 00 00
Expected: c0 f4 00 00 00 11
New:      c0 04 00 00 00 00
Kernel panic - not syncing: Corrupted kernel text
CPU: 0 PID: 9 Comm: migration/0 Not tainted 3.19.0-01975-gb1b096e70f23 #4
Call Trace:
  [<0000000000113972>] show_stack+0x72/0xf0
  [<000000000081f15e>] dump_stack+0x6e/0x90
  [<000000000081c4e8>] panic+0x108/0x2b0
  [<000000000081be64>] jump_label_bug.isra.2+0x104/0x108
  [<0000000000112176>] __jump_label_transform+0x9e/0xd0
  [<00000000001121e6>] __sm_arch_jump_label_transform+0x3e/0x50
  [<00000000001d1136>] multi_cpu_stop+0x12e/0x170
  [<00000000001d1472>] cpu_stopper_thread+0xb2/0x168
  [<000000000015d2ac>] smpboot_thread_fn+0x134/0x1b0
  [<0000000000158baa>] kthread+0x10a/0x110
  [<0000000000824a86>] kernel_thread_starter+0x6/0xc

Reported-and-tested-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/s390/kernel/suspend.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/arch/s390/kernel/suspend.c
+++ b/arch/s390/kernel/suspend.c
@@ -138,6 +138,8 @@ int pfn_is_nosave(unsigned long pfn)
 {
 	unsigned long nosave_begin_pfn = PFN_DOWN(__pa(&__nosave_begin));
 	unsigned long nosave_end_pfn = PFN_DOWN(__pa(&__nosave_end));
+	unsigned long eshared_pfn = PFN_DOWN(__pa(&_eshared)) - 1;
+	unsigned long stext_pfn = PFN_DOWN(__pa(&_stext));
 
 	/* Always save lowcore pages (LC protection might be enabled). */
 	if (pfn <= LC_PAGES)
@@ -145,6 +147,8 @@ int pfn_is_nosave(unsigned long pfn)
 	if (pfn >= nosave_begin_pfn && pfn < nosave_end_pfn)
 		return 1;
 	/* Skip memory holes and read-only pages (NSS, DCSS, ...). */
+	if (pfn >= stext_pfn && pfn <= eshared_pfn)
+		return ipl_info.type == IPL_TYPE_NSS ? 1 : 0;
 	if (tprot(PFN_PHYS(pfn)))
 		return 1;
 	return 0;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 028/177] KVM: arm/arm64: check IRQ number on userland injection
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (25 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 026/177] s390/hibernate: fix save and restore of kernel text section Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 029/177] KVM: arm/arm64: vgic: vgic_init returns -ENODEV when no online vcpu Greg Kroah-Hartman
                   ` (148 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andre Przywara, Christoffer Dall,
	Marc Zyngier

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Andre Przywara <andre.przywara@arm.com>

commit fd1d0ddf2ae92fb3df42ed476939861806c5d785 upstream.

When userland injects a SPI via the KVM_IRQ_LINE ioctl we currently
only check it against a fixed limit, which historically is set
to 127. With the new dynamic IRQ allocation the effective limit may
actually be smaller (64).
So when now a malicious or buggy userland injects a SPI in that
range, we spill over on our VGIC bitmaps and bytemaps memory.
I could trigger a host kernel NULL pointer dereference with current
mainline by injecting some bogus IRQ number from a hacked kvmtool:
-----------------
....
DEBUG: kvm_vgic_inject_irq(kvm, cpu=0, irq=114, level=1)
DEBUG: vgic_update_irq_pending(kvm, cpu=0, irq=114, level=1)
DEBUG: IRQ #114 still in the game, writing to bytemap now...
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = ffffffc07652e000
[00000000] *pgd=00000000f658b003, *pud=00000000f658b003, *pmd=0000000000000000
Internal error: Oops: 96000006 [#1] PREEMPT SMP
Modules linked in:
CPU: 1 PID: 1053 Comm: lkvm-msi-irqinj Not tainted 4.0.0-rc7+ #3027
Hardware name: FVP Base (DT)
task: ffffffc0774e9680 ti: ffffffc0765a8000 task.ti: ffffffc0765a8000
PC is at kvm_vgic_inject_irq+0x234/0x310
LR is at kvm_vgic_inject_irq+0x30c/0x310
pc : [<ffffffc0000ae0a8>] lr : [<ffffffc0000ae180>] pstate: 80000145
.....

So this patch fixes this by checking the SPI number against the
actual limit. Also we remove the former legacy hard limit of
127 in the ioctl code.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
[maz: wrap KVM_ARM_IRQ_GIC_MAX with #ifndef __KERNEL__,
as suggested by Christopher Covington]
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/include/uapi/asm/kvm.h   |    8 +++++++-
 arch/arm/kvm/arm.c                |    3 +--
 arch/arm64/include/uapi/asm/kvm.h |    8 +++++++-
 virt/kvm/arm/vgic.c               |    3 +++
 4 files changed, 18 insertions(+), 4 deletions(-)

--- a/arch/arm/include/uapi/asm/kvm.h
+++ b/arch/arm/include/uapi/asm/kvm.h
@@ -193,8 +193,14 @@ struct kvm_arch_memory_slot {
 #define KVM_ARM_IRQ_CPU_IRQ		0
 #define KVM_ARM_IRQ_CPU_FIQ		1
 
-/* Highest supported SPI, from VGIC_NR_IRQS */
+/*
+ * This used to hold the highest supported SPI, but it is now obsolete
+ * and only here to provide source code level compatibility with older
+ * userland. The highest SPI number can be set via KVM_DEV_ARM_VGIC_GRP_NR_IRQS.
+ */
+#ifndef __KERNEL__
 #define KVM_ARM_IRQ_GIC_MAX		127
+#endif
 
 /* PSCI interface */
 #define KVM_PSCI_FN_BASE		0x95c1ba5e
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -644,8 +644,7 @@ int kvm_vm_ioctl_irq_line(struct kvm *kv
 		if (!irqchip_in_kernel(kvm))
 			return -ENXIO;
 
-		if (irq_num < VGIC_NR_PRIVATE_IRQS ||
-		    irq_num > KVM_ARM_IRQ_GIC_MAX)
+		if (irq_num < VGIC_NR_PRIVATE_IRQS)
 			return -EINVAL;
 
 		return kvm_vgic_inject_irq(kvm, 0, irq_num, level);
--- a/arch/arm64/include/uapi/asm/kvm.h
+++ b/arch/arm64/include/uapi/asm/kvm.h
@@ -179,8 +179,14 @@ struct kvm_arch_memory_slot {
 #define KVM_ARM_IRQ_CPU_IRQ		0
 #define KVM_ARM_IRQ_CPU_FIQ		1
 
-/* Highest supported SPI, from VGIC_NR_IRQS */
+/*
+ * This used to hold the highest supported SPI, but it is now obsolete
+ * and only here to provide source code level compatibility with older
+ * userland. The highest SPI number can be set via KVM_DEV_ARM_VGIC_GRP_NR_IRQS.
+ */
+#ifndef __KERNEL__
 #define KVM_ARM_IRQ_GIC_MAX		127
+#endif
 
 /* PSCI interface */
 #define KVM_PSCI_FN_BASE		0x95c1ba5e
--- a/virt/kvm/arm/vgic.c
+++ b/virt/kvm/arm/vgic.c
@@ -1706,6 +1706,9 @@ int kvm_vgic_inject_irq(struct kvm *kvm,
 			goto out;
 	}
 
+	if (irq_num >= kvm->arch.vgic.nr_irqs)
+		return -EINVAL;
+
 	vcpu_id = vgic_update_irq_pending(kvm, cpuid, irq_num, level);
 	if (vcpu_id >= 0) {
 		/* kick the specified vcpu */



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 029/177] KVM: arm/arm64: vgic: vgic_init returns -ENODEV when no online vcpu
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (26 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 028/177] KVM: arm/arm64: check IRQ number on userland injection Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 030/177] ARM: KVM: Fix size check in __coherent_cache_guest_page Greg Kroah-Hartman
                   ` (147 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eric Auger, Christoffer Dall, Shannon Zhao

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Auger <eric.auger@linaro.org>

commit 66b030e48af68fd4c22d343908bc057207a0a31e upstream.

To be more explicit on vgic initialization failure, -ENODEV is
returned by vgic_init when no online vcpus can be found at init.

Signed-off-by: Eric Auger <eric.auger@linaro.org>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 virt/kvm/arm/vgic.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/virt/kvm/arm/vgic.c
+++ b/virt/kvm/arm/vgic.c
@@ -1812,7 +1812,7 @@ static int vgic_init(struct kvm *kvm)
 
 	nr_cpus = dist->nr_cpus = atomic_read(&kvm->online_vcpus);
 	if (!nr_cpus)		/* No vcpus? Can't be good... */
-		return -EINVAL;
+		return -ENODEV;
 
 	/*
 	 * If nobody configured the number of interrupts, use the



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 030/177] ARM: KVM: Fix size check in __coherent_cache_guest_page
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (27 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 029/177] KVM: arm/arm64: vgic: vgic_init returns -ENODEV when no online vcpu Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 031/177] arm64: KVM: Fix stage-2 PGD allocation to have per-page refcounting Greg Kroah-Hartman
                   ` (146 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jan Kiszka, Christoffer Dall, Shannon Zhao

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jan Kiszka <jan.kiszka@siemens.com>

commit a050dfb21cc22ac0c666d52531040c1bc48184cc upstream.

The check is supposed to catch page-unaligned sizes, not the inverse.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/include/asm/kvm_mmu.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/arm/include/asm/kvm_mmu.h
+++ b/arch/arm/include/asm/kvm_mmu.h
@@ -186,7 +186,7 @@ static inline void __coherent_cache_gues
 
 	bool need_flush = !vcpu_has_cache_enabled(vcpu) || ipa_uncached;
 
-	VM_BUG_ON(size & PAGE_MASK);
+	VM_BUG_ON(size & ~PAGE_MASK);
 
 	if (!need_flush && !icache_is_pipt())
 		goto vipt_cache;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 031/177] arm64: KVM: Fix stage-2 PGD allocation to have per-page refcounting
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (28 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 030/177] ARM: KVM: Fix size check in __coherent_cache_guest_page Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 032/177] arm64: KVM: Do not use pgd_index to index stage-2 pgd Greg Kroah-Hartman
                   ` (145 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mark Rutland, Marc Zyngier,
	Christoffer Dall, Shannon Zhao

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Marc Zyngier <marc.zyngier@arm.com>

commit a987370f8e7a1677ae385042644326d9cd145a20 upstream.

We're using __get_free_pages with to allocate the guest's stage-2
PGD. The standard behaviour of this function is to return a set of
pages where only the head page has a valid refcount.

This behaviour gets us into trouble when we're trying to increment
the refcount on a non-head page:

page:ffff7c00cfb693c0 count:0 mapcount:0 mapping:          (null) index:0x0
flags: 0x4000000000000000()
page dumped because: VM_BUG_ON_PAGE((*({ __attribute__((unused)) typeof((&page->_count)->counter) __var = ( typeof((&page->_count)->counter)) 0; (volatile typeof((&page->_count)->counter) *)&((&page->_count)->counter); })) <= 0)
BUG: failure at include/linux/mm.h:548/get_page()!
Kernel panic - not syncing: BUG!
CPU: 1 PID: 1695 Comm: kvm-vcpu-0 Not tainted 4.0.0-rc1+ #3825
Hardware name: APM X-Gene Mustang board (DT)
Call trace:
[<ffff80000008a09c>] dump_backtrace+0x0/0x13c
[<ffff80000008a1e8>] show_stack+0x10/0x1c
[<ffff800000691da8>] dump_stack+0x74/0x94
[<ffff800000690d78>] panic+0x100/0x240
[<ffff8000000a0bc4>] stage2_get_pmd+0x17c/0x2bc
[<ffff8000000a1dc4>] kvm_handle_guest_abort+0x4b4/0x6b0
[<ffff8000000a420c>] handle_exit+0x58/0x180
[<ffff80000009e7a4>] kvm_arch_vcpu_ioctl_run+0x114/0x45c
[<ffff800000099df4>] kvm_vcpu_ioctl+0x2e0/0x754
[<ffff8000001c0a18>] do_vfs_ioctl+0x424/0x5c8
[<ffff8000001c0bfc>] SyS_ioctl+0x40/0x78
CPU0: stopping

A possible approach for this is to split the compound page using
split_page() at allocation time, and change the teardown path to
free one page at a time.  It turns out that alloc_pages_exact() and
free_pages_exact() does exactly that.

While we're at it, the PGD allocation code is reworked to reduce
duplication.

This has been tested on an X-Gene platform with a 4kB/48bit-VA host
kernel, and kvmtool hacked to place memory in the second page of
the hardware PGD (PUD for the host kernel). Also regression-tested
on a Cubietruck (Cortex-A7).

 [ Reworked to use alloc_pages_exact() and free_pages_exact() and to
   return pointers directly instead of by reference as arguments
    - Christoffer ]

Reported-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/include/asm/kvm_mmu.h   |   10 ++---
 arch/arm/kvm/mmu.c               |   67 ++++++++++++++++++++++++++++-----------
 arch/arm64/include/asm/kvm_mmu.h |   46 ++------------------------
 3 files changed, 57 insertions(+), 66 deletions(-)

--- a/arch/arm/include/asm/kvm_mmu.h
+++ b/arch/arm/include/asm/kvm_mmu.h
@@ -141,16 +141,14 @@ static inline bool kvm_page_empty(void *
 
 #define KVM_PREALLOC_LEVEL	0
 
-static inline int kvm_prealloc_hwpgd(struct kvm *kvm, pgd_t *pgd)
+static inline void *kvm_get_hwpgd(struct kvm *kvm)
 {
-	return 0;
+	return kvm->arch.pgd;
 }
 
-static inline void kvm_free_hwpgd(struct kvm *kvm) { }
-
-static inline void *kvm_get_hwpgd(struct kvm *kvm)
+static inline unsigned int kvm_get_hwpgd_size(void)
 {
-	return kvm->arch.pgd;
+	return PTRS_PER_S2_PGD * sizeof(pgd_t);
 }
 
 struct kvm;
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -593,6 +593,20 @@ int create_hyp_io_mappings(void *from, v
 				     __phys_to_pfn(phys_addr), PAGE_HYP_DEVICE);
 }
 
+/* Free the HW pgd, one page at a time */
+static void kvm_free_hwpgd(void *hwpgd)
+{
+	free_pages_exact(hwpgd, kvm_get_hwpgd_size());
+}
+
+/* Allocate the HW PGD, making sure that each page gets its own refcount */
+static void *kvm_alloc_hwpgd(void)
+{
+	unsigned int size = kvm_get_hwpgd_size();
+
+	return alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
+}
+
 /**
  * kvm_alloc_stage2_pgd - allocate level-1 table for stage-2 translation.
  * @kvm:	The KVM struct pointer for the VM.
@@ -606,15 +620,31 @@ int create_hyp_io_mappings(void *from, v
  */
 int kvm_alloc_stage2_pgd(struct kvm *kvm)
 {
-	int ret;
 	pgd_t *pgd;
+	void *hwpgd;
 
 	if (kvm->arch.pgd != NULL) {
 		kvm_err("kvm_arch already initialized?\n");
 		return -EINVAL;
 	}
 
+	hwpgd = kvm_alloc_hwpgd();
+	if (!hwpgd)
+		return -ENOMEM;
+
+	/* When the kernel uses more levels of page tables than the
+	 * guest, we allocate a fake PGD and pre-populate it to point
+	 * to the next-level page table, which will be the real
+	 * initial page table pointed to by the VTTBR.
+	 *
+	 * When KVM_PREALLOC_LEVEL==2, we allocate a single page for
+	 * the PMD and the kernel will use folded pud.
+	 * When KVM_PREALLOC_LEVEL==1, we allocate 2 consecutive PUD
+	 * pages.
+	 */
 	if (KVM_PREALLOC_LEVEL > 0) {
+		int i;
+
 		/*
 		 * Allocate fake pgd for the page table manipulation macros to
 		 * work.  This is not used by the hardware and we have no
@@ -622,30 +652,32 @@ int kvm_alloc_stage2_pgd(struct kvm *kvm
 		 */
 		pgd = (pgd_t *)kmalloc(PTRS_PER_S2_PGD * sizeof(pgd_t),
 				       GFP_KERNEL | __GFP_ZERO);
+
+		if (!pgd) {
+			kvm_free_hwpgd(hwpgd);
+			return -ENOMEM;
+		}
+
+		/* Plug the HW PGD into the fake one. */
+		for (i = 0; i < PTRS_PER_S2_PGD; i++) {
+			if (KVM_PREALLOC_LEVEL == 1)
+				pgd_populate(NULL, pgd + i,
+					     (pud_t *)hwpgd + i * PTRS_PER_PUD);
+			else if (KVM_PREALLOC_LEVEL == 2)
+				pud_populate(NULL, pud_offset(pgd, 0) + i,
+					     (pmd_t *)hwpgd + i * PTRS_PER_PMD);
+		}
 	} else {
 		/*
 		 * Allocate actual first-level Stage-2 page table used by the
 		 * hardware for Stage-2 page table walks.
 		 */
-		pgd = (pgd_t *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, S2_PGD_ORDER);
+		pgd = (pgd_t *)hwpgd;
 	}
 
-	if (!pgd)
-		return -ENOMEM;
-
-	ret = kvm_prealloc_hwpgd(kvm, pgd);
-	if (ret)
-		goto out_err;
-
 	kvm_clean_pgd(pgd);
 	kvm->arch.pgd = pgd;
 	return 0;
-out_err:
-	if (KVM_PREALLOC_LEVEL > 0)
-		kfree(pgd);
-	else
-		free_pages((unsigned long)pgd, S2_PGD_ORDER);
-	return ret;
 }
 
 /**
@@ -746,11 +778,10 @@ void kvm_free_stage2_pgd(struct kvm *kvm
 		return;
 
 	unmap_stage2_range(kvm, 0, KVM_PHYS_SIZE);
-	kvm_free_hwpgd(kvm);
+	kvm_free_hwpgd(kvm_get_hwpgd(kvm));
 	if (KVM_PREALLOC_LEVEL > 0)
 		kfree(kvm->arch.pgd);
-	else
-		free_pages((unsigned long)kvm->arch.pgd, S2_PGD_ORDER);
+
 	kvm->arch.pgd = NULL;
 }
 
--- a/arch/arm64/include/asm/kvm_mmu.h
+++ b/arch/arm64/include/asm/kvm_mmu.h
@@ -150,43 +150,6 @@ static inline void kvm_set_s2pmd_writabl
 #define KVM_PREALLOC_LEVEL	(0)
 #endif
 
-/**
- * kvm_prealloc_hwpgd - allocate inital table for VTTBR
- * @kvm:	The KVM struct pointer for the VM.
- * @pgd:	The kernel pseudo pgd
- *
- * When the kernel uses more levels of page tables than the guest, we allocate
- * a fake PGD and pre-populate it to point to the next-level page table, which
- * will be the real initial page table pointed to by the VTTBR.
- *
- * When KVM_PREALLOC_LEVEL==2, we allocate a single page for the PMD and
- * the kernel will use folded pud.  When KVM_PREALLOC_LEVEL==1, we
- * allocate 2 consecutive PUD pages.
- */
-static inline int kvm_prealloc_hwpgd(struct kvm *kvm, pgd_t *pgd)
-{
-	unsigned int i;
-	unsigned long hwpgd;
-
-	if (KVM_PREALLOC_LEVEL == 0)
-		return 0;
-
-	hwpgd = __get_free_pages(GFP_KERNEL | __GFP_ZERO, PTRS_PER_S2_PGD_SHIFT);
-	if (!hwpgd)
-		return -ENOMEM;
-
-	for (i = 0; i < PTRS_PER_S2_PGD; i++) {
-		if (KVM_PREALLOC_LEVEL == 1)
-			pgd_populate(NULL, pgd + i,
-				     (pud_t *)hwpgd + i * PTRS_PER_PUD);
-		else if (KVM_PREALLOC_LEVEL == 2)
-			pud_populate(NULL, pud_offset(pgd, 0) + i,
-				     (pmd_t *)hwpgd + i * PTRS_PER_PMD);
-	}
-
-	return 0;
-}
-
 static inline void *kvm_get_hwpgd(struct kvm *kvm)
 {
 	pgd_t *pgd = kvm->arch.pgd;
@@ -203,12 +166,11 @@ static inline void *kvm_get_hwpgd(struct
 	return pmd_offset(pud, 0);
 }
 
-static inline void kvm_free_hwpgd(struct kvm *kvm)
+static inline unsigned int kvm_get_hwpgd_size(void)
 {
-	if (KVM_PREALLOC_LEVEL > 0) {
-		unsigned long hwpgd = (unsigned long)kvm_get_hwpgd(kvm);
-		free_pages(hwpgd, PTRS_PER_S2_PGD_SHIFT);
-	}
+	if (KVM_PREALLOC_LEVEL > 0)
+		return PTRS_PER_S2_PGD * PAGE_SIZE;
+	return PTRS_PER_S2_PGD * sizeof(pgd_t);
 }
 
 static inline bool kvm_page_empty(void *ptr)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 032/177] arm64: KVM: Do not use pgd_index to index stage-2 pgd
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (29 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 031/177] arm64: KVM: Fix stage-2 PGD allocation to have per-page refcounting Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 034/177] MIPS: KVM: Handle MSA Disabled exceptions from guest Greg Kroah-Hartman
                   ` (144 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christoffer Dall, Marc Zyngier, Shannon Zhao

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Marc Zyngier <marc.zyngier@arm.com>

commit 04b8dc85bf4a64517e3cf20e409eeaa503b15cc1 upstream.

The kernel's pgd_index macro is designed to index a normal, page
sized array. KVM is a bit diffferent, as we can use concatenated
pages to have a bigger address space (for example 40bit IPA with
4kB pages gives us an 8kB PGD.

In the above case, the use of pgd_index will always return an index
inside the first 4kB, which makes a guest that has memory above
0x8000000000 rather unhappy, as it spins forever in a page fault,
whist the host happilly corrupts the lower pgd.

The obvious fix is to get our own kvm_pgd_index that does the right
thing(tm).

Tested on X-Gene with a hacked kvmtool that put memory at a stupidly
high address.

Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/arm/include/asm/kvm_mmu.h   |    3 ++-
 arch/arm/kvm/mmu.c               |    6 +++---
 arch/arm64/include/asm/kvm_mmu.h |    2 ++
 3 files changed, 7 insertions(+), 4 deletions(-)

--- a/arch/arm/include/asm/kvm_mmu.h
+++ b/arch/arm/include/asm/kvm_mmu.h
@@ -128,13 +128,14 @@ static inline void kvm_set_s2pmd_writabl
 	(__boundary - 1 < (end) - 1)? __boundary: (end);		\
 })
 
+#define kvm_pgd_index(addr)			pgd_index(addr)
+
 static inline bool kvm_page_empty(void *ptr)
 {
 	struct page *ptr_page = virt_to_page(ptr);
 	return page_count(ptr_page) == 1;
 }
 
-
 #define kvm_pte_table_empty(kvm, ptep) kvm_page_empty(ptep)
 #define kvm_pmd_table_empty(kvm, pmdp) kvm_page_empty(pmdp)
 #define kvm_pud_table_empty(kvm, pudp) (0)
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -251,7 +251,7 @@ static void unmap_range(struct kvm *kvm,
 	phys_addr_t addr = start, end = start + size;
 	phys_addr_t next;
 
-	pgd = pgdp + pgd_index(addr);
+	pgd = pgdp + kvm_pgd_index(addr);
 	do {
 		next = kvm_pgd_addr_end(addr, end);
 		if (!pgd_none(*pgd))
@@ -316,7 +316,7 @@ static void stage2_flush_memslot(struct
 	phys_addr_t next;
 	pgd_t *pgd;
 
-	pgd = kvm->arch.pgd + pgd_index(addr);
+	pgd = kvm->arch.pgd + kvm_pgd_index(addr);
 	do {
 		next = kvm_pgd_addr_end(addr, end);
 		stage2_flush_puds(kvm, pgd, addr, next);
@@ -791,7 +791,7 @@ static pud_t *stage2_get_pud(struct kvm
 	pgd_t *pgd;
 	pud_t *pud;
 
-	pgd = kvm->arch.pgd + pgd_index(addr);
+	pgd = kvm->arch.pgd + kvm_pgd_index(addr);
 	if (WARN_ON(pgd_none(*pgd))) {
 		if (!cache)
 			return NULL;
--- a/arch/arm64/include/asm/kvm_mmu.h
+++ b/arch/arm64/include/asm/kvm_mmu.h
@@ -137,6 +137,8 @@ static inline void kvm_set_s2pmd_writabl
 #define PTRS_PER_S2_PGD		(1 << PTRS_PER_S2_PGD_SHIFT)
 #define S2_PGD_ORDER		get_order(PTRS_PER_S2_PGD * sizeof(pgd_t))
 
+#define kvm_pgd_index(addr)	(((addr) >> PGDIR_SHIFT) & (PTRS_PER_S2_PGD - 1))
+
 /*
  * If we are concatenating first level stage-2 page tables, we would have less
  * than or equal to 16 pointers in the fake PGD, because that's what the



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 034/177] MIPS: KVM: Handle MSA Disabled exceptions from guest
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (30 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 032/177] arm64: KVM: Do not use pgd_index to index stage-2 pgd Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 035/177] MIPS: lose_fpu(): Disable FPU when MSA enabled Greg Kroah-Hartman
                   ` (143 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, James Hogan, Paolo Bonzini,
	Paul Burton, Ralf Baechle, Gleb Natapov, linux-mips, kvm

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: James Hogan <james.hogan@imgtec.com>

commit 98119ad53376885819d93dfb8737b6a9a61ca0ba upstream.

Guest user mode can generate a guest MSA Disabled exception on an MSA
capable core by simply trying to execute an MSA instruction. Since this
exception is unknown to KVM it will be passed on to the guest kernel.
However guest Linux kernels prior to v3.15 do not set up an exception
handler for the MSA Disabled exception as they don't support any MSA
capable cores. This results in a guest OS panic.

Since an older processor ID may be being emulated, and MSA support is
not advertised to the guest, the correct behaviour is to generate a
Reserved Instruction exception in the guest kernel so it can send the
guest process an illegal instruction signal (SIGILL), as would happen
with a non-MSA-capable core.

Fix this as minimally as reasonably possible by preventing
kvm_mips_check_privilege() from relaying MSA Disabled exceptions from
guest user mode to the guest kernel, and handling the MSA Disabled
exception by emulating a Reserved Instruction exception in the guest,
via a new handle_msa_disabled() KVM callback.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Gleb Natapov <gleb@kernel.org>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/include/asm/kvm_host.h |    2 ++
 arch/mips/kvm/emulate.c          |    1 +
 arch/mips/kvm/mips.c             |    4 ++++
 arch/mips/kvm/trap_emul.c        |   28 ++++++++++++++++++++++++++++
 4 files changed, 35 insertions(+)

--- a/arch/mips/include/asm/kvm_host.h
+++ b/arch/mips/include/asm/kvm_host.h
@@ -321,6 +321,7 @@ enum mips_mmu_types {
 #define T_TRAP			13	/* Trap instruction */
 #define T_VCEI			14	/* Virtual coherency exception */
 #define T_FPE			15	/* Floating point exception */
+#define T_MSADIS		21	/* MSA disabled exception */
 #define T_WATCH			23	/* Watch address reference */
 #define T_VCED			31	/* Virtual coherency data */
 
@@ -577,6 +578,7 @@ struct kvm_mips_callbacks {
 	int (*handle_syscall)(struct kvm_vcpu *vcpu);
 	int (*handle_res_inst)(struct kvm_vcpu *vcpu);
 	int (*handle_break)(struct kvm_vcpu *vcpu);
+	int (*handle_msa_disabled)(struct kvm_vcpu *vcpu);
 	int (*vm_init)(struct kvm *kvm);
 	int (*vcpu_init)(struct kvm_vcpu *vcpu);
 	int (*vcpu_setup)(struct kvm_vcpu *vcpu);
--- a/arch/mips/kvm/emulate.c
+++ b/arch/mips/kvm/emulate.c
@@ -2176,6 +2176,7 @@ enum emulation_result kvm_mips_check_pri
 		case T_SYSCALL:
 		case T_BREAK:
 		case T_RES_INST:
+		case T_MSADIS:
 			break;
 
 		case T_COP_UNUSABLE:
--- a/arch/mips/kvm/mips.c
+++ b/arch/mips/kvm/mips.c
@@ -1119,6 +1119,10 @@ int kvm_mips_handle_exit(struct kvm_run
 		ret = kvm_mips_callbacks->handle_break(vcpu);
 		break;
 
+	case T_MSADIS:
+		ret = kvm_mips_callbacks->handle_msa_disabled(vcpu);
+		break;
+
 	default:
 		kvm_err("Exception Code: %d, not yet handled, @ PC: %p, inst: 0x%08x  BadVaddr: %#lx Status: %#lx\n",
 			exccode, opc, kvm_get_inst(opc, vcpu), badvaddr,
--- a/arch/mips/kvm/trap_emul.c
+++ b/arch/mips/kvm/trap_emul.c
@@ -330,6 +330,33 @@ static int kvm_trap_emul_handle_break(st
 	return ret;
 }
 
+static int kvm_trap_emul_handle_msa_disabled(struct kvm_vcpu *vcpu)
+{
+	struct kvm_run *run = vcpu->run;
+	uint32_t __user *opc = (uint32_t __user *) vcpu->arch.pc;
+	unsigned long cause = vcpu->arch.host_cp0_cause;
+	enum emulation_result er = EMULATE_DONE;
+	int ret = RESUME_GUEST;
+
+	/* No MSA supported in guest, guest reserved instruction exception */
+	er = kvm_mips_emulate_ri_exc(cause, opc, run, vcpu);
+
+	switch (er) {
+	case EMULATE_DONE:
+		ret = RESUME_GUEST;
+		break;
+
+	case EMULATE_FAIL:
+		run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
+		ret = RESUME_HOST;
+		break;
+
+	default:
+		BUG();
+	}
+	return ret;
+}
+
 static int kvm_trap_emul_vm_init(struct kvm *kvm)
 {
 	return 0;
@@ -470,6 +497,7 @@ static struct kvm_mips_callbacks kvm_tra
 	.handle_syscall = kvm_trap_emul_handle_syscall,
 	.handle_res_inst = kvm_trap_emul_handle_res_inst,
 	.handle_break = kvm_trap_emul_handle_break,
+	.handle_msa_disabled = kvm_trap_emul_handle_msa_disabled,
 
 	.vm_init = kvm_trap_emul_vm_init,
 	.vcpu_init = kvm_trap_emul_vcpu_init,



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 035/177] MIPS: lose_fpu(): Disable FPU when MSA enabled
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (31 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 034/177] MIPS: KVM: Handle MSA Disabled exceptions from guest Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 036/177] MIPS: Malta: Detect and fix bad memsize values Greg Kroah-Hartman
                   ` (142 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, James Hogan, Ralf Baechle,
	Paul Burton, linux-mips

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: James Hogan <james.hogan@imgtec.com>

commit acaf6a97d623af123314c2f8ce4cf7254f6b2fc1 upstream.

The lose_fpu() function only disables the FPU in CP0_Status.CU1 if the
FPU is in use and MSA isn't enabled.

This isn't necessarily a problem because KSTK_STATUS(current), the
version of CP0_Status stored on the kernel stack on entry from user
mode, does always get updated and gets restored when returning to user
mode, but I don't think it was intended, and it is inconsistent with the
case of only the FPU being in use. Sometimes leaving the FPU enabled may
also mask kernel bugs where FPU operations are executed when the FPU
might not be enabled.

So lets disable the FPU in the MSA case too.

Fixes: 33c771ba5c5d ("MIPS: save/disable MSA in lose_fpu")
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/9323/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/include/asm/fpu.h |    1 +
 1 file changed, 1 insertion(+)

--- a/arch/mips/include/asm/fpu.h
+++ b/arch/mips/include/asm/fpu.h
@@ -169,6 +169,7 @@ static inline void lose_fpu(int save)
 		}
 		disable_msa();
 		clear_thread_flag(TIF_USEDMSA);
+		__disable_fpu();
 	} else if (is_fpu_owner()) {
 		if (save)
 			_save_fp(current);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 036/177] MIPS: Malta: Detect and fix bad memsize values
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (32 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 035/177] MIPS: lose_fpu(): Disable FPU when MSA enabled Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:00 ` [PATCH 3.19 037/177] MIPS: asm: asm-eva: Introduce kernel load/store variants Greg Kroah-Hartman
                   ` (141 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Markos Chandras, linux-mips, Ralf Baechle

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Markos Chandras <markos.chandras@imgtec.com>

commit f7f8aea4b97c4d48e42f02cb37026bee445f239f upstream.

memsize denotes the amount of RAM we can access from kseg{0,1} and
that should be up to 256M. In case the bootloader reports a value
higher than that (perhaps reporting all the available RAM) it's best
if we fix it ourselves and just warn the user about that. This is
usually a problem with the bootloader and/or its environment.

[ralf@linux-mips.org: Remove useless parens as suggested bei Sergei.
Reformat long pr_warn statement to fit into 80 column limit.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/9362/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/mti-malta/malta-memory.c |    6 ++++++
 1 file changed, 6 insertions(+)

--- a/arch/mips/mti-malta/malta-memory.c
+++ b/arch/mips/mti-malta/malta-memory.c
@@ -53,6 +53,12 @@ fw_memblock_t * __init fw_getmdesc(int e
 		pr_warn("memsize not set in YAMON, set to default (32Mb)\n");
 		physical_memsize = 0x02000000;
 	} else {
+		if (memsize > (256 << 20)) { /* memsize should be capped to 256M */
+			pr_warn("Unsupported memsize value (0x%lx) detected! "
+				"Using 0x10000000 (256M) instead\n",
+				memsize);
+			memsize = 256 << 20;
+		}
 		/* If ememsize is set, then set physical_memsize to that */
 		physical_memsize = ememsize ? : memsize;
 	}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 037/177] MIPS: asm: asm-eva: Introduce kernel load/store variants
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (33 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 036/177] MIPS: Malta: Detect and fix bad memsize values Greg Kroah-Hartman
@ 2015-05-02 19:00 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 038/177] MIPS: unaligned: Fix regular load/store instruction emulation for EVA Greg Kroah-Hartman
                   ` (140 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:00 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Markos Chandras, linux-mips, Ralf Baechle

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Markos Chandras <markos.chandras@imgtec.com>

commit 60cd7e08e453bc6828ac4b539f949e4acd80f143 upstream.

Introduce new macros for kernel load/store variants which will be
used to perform regular kernel space load/store operations in EVA
mode.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/9500/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/include/asm/asm-eva.h |  137 +++++++++++++++++++++++++++-------------
 1 file changed, 93 insertions(+), 44 deletions(-)

--- a/arch/mips/include/asm/asm-eva.h
+++ b/arch/mips/include/asm/asm-eva.h
@@ -11,6 +11,36 @@
 #define __ASM_ASM_EVA_H
 
 #ifndef __ASSEMBLY__
+
+/* Kernel variants */
+
+#define kernel_cache(op, base)		"cache " op ", " base "\n"
+#define kernel_ll(reg, addr)		"ll " reg ", " addr "\n"
+#define kernel_sc(reg, addr)		"sc " reg ", " addr "\n"
+#define kernel_lw(reg, addr)		"lw " reg ", " addr "\n"
+#define kernel_lwl(reg, addr)		"lwl " reg ", " addr "\n"
+#define kernel_lwr(reg, addr)		"lwr " reg ", " addr "\n"
+#define kernel_lh(reg, addr)		"lh " reg ", " addr "\n"
+#define kernel_lb(reg, addr)		"lb " reg ", " addr "\n"
+#define kernel_lbu(reg, addr)		"lbu " reg ", " addr "\n"
+#define kernel_sw(reg, addr)		"sw " reg ", " addr "\n"
+#define kernel_swl(reg, addr)		"swl " reg ", " addr "\n"
+#define kernel_swr(reg, addr)		"swr " reg ", " addr "\n"
+#define kernel_sh(reg, addr)		"sh " reg ", " addr "\n"
+#define kernel_sb(reg, addr)		"sb " reg ", " addr "\n"
+
+#ifdef CONFIG_32BIT
+/*
+ * No 'sd' or 'ld' instructions in 32-bit but the code will
+ * do the correct thing
+ */
+#define kernel_sd(reg, addr)		user_sw(reg, addr)
+#define kernel_ld(reg, addr)		user_lw(reg, addr)
+#else
+#define kernel_sd(reg, addr)		"sd " reg", " addr "\n"
+#define kernel_ld(reg, addr)		"ld " reg", " addr "\n"
+#endif /* CONFIG_32BIT */
+
 #ifdef CONFIG_EVA
 
 #define __BUILD_EVA_INSN(insn, reg, addr)				\
@@ -41,37 +71,60 @@
 
 #else
 
-#define user_cache(op, base)		"cache " op ", " base "\n"
-#define user_ll(reg, addr)		"ll " reg ", " addr "\n"
-#define user_sc(reg, addr)		"sc " reg ", " addr "\n"
-#define user_lw(reg, addr)		"lw " reg ", " addr "\n"
-#define user_lwl(reg, addr)		"lwl " reg ", " addr "\n"
-#define user_lwr(reg, addr)		"lwr " reg ", " addr "\n"
-#define user_lh(reg, addr)		"lh " reg ", " addr "\n"
-#define user_lb(reg, addr)		"lb " reg ", " addr "\n"
-#define user_lbu(reg, addr)		"lbu " reg ", " addr "\n"
-#define user_sw(reg, addr)		"sw " reg ", " addr "\n"
-#define user_swl(reg, addr)		"swl " reg ", " addr "\n"
-#define user_swr(reg, addr)		"swr " reg ", " addr "\n"
-#define user_sh(reg, addr)		"sh " reg ", " addr "\n"
-#define user_sb(reg, addr)		"sb " reg ", " addr "\n"
+#define user_cache(op, base)		kernel_cache(op, base)
+#define user_ll(reg, addr)		kernel_ll(reg, addr)
+#define user_sc(reg, addr)		kernel_sc(reg, addr)
+#define user_lw(reg, addr)		kernel_lw(reg, addr)
+#define user_lwl(reg, addr)		kernel_lwl(reg, addr)
+#define user_lwr(reg, addr)		kernel_lwr(reg, addr)
+#define user_lh(reg, addr)		kernel_lh(reg, addr)
+#define user_lb(reg, addr)		kernel_lb(reg, addr)
+#define user_lbu(reg, addr)		kernel_lbu(reg, addr)
+#define user_sw(reg, addr)		kernel_sw(reg, addr)
+#define user_swl(reg, addr)		kernel_swl(reg, addr)
+#define user_swr(reg, addr)		kernel_swr(reg, addr)
+#define user_sh(reg, addr)		kernel_sh(reg, addr)
+#define user_sb(reg, addr)		kernel_sb(reg, addr)
 
 #ifdef CONFIG_32BIT
-/*
- * No 'sd' or 'ld' instructions in 32-bit but the code will
- * do the correct thing
- */
-#define user_sd(reg, addr)		user_sw(reg, addr)
-#define user_ld(reg, addr)		user_lw(reg, addr)
+#define user_sd(reg, addr)		kernel_sw(reg, addr)
+#define user_ld(reg, addr)		kernel_lw(reg, addr)
 #else
-#define user_sd(reg, addr)		"sd " reg", " addr "\n"
-#define user_ld(reg, addr)		"ld " reg", " addr "\n"
+#define user_sd(reg, addr)		kernel_sd(reg, addr)
+#define user_ld(reg, addr)		kernel_ld(reg, addr)
 #endif /* CONFIG_32BIT */
 
 #endif /* CONFIG_EVA */
 
 #else /* __ASSEMBLY__ */
 
+#define kernel_cache(op, base)		cache op, base
+#define kernel_ll(reg, addr)		ll reg, addr
+#define kernel_sc(reg, addr)		sc reg, addr
+#define kernel_lw(reg, addr)		lw reg, addr
+#define kernel_lwl(reg, addr)		lwl reg, addr
+#define kernel_lwr(reg, addr)		lwr reg, addr
+#define kernel_lh(reg, addr)		lh reg, addr
+#define kernel_lb(reg, addr)		lb reg, addr
+#define kernel_lbu(reg, addr)		lbu reg, addr
+#define kernel_sw(reg, addr)		sw reg, addr
+#define kernel_swl(reg, addr)		swl reg, addr
+#define kernel_swr(reg, addr)		swr reg, addr
+#define kernel_sh(reg, addr)		sh reg, addr
+#define kernel_sb(reg, addr)		sb reg, addr
+
+#ifdef CONFIG_32BIT
+/*
+ * No 'sd' or 'ld' instructions in 32-bit but the code will
+ * do the correct thing
+ */
+#define kernel_sd(reg, addr)		user_sw(reg, addr)
+#define kernel_ld(reg, addr)		user_lw(reg, addr)
+#else
+#define kernel_sd(reg, addr)		sd reg, addr
+#define kernel_ld(reg, addr)		ld reg, addr
+#endif /* CONFIG_32BIT */
+
 #ifdef CONFIG_EVA
 
 #define __BUILD_EVA_INSN(insn, reg, addr)			\
@@ -101,31 +154,27 @@
 #define user_sd(reg, addr)		user_sw(reg, addr)
 #else
 
-#define user_cache(op, base)		cache op, base
-#define user_ll(reg, addr)		ll reg, addr
-#define user_sc(reg, addr)		sc reg, addr
-#define user_lw(reg, addr)		lw reg, addr
-#define user_lwl(reg, addr)		lwl reg, addr
-#define user_lwr(reg, addr)		lwr reg, addr
-#define user_lh(reg, addr)		lh reg, addr
-#define user_lb(reg, addr)		lb reg, addr
-#define user_lbu(reg, addr)		lbu reg, addr
-#define user_sw(reg, addr)		sw reg, addr
-#define user_swl(reg, addr)		swl reg, addr
-#define user_swr(reg, addr)		swr reg, addr
-#define user_sh(reg, addr)		sh reg, addr
-#define user_sb(reg, addr)		sb reg, addr
+#define user_cache(op, base)		kernel_cache(op, base)
+#define user_ll(reg, addr)		kernel_ll(reg, addr)
+#define user_sc(reg, addr)		kernel_sc(reg, addr)
+#define user_lw(reg, addr)		kernel_lw(reg, addr)
+#define user_lwl(reg, addr)		kernel_lwl(reg, addr)
+#define user_lwr(reg, addr)		kernel_lwr(reg, addr)
+#define user_lh(reg, addr)		kernel_lh(reg, addr)
+#define user_lb(reg, addr)		kernel_lb(reg, addr)
+#define user_lbu(reg, addr)		kernel_lbu(reg, addr)
+#define user_sw(reg, addr)		kernel_sw(reg, addr)
+#define user_swl(reg, addr)		kernel_swl(reg, addr)
+#define user_swr(reg, addr)		kernel_swr(reg, addr)
+#define user_sh(reg, addr)		kernel_sh(reg, addr)
+#define user_sb(reg, addr)		kernel_sb(reg, addr)
 
 #ifdef CONFIG_32BIT
-/*
- * No 'sd' or 'ld' instructions in 32-bit but the code will
- * do the correct thing
- */
-#define user_sd(reg, addr)		user_sw(reg, addr)
-#define user_ld(reg, addr)		user_lw(reg, addr)
+#define user_sd(reg, addr)		kernel_sw(reg, addr)
+#define user_ld(reg, addr)		kernel_lw(reg, addr)
 #else
-#define user_sd(reg, addr)		sd reg, addr
-#define user_ld(reg, addr)		ld reg, addr
+#define user_sd(reg, addr)		kernel_sd(reg, addr)
+#define user_ld(reg, addr)		kernel_sd(reg, addr)
 #endif /* CONFIG_32BIT */
 
 #endif /* CONFIG_EVA */



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 038/177] MIPS: unaligned: Fix regular load/store instruction emulation for EVA
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (34 preceding siblings ...)
  2015-05-02 19:00 ` [PATCH 3.19 037/177] MIPS: asm: asm-eva: Introduce kernel load/store variants Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 039/177] MIPS: Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction Greg Kroah-Hartman
                   ` (139 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Markos Chandras, linux-mips, Ralf Baechle

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Markos Chandras <markos.chandras@imgtec.com>

commit 6eae35485b26f9e51ab896eb8a936bed9908fdf6 upstream.

When emulating a regular lh/lw/lhu/sh/sw we need to use the appropriate
instruction if we are in EVA mode. This is necessary for userspace
applications which trigger alignment exceptions. In such case, the
userspace load/store instruction needs to be emulated with the correct
eva/non-eva instruction by the kernel emulator.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Fixes: c1771216ab48 ("MIPS: kernel: unaligned: Handle unaligned accesses for EVA")
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/9503/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/kernel/unaligned.c |   52 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 47 insertions(+), 5 deletions(-)

--- a/arch/mips/kernel/unaligned.c
+++ b/arch/mips/kernel/unaligned.c
@@ -564,7 +564,15 @@ static void emulate_load_store_insn(stru
 		if (!access_ok(VERIFY_READ, addr, 2))
 			goto sigbus;
 
-		LoadHW(addr, value, res);
+		if (config_enabled(CONFIG_EVA)) {
+			if (segment_eq(get_fs(), get_ds()))
+				LoadHW(addr, value, res);
+			else
+				LoadHWE(addr, value, res);
+		} else {
+			LoadHW(addr, value, res);
+		}
+
 		if (res)
 			goto fault;
 		compute_return_epc(regs);
@@ -575,7 +583,15 @@ static void emulate_load_store_insn(stru
 		if (!access_ok(VERIFY_READ, addr, 4))
 			goto sigbus;
 
-		LoadW(addr, value, res);
+		if (config_enabled(CONFIG_EVA)) {
+			if (segment_eq(get_fs(), get_ds()))
+				LoadW(addr, value, res);
+			else
+				LoadWE(addr, value, res);
+		} else {
+			LoadW(addr, value, res);
+		}
+
 		if (res)
 			goto fault;
 		compute_return_epc(regs);
@@ -586,7 +602,15 @@ static void emulate_load_store_insn(stru
 		if (!access_ok(VERIFY_READ, addr, 2))
 			goto sigbus;
 
-		LoadHWU(addr, value, res);
+		if (config_enabled(CONFIG_EVA)) {
+			if (segment_eq(get_fs(), get_ds()))
+				LoadHWU(addr, value, res);
+			else
+				LoadHWUE(addr, value, res);
+		} else {
+			LoadHWU(addr, value, res);
+		}
+
 		if (res)
 			goto fault;
 		compute_return_epc(regs);
@@ -645,7 +669,16 @@ static void emulate_load_store_insn(stru
 
 		compute_return_epc(regs);
 		value = regs->regs[insn.i_format.rt];
-		StoreHW(addr, value, res);
+
+		if (config_enabled(CONFIG_EVA)) {
+			if (segment_eq(get_fs(), get_ds()))
+				StoreHW(addr, value, res);
+			else
+				StoreHWE(addr, value, res);
+		} else {
+			StoreHW(addr, value, res);
+		}
+
 		if (res)
 			goto fault;
 		break;
@@ -656,7 +689,16 @@ static void emulate_load_store_insn(stru
 
 		compute_return_epc(regs);
 		value = regs->regs[insn.i_format.rt];
-		StoreW(addr, value, res);
+
+		if (config_enabled(CONFIG_EVA)) {
+			if (segment_eq(get_fs(), get_ds()))
+				StoreW(addr, value, res);
+			else
+				StoreWE(addr, value, res);
+		} else {
+			StoreW(addr, value, res);
+		}
+
 		if (res)
 			goto fault;
 		break;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 039/177] MIPS: Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (35 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 038/177] MIPS: unaligned: Fix regular load/store instruction emulation for EVA Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 040/177] MIPS: Hibernate: flush TLB entries earlier Greg Kroah-Hartman
                   ` (138 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Huacai Chen, Steven J. Hill,
	linux-mips, Fuxin Zhang, Zhangjin Wu, Ralf Baechle

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Huacai Chen <chenhc@lemote.com>

commit 0add9c2f1cff9f3f1f2eb7e9babefa872a9d14b9 upstream.

HPET irq is routed to i8259 and then to MIPS CPU irq (cascade). After
commit a3e6c1eff5 (MIPS: IRQ: Fix disable_irq on CPU IRQs), if without
IRQF_NO_SUSPEND in cascade_irqaction, HPET interrupts will lost during
suspend. The result is machine cannot be waken up.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Fuxin Zhang <zhangfx@lemote.com>
Cc: Zhangjin Wu <wuzhangjin@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/9528/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/loongson/loongson-3/irq.c |    1 +
 1 file changed, 1 insertion(+)

--- a/arch/mips/loongson/loongson-3/irq.c
+++ b/arch/mips/loongson/loongson-3/irq.c
@@ -44,6 +44,7 @@ void mach_irq_dispatch(unsigned int pend
 
 static struct irqaction cascade_irqaction = {
 	.handler = no_action,
+	.flags = IRQF_NO_SUSPEND,
 	.name = "cascade",
 };
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 040/177] MIPS: Hibernate: flush TLB entries earlier
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (36 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 039/177] MIPS: Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 041/177] staging: panel: fix lcd type Greg Kroah-Hartman
                   ` (137 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Huacai Chen, Steven J. Hill,
	linux-mips, Fuxin Zhang, Zhangjin Wu, Ralf Baechle

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Huacai Chen <chenhc@lemote.com>

commit a843d00d038b11267279e3b5388222320f9ddc1d upstream.

We found that TLB mismatch not only happens after kernel resume, but
also happens during snapshot restore. So move it to the beginning of
swsusp_arch_suspend().

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Fuxin Zhang <zhangfx@lemote.com>
Cc: Zhangjin Wu <wuzhangjin@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/9621/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/power/hibernate.S |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/arch/mips/power/hibernate.S
+++ b/arch/mips/power/hibernate.S
@@ -30,6 +30,8 @@ LEAF(swsusp_arch_suspend)
 END(swsusp_arch_suspend)
 
 LEAF(swsusp_arch_resume)
+	/* Avoid TLB mismatch during and after kernel resume */
+	jal local_flush_tlb_all
 	PTR_L t0, restore_pblist
 0:
 	PTR_L t1, PBE_ADDRESS(t0)   /* source */
@@ -43,7 +45,6 @@ LEAF(swsusp_arch_resume)
 	bne t1, t3, 1b
 	PTR_L t0, PBE_NEXT(t0)
 	bnez t0, 0b
-	jal local_flush_tlb_all /* Avoid TLB mismatch after kernel resume */
 	PTR_LA t0, saved_regs
 	PTR_L ra, PT_R31(t0)
 	PTR_L sp, PT_R29(t0)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 041/177] staging: panel: fix lcd type
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (37 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 040/177] MIPS: Hibernate: flush TLB entries earlier Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 042/177] staging: android: sync: Fix memory corruption in sync_timeline_signal() Greg Kroah-Hartman
                   ` (136 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Sudip Mukherjee, Willy Tarreau

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sudip Mukherjee <sudipm.mukherjee@gmail.com>

commit 2c20d92dad5db6440cfa88d811b69fd605240ce4 upstream.

the lcd type as defined in the Kconfig is not matching in the code.
as a result the rs, rw and en pins were getting interchanged.
Kconfig defines the value of PANEL_LCD to be 1 if we select custom
configuration but in the code LCD_TYPE_CUSTOM is defined as 5.

my hardware is LCD_TYPE_CUSTOM, but the pins were assigned to it
as pins of LCD_TYPE_OLD, and it was not working.
Now values are corrected with referenece to the values defined in
Kconfig and it is working.
checked on JHD204A lcd with LCD_TYPE_CUSTOM configuration.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Acked-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/staging/panel/panel.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

--- a/drivers/staging/panel/panel.c
+++ b/drivers/staging/panel/panel.c
@@ -314,11 +314,11 @@ static unsigned char lcd_bits[LCD_PORTS]
  * LCD types
  */
 #define LCD_TYPE_NONE		0
-#define LCD_TYPE_OLD		1
-#define LCD_TYPE_KS0074		2
-#define LCD_TYPE_HANTRONIX	3
-#define LCD_TYPE_NEXCOM		4
-#define LCD_TYPE_CUSTOM		5
+#define LCD_TYPE_CUSTOM		1
+#define LCD_TYPE_OLD		2
+#define LCD_TYPE_KS0074		3
+#define LCD_TYPE_HANTRONIX	4
+#define LCD_TYPE_NEXCOM		5
 
 /*
  * keypad types
@@ -481,7 +481,7 @@ MODULE_PARM_DESC(keypad_type,
 static int lcd_type = NOT_SET;
 module_param(lcd_type, int, 0000);
 MODULE_PARM_DESC(lcd_type,
-		 "LCD type: 0=none, 1=old //, 2=serial ks0074, 3=hantronix //, 4=nexcom //, 5=compiled-in");
+		 "LCD type: 0=none, 1=compiled-in, 2=old, 3=serial ks0074, 4=hantronix, 5=nexcom");
 
 static int lcd_height = NOT_SET;
 module_param(lcd_height, int, 0000);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 042/177] staging: android: sync: Fix memory corruption in sync_timeline_signal().
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (38 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 041/177] staging: panel: fix lcd type Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 043/177] staging: vt6655: use ieee80211_tx_info to select packet type Greg Kroah-Hartman
                   ` (135 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alistair Strachan, Maarten Lankhorst,
	Colin Cross

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alistair Strachan <alistair.strachan@imgtec.com>

commit 8e43c9c75faf2902955bd2ecd7a50a8cc41cb00a upstream.

The android_fence_release() function checks for active sync points
by calling list_empty() on the list head embedded on the sync
point. However, it is only valid to use list_empty() on nodes that
have been initialized with INIT_LIST_HEAD() or list_del_init().

Because the list entry has likely been removed from the active list
by sync_timeline_signal(), there is a good chance that this
WARN_ON_ONCE() will be hit due to dangling pointers pointing at
freed memory (even though the sync drivers did nothing wrong)
and memory corruption will ensue as the list entry is removed for
a second time, corrupting the active list.

This problem can be reproduced quite easily with CONFIG_DEBUG_LIST=y
and fences with more than one sync point.

Signed-off-by: Alistair Strachan <alistair.strachan@imgtec.com>
Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Colin Cross <ccross@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/staging/android/sync.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -114,7 +114,7 @@ void sync_timeline_signal(struct sync_ti
 	list_for_each_entry_safe(pt, next, &obj->active_list_head,
 				 active_list) {
 		if (fence_is_signaled_locked(&pt->base))
-			list_del(&pt->active_list);
+			list_del_init(&pt->active_list);
 	}
 
 	spin_unlock_irqrestore(&obj->child_list_lock, flags);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 043/177] staging: vt6655: use ieee80211_tx_info to select packet type.
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (39 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 042/177] staging: android: sync: Fix memory corruption in sync_timeline_signal() Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 044/177] md/raid0: fix bug with chunksize not a power of 2 Greg Kroah-Hartman
                   ` (134 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Malcolm Priestley

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Malcolm Priestley <tvboxspy@gmail.com>

commit a6388e68321a1e0a0f408379c2a36396807745b3 upstream.

Information for packet type is in ieee80211_tx_info

band IEEE80211_BAND_5GHZ for PK_TYPE_11A.

IEEE80211_TX_RC_USE_CTS_PROTECT via tx_rate flags selects PK_TYPE_11GB

This ensures that the packet is always the right type.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/staging/vt6655/rxtx.c |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

--- a/drivers/staging/vt6655/rxtx.c
+++ b/drivers/staging/vt6655/rxtx.c
@@ -1309,10 +1309,18 @@ int vnt_generate_fifo_header(struct vnt_
 			    priv->hw->conf.chandef.chan->hw_value);
 	}
 
-	if (current_rate > RATE_11M)
-		pkt_type = (u8)priv->byPacketType;
-	else
+	if (current_rate > RATE_11M) {
+		if (info->band == IEEE80211_BAND_5GHZ) {
+			pkt_type = PK_TYPE_11A;
+		} else {
+			if (tx_rate->flags & IEEE80211_TX_RC_USE_CTS_PROTECT)
+				pkt_type = PK_TYPE_11GB;
+			else
+				pkt_type = PK_TYPE_11GA;
+		}
+	} else {
 		pkt_type = PK_TYPE_11B;
+	}
 
 	/*Set fifo controls */
 	if (pkt_type == PK_TYPE_11A)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 044/177] md/raid0: fix bug with chunksize not a power of 2.
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (40 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 043/177] staging: vt6655: use ieee80211_tx_info to select packet type Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 045/177] drivers/base: cacheinfo: validate device node for all the caches Greg Kroah-Hartman
                   ` (133 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Joe Landman, Dave Chinner, NeilBrown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: NeilBrown <neilb@suse.de>

commit 47d68979cc968535cb87f3e5f2e6a3533ea48fbd upstream.

Since commit 20d0189b1012a37d2533a87fb451f7852f2418d1
in v3.14-rc1 RAID0 has performed incorrect calculations
when the chunksize is not a power of 2.

This happens because "sector_div()" modifies its first argument, but
this wasn't taken into account in the patch.

So restore that first arg before re-using the variable.

Reported-by: Joe Landman <joe.landman@gmail.com>
Reported-by: Dave Chinner <david@fromorbit.com>
Fixes: 20d0189b1012a37d2533a87fb451f7852f2418d1
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/md/raid0.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -319,7 +319,7 @@ static struct strip_zone *find_zone(stru
 
 /*
  * remaps the bio to the target device. we separate two flows.
- * power 2 flow and a general flow for the sake of perfromance
+ * power 2 flow and a general flow for the sake of performance
 */
 static struct md_rdev *map_sector(struct mddev *mddev, struct strip_zone *zone,
 				sector_t sector, sector_t *sector_offset)
@@ -537,6 +537,7 @@ static void raid0_make_request(struct md
 			split = bio;
 		}
 
+		sector = bio->bi_iter.bi_sector;
 		zone = find_zone(mddev->private, &sector);
 		tmp_dev = map_sector(mddev, zone, sector, &sector);
 		split->bi_bdev = tmp_dev->bdev;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 045/177] drivers/base: cacheinfo: validate device node for all the caches
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (41 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 044/177] md/raid0: fix bug with chunksize not a power of 2 Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 046/177] cdc-wdm: fix endianness bug in debug statements Greg Kroah-Hartman
                   ` (132 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Mark Rutland, Sudeep Holla

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sudeep Holla <sudeep.holla@arm.com>

commit 8a7d95f95c95f396decbd4cda6d4903fc4664946 upstream.

On architectures that depend on DT for obtaining cache hierarcy, we need
to validate the device node for all the cache indices, failing to do so
might result in wrong information being exposed to the userspace.

This is quite possible on initial/incomplete versions of the device
trees. In such cases, it's better to bail out if all the required device
nodes are not present.

This patch adds checks for the validation of device node for all the
caches and doesn't initialise the cacheinfo if there's any error.

Reported-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/base/cacheinfo.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

--- a/drivers/base/cacheinfo.c
+++ b/drivers/base/cacheinfo.c
@@ -62,15 +62,21 @@ static int cache_setup_of_node(unsigned
 		return -ENOENT;
 	}
 
-	while (np && index < cache_leaves(cpu)) {
+	while (index < cache_leaves(cpu)) {
 		this_leaf = this_cpu_ci->info_list + index;
 		if (this_leaf->level != 1)
 			np = of_find_next_cache_node(np);
 		else
 			np = of_node_get(np);/* cpu node itself */
+		if (!np)
+			break;
 		this_leaf->of_node = np;
 		index++;
 	}
+
+	if (index != cache_leaves(cpu)) /* not all OF nodes populated */
+		return -ENOENT;
+
 	return 0;
 }
 
@@ -189,8 +195,11 @@ static int detect_cache_attributes(unsig
 	 * will be set up here only if they are not populated already
 	 */
 	ret = cache_shared_cpu_map_setup(cpu);
-	if (ret)
+	if (ret) {
+		pr_warn("Unable to detect cache hierarcy from DT for CPU %d\n",
+			cpu);
 		goto free_ci;
+	}
 	return 0;
 
 free_ci:



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 046/177] cdc-wdm: fix endianness bug in debug statements
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (42 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 045/177] drivers/base: cacheinfo: validate device node for all the caches Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 048/177] spi: imx: read back the RX/TX watermark levels earlier Greg Kroah-Hartman
                   ` (131 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Oliver Neukum

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Oliver Neukum <oneukum@suse.de>

commit 323ece54e0761198946ecd0c2091f1d2bfdfcb64 upstream.

Values directly from descriptors given in debug statements
must be converted to native endianness.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/class/cdc-wdm.c |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -245,7 +245,7 @@ static void wdm_int_callback(struct urb
 	case USB_CDC_NOTIFY_RESPONSE_AVAILABLE:
 		dev_dbg(&desc->intf->dev,
 			"NOTIFY_RESPONSE_AVAILABLE received: index %d len %d",
-			dr->wIndex, dr->wLength);
+			le16_to_cpu(dr->wIndex), le16_to_cpu(dr->wLength));
 		break;
 
 	case USB_CDC_NOTIFY_NETWORK_CONNECTION:
@@ -262,7 +262,9 @@ static void wdm_int_callback(struct urb
 		clear_bit(WDM_POLL_RUNNING, &desc->flags);
 		dev_err(&desc->intf->dev,
 			"unknown notification %d received: index %d len %d\n",
-			dr->bNotificationType, dr->wIndex, dr->wLength);
+			dr->bNotificationType,
+			le16_to_cpu(dr->wIndex),
+			le16_to_cpu(dr->wLength));
 		goto exit;
 	}
 
@@ -408,7 +410,7 @@ static ssize_t wdm_write
 			     USB_RECIP_INTERFACE);
 	req->bRequest = USB_CDC_SEND_ENCAPSULATED_COMMAND;
 	req->wValue = 0;
-	req->wIndex = desc->inum;
+	req->wIndex = desc->inum; /* already converted */
 	req->wLength = cpu_to_le16(count);
 	set_bit(WDM_IN_USE, &desc->flags);
 	desc->outbuf = buf;
@@ -422,7 +424,7 @@ static ssize_t wdm_write
 		rv = usb_translate_errors(rv);
 	} else {
 		dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d",
-			req->wIndex);
+			le16_to_cpu(req->wIndex));
 	}
 out:
 	usb_autopm_put_interface(desc->intf);
@@ -820,7 +822,7 @@ static int wdm_create(struct usb_interfa
 	desc->irq->bRequestType = (USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE);
 	desc->irq->bRequest = USB_CDC_GET_ENCAPSULATED_RESPONSE;
 	desc->irq->wValue = 0;
-	desc->irq->wIndex = desc->inum;
+	desc->irq->wIndex = desc->inum; /* already converted */
 	desc->irq->wLength = cpu_to_le16(desc->wMaxCommand);
 
 	usb_fill_control_urb(



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 048/177] spi: imx: read back the RX/TX watermark levels earlier
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (43 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 046/177] cdc-wdm: fix endianness bug in debug statements Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 049/177] spi: spidev: fix possible arithmetic overflow for multi-transfer message Greg Kroah-Hartman
                   ` (130 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Lucas Stach, Mark Brown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lucas Stach <l.stach@pengutronix.de>

commit f511ab09dfb0fe7b2335eccac51ff9f001a32e4a upstream.

They are used to decide if the controller can do DMA on a buffer
of a specific length and thus are needed before any transfer is attempted.

This fixes a memory leak where the SPI core uses the drivers can_dma()
callback to determine if a buffer needs to be mapped. As the watermark
levels aren't correct at that point the driver falsely claims to be able to
DMA the buffer when it fact it isn't.
After the transfer has been done the core uses the same callback to
determine if it needs to unmap the buffers. As the driver now correctly
claims to not being able to DMA the buffer the core doesn't attempt to
unmap the buffer which leaves the SGT leaking.

Fixes: f62caccd12c17e4 (spi: spi-imx: add DMA support)
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/spi/spi-imx.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/spi/spi-imx.c
+++ b/drivers/spi/spi-imx.c
@@ -371,8 +371,6 @@ static int __maybe_unused mx51_ecspi_con
 	if (spi_imx->dma_is_inited) {
 		dma = readl(spi_imx->base + MX51_ECSPI_DMA);
 
-		spi_imx->tx_wml = spi_imx_get_fifosize(spi_imx) / 2;
-		spi_imx->rx_wml = spi_imx_get_fifosize(spi_imx) / 2;
 		spi_imx->rxt_wml = spi_imx_get_fifosize(spi_imx) / 2;
 		rx_wml_cfg = spi_imx->rx_wml << MX51_ECSPI_DMA_RX_WML_OFFSET;
 		tx_wml_cfg = spi_imx->tx_wml << MX51_ECSPI_DMA_TX_WML_OFFSET;
@@ -869,6 +867,8 @@ static int spi_imx_sdma_init(struct devi
 	master->max_dma_len = MAX_SDMA_BD_BYTES;
 	spi_imx->bitbang.master->flags = SPI_MASTER_MUST_RX |
 					 SPI_MASTER_MUST_TX;
+	spi_imx->tx_wml = spi_imx_get_fifosize(spi_imx) / 2;
+	spi_imx->rx_wml = spi_imx_get_fifosize(spi_imx) / 2;
 	spi_imx->dma_is_inited = 1;
 
 	return 0;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 049/177] spi: spidev: fix possible arithmetic overflow for multi-transfer message
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (44 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 048/177] spi: imx: read back the RX/TX watermark levels earlier Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 050/177] compal-laptop: Fix leaking hwmon device Greg Kroah-Hartman
                   ` (129 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ian Abbott, Mark Brown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ian Abbott <abbotti@mev.co.uk>

commit f20fbaad7620af2df36a1f9d1c9ecf48ead5b747 upstream.

`spidev_message()` sums the lengths of the individual SPI transfers to
determine the overall SPI message length.  It restricts the total
length, returning an error if too long, but it does not check for
arithmetic overflow.  For example, if the SPI message consisted of two
transfers and the first has a length of 10 and the second has a length
of (__u32)(-1), the total length would be seen as 9, even though the
second transfer is actually very long.  If the second transfer specifies
a null `rx_buf` and a non-null `tx_buf`, the `copy_from_user()` could
overrun the spidev's pre-allocated tx buffer before it reaches an
invalid user memory address.  Fix it by checking that neither the total
nor the individual transfer lengths exceed the maximum allowed value.

Thanks to Dan Carpenter for reporting the potential integer overflow.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/spi/spidev.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
@@ -249,7 +249,10 @@ static int spidev_message(struct spidev_
 		k_tmp->len = u_tmp->len;
 
 		total += k_tmp->len;
-		if (total > bufsiz) {
+		/* Check total length of transfers.  Also check each
+		 * transfer length to avoid arithmetic overflow.
+		 */
+		if (total > bufsiz || k_tmp->len > bufsiz) {
 			status = -EMSGSIZE;
 			goto done;
 		}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 050/177] compal-laptop: Fix leaking hwmon device
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (45 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 049/177] spi: spidev: fix possible arithmetic overflow for multi-transfer message Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 051/177] compal-laptop: Check return value of power_supply_register Greg Kroah-Hartman
                   ` (128 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Krzysztof Kozlowski, Guenter Roeck,
	Darren Hart, Sebastian Reichel

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Krzysztof Kozlowski <k.kozlowski@samsung.com>

commit ad774702f1705c04e5fa492b793d8d477a504fa6 upstream.

The commit c2be45f09bb0 ("compal-laptop: Use
devm_hwmon_device_register_with_groups") wanted to change the
registering of hwmon device to resource-managed version. It mostly did
it except the main thing - it forgot to use devm-like function so the
hwmon device leaked after device removal or probe failure.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: c2be45f09bb0 ("compal-laptop: Use devm_hwmon_device_register_with_groups")
Acked-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/platform/x86/compal-laptop.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/platform/x86/compal-laptop.c
+++ b/drivers/platform/x86/compal-laptop.c
@@ -1026,9 +1026,9 @@ static int compal_probe(struct platform_
 	if (err)
 		return err;
 
-	hwmon_dev = hwmon_device_register_with_groups(&pdev->dev,
-						      "compal", data,
-						      compal_hwmon_groups);
+	hwmon_dev = devm_hwmon_device_register_with_groups(&pdev->dev,
+							   "compal", data,
+							   compal_hwmon_groups);
 	if (IS_ERR(hwmon_dev)) {
 		err = PTR_ERR(hwmon_dev);
 		goto remove;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 051/177] compal-laptop: Check return value of power_supply_register
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (46 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 050/177] compal-laptop: Fix leaking hwmon device Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 052/177] ring-buffer: Replace this_cpu_*() with __this_cpu_*() Greg Kroah-Hartman
                   ` (127 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Krzysztof Kozlowski, Sebastian Reichel

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Krzysztof Kozlowski <k.kozlowski@samsung.com>

commit 1915a718b1872edffcb13e5436a9f7302d3d36f0 upstream.

The return value of power_supply_register() call was not checked and
even on error probe() function returned 0. If registering failed then
during unbind the driver tried to unregister power supply which was not
actually registered.

This could lead to memory corruption because power_supply_unregister()
unconditionally cleans up given power supply.

Fix this by checking return status of power_supply_register() call. In
case of failure, clean up sysfs entries and fail the probe.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: 9be0fcb5ed46 ("compal-laptop: add JHL90, battery & hwmon interface")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/platform/x86/compal-laptop.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/platform/x86/compal-laptop.c
+++ b/drivers/platform/x86/compal-laptop.c
@@ -1036,7 +1036,9 @@ static int compal_probe(struct platform_
 
 	/* Power supply */
 	initialize_power_supply_data(data);
-	power_supply_register(&compal_device->dev, &data->psy);
+	err = power_supply_register(&compal_device->dev, &data->psy);
+	if (err < 0)
+		goto remove;
 
 	platform_set_drvdata(pdev, data);
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 052/177] ring-buffer: Replace this_cpu_*() with __this_cpu_*()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (47 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 051/177] compal-laptop: Check return value of power_supply_register Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 053/177] power_supply: twl4030_madc: Check return value of power_supply_register Greg Kroah-Hartman
                   ` (126 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christoph Lameter, Uwe Kleine-Koenig,
	Steven Rostedt

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Steven Rostedt <rostedt@goodmis.org>

commit 80a9b64e2c156b6523e7a01f2ba6e5d86e722814 upstream.

It has come to my attention that this_cpu_read/write are horrible on
architectures other than x86. Worse yet, they actually disable
preemption or interrupts! This caused some unexpected tracing results
on ARM.

   101.356868: preempt_count_add <-ring_buffer_lock_reserve
   101.356870: preempt_count_sub <-ring_buffer_lock_reserve

The ring_buffer_lock_reserve has recursion protection that requires
accessing a per cpu variable. But since preempt_disable() is traced, it
too got traced while accessing the variable that is suppose to prevent
recursion like this.

The generic version of this_cpu_read() and write() are:

 #define this_cpu_generic_read(pcp)					\
 ({	typeof(pcp) ret__;						\
	preempt_disable();						\
	ret__ = *this_cpu_ptr(&(pcp));					\
	preempt_enable();						\
	ret__;								\
 })

 #define this_cpu_generic_to_op(pcp, val, op)				\
 do {									\
	unsigned long flags;						\
	raw_local_irq_save(flags);					\
	*__this_cpu_ptr(&(pcp)) op val;					\
	raw_local_irq_restore(flags);					\
 } while (0)

Which is unacceptable for locations that know they are within preempt
disabled or interrupt disabled locations.

Paul McKenney stated that __this_cpu_() versions produce much better code on
other architectures than this_cpu_() does, if we know that the call is done in
a preempt disabled location.

I also changed the recursive_unlock() to use two local variables instead
of accessing the per_cpu variable twice.

Link: http://lkml.kernel.org/r/20150317114411.GE3589@linux.vnet.ibm.com
Link: http://lkml.kernel.org/r/20150317104038.312e73d1@gandalf.local.home

Acked-by: Christoph Lameter <cl@linux.com>
Reported-by: Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
Tested-by: Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 kernel/trace/ring_buffer.c |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -2681,7 +2681,7 @@ static DEFINE_PER_CPU(unsigned int, curr
 
 static __always_inline int trace_recursive_lock(void)
 {
-	unsigned int val = this_cpu_read(current_context);
+	unsigned int val = __this_cpu_read(current_context);
 	int bit;
 
 	if (in_interrupt()) {
@@ -2698,18 +2698,17 @@ static __always_inline int trace_recursi
 		return 1;
 
 	val |= (1 << bit);
-	this_cpu_write(current_context, val);
+	__this_cpu_write(current_context, val);
 
 	return 0;
 }
 
 static __always_inline void trace_recursive_unlock(void)
 {
-	unsigned int val = this_cpu_read(current_context);
+	unsigned int val = __this_cpu_read(current_context);
 
-	val--;
-	val &= this_cpu_read(current_context);
-	this_cpu_write(current_context, val);
+	val &= val & (val - 1);
+	__this_cpu_write(current_context, val);
 }
 
 #else



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 053/177] power_supply: twl4030_madc: Check return value of power_supply_register
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (48 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 052/177] ring-buffer: Replace this_cpu_*() with __this_cpu_*() Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 054/177] power_supply: lp8788-charger: Fix leaked power supply on probe fail Greg Kroah-Hartman
                   ` (125 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Krzysztof Kozlowski, Sebastian Reichel

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Krzysztof Kozlowski <k.kozlowski@samsung.com>

commit 68c3ed6fa7e0d69529ced772d650ab128916a81d upstream.

The return value of power_supply_register() call was not checked and
even on error probe() function returned 0. If registering failed then
during unbind the driver tried to unregister power supply which was not
actually registered.

This could lead to memory corruption because power_supply_unregister()
unconditionally cleans up given power supply.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: da0a00ebc239 ("power: Add twl4030_madc battery driver.")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/power/twl4030_madc_battery.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- a/drivers/power/twl4030_madc_battery.c
+++ b/drivers/power/twl4030_madc_battery.c
@@ -192,6 +192,7 @@ static int twl4030_madc_battery_probe(st
 {
 	struct twl4030_madc_battery *twl4030_madc_bat;
 	struct twl4030_madc_bat_platform_data *pdata = pdev->dev.platform_data;
+	int ret = 0;
 
 	twl4030_madc_bat = kzalloc(sizeof(*twl4030_madc_bat), GFP_KERNEL);
 	if (!twl4030_madc_bat)
@@ -216,9 +217,11 @@ static int twl4030_madc_battery_probe(st
 
 	twl4030_madc_bat->pdata = pdata;
 	platform_set_drvdata(pdev, twl4030_madc_bat);
-	power_supply_register(&pdev->dev, &twl4030_madc_bat->psy);
+	ret = power_supply_register(&pdev->dev, &twl4030_madc_bat->psy);
+	if (ret < 0)
+		kfree(twl4030_madc_bat);
 
-	return 0;
+	return ret;
 }
 
 static int twl4030_madc_battery_remove(struct platform_device *pdev)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 054/177] power_supply: lp8788-charger: Fix leaked power supply on probe fail
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (49 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 053/177] power_supply: twl4030_madc: Check return value of power_supply_register Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 055/177] power_supply: ipaq_micro_battery: Fix leaking workqueue Greg Kroah-Hartman
                   ` (124 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Krzysztof Kozlowski, Sebastian Reichel

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Krzysztof Kozlowski <k.kozlowski@samsung.com>

commit a7117f81e8391e035c49b3440792f7e6cea28173 upstream.

Driver forgot to unregister charger power supply if registering of
battery supply failed in probe(). In such case the memory associated
with power supply leaked.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: 98a276649358 ("power_supply: Add new lp8788 charger driver")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/power/lp8788-charger.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/power/lp8788-charger.c
+++ b/drivers/power/lp8788-charger.c
@@ -417,8 +417,10 @@ static int lp8788_psy_register(struct pl
 	pchg->battery.num_properties = ARRAY_SIZE(lp8788_battery_prop);
 	pchg->battery.get_property = lp8788_battery_get_property;
 
-	if (power_supply_register(&pdev->dev, &pchg->battery))
+	if (power_supply_register(&pdev->dev, &pchg->battery)) {
+		power_supply_unregister(&pchg->charger);
 		return -EPERM;
+	}
 
 	return 0;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 055/177] power_supply: ipaq_micro_battery: Fix leaking workqueue
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (50 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 054/177] power_supply: lp8788-charger: Fix leaked power supply on probe fail Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 056/177] power_supply: ipaq_micro_battery: Check return values in probe Greg Kroah-Hartman
                   ` (123 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Krzysztof Kozlowski, Sebastian Reichel

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Krzysztof Kozlowski <k.kozlowski@samsung.com>

commit f852ec461e24504690445e7d281cbe806df5ccef upstream.

Driver allocates singlethread workqueue in probe but it is not destroyed
during removal.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: 00a588f9d27f ("power: add driver for battery reading on iPaq h3xxx")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/power/ipaq_micro_battery.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/power/ipaq_micro_battery.c
+++ b/drivers/power/ipaq_micro_battery.c
@@ -251,6 +251,7 @@ static int micro_batt_remove(struct plat
 	power_supply_unregister(&micro_ac_power);
 	power_supply_unregister(&micro_batt_power);
 	cancel_delayed_work_sync(&mb->update);
+	destroy_workqueue(mb->wq);
 
 	return 0;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 056/177] power_supply: ipaq_micro_battery: Check return values in probe
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (51 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 055/177] power_supply: ipaq_micro_battery: Fix leaking workqueue Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 057/177] NFS: fix BUG() crash in notify_change() with patch to chown_common() Greg Kroah-Hartman
                   ` (122 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Krzysztof Kozlowski, Sebastian Reichel

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Krzysztof Kozlowski <k.kozlowski@samsung.com>

commit a2c1d531854c4319610f1d83351213b47a633969 upstream.

The return values of create_singlethread_workqueue() and
power_supply_register() calls were not checked and even on error probe()
function returned 0.

1. If allocation of workqueue failed (returning NULL) then further
   accesses could lead to NULL pointer dereference. The
   queue_delayed_work() expects workqueue to be non-NULL.

2. If registration of power supply failed then during unbind the driver
   tried to unregister power supply which was not actually registered.
   This could lead to memory corruption because
   power_supply_unregister() unconditionally cleans up given power
   supply.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: 00a588f9d27f ("power: add driver for battery reading on iPaq h3xxx")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/power/ipaq_micro_battery.c |   21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

--- a/drivers/power/ipaq_micro_battery.c
+++ b/drivers/power/ipaq_micro_battery.c
@@ -226,6 +226,7 @@ static struct power_supply micro_ac_powe
 static int micro_batt_probe(struct platform_device *pdev)
 {
 	struct micro_battery *mb;
+	int ret;
 
 	mb = devm_kzalloc(&pdev->dev, sizeof(*mb), GFP_KERNEL);
 	if (!mb)
@@ -233,14 +234,30 @@ static int micro_batt_probe(struct platf
 
 	mb->micro = dev_get_drvdata(pdev->dev.parent);
 	mb->wq = create_singlethread_workqueue("ipaq-battery-wq");
+	if (!mb->wq)
+		return -ENOMEM;
+
 	INIT_DELAYED_WORK(&mb->update, micro_battery_work);
 	platform_set_drvdata(pdev, mb);
 	queue_delayed_work(mb->wq, &mb->update, 1);
-	power_supply_register(&pdev->dev, &micro_batt_power);
-	power_supply_register(&pdev->dev, &micro_ac_power);
+
+	ret = power_supply_register(&pdev->dev, &micro_batt_power);
+	if (ret < 0)
+		goto batt_err;
+
+	ret = power_supply_register(&pdev->dev, &micro_ac_power);
+	if (ret < 0)
+		goto ac_err;
 
 	dev_info(&pdev->dev, "iPAQ micro battery driver\n");
 	return 0;
+
+ac_err:
+	power_supply_unregister(&micro_ac_power);
+batt_err:
+	cancel_delayed_work_sync(&mb->update);
+	destroy_workqueue(mb->wq);
+	return ret;
 }
 
 static int micro_batt_remove(struct platform_device *pdev)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 057/177] NFS: fix BUG() crash in notify_change() with patch to chown_common()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (52 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 056/177] power_supply: ipaq_micro_battery: Check return values in probe Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 058/177] ARM: fix broken hibernation Greg Kroah-Hartman
                   ` (121 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eric Meddaugh, Andrew Elble, Al Viro

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Andrew Elble <aweits@rit.edu>

commit c1b8940b42bb6487b10f2267a96b486276ce9ff7 upstream.

We have observed a BUG() crash in fs/attr.c:notify_change(). The crash
occurs during an rsync into a filesystem that is exported via NFS.

1.) fs/attr.c:notify_change() modifies the caller's version of attr.
2.) 6de0ec00ba8d ("VFS: make notify_change pass ATTR_KILL_S*ID to
    setattr operations") introduced a BUG() restriction such that "no
    function will ever call notify_change() with both ATTR_MODE and
    ATTR_KILL_S*ID set". Under some circumstances though, it will have
    assisted in setting the caller's version of attr to this very
    combination.
3.) 27ac0ffeac80 ("locks: break delegations on any attribute
    modification") introduced code to handle breaking
    delegations. This can result in notify_change() being re-called. attr
    _must_ be explicitly reset to avoid triggering the BUG() established
    in #2.
4.) The path that that triggers this is via fs/open.c:chmod_common().
    The combination of attr flags set here and in the first call to
    notify_change() along with a later failed break_deleg_wait()
    results in notify_change() being called again via retry_deleg
    without resetting attr.

Solution is to move retry_deleg in chmod_common() a bit further up to
ensure attr is completely reset.

There are other places where this seemingly could occur, such as
fs/utimes.c:utimes_common(), but the attr flags are not initially
set in such a way to trigger this.

Fixes: 27ac0ffeac80 ("locks: break delegations on any attribute modification")
Reported-by: Eric Meddaugh <etmsys@rit.edu>
Tested-by: Eric Meddaugh <etmsys@rit.edu>
Signed-off-by: Andrew Elble <aweits@rit.edu>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/open.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/fs/open.c
+++ b/fs/open.c
@@ -570,6 +570,7 @@ static int chown_common(struct path *pat
 	uid = make_kuid(current_user_ns(), user);
 	gid = make_kgid(current_user_ns(), group);
 
+retry_deleg:
 	newattrs.ia_valid =  ATTR_CTIME;
 	if (user != (uid_t) -1) {
 		if (!uid_valid(uid))
@@ -586,7 +587,6 @@ static int chown_common(struct path *pat
 	if (!S_ISDIR(inode->i_mode))
 		newattrs.ia_valid |=
 			ATTR_KILL_SUID | ATTR_KILL_SGID | ATTR_KILL_PRIV;
-retry_deleg:
 	mutex_lock(&inode->i_mutex);
 	error = security_path_chown(path, uid, gid);
 	if (!error)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 058/177] ARM: fix broken hibernation
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (53 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 057/177] NFS: fix BUG() crash in notify_change() with patch to chown_common() Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 059/177] ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE Greg Kroah-Hartman
                   ` (120 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Sean Cross, Russell King

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Russell King <rmk+kernel@arm.linux.org.uk>

commit 767bf7e7a1e82a81c59778348d156993d0a6175d upstream.

Normally, when a CPU wants to clear a cache line to zero in the external
L2 cache, it would generate bus cycles to write each word as it would do
with any other data access.

However, a Cortex A9 connected to a L2C-310 has a specific feature where
the CPU can detect this operation, and signal that it wants to zero an
entire cache line.  This feature, known as Full Line of Zeros (FLZ),
involves a non-standard AXI signalling mechanism which only the L2C-310
can properly interpret.

There are separate enable bits in both the L2C-310 and the Cortex A9 -
the L2C-310 needs to be enabled and have the FLZ enable bit set in the
auxiliary control register before the Cortex A9 has this feature
enabled.

Unfortunately, the suspend code was not respecting this - it's not
obvious from the code:

swsusp_arch_suspend()
 cpu_suspend() /* saves the Cortex A9 auxiliary control register */
  arch_save_image()
  soft_restart() /* turns off FLZ in Cortex A9, and disables L2C */
   cpu_resume() /* restores the Cortex A9 registers, inc auxcr */

At this point, we end up with the L2C disabled, but the Cortex A9 with
FLZ enabled - which means any memset() or zeroing of a full cache line
will fail to take effect.

A similar issue exists in the resume path, but it's slightly more
complex:

swsusp_arch_suspend()
 cpu_suspend() /* saves the Cortex A9 auxiliary control register */
  arch_save_image() /* image with A9 auxcr saved */
...
swsusp_arch_resume()
 call_with_stack()
  arch_restore_image() /* restores image with A9 auxcr saved above */
  soft_restart() /* turns off FLZ in Cortex A9, and disables L2C */
   cpu_resume() /* restores the Cortex A9 registers, inc auxcr */

Again, here we end up with the L2C disabled, but Cortex A9 FLZ enabled.

There's no need to turn off the L2C in either of these two paths; there
are benefits from not doing so - for example, the page copies will be
faster with the L2C enabled.

Hence, fix this by providing a variant of soft_restart() which can be
used without turning the L2 cache controller off, and use it in both
of these paths to keep the L2C enabled across the respective resume
transitions.

Fixes: 8ef418c7178f ("ARM: l2c: trial at enabling some Cortex-A9 optimisations")
Reported-by: Sean Cross <xobs@kosagi.com>
Tested-by: Sean Cross <xobs@kosagi.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/kernel/hibernate.c |    5 +++--
 arch/arm/kernel/process.c   |   10 ++++++++--
 arch/arm/kernel/reboot.h    |    6 ++++++
 3 files changed, 17 insertions(+), 4 deletions(-)

--- a/arch/arm/kernel/hibernate.c
+++ b/arch/arm/kernel/hibernate.c
@@ -22,6 +22,7 @@
 #include <asm/suspend.h>
 #include <asm/memory.h>
 #include <asm/sections.h>
+#include "reboot.h"
 
 int pfn_is_nosave(unsigned long pfn)
 {
@@ -61,7 +62,7 @@ static int notrace arch_save_image(unsig
 
 	ret = swsusp_save();
 	if (ret == 0)
-		soft_restart(virt_to_phys(cpu_resume));
+		_soft_restart(virt_to_phys(cpu_resume), false);
 	return ret;
 }
 
@@ -86,7 +87,7 @@ static void notrace arch_restore_image(v
 	for (pbe = restore_pblist; pbe; pbe = pbe->next)
 		copy_page(pbe->orig_address, pbe->address);
 
-	soft_restart(virt_to_phys(cpu_resume));
+	_soft_restart(virt_to_phys(cpu_resume), false);
 }
 
 static u64 resume_stack[PAGE_SIZE/2/sizeof(u64)] __nosavedata;
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -41,6 +41,7 @@
 #include <asm/system_misc.h>
 #include <asm/mach/time.h>
 #include <asm/tls.h>
+#include "reboot.h"
 
 #ifdef CONFIG_CC_STACKPROTECTOR
 #include <linux/stackprotector.h>
@@ -95,7 +96,7 @@ static void __soft_restart(void *addr)
 	BUG();
 }
 
-void soft_restart(unsigned long addr)
+void _soft_restart(unsigned long addr, bool disable_l2)
 {
 	u64 *stack = soft_restart_stack + ARRAY_SIZE(soft_restart_stack);
 
@@ -104,7 +105,7 @@ void soft_restart(unsigned long addr)
 	local_fiq_disable();
 
 	/* Disable the L2 if we're the last man standing. */
-	if (num_online_cpus() == 1)
+	if (disable_l2)
 		outer_disable();
 
 	/* Change to the new stack and continue with the reset. */
@@ -114,6 +115,11 @@ void soft_restart(unsigned long addr)
 	BUG();
 }
 
+void soft_restart(unsigned long addr)
+{
+	_soft_restart(addr, num_online_cpus() == 1);
+}
+
 /*
  * Function pointers to optional machine specific functions
  */
--- /dev/null
+++ b/arch/arm/kernel/reboot.h
@@ -0,0 +1,6 @@
+#ifndef REBOOT_H
+#define REBOOT_H
+
+extern void _soft_restart(unsigned long addr, bool disable_l2);
+
+#endif



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 059/177] ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (54 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 058/177] ARM: fix broken hibernation Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 060/177] ARM: mvebu: Disable CPU Idle on Armada 38x Greg Kroah-Hartman
                   ` (119 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andrey Ryabinin, Maria Guseva, Russell King

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Andrey Ryabinin <a.ryabinin@samsung.com>

commit 8defb3367fcd19d1af64c07792aade0747b54e0f upstream.

Usually ELF_ET_DYN_BASE is 2/3 of TASK_SIZE. With 3G/1G user/kernel
split this is not so, because 2*TASK_SIZE overflows 32 bits,
so the actual value of ELF_ET_DYN_BASE is:
	(2 * TASK_SIZE / 3) = 0x2a000000

When ASLR is disabled PIE binaries will load at ELF_ET_DYN_BASE address.
On 32bit platforms AddressSanitzer uses addresses [0x20000000 - 0x40000000]
for shadow memory [1]. So ASan doesn't work for PIE binaries when ASLR disabled
as it fails to map shadow memory.
Also after Kees's 'split ET_DYN ASLR from mmap ASLR' patchset PIE binaries
has a high chance of loading somewhere in between [0x2a000000 - 0x40000000]
even if ASLR enabled. This makes ASan with PIE absolutely incompatible.

Fix overflow by dividing TASK_SIZE prior to multiplying.
After this patch ELF_ET_DYN_BASE equals to (for CONFIG_VMSPLIT_3G=y):
	(TASK_SIZE / 3 * 2) = 0x7f555554

[1] https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerAlgorithm#Mapping

Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
Reported-by: Maria Guseva <m.guseva@samsung.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/include/asm/elf.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@ -115,7 +115,7 @@ int dump_task_regs(struct task_struct *t
    the loader.  We need to make sure that it is out of the way of the program
    that it will "exec", and that there is sufficient room for the brk.  */
 
-#define ELF_ET_DYN_BASE	(2 * TASK_SIZE / 3)
+#define ELF_ET_DYN_BASE	(TASK_SIZE / 3 * 2)
 
 /* When the program starts, a1 contains a pointer to a function to be 
    registered with atexit, as per the SVR4 ABI.  A value of 0 means we 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 060/177] ARM: mvebu: Disable CPU Idle on Armada 38x
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (55 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 059/177] ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 061/177] ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore Greg Kroah-Hartman
                   ` (118 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Gregory CLEMENT, Thomas Petazzoni

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Gregory CLEMENT <gregory.clement@free-electrons.com>

commit 548ae94c1cc7fc120848757249b9a542b1080ffb upstream.

On Armada 38x SoCs, under heavy I/O load, the system hangs when CPU
Idle is enabled. Waiting for a solution to this issue, this patch
disables the CPU Idle support for this SoC.

As CPU Hot plug support also uses some of the CPU Idle functions it is
also affected by the same issue. This patch disables it also for the
Armada 38x SoCs.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/mach-mvebu/pmsu.c |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

--- a/arch/arm/mach-mvebu/pmsu.c
+++ b/arch/arm/mach-mvebu/pmsu.c
@@ -415,6 +415,9 @@ static __init int armada_38x_cpuidle_ini
 	void __iomem *mpsoc_base;
 	u32 reg;
 
+	pr_warn("CPU idle is currently broken on Armada 38x: disabling");
+	return 0;
+
 	np = of_find_compatible_node(NULL, NULL,
 				     "marvell,armada-380-coherency-fabric");
 	if (!np)
@@ -476,6 +479,16 @@ static int __init mvebu_v7_cpu_pm_init(v
 		return 0;
 	of_node_put(np);
 
+	/*
+	 * Currently the CPU idle support for Armada 38x is broken, as
+	 * the CPU hotplug uses some of the CPU idle functions it is
+	 * broken too, so let's disable it
+	 */
+	if (of_machine_is_compatible("marvell,armada380")) {
+		cpu_hotplug_disable();
+		pr_warn("CPU hotplug support is currently broken on Armada 38x: disabling");
+	}
+
 	if (of_machine_is_compatible("marvell,armadaxp"))
 		ret = armada_xp_cpuidle_init();
 	else if (of_machine_is_compatible("marvell,armada370"))
@@ -489,7 +502,8 @@ static int __init mvebu_v7_cpu_pm_init(v
 		return ret;
 
 	mvebu_v7_pmsu_enable_l2_powerdown_onidle();
-	platform_device_register(&mvebu_v7_cpuidle_device);
+	if (mvebu_v7_cpuidle_device.name)
+		platform_device_register(&mvebu_v7_cpuidle_device);
 	cpu_pm_register_notifier(&mvebu_v7_cpu_pm_notifier);
 
 	return 0;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 061/177] ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (56 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 060/177] ARM: mvebu: Disable CPU Idle on Armada 38x Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 062/177] ARM: at91/dt: sama5d3 xplained: add phy address for macb1 Greg Kroah-Hartman
                   ` (117 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Charles Keepax, Kukjin Kim

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>

commit 4e330ae4ab2915444f1e6dca1358a910aa259362 upstream.

There are two PMICs on Cragganmore, currently one dynamically assign
its IRQ base and the other uses a fixed base. It is possible for the
statically assigned PMIC to fail if its IRQ is taken by the dynamically
assigned one. Fix this by statically assigning both the IRQ bases.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Kukjin Kim <kgene@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/mach-s3c64xx/crag6410.h      |    1 +
 arch/arm/mach-s3c64xx/mach-crag6410.c |    1 +
 2 files changed, 2 insertions(+)

--- a/arch/arm/mach-s3c64xx/crag6410.h
+++ b/arch/arm/mach-s3c64xx/crag6410.h
@@ -14,6 +14,7 @@
 #include <mach/gpio-samsung.h>
 
 #define GLENFARCLAS_PMIC_IRQ_BASE	IRQ_BOARD_START
+#define BANFF_PMIC_IRQ_BASE		(IRQ_BOARD_START + 64)
 
 #define PCA935X_GPIO_BASE		GPIO_BOARD_START
 #define CODEC_GPIO_BASE			(GPIO_BOARD_START + 8)
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -554,6 +554,7 @@ static struct wm831x_touch_pdata touch_p
 
 static struct wm831x_pdata crag_pmic_pdata = {
 	.wm831x_num = 1,
+	.irq_base = BANFF_PMIC_IRQ_BASE,
 	.gpio_base = BANFF_PMIC_GPIO_BASE,
 	.soft_shutdown = true,
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 062/177] ARM: at91/dt: sama5d3 xplained: add phy address for macb1
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (57 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 061/177] ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 063/177] ARM: dts: dove: Fix uart[23] reg property Greg Kroah-Hartman
                   ` (116 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nicolas Ferre, Johan Hovold, Olof Johansson

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicolas Ferre <nicolas.ferre@atmel.com>

commit 98b80987c940956da48f0c703f60340128bb8521 upstream.

After 57a38effa598 (net: phy: micrel: disable broadcast for KSZ8081/KSZ8091)
the macb1 interface refuses to work properly because it tries
to cling to address 0 which isn't able to communicate in broadcast with
the mac anymore. The micrel phy on the board is actually configured
to show up at address 1.
Adding the phy node and its real address fixes the issue.

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Johan Hovold <johan@kernel.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/boot/dts/at91-sama5d3_xplained.dts |    6 ++++++
 1 file changed, 6 insertions(+)

--- a/arch/arm/boot/dts/at91-sama5d3_xplained.dts
+++ b/arch/arm/boot/dts/at91-sama5d3_xplained.dts
@@ -167,7 +167,13 @@
 
 			macb1: ethernet@f802c000 {
 				phy-mode = "rmii";
+				#address-cells = <1>;
+				#size-cells = <0>;
 				status = "okay";
+
+				ethernet-phy@1 {
+					reg = <0x1>;
+				};
 			};
 
 			dbgu: serial@ffffee00 {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 063/177] ARM: dts: dove: Fix uart[23] reg property
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (58 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 062/177] ARM: at91/dt: sama5d3 xplained: add phy address for macb1 Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 064/177] ARM: dts: fix mmc node updates for exynos5250-spring Greg Kroah-Hartman
                   ` (115 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sebastian Hesselbarth, Gregory CLEMENT

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>

commit a74cd13b807029397f7232449df929bac11fb228 upstream.

Fix Dove's register addresses of uart2 and uart3 nodes that seem to
be broken since ages due to a copy-and-paste error.

Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/boot/dts/dove.dtsi |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/arm/boot/dts/dove.dtsi
+++ b/arch/arm/boot/dts/dove.dtsi
@@ -154,7 +154,7 @@
 
 			uart2: serial@12200 {
 				compatible = "ns16550a";
-				reg = <0x12000 0x100>;
+				reg = <0x12200 0x100>;
 				reg-shift = <2>;
 				interrupts = <9>;
 				clocks = <&core_clk 0>;
@@ -163,7 +163,7 @@
 
 			uart3: serial@12300 {
 				compatible = "ns16550a";
-				reg = <0x12100 0x100>;
+				reg = <0x12300 0x100>;
 				reg-shift = <2>;
 				interrupts = <10>;
 				clocks = <&core_clk 0>;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 064/177] ARM: dts: fix mmc node updates for exynos5250-spring
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (59 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 063/177] ARM: dts: dove: Fix uart[23] reg property Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 065/177] usb: musb: core: fix TX/RX endpoint order Greg Kroah-Hartman
                   ` (114 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jaehoon Chung, Andreas Faerber,
	Javier Martinez Canillas, Kukjin Kim

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Andreas Faerber <afaerber@suse.de>

commit 7e9e20b1faab02357501553d7f4e3efec1b4cfd3 upstream.

Resolve a merge conflict with mmc refactoring aaa25a5a33cb ("ARM: dts:
unuse the slot-node and deprecate the supports-highspeed for dw-mmc in
exynos") by dropping the slot@0 nodes, moving its bus-width property to
the mmc node and replacing supports-highspeed with cap-{mmc,sd}-highspeed,
matching exynos5250-snow.

Cc: Jaehoon Chung <jh80.chung@samsung.com>
Fixes: 53dd4138bb0a ("ARM: dts: Add exynos5250-spring device tree")
Signed-off-by: Andreas Faerber <afaerber@suse.de>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Kukjin Kim <kgene@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/boot/dts/exynos5250-spring.dts |   16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

--- a/arch/arm/boot/dts/exynos5250-spring.dts
+++ b/arch/arm/boot/dts/exynos5250-spring.dts
@@ -429,7 +429,6 @@
 &mmc_0 {
 	status = "okay";
 	num-slots = <1>;
-	supports-highspeed;
 	broken-cd;
 	card-detect-delay = <200>;
 	samsung,dw-mshc-ciu-div = <3>;
@@ -437,11 +436,8 @@
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>;
-
-	slot@0 {
-		reg = <0>;
-		bus-width = <8>;
-	};
+	bus-width = <8>;
+	cap-mmc-highspeed;
 };
 
 /*
@@ -451,7 +447,6 @@
 &mmc_1 {
 	status = "okay";
 	num-slots = <1>;
-	supports-highspeed;
 	broken-cd;
 	card-detect-delay = <200>;
 	samsung,dw-mshc-ciu-div = <3>;
@@ -459,11 +454,8 @@
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus4>;
-
-	slot@0 {
-		reg = <0>;
-		bus-width = <4>;
-	};
+	bus-width = <4>;
+	cap-sd-highspeed;
 };
 
 &pinctrl_0 {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 065/177] usb: musb: core: fix TX/RX endpoint order
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (60 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 064/177] ARM: dts: fix mmc node updates for exynos5250-spring Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 066/177] usb: phy: Find the right match in devm_usb_phy_match Greg Kroah-Hartman
                   ` (113 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit e3c93e1a3f35be4cf1493d3ccfb0c6d9209e4922 upstream.

As per Mentor Graphics' documentation, we should
always handle TX endpoints before RX endpoints.

This patch fixes that error while also updating
some hard-to-read comments which were scattered
around musb_interrupt().

This patch should be backported as far back as
possible since this error has been in the driver
since it's conception.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/musb/musb_core.c |   44 +++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -1596,16 +1596,30 @@ irqreturn_t musb_interrupt(struct musb *
 		is_host_active(musb) ? "host" : "peripheral",
 		musb->int_usb, musb->int_tx, musb->int_rx);
 
-	/* the core can interrupt us for multiple reasons; docs have
-	 * a generic interrupt flowchart to follow
+	/**
+	 * According to Mentor Graphics' documentation, flowchart on page 98,
+	 * IRQ should be handled as follows:
+	 *
+	 * . Resume IRQ
+	 * . Session Request IRQ
+	 * . VBUS Error IRQ
+	 * . Suspend IRQ
+	 * . Connect IRQ
+	 * . Disconnect IRQ
+	 * . Reset/Babble IRQ
+	 * . SOF IRQ (we're not using this one)
+	 * . Endpoint 0 IRQ
+	 * . TX Endpoints
+	 * . RX Endpoints
+	 *
+	 * We will be following that flowchart in order to avoid any problems
+	 * that might arise with internal Finite State Machine.
 	 */
+
 	if (musb->int_usb)
 		retval |= musb_stage0_irq(musb, musb->int_usb,
 				devctl);
 
-	/* "stage 1" is handling endpoint irqs */
-
-	/* handle endpoint 0 first */
 	if (musb->int_tx & 1) {
 		if (is_host_active(musb))
 			retval |= musb_h_ep0_irq(musb);
@@ -1613,37 +1627,31 @@ irqreturn_t musb_interrupt(struct musb *
 			retval |= musb_g_ep0_irq(musb);
 	}
 
-	/* RX on endpoints 1-15 */
-	reg = musb->int_rx >> 1;
+	reg = musb->int_tx >> 1;
 	ep_num = 1;
 	while (reg) {
 		if (reg & 1) {
-			/* musb_ep_select(musb->mregs, ep_num); */
-			/* REVISIT just retval = ep->rx_irq(...) */
 			retval = IRQ_HANDLED;
 			if (is_host_active(musb))
-				musb_host_rx(musb, ep_num);
+				musb_host_tx(musb, ep_num);
 			else
-				musb_g_rx(musb, ep_num);
+				musb_g_tx(musb, ep_num);
 		}
-
 		reg >>= 1;
 		ep_num++;
 	}
 
-	/* TX on endpoints 1-15 */
-	reg = musb->int_tx >> 1;
+	reg = musb->int_rx >> 1;
 	ep_num = 1;
 	while (reg) {
 		if (reg & 1) {
-			/* musb_ep_select(musb->mregs, ep_num); */
-			/* REVISIT just retval |= ep->tx_irq(...) */
 			retval = IRQ_HANDLED;
 			if (is_host_active(musb))
-				musb_host_tx(musb, ep_num);
+				musb_host_rx(musb, ep_num);
 			else
-				musb_g_tx(musb, ep_num);
+				musb_g_rx(musb, ep_num);
 		}
+
 		reg >>= 1;
 		ep_num++;
 	}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 066/177] usb: phy: Find the right match in devm_usb_phy_match
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (61 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 065/177] usb: musb: core: fix TX/RX endpoint order Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 067/177] usb: define a generic USB_RESUME_TIMEOUT macro Greg Kroah-Hartman
                   ` (112 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Axel Lin, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Axel Lin <axel.lin@ingics.com>

commit 869aee0f31429fa9d94d5aef539602b73ae0cf4b upstream.

The res parameter passed to devm_usb_phy_match() is the location where the
pointer to the usb_phy is stored, hence it needs to be dereferenced before
comparing to the match data in order to find the correct match.

Fixes: 410219dcd2ba ("usb: otg: utils: devres: Add API's to associate a device with the phy")
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/phy/phy.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/usb/phy/phy.c
+++ b/drivers/usb/phy/phy.c
@@ -81,7 +81,9 @@ static void devm_usb_phy_release(struct
 
 static int devm_usb_phy_match(struct device *dev, void *res, void *match_data)
 {
-	return res == match_data;
+	struct usb_phy **phy = res;
+
+	return *phy == match_data;
 }
 
 /**



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 067/177] usb: define a generic USB_RESUME_TIMEOUT macro
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (62 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 066/177] usb: phy: Find the right match in devm_usb_phy_match Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 068/177] usb: musb: use new USB_RESUME_TIMEOUT Greg Kroah-Hartman
                   ` (111 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Peter Chen, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 62f0342de1f012f3e90607d39e20fce811391169 upstream.

Every USB Host controller should use this new
macro to define for how long resume signalling
should be driven on the bus.

Currently, almost every single USB controller
is using a 20ms timeout for resume signalling.

That's problematic for two reasons:

a) sometimes that 20ms timer expires a little
before 20ms, which makes us fail certification

b) some (many) devices actually need more than
20ms resume signalling.

Sure, in case of (b) we can state that the device
is against the USB spec, but the fact is that
we have no control over which device the certification
lab will use. We also have no control over which host
they will use. Most likely they'll be using a Windows
PC which, again, we have no control over how that
USB stack is written and how long resume signalling
they are using.

At the end of the day, we must make sure Linux passes
electrical compliance when working as Host or as Device
and currently we don't pass compliance as host because
we're driving resume signallig for exactly 20ms and
that confuses certification test setup resulting in
Certification failure.

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/usb.h |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -205,6 +205,32 @@ void usb_put_intf(struct usb_interface *
 #define USB_MAXINTERFACES	32
 #define USB_MAXIADS		(USB_MAXINTERFACES/2)
 
+/*
+ * USB Resume Timer: Every Host controller driver should drive the resume
+ * signalling on the bus for the amount of time defined by this macro.
+ *
+ * That way we will have a 'stable' behavior among all HCDs supported by Linux.
+ *
+ * Note that the USB Specification states we should drive resume for *at least*
+ * 20 ms, but it doesn't give an upper bound. This creates two possible
+ * situations which we want to avoid:
+ *
+ * (a) sometimes an msleep(20) might expire slightly before 20 ms, which causes
+ * us to fail USB Electrical Tests, thus failing Certification
+ *
+ * (b) Some (many) devices actually need more than 20 ms of resume signalling,
+ * and while we can argue that's against the USB Specification, we don't have
+ * control over which devices a certification laboratory will be using for
+ * certification. If CertLab uses a device which was tested against Windows and
+ * that happens to have relaxed resume signalling rules, we might fall into
+ * situations where we fail interoperability and electrical tests.
+ *
+ * In order to avoid both conditions, we're using a 40 ms resume timeout, which
+ * should cope with both LPJ calibration errors and devices not following every
+ * detail of the USB Specification.
+ */
+#define USB_RESUME_TIMEOUT	40 /* ms */
+
 /**
  * struct usb_interface_cache - long-term representation of a device interface
  * @num_altsetting: number of altsettings defined.



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 068/177] usb: musb: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (63 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 067/177] usb: define a generic USB_RESUME_TIMEOUT macro Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 069/177] usb: host: oxu210hp: " Greg Kroah-Hartman
                   ` (110 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Bin Liu, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 309be239369609929d5d3833ee043f7c5afc95d1 upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Based on original work by Bin Liu <Bin Liu <b-liu@ti.com>>

Cc: Bin Liu <b-liu@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/musb/musb_core.c    |    5 +++--
 drivers/usb/musb/musb_virthub.c |    2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -99,6 +99,7 @@
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/dma-mapping.h>
+#include <linux/usb.h>
 
 #include "musb_core.h"
 
@@ -562,7 +563,7 @@ static irqreturn_t musb_stage0_irq(struc
 						(USB_PORT_STAT_C_SUSPEND << 16)
 						| MUSB_PORT_STAT_RESUME;
 				musb->rh_timer = jiffies
-						 + msecs_to_jiffies(20);
+					+ msecs_to_jiffies(USB_RESUME_TIMEOUT);
 				musb->need_finish_resume = 1;
 
 				musb->xceiv->otg->state = OTG_STATE_A_HOST;
@@ -2468,7 +2469,7 @@ static int musb_resume(struct device *de
 	if (musb->need_finish_resume) {
 		musb->need_finish_resume = 0;
 		schedule_delayed_work(&musb->finish_resume_work,
-				      msecs_to_jiffies(20));
+				      msecs_to_jiffies(USB_RESUME_TIMEOUT));
 	}
 
 	/*
--- a/drivers/usb/musb/musb_virthub.c
+++ b/drivers/usb/musb/musb_virthub.c
@@ -137,7 +137,7 @@ void musb_port_suspend(struct musb *musb
 		/* later, GetPortStatus will stop RESUME signaling */
 		musb->port1_status |= MUSB_PORT_STAT_RESUME;
 		schedule_delayed_work(&musb->finish_resume_work,
-				      msecs_to_jiffies(20));
+				      msecs_to_jiffies(USB_RESUME_TIMEOUT));
 	}
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 069/177] usb: host: oxu210hp: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (64 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 068/177] usb: musb: use new USB_RESUME_TIMEOUT Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 070/177] usb: host: fusbh200: " Greg Kroah-Hartman
                   ` (109 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 84c0d178eb9f3a3ae4d63dc97a440266cf17f7f5 upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/oxu210hp-hcd.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- a/drivers/usb/host/oxu210hp-hcd.c
+++ b/drivers/usb/host/oxu210hp-hcd.c
@@ -2500,11 +2500,12 @@ static irqreturn_t oxu210_hcd_irq(struct
 					|| oxu->reset_done[i] != 0)
 				continue;
 
-			/* start 20 msec resume signaling from this port,
-			 * and make hub_wq collect PORT_STAT_C_SUSPEND to
+			/* start USB_RESUME_TIMEOUT resume signaling from this
+			 * port, and make hub_wq collect PORT_STAT_C_SUSPEND to
 			 * stop that signaling.
 			 */
-			oxu->reset_done[i] = jiffies + msecs_to_jiffies(20);
+			oxu->reset_done[i] = jiffies +
+				msecs_to_jiffies(USB_RESUME_TIMEOUT);
 			oxu_dbg(oxu, "port %d remote wakeup\n", i + 1);
 			mod_timer(&hcd->rh_timer, oxu->reset_done[i]);
 		}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 070/177] usb: host: fusbh200: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (65 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 069/177] usb: host: oxu210hp: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 071/177] usb: host: uhci: " Greg Kroah-Hartman
                   ` (108 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 595227db1f2d98bfc33f02a55842f268e12b247d upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/fusbh200-hcd.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- a/drivers/usb/host/fusbh200-hcd.c
+++ b/drivers/usb/host/fusbh200-hcd.c
@@ -1550,10 +1550,9 @@ static int fusbh200_hub_control (
 			if ((temp & PORT_PE) == 0)
 				goto error;
 
-			/* resume signaling for 20 msec */
 			fusbh200_writel(fusbh200, temp | PORT_RESUME, status_reg);
 			fusbh200->reset_done[wIndex] = jiffies
-					+ msecs_to_jiffies(20);
+					+ msecs_to_jiffies(USB_RESUME_TIMEOUT);
 			break;
 		case USB_PORT_FEAT_C_SUSPEND:
 			clear_bit(wIndex, &fusbh200->port_c_suspend);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 071/177] usb: host: uhci: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (66 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 070/177] usb: host: fusbh200: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 072/177] usb: host: fotg210: " Greg Kroah-Hartman
                   ` (107 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit b8fb6f79f76f478acbbffccc966daa878f172a0a upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/uhci-hub.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/drivers/usb/host/uhci-hub.c
+++ b/drivers/usb/host/uhci-hub.c
@@ -165,7 +165,7 @@ static void uhci_check_ports(struct uhci
 				/* Port received a wakeup request */
 				set_bit(port, &uhci->resuming_ports);
 				uhci->ports_timeout = jiffies +
-						msecs_to_jiffies(25);
+					msecs_to_jiffies(USB_RESUME_TIMEOUT);
 				usb_hcd_start_port_resume(
 						&uhci_to_hcd(uhci)->self, port);
 
@@ -337,7 +337,8 @@ static int uhci_hub_control(struct usb_h
 			uhci_finish_suspend(uhci, port, port_addr);
 
 			/* USB v2.0 7.1.7.5 */
-			uhci->ports_timeout = jiffies + msecs_to_jiffies(50);
+			uhci->ports_timeout = jiffies +
+				msecs_to_jiffies(USB_RESUME_TIMEOUT);
 			break;
 		case USB_PORT_FEAT_POWER:
 			/* UHCI has no power switching */



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 072/177] usb: host: fotg210: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (67 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 071/177] usb: host: uhci: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 073/177] usb: host: r8a66597: " Greg Kroah-Hartman
                   ` (106 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 7e136bb71a08e8b8be3bc492f041d9b0bea3856d upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/fotg210-hcd.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/usb/host/fotg210-hcd.c
+++ b/drivers/usb/host/fotg210-hcd.c
@@ -1595,7 +1595,7 @@ static int fotg210_hub_control(
 			/* resume signaling for 20 msec */
 			fotg210_writel(fotg210, temp | PORT_RESUME, status_reg);
 			fotg210->reset_done[wIndex] = jiffies
-					+ msecs_to_jiffies(20);
+					+ msecs_to_jiffies(USB_RESUME_TIMEOUT);
 			break;
 		case USB_PORT_FEAT_C_SUSPEND:
 			clear_bit(wIndex, &fotg210->port_c_suspend);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 073/177] usb: host: r8a66597: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (68 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 072/177] usb: host: fotg210: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 074/177] usb: host: isp116x: " Greg Kroah-Hartman
                   ` (105 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 7a606ac29752a3e571b83f9b3fceb1eaa1d37781 upstream.

While this driver was already using a 50ms resume
timeout, let's make sure everybody uses the same
macro so it's easy to fix later should anything
go wrong.

It also gives a more "stable" expectation to Linux
users.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/r8a66597-hcd.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/usb/host/r8a66597-hcd.c
+++ b/drivers/usb/host/r8a66597-hcd.c
@@ -2300,7 +2300,7 @@ static int r8a66597_bus_resume(struct us
 		rh->port &= ~USB_PORT_STAT_SUSPEND;
 		rh->port |= USB_PORT_STAT_C_SUSPEND << 16;
 		r8a66597_mdfy(r8a66597, RESUME, RESUME | UACT, dvstctr_reg);
-		msleep(50);
+		msleep(USB_RESUME_TIMEOUT);
 		r8a66597_mdfy(r8a66597, UACT, RESUME | UACT, dvstctr_reg);
 	}
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 074/177] usb: host: isp116x: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (69 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 073/177] usb: host: r8a66597: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 075/177] usb: host: xhci: " Greg Kroah-Hartman
                   ` (104 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 8c0ae6574ccfd3d619876a65829aad74c9d22ba5 upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/isp116x-hcd.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/usb/host/isp116x-hcd.c
+++ b/drivers/usb/host/isp116x-hcd.c
@@ -1487,7 +1487,7 @@ static int isp116x_bus_resume(struct usb
 	spin_unlock_irq(&isp116x->lock);
 
 	hcd->state = HC_STATE_RESUMING;
-	msleep(20);
+	msleep(USB_RESUME_TIMEOUT);
 
 	/* Go operational */
 	spin_lock_irq(&isp116x->lock);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 075/177] usb: host: xhci: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (70 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 074/177] usb: host: isp116x: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 076/177] usb: host: ehci: " Greg Kroah-Hartman
                   ` (103 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Mathias Nyman, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit b9e451885deb6262dbaf5cd14aa77d192d9ac759 upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/xhci-ring.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1574,7 +1574,7 @@ static void handle_port_status(struct xh
 		} else {
 			xhci_dbg(xhci, "resume HS port %d\n", port_id);
 			bus_state->resume_done[faked_port_index] = jiffies +
-				msecs_to_jiffies(20);
+				msecs_to_jiffies(USB_RESUME_TIMEOUT);
 			set_bit(faked_port_index, &bus_state->resuming_ports);
 			mod_timer(&hcd->rh_timer,
 				  bus_state->resume_done[faked_port_index]);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 076/177] usb: host: ehci: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (71 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 075/177] usb: host: xhci: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 077/177] usb: host: sl811: " Greg Kroah-Hartman
                   ` (102 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit ea16328f80ca8d74434352157f37ef60e2f55ce2 upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/ehci-hcd.c |   10 +++++-----
 drivers/usb/host/ehci-hub.c |    9 ++++++---
 2 files changed, 11 insertions(+), 8 deletions(-)

--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -792,12 +792,12 @@ static irqreturn_t ehci_irq (struct usb_
 					ehci->reset_done[i] == 0))
 				continue;
 
-			/* start 20 msec resume signaling from this port,
-			 * and make hub_wq collect PORT_STAT_C_SUSPEND to
-			 * stop that signaling.  Use 5 ms extra for safety,
-			 * like usb_port_resume() does.
+			/* start USB_RESUME_TIMEOUT msec resume signaling from
+			 * this port, and make hub_wq collect
+			 * PORT_STAT_C_SUSPEND to stop that signaling.
 			 */
-			ehci->reset_done[i] = jiffies + msecs_to_jiffies(25);
+			ehci->reset_done[i] = jiffies +
+				msecs_to_jiffies(USB_RESUME_TIMEOUT);
 			set_bit(i, &ehci->resuming_ports);
 			ehci_dbg (ehci, "port %d remote wakeup\n", i + 1);
 			usb_hcd_start_port_resume(&hcd->self, i);
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -471,10 +471,13 @@ static int ehci_bus_resume (struct usb_h
 		ehci_writel(ehci, temp, &ehci->regs->port_status [i]);
 	}
 
-	/* msleep for 20ms only if code is trying to resume port */
+	/*
+	 * msleep for USB_RESUME_TIMEOUT ms only if code is trying to resume
+	 * port
+	 */
 	if (resume_needed) {
 		spin_unlock_irq(&ehci->lock);
-		msleep(20);
+		msleep(USB_RESUME_TIMEOUT);
 		spin_lock_irq(&ehci->lock);
 		if (ehci->shutdown)
 			goto shutdown;
@@ -942,7 +945,7 @@ int ehci_hub_control(
 			temp &= ~PORT_WAKE_BITS;
 			ehci_writel(ehci, temp | PORT_RESUME, status_reg);
 			ehci->reset_done[wIndex] = jiffies
-					+ msecs_to_jiffies(20);
+					+ msecs_to_jiffies(USB_RESUME_TIMEOUT);
 			set_bit(wIndex, &ehci->resuming_ports);
 			usb_hcd_start_port_resume(&hcd->self, wIndex);
 			break;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 077/177] usb: host: sl811: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (72 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 076/177] usb: host: ehci: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 078/177] usb: core: hub: " Greg Kroah-Hartman
                   ` (101 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit 08debfb13b199716da6153940c31968c556b195d upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/sl811-hcd.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/usb/host/sl811-hcd.c
+++ b/drivers/usb/host/sl811-hcd.c
@@ -1259,7 +1259,7 @@ sl811h_hub_control(
 			sl811_write(sl811, SL11H_CTLREG1, sl811->ctrl1);
 
 			mod_timer(&sl811->timer, jiffies
-					+ msecs_to_jiffies(20));
+					+ msecs_to_jiffies(USB_RESUME_TIMEOUT));
 			break;
 		case USB_PORT_FEAT_POWER:
 			port_power(sl811, 0);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 078/177] usb: core: hub: use new USB_RESUME_TIMEOUT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (73 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 077/177] usb: host: sl811: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 079/177] clk: at91: usb: propagate rate modification to the parent clk Greg Kroah-Hartman
                   ` (100 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Felipe Balbi

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <balbi@ti.com>

commit bbc78c07a51f6fd29c227b1220a9016e585358ba upstream.

Make sure we're using the new macro, so our
resume signaling will always pass certification.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/core/hub.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -3397,10 +3397,10 @@ int usb_port_resume(struct usb_device *u
 	if (status) {
 		dev_dbg(&port_dev->dev, "can't resume, status %d\n", status);
 	} else {
-		/* drive resume for at least 20 msec */
+		/* drive resume for USB_RESUME_TIMEOUT msec */
 		dev_dbg(&udev->dev, "usb %sresume\n",
 				(PMSG_IS_AUTO(msg) ? "auto-" : ""));
-		msleep(25);
+		msleep(USB_RESUME_TIMEOUT);
 
 		/* Virtual root hubs can trigger on GET_PORT_STATUS to
 		 * stop resume signaling.  Then finish the resume



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 079/177] clk: at91: usb: propagate rate modification to the parent clk
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (74 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 078/177] usb: core: hub: " Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 080/177] ALSA: hda - Add dock support for ThinkPad X250 (17aa:2226) Greg Kroah-Hartman
                   ` (99 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Boris Brezillon, Bo Shen, Michael Turquette

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Boris Brezillon <boris.brezillon@free-electrons.com>

commit 4591243102faa8de92da320edea47219901461e9 upstream.

The at91sam9n12 and at91sam9x5 usb clocks do not propagate rate
modification requests to their parents.
This causes a bug when the PLLB is left uninitialized by the bootloader
(PLL multiplier set to 0, or in other words, PLL rate = 0 Hz).

Implement the determinate_rate method and propagate the change rate
request to the parent clk.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reported-by: Bo Shen <voice.shen@atmel.com>
Tested-by: Bo Shen <voice.shen@atmel.com>
Signed-off-by: Michael Turquette <mturquette@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/clk/at91/clk-usb.c |   72 +++++++++++++++++++++++++++++++++------------
 1 file changed, 53 insertions(+), 19 deletions(-)

--- a/drivers/clk/at91/clk-usb.c
+++ b/drivers/clk/at91/clk-usb.c
@@ -56,22 +56,55 @@ static unsigned long at91sam9x5_clk_usb_
 	return DIV_ROUND_CLOSEST(parent_rate, (usbdiv + 1));
 }
 
-static long at91sam9x5_clk_usb_round_rate(struct clk_hw *hw, unsigned long rate,
-					  unsigned long *parent_rate)
-{
-	unsigned long div;
-
-	if (!rate)
-		return -EINVAL;
-
-	if (rate >= *parent_rate)
-		return *parent_rate;
-
-	div = DIV_ROUND_CLOSEST(*parent_rate, rate);
-	if (div > SAM9X5_USB_MAX_DIV + 1)
-		div = SAM9X5_USB_MAX_DIV + 1;
+static long at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
+					      unsigned long rate,
+					      unsigned long min_rate,
+					      unsigned long max_rate,
+					      unsigned long *best_parent_rate,
+					      struct clk_hw **best_parent_hw)
+{
+	struct clk *parent = NULL;
+	long best_rate = -EINVAL;
+	unsigned long tmp_rate;
+	int best_diff = -1;
+	int tmp_diff;
+	int i;
+
+	for (i = 0; i < __clk_get_num_parents(hw->clk); i++) {
+		int div;
+
+		parent = clk_get_parent_by_index(hw->clk, i);
+		if (!parent)
+			continue;
+
+		for (div = 1; div < SAM9X5_USB_MAX_DIV + 2; div++) {
+			unsigned long tmp_parent_rate;
+
+			tmp_parent_rate = rate * div;
+			tmp_parent_rate = __clk_round_rate(parent,
+							   tmp_parent_rate);
+			tmp_rate = DIV_ROUND_CLOSEST(tmp_parent_rate, div);
+			if (tmp_rate < rate)
+				tmp_diff = rate - tmp_rate;
+			else
+				tmp_diff = tmp_rate - rate;
+
+			if (best_diff < 0 || best_diff > tmp_diff) {
+				best_rate = tmp_rate;
+				best_diff = tmp_diff;
+				*best_parent_rate = tmp_parent_rate;
+				*best_parent_hw = __clk_get_hw(parent);
+			}
+
+			if (!best_diff || tmp_rate < rate)
+				break;
+		}
+
+		if (!best_diff)
+			break;
+	}
 
-	return DIV_ROUND_CLOSEST(*parent_rate, div);
+	return best_rate;
 }
 
 static int at91sam9x5_clk_usb_set_parent(struct clk_hw *hw, u8 index)
@@ -121,7 +154,7 @@ static int at91sam9x5_clk_usb_set_rate(s
 
 static const struct clk_ops at91sam9x5_usb_ops = {
 	.recalc_rate = at91sam9x5_clk_usb_recalc_rate,
-	.round_rate = at91sam9x5_clk_usb_round_rate,
+	.determine_rate = at91sam9x5_clk_usb_determine_rate,
 	.get_parent = at91sam9x5_clk_usb_get_parent,
 	.set_parent = at91sam9x5_clk_usb_set_parent,
 	.set_rate = at91sam9x5_clk_usb_set_rate,
@@ -159,7 +192,7 @@ static const struct clk_ops at91sam9n12_
 	.disable = at91sam9n12_clk_usb_disable,
 	.is_enabled = at91sam9n12_clk_usb_is_enabled,
 	.recalc_rate = at91sam9x5_clk_usb_recalc_rate,
-	.round_rate = at91sam9x5_clk_usb_round_rate,
+	.determine_rate = at91sam9x5_clk_usb_determine_rate,
 	.set_rate = at91sam9x5_clk_usb_set_rate,
 };
 
@@ -179,7 +212,8 @@ at91sam9x5_clk_register_usb(struct at91_
 	init.ops = &at91sam9x5_usb_ops;
 	init.parent_names = parent_names;
 	init.num_parents = num_parents;
-	init.flags = CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE;
+	init.flags = CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE |
+		     CLK_SET_RATE_PARENT;
 
 	usb->hw.init = &init;
 	usb->pmc = pmc;
@@ -207,7 +241,7 @@ at91sam9n12_clk_register_usb(struct at91
 	init.ops = &at91sam9n12_usb_ops;
 	init.parent_names = &parent_name;
 	init.num_parents = 1;
-	init.flags = CLK_SET_RATE_GATE;
+	init.flags = CLK_SET_RATE_GATE | CLK_SET_RATE_PARENT;
 
 	usb->hw.init = &init;
 	usb->pmc = pmc;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 080/177] ALSA: hda - Add dock support for ThinkPad X250 (17aa:2226)
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (75 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 079/177] clk: at91: usb: propagate rate modification to the parent clk Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 081/177] ALSA: emu10k1: dont deadlock in proc-functions Greg Kroah-Hartman
                   ` (98 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Yves-Alexis Perez, Takashi Iwai

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Yves-Alexis Perez <corsac@debian.org>

commit c0278669fb61596cc1a10ab8686d27c37269c37b upstream.

This model uses the same dock port as the previous generation.

Signed-off-by: Yves-Alexis Perez <corsac@debian.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/pci/hda/patch_realtek.c |    1 +
 1 file changed, 1 insertion(+)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4946,6 +4946,7 @@ static const struct snd_pci_quirk alc269
 	SND_PCI_QUIRK(0x17aa, 0x2212, "Thinkpad T440", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x2214, "Thinkpad X240", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x2215, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
+	SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
 	SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP),
 	SND_PCI_QUIRK(0x17aa, 0x5013, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 081/177] ALSA: emu10k1: dont deadlock in proc-functions
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (76 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 080/177] ALSA: hda - Add dock support for ThinkPad X250 (17aa:2226) Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 082/177] ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T450 Greg Kroah-Hartman
                   ` (97 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Michael Gernoth, Takashi Iwai

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Michael Gernoth <michael@gernoth.net>

commit 91bf0c2dcb935a87e5c0795f5047456b965fd143 upstream.

The functions snd_emu10k1_proc_spdif_read and snd_emu1010_fpga_read
acquire the emu_lock before accessing the FPGA. The function used
to access the FPGA (snd_emu1010_fpga_read) also tries to take
the emu_lock which causes a deadlock.
Remove the outer locking in the proc-functions (guarding only the
already safe fpga read) to prevent this deadlock.

[removed superfluous flags variables too -- tiwai]

Signed-off-by: Michael Gernoth <michael@gernoth.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/pci/emu10k1/emuproc.c |   12 ------------
 1 file changed, 12 deletions(-)

--- a/sound/pci/emu10k1/emuproc.c
+++ b/sound/pci/emu10k1/emuproc.c
@@ -241,31 +241,22 @@ static void snd_emu10k1_proc_spdif_read(
 	struct snd_emu10k1 *emu = entry->private_data;
 	u32 value;
 	u32 value2;
-	unsigned long flags;
 	u32 rate;
 
 	if (emu->card_capabilities->emu_model) {
-		spin_lock_irqsave(&emu->emu_lock, flags);
 		snd_emu1010_fpga_read(emu, 0x38, &value);
-		spin_unlock_irqrestore(&emu->emu_lock, flags);
 		if ((value & 0x1) == 0) {
-			spin_lock_irqsave(&emu->emu_lock, flags);
 			snd_emu1010_fpga_read(emu, 0x2a, &value);
 			snd_emu1010_fpga_read(emu, 0x2b, &value2);
-			spin_unlock_irqrestore(&emu->emu_lock, flags);
 			rate = 0x1770000 / (((value << 5) | value2)+1);	
 			snd_iprintf(buffer, "ADAT Locked : %u\n", rate);
 		} else {
 			snd_iprintf(buffer, "ADAT Unlocked\n");
 		}
-		spin_lock_irqsave(&emu->emu_lock, flags);
 		snd_emu1010_fpga_read(emu, 0x20, &value);
-		spin_unlock_irqrestore(&emu->emu_lock, flags);
 		if ((value & 0x4) == 0) {
-			spin_lock_irqsave(&emu->emu_lock, flags);
 			snd_emu1010_fpga_read(emu, 0x28, &value);
 			snd_emu1010_fpga_read(emu, 0x29, &value2);
-			spin_unlock_irqrestore(&emu->emu_lock, flags);
 			rate = 0x1770000 / (((value << 5) | value2)+1);	
 			snd_iprintf(buffer, "SPDIF Locked : %d\n", rate);
 		} else {
@@ -410,14 +401,11 @@ static void snd_emu_proc_emu1010_reg_rea
 {
 	struct snd_emu10k1 *emu = entry->private_data;
 	u32 value;
-	unsigned long flags;
 	int i;
 	snd_iprintf(buffer, "EMU1010 Registers:\n\n");
 
 	for(i = 0; i < 0x40; i+=1) {
-		spin_lock_irqsave(&emu->emu_lock, flags);
 		snd_emu1010_fpga_read(emu, i, &value);
-		spin_unlock_irqrestore(&emu->emu_lock, flags);
 		snd_iprintf(buffer, "%02X: %08X, %02X\n", i, value, (value >> 8) & 0x7f);
 	}
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 082/177] ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T450
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (77 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 081/177] ALSA: emu10k1: dont deadlock in proc-functions Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 083/177] ALSA: hda - fix "num_steps = 0" error on ALC256 Greg Kroah-Hartman
                   ` (96 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Jo-Philipp Wich, Takashi Iwai

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jo-Philipp Wich <jow@openwrt.org>

commit f2aa111041ce36b94e651d882458dea502e76721 upstream.

The Lenovo Thinkpad T450 requires the ALC292_FIXUP_TPT440_DOCK as well in
order to get working sound output on the docking stations headphone jack.

Patch tested on a Thinkpad T450 (20BVCTO1WW) using kernel 4.0-rc7 in
conjunction with a ThinkPad Ultradock.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/pci/hda/patch_realtek.c |    1 +
 1 file changed, 1 insertion(+)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4953,6 +4953,7 @@ static const struct snd_pci_quirk alc269
 	SND_PCI_QUIRK(0x17aa, 0x501a, "Thinkpad", ALC283_FIXUP_INT_MIC),
 	SND_PCI_QUIRK(0x17aa, 0x501e, "Thinkpad L440", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x5026, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
+	SND_PCI_QUIRK(0x17aa, 0x5034, "Thinkpad T450", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x5036, "Thinkpad T450s", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
 	SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 083/177] ALSA: hda - fix "num_steps = 0" error on ALC256
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (78 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 082/177] ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T450 Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 084/177] ALSA: hda/realtek - Fix Headphone Mic doesnt recording for ALC256 Greg Kroah-Hartman
                   ` (95 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, David Henningsson, Takashi Iwai

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: David Henningsson <david.henningsson@canonical.com>

commit 7d1b6e29327428993ba568bdd8c66734070f45e0 upstream.

The ALC256 does not have a mixer nid at 0x0b, and there's no
loopback path (the output pins are directly connected to the DACs).

This commit fixes an "num_steps = 0 for NID=0xb (ctl = Beep Playback Volume)"
error (and as a result, problems with amixer/alsamixer).

If there's pcbeep functionality, it certainly isn't controlled by setting an
amp on 0x0b, so disable beep functionality (at least for now).

BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1446517
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/pci/hda/patch_realtek.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -5454,6 +5454,7 @@ static int patch_alc269(struct hda_codec
 		break;
 	case 0x10ec0256:
 		spec->codec_variant = ALC269_TYPE_ALC256;
+		spec->gen.mixer_nid = 0; /* ALC256 does not have any loopback mixer path */
 		break;
 	}
 
@@ -5467,8 +5468,8 @@ static int patch_alc269(struct hda_codec
 	if (err < 0)
 		goto error;
 
-	if (!spec->gen.no_analog && spec->gen.beep_nid)
-		set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT);
+	if (!spec->gen.no_analog && spec->gen.beep_nid && spec->gen.mixer_nid)
+		set_beep_amp(spec, spec->gen.mixer_nid, 0x04, HDA_INPUT);
 
 	codec->patch_ops = alc_patch_ops;
 #ifdef CONFIG_PM



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 084/177] ALSA: hda/realtek - Fix Headphone Mic doesnt recording for ALC256
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (79 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 083/177] ALSA: hda - fix "num_steps = 0" error on ALC256 Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 085/177] Input: elantech - fix absolute mode setting on some ASUS laptops Greg Kroah-Hartman
                   ` (94 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kailang Yang, Hui Wang, Takashi Iwai

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Kailang Yang <kailang@realtek.com>

commit d32b66668c702aed0e330dc5ca186afbadcdacf8 upstream.

Switch default pcbeep path to Line in path.

Signed-off-by: Kailang Yang <kailang@realtek.com>
Tested-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/pci/hda/patch_realtek.c |    1 +
 1 file changed, 1 insertion(+)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -5455,6 +5455,7 @@ static int patch_alc269(struct hda_codec
 	case 0x10ec0256:
 		spec->codec_variant = ALC269_TYPE_ALC256;
 		spec->gen.mixer_nid = 0; /* ALC256 does not have any loopback mixer path */
+		alc_update_coef_idx(codec, 0x36, 1 << 13, 1 << 5); /* Switch pcbeep path to Line in path*/
 		break;
 	}
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 085/177] Input: elantech - fix absolute mode setting on some ASUS laptops
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (80 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 084/177] ALSA: hda/realtek - Fix Headphone Mic doesnt recording for ALC256 Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 086/177] mfd: core: Fix platform-device name collisions Greg Kroah-Hartman
                   ` (93 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ulrik De Bie, Dmitry Torokhov

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ulrik De Bie <ulrik.debie-os@e2big.org>

commit bd884149aca61de269fd9bad83fe2a4232ffab21 upstream.

On ASUS TP500LN and X750JN, the touchpad absolute mode is reset each
time set_rate is done.

In order to fix this, we will verify the firmware version, and if it
matches the one in those laptops, the set_rate function is overloaded
with a function elantech_set_rate_restore_reg_07 that performs the
set_rate with the original function, followed by a restore of reg_07
(the register that sets the absolute mode on elantech v4 hardware).

Also the ASUS TP500LN and X750JN firmware version, capabilities, and
button constellation is added to elantech.c

Reported-and-tested-by: George Moutsopoulos <gmoutso@yahoo.co.uk>
Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/mouse/elantech.c |   22 ++++++++++++++++++++++
 drivers/input/mouse/elantech.h |    1 +
 2 files changed, 23 insertions(+)

--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -893,6 +893,21 @@ static psmouse_ret_t elantech_process_by
 }
 
 /*
+ * This writes the reg_07 value again to the hardware at the end of every
+ * set_rate call because the register loses its value. reg_07 allows setting
+ * absolute mode on v4 hardware
+ */
+static void elantech_set_rate_restore_reg_07(struct psmouse *psmouse,
+		unsigned int rate)
+{
+	struct elantech_data *etd = psmouse->private;
+
+	etd->original_set_rate(psmouse, rate);
+	if (elantech_write_reg(psmouse, 0x07, etd->reg_07))
+		psmouse_err(psmouse, "restoring reg_07 failed\n");
+}
+
+/*
  * Put the touchpad into absolute mode
  */
 static int elantech_set_absolute_mode(struct psmouse *psmouse)
@@ -1094,6 +1109,8 @@ static int elantech_get_resolution_v4(st
  * Asus K53SV              0x450f01        78, 15, 0c      2 hw buttons
  * Asus G46VW              0x460f02        00, 18, 0c      2 hw buttons
  * Asus G750JX             0x360f00        00, 16, 0c      2 hw buttons
+ * Asus TP500LN            0x381f17        10, 14, 0e      clickpad
+ * Asus X750JN             0x381f17        10, 14, 0e      clickpad
  * Asus UX31               0x361f00        20, 15, 0e      clickpad
  * Asus UX32VD             0x361f02        00, 15, 0e      clickpad
  * Avatar AVIU-145A2       0x361f00        ?               clickpad
@@ -1635,6 +1652,11 @@ int elantech_init(struct psmouse *psmous
 		goto init_fail;
 	}
 
+	if (etd->fw_version == 0x381f17) {
+		etd->original_set_rate = psmouse->set_rate;
+		psmouse->set_rate = elantech_set_rate_restore_reg_07;
+	}
+
 	if (elantech_set_input_params(psmouse)) {
 		psmouse_err(psmouse, "failed to query touchpad range.\n");
 		goto init_fail;
--- a/drivers/input/mouse/elantech.h
+++ b/drivers/input/mouse/elantech.h
@@ -142,6 +142,7 @@ struct elantech_data {
 	struct finger_pos mt[ETP_MAX_FINGERS];
 	unsigned char parity[256];
 	int (*send_cmd)(struct psmouse *psmouse, unsigned char c, unsigned char *param);
+	void (*original_set_rate)(struct psmouse *psmouse, unsigned int rate);
 };
 
 #ifdef CONFIG_MOUSE_PS2_ELANTECH



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 086/177] mfd: core: Fix platform-device name collisions
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (81 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 085/177] Input: elantech - fix absolute mode setting on some ASUS laptops Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 087/177] fs/binfmt_elf.c: fix bug in loading of PIE binaries Greg Kroah-Hartman
                   ` (92 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Bartlomiej Zolnierkiewicz,
	Johan Hovold, Lee Jones

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Johan Hovold <johan@kernel.org>

commit a77c50b44cfb663ad03faba9800fec19bdf83577 upstream.

Since commit 6e3f62f0793e ("mfd: core: Fix platform-device id
generation") we honour PLATFORM_DEVID_AUTO and PLATFORM_DEVID_NONE when
registering mfd-devices.

Unfortunately, some mfd-drivers rely on the old behaviour of generating
platform-device ids by adding the cell id also to the special value of
PLATFORM_DEVID_NONE. The resulting platform ids are not only used to
generate device-unique names, but are also used instead of the cell id
to identify cells when probing subdevices.

These drivers should be updated to use PLATFORM_DEVID_AUTO, which would
also allow more than one device to be registered without resorting to
hacks (see for example wm831x), but lets fix the regression first by
partially reverting the above mentioned commit with respect to
PLATFORM_DEVID_NONE.

Fixes: 6e3f62f0793e ("mfd: core: Fix platform-device id generation")
Reported-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mfd/mfd-core.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/mfd/mfd-core.c
+++ b/drivers/mfd/mfd-core.c
@@ -128,7 +128,7 @@ static int mfd_add_device(struct device
 	int platform_id;
 	int r;
 
-	if (id < 0)
+	if (id == PLATFORM_DEVID_AUTO)
 		platform_id = id;
 	else
 		platform_id = id + cell->id;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 087/177] fs/binfmt_elf.c: fix bug in loading of PIE binaries
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (82 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 086/177] mfd: core: Fix platform-device name collisions Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 088/177] ptrace: fix race between ptrace_resume() and wait_task_stopped() Greg Kroah-Hartman
                   ` (91 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Davidson, Alexander Viro,
	Jiri Kosina, Kees Cook, Andrew Morton, Linus Torvalds

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Michael Davidson <md@google.com>

commit a87938b2e246b81b4fb713edb371a9fa3c5c3c86 upstream.

With CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE enabled, and a normal top-down
address allocation strategy, load_elf_binary() will attempt to map a PIE
binary into an address range immediately below mm->mmap_base.

Unfortunately, load_elf_ binary() does not take account of the need to
allocate sufficient space for the entire binary which means that, while
the first PT_LOAD segment is mapped below mm->mmap_base, the subsequent
PT_LOAD segment(s) end up being mapped above mm->mmap_base into the are
that is supposed to be the "gap" between the stack and the binary.

Since the size of the "gap" on x86_64 is only guaranteed to be 128MB this
means that binaries with large data segments > 128MB can end up mapping
part of their data segment over their stack resulting in corruption of the
stack (and the data segment once the binary starts to run).

Any PIE binary with a data segment > 128MB is vulnerable to this although
address randomization means that the actual gap between the stack and the
end of the binary is normally greater than 128MB.  The larger the data
segment of the binary the higher the probability of failure.

Fix this by calculating the total size of the binary in the same way as
load_elf_interp().

Signed-off-by: Michael Davidson <md@google.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/binfmt_elf.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -862,6 +862,7 @@ static int load_elf_binary(struct linux_
 	    i < loc->elf_ex.e_phnum; i++, elf_ppnt++) {
 		int elf_prot = 0, elf_flags;
 		unsigned long k, vaddr;
+		unsigned long total_size = 0;
 
 		if (elf_ppnt->p_type != PT_LOAD)
 			continue;
@@ -924,10 +925,16 @@ static int load_elf_binary(struct linux_
 #else
 			load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
 #endif
+			total_size = total_mapping_size(elf_phdata,
+							loc->elf_ex.e_phnum);
+			if (!total_size) {
+				error = -EINVAL;
+				goto out_free_dentry;
+			}
 		}
 
 		error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
-				elf_prot, elf_flags, 0);
+				elf_prot, elf_flags, total_size);
 		if (BAD_ADDR(error)) {
 			retval = IS_ERR((void *)error) ?
 				PTR_ERR((void*)error) : -EINVAL;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 088/177] ptrace: fix race between ptrace_resume() and wait_task_stopped()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (83 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 087/177] fs/binfmt_elf.c: fix bug in loading of PIE binaries Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 089/177] NFC: st21nfcb: Retry i2c_master_send if it returns a negative value Greg Kroah-Hartman
                   ` (90 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Oleg Nesterov, Pavel Labath,
	Andrew Morton, Linus Torvalds

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Oleg Nesterov <oleg@redhat.com>

commit b72c186999e689cb0b055ab1c7b3cd8fffbeb5ed upstream.

ptrace_resume() is called when the tracee is still __TASK_TRACED.  We set
tracee->exit_code and then wake_up_state() changes tracee->state.  If the
tracer's sub-thread does wait() in between, task_stopped_code(ptrace => T)
wrongly looks like another report from tracee.

This confuses debugger, and since wait_task_stopped() clears ->exit_code
the tracee can miss a signal.

Test-case:

	#include <stdio.h>
	#include <unistd.h>
	#include <sys/wait.h>
	#include <sys/ptrace.h>
	#include <pthread.h>
	#include <assert.h>

	int pid;

	void *waiter(void *arg)
	{
		int stat;

		for (;;) {
			assert(pid == wait(&stat));
			assert(WIFSTOPPED(stat));
			if (WSTOPSIG(stat) == SIGHUP)
				continue;

			assert(WSTOPSIG(stat) == SIGCONT);
			printf("ERR! extra/wrong report:%x\n", stat);
		}
	}

	int main(void)
	{
		pthread_t thread;

		pid = fork();
		if (!pid) {
			assert(ptrace(PTRACE_TRACEME, 0,0,0) == 0);
			for (;;)
				kill(getpid(), SIGHUP);
		}

		assert(pthread_create(&thread, NULL, waiter, NULL) == 0);

		for (;;)
			ptrace(PTRACE_CONT, pid, 0, SIGCONT);

		return 0;
	}

Note for stable: the bug is very old, but without 9899d11f6544 "ptrace:
ensure arch_ptrace/ptrace_request can never race with SIGKILL" the fix
should use lock_task_sighand(child).

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reported-by: Pavel Labath <labath@google.com>
Tested-by: Pavel Labath <labath@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 kernel/ptrace.c |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -697,6 +697,8 @@ static int ptrace_peek_siginfo(struct ta
 static int ptrace_resume(struct task_struct *child, long request,
 			 unsigned long data)
 {
+	bool need_siglock;
+
 	if (!valid_signal(data))
 		return -EIO;
 
@@ -724,8 +726,26 @@ static int ptrace_resume(struct task_str
 		user_disable_single_step(child);
 	}
 
+	/*
+	 * Change ->exit_code and ->state under siglock to avoid the race
+	 * with wait_task_stopped() in between; a non-zero ->exit_code will
+	 * wrongly look like another report from tracee.
+	 *
+	 * Note that we need siglock even if ->exit_code == data and/or this
+	 * status was not reported yet, the new status must not be cleared by
+	 * wait_task_stopped() after resume.
+	 *
+	 * If data == 0 we do not care if wait_task_stopped() reports the old
+	 * status and clears the code too; this can't race with the tracee, it
+	 * takes siglock after resume.
+	 */
+	need_siglock = data && !thread_group_empty(current);
+	if (need_siglock)
+		spin_lock_irq(&child->sighand->siglock);
 	child->exit_code = data;
 	wake_up_state(child, __TASK_TRACED);
+	if (need_siglock)
+		spin_unlock_irq(&child->sighand->siglock);
 
 	return 0;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 089/177] NFC: st21nfcb: Retry i2c_master_send if it returns a negative value
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (84 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 088/177] ptrace: fix race between ptrace_resume() and wait_task_stopped() Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 090/177] rtlwifi: rtl8192cu: Add new USB ID Greg Kroah-Hartman
                   ` (89 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Christophe Ricard, Samuel Ortiz

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Christophe Ricard <christophe.ricard@gmail.com>

commit d4a41d10b2cb5890aeda6b2912973b2a754b05b1 upstream.

i2c_master_send may return many negative values different than
-EREMOTEIO.
In case an i2c transaction is NACK'ed, on raspberry pi B+
kernel 3.18, -EIO is generated instead.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/nfc/st21nfcb/i2c.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/nfc/st21nfcb/i2c.c
+++ b/drivers/nfc/st21nfcb/i2c.c
@@ -109,7 +109,7 @@ static int st21nfcb_nci_i2c_write(void *
 		return phy->ndlc->hard_fault;
 
 	r = i2c_master_send(client, skb->data, skb->len);
-	if (r == -EREMOTEIO) {  /* Retry, chip was in standby */
+	if (r < 0) {  /* Retry, chip was in standby */
 		usleep_range(1000, 4000);
 		r = i2c_master_send(client, skb->data, skb->len);
 	}
@@ -148,7 +148,7 @@ static int st21nfcb_nci_i2c_read(struct
 	struct i2c_client *client = phy->i2c_dev;
 
 	r = i2c_master_recv(client, buf, ST21NFCB_NCI_I2C_MIN_SIZE);
-	if (r == -EREMOTEIO) {  /* Retry, chip was in standby */
+	if (r < 0) {  /* Retry, chip was in standby */
 		usleep_range(1000, 4000);
 		r = i2c_master_recv(client, buf, ST21NFCB_NCI_I2C_MIN_SIZE);
 	}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 090/177] rtlwifi: rtl8192cu: Add new USB ID
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (85 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 089/177] NFC: st21nfcb: Retry i2c_master_send if it returns a negative value Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 091/177] rtlwifi: rtl8192cu: Add new device ID Greg Kroah-Hartman
                   ` (88 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Larry Finger, Kalle Valo

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Larry Finger <Larry.Finger@lwfinger.net>

commit 2f92b314f4daff2117847ac5343c54d3d041bf78 upstream.

USB ID 2001:330d is used for a D-Link DWA-131.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
@@ -377,6 +377,7 @@ static struct usb_device_id rtl8192c_usb
 	{RTL_USB_DEVICE(0x2001, 0x3307, rtl92cu_hal_cfg)}, /*D-Link-Cameo*/
 	{RTL_USB_DEVICE(0x2001, 0x3309, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/
 	{RTL_USB_DEVICE(0x2001, 0x330a, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/
+	{RTL_USB_DEVICE(0x2001, 0x330d, rtl92cu_hal_cfg)}, /*D-Link DWA-131 */
 	{RTL_USB_DEVICE(0x2019, 0xab2b, rtl92cu_hal_cfg)}, /*Planex -Abocom*/
 	{RTL_USB_DEVICE(0x20f4, 0x624d, rtl92cu_hal_cfg)}, /*TRENDNet*/
 	{RTL_USB_DEVICE(0x2357, 0x0100, rtl92cu_hal_cfg)}, /*TP-Link WN8200ND*/



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 091/177] rtlwifi: rtl8192cu: Add new device ID
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (86 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 090/177] rtlwifi: rtl8192cu: Add new USB ID Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 092/177] ext4: make fsync to sync parent dir in no-journal for real this time Greg Kroah-Hartman
                   ` (87 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marek Vasut, Larry Finger,
	John W. Linville, Kalle Valo

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Marek Vasut <marex@denx.de>

commit 9374e7d2fdcad3c36dafc8d3effd554bc702c4b6 upstream.

Add new ID for ASUS N10 WiFi dongle.

Signed-off-by: Marek Vasut <marex@denx.de>
Tested-by: Marek Vasut <marex@denx.de>
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Cc: John W. Linville <linville@tuxdriver.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
@@ -321,6 +321,7 @@ static struct usb_device_id rtl8192c_usb
 	{RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/
 	{RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/
 	{RTL_USB_DEVICE(0x0846, 0x9041, rtl92cu_hal_cfg)}, /*NetGear WNA1000M*/
+	{RTL_USB_DEVICE(0x0b05, 0x17ba, rtl92cu_hal_cfg)}, /*ASUS-Edimax*/
 	{RTL_USB_DEVICE(0x0bda, 0x5088, rtl92cu_hal_cfg)}, /*Thinkware-CC&C*/
 	{RTL_USB_DEVICE(0x0df6, 0x0052, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
 	{RTL_USB_DEVICE(0x0df6, 0x005c, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 092/177] ext4: make fsync to sync parent dir in no-journal for real this time
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (87 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 091/177] rtlwifi: rtl8192cu: Add new device ID Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 093/177] mnt: Improve the umount_tree flags Greg Kroah-Hartman
                   ` (86 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Lukas Czerner, Theodore Tso,
	Jan Kara, Frank Mayhar

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lukas Czerner <lczerner@redhat.com>

commit e12fb97222fc41e8442896934f76d39ef99b590a upstream.

Previously commit 14ece1028b3ed53ffec1b1213ffc6acaf79ad77c added a
support for for syncing parent directory of newly created inodes to
make sure that the inode is not lost after a power failure in
no-journal mode.

However this does not work in majority of cases, namely:
 - if the directory has inline data
 - if the directory is already indexed
 - if the directory already has at least one block and:
	- the new entry fits into it
	- or we've successfully converted it to indexed

So in those cases we might lose the inode entirely even after fsync in
the no-journal mode. This also includes ext2 default mode obviously.

I've noticed this while running xfstest generic/321 and even though the
test should fail (we need to run fsck after a crash in no-journal mode)
I could not find a newly created entries even when if it was fsynced
before.

Fix this by adjusting the ext4_add_entry() successful exit paths to set
the inode EXT4_STATE_NEWENTRY so that fsync has the chance to fsync the
parent directory as well.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
Cc: Frank Mayhar <fmayhar@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/ext4/namei.c |   20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1865,7 +1865,7 @@ static int ext4_add_entry(handle_t *hand
 			  struct inode *inode)
 {
 	struct inode *dir = dentry->d_parent->d_inode;
-	struct buffer_head *bh;
+	struct buffer_head *bh = NULL;
 	struct ext4_dir_entry_2 *de;
 	struct ext4_dir_entry_tail *t;
 	struct super_block *sb;
@@ -1889,14 +1889,14 @@ static int ext4_add_entry(handle_t *hand
 			return retval;
 		if (retval == 1) {
 			retval = 0;
-			return retval;
+			goto out;
 		}
 	}
 
 	if (is_dx(dir)) {
 		retval = ext4_dx_add_entry(handle, dentry, inode);
 		if (!retval || (retval != ERR_BAD_DX_DIR))
-			return retval;
+			goto out;
 		ext4_clear_inode_flag(dir, EXT4_INODE_INDEX);
 		dx_fallback++;
 		ext4_mark_inode_dirty(handle, dir);
@@ -1908,14 +1908,15 @@ static int ext4_add_entry(handle_t *hand
 			return PTR_ERR(bh);
 
 		retval = add_dirent_to_buf(handle, dentry, inode, NULL, bh);
-		if (retval != -ENOSPC) {
-			brelse(bh);
-			return retval;
-		}
+		if (retval != -ENOSPC)
+			goto out;
 
 		if (blocks == 1 && !dx_fallback &&
-		    EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_DIR_INDEX))
-			return make_indexed_dir(handle, dentry, inode, bh);
+		    EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_DIR_INDEX)) {
+			retval = make_indexed_dir(handle, dentry, inode, bh);
+			bh = NULL; /* make_indexed_dir releases bh */
+			goto out;
+		}
 		brelse(bh);
 	}
 	bh = ext4_append(handle, dir, &block);
@@ -1931,6 +1932,7 @@ static int ext4_add_entry(handle_t *hand
 	}
 
 	retval = add_dirent_to_buf(handle, dentry, inode, de, bh);
+out:
 	brelse(bh);
 	if (retval == 0)
 		ext4_set_inode_state(inode, EXT4_STATE_NEWENTRY);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 093/177] mnt: Improve the umount_tree flags
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (88 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 092/177] ext4: make fsync to sync parent dir in no-journal for real this time Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 094/177] mnt: Dont propagate umounts in __detach_mounts Greg Kroah-Hartman
                   ` (85 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Eric W. Biederman

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "Eric W. Biederman" <ebiederm@xmission.com>

commit e819f152104c9f7c9fe50e1aecce6f5d4bf06d65 upstream.

- Remove the unneeded declaration from pnode.h
- Mark umount_tree static as it has no callers outside of namespace.c
- Define an enumeration of umount_tree's flags.
- Pass umount_tree's flags in by name

This removes the magic numbers 0, 1 and 2 making the code a little
clearer and makes it possible for there to be lazy unmounts that don't
propagate.  Which is what __detach_mounts actually wants for example.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/namespace.c |   31 ++++++++++++++++---------------
 fs/pnode.h     |    1 -
 2 files changed, 16 insertions(+), 16 deletions(-)

--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1323,14 +1323,15 @@ static inline void namespace_lock(void)
 	down_write(&namespace_sem);
 }
 
+enum umount_tree_flags {
+	UMOUNT_SYNC = 1,
+	UMOUNT_PROPAGATE = 2,
+};
 /*
  * mount_lock must be held
  * namespace_sem must be held for write
- * how = 0 => just this tree, don't propagate
- * how = 1 => propagate; we know that nobody else has reference to any victims
- * how = 2 => lazy umount
  */
-void umount_tree(struct mount *mnt, int how)
+static void umount_tree(struct mount *mnt, enum umount_tree_flags how)
 {
 	HLIST_HEAD(tmp_list);
 	struct mount *p;
@@ -1344,7 +1345,7 @@ void umount_tree(struct mount *mnt, int
 	hlist_for_each_entry(p, &tmp_list, mnt_hash)
 		list_del_init(&p->mnt_child);
 
-	if (how)
+	if (how & UMOUNT_PROPAGATE)
 		propagate_umount(&tmp_list);
 
 	hlist_for_each_entry(p, &tmp_list, mnt_hash) {
@@ -1352,7 +1353,7 @@ void umount_tree(struct mount *mnt, int
 		list_del_init(&p->mnt_list);
 		__touch_mnt_namespace(p->mnt_ns);
 		p->mnt_ns = NULL;
-		if (how < 2)
+		if (how & UMOUNT_SYNC)
 			p->mnt.mnt_flags |= MNT_SYNC_UMOUNT;
 		if (mnt_has_parent(p)) {
 			hlist_del_init(&p->mnt_mp_list);
@@ -1457,14 +1458,14 @@ static int do_umount(struct mount *mnt,
 
 	if (flags & MNT_DETACH) {
 		if (!list_empty(&mnt->mnt_list))
-			umount_tree(mnt, 2);
+			umount_tree(mnt, UMOUNT_PROPAGATE);
 		retval = 0;
 	} else {
 		shrink_submounts(mnt);
 		retval = -EBUSY;
 		if (!propagate_mount_busy(mnt, 2)) {
 			if (!list_empty(&mnt->mnt_list))
-				umount_tree(mnt, 1);
+				umount_tree(mnt, UMOUNT_PROPAGATE|UMOUNT_SYNC);
 			retval = 0;
 		}
 	}
@@ -1496,7 +1497,7 @@ void __detach_mounts(struct dentry *dent
 	lock_mount_hash();
 	while (!hlist_empty(&mp->m_list)) {
 		mnt = hlist_entry(mp->m_list.first, struct mount, mnt_mp_list);
-		umount_tree(mnt, 2);
+		umount_tree(mnt, UMOUNT_PROPAGATE);
 	}
 	unlock_mount_hash();
 	put_mountpoint(mp);
@@ -1658,7 +1659,7 @@ struct mount *copy_tree(struct mount *mn
 out:
 	if (res) {
 		lock_mount_hash();
-		umount_tree(res, 0);
+		umount_tree(res, UMOUNT_SYNC);
 		unlock_mount_hash();
 	}
 	return q;
@@ -1682,7 +1683,7 @@ void drop_collected_mounts(struct vfsmou
 {
 	namespace_lock();
 	lock_mount_hash();
-	umount_tree(real_mount(mnt), 0);
+	umount_tree(real_mount(mnt), UMOUNT_SYNC);
 	unlock_mount_hash();
 	namespace_unlock();
 }
@@ -1865,7 +1866,7 @@ static int attach_recursive_mnt(struct m
  out_cleanup_ids:
 	while (!hlist_empty(&tree_list)) {
 		child = hlist_entry(tree_list.first, struct mount, mnt_hash);
-		umount_tree(child, 0);
+		umount_tree(child, UMOUNT_SYNC);
 	}
 	unlock_mount_hash();
 	cleanup_group_ids(source_mnt, NULL);
@@ -2045,7 +2046,7 @@ static int do_loopback(struct path *path
 	err = graft_tree(mnt, parent, mp);
 	if (err) {
 		lock_mount_hash();
-		umount_tree(mnt, 0);
+		umount_tree(mnt, UMOUNT_SYNC);
 		unlock_mount_hash();
 	}
 out2:
@@ -2416,7 +2417,7 @@ void mark_mounts_for_expiry(struct list_
 	while (!list_empty(&graveyard)) {
 		mnt = list_first_entry(&graveyard, struct mount, mnt_expire);
 		touch_mnt_namespace(mnt->mnt_ns);
-		umount_tree(mnt, 1);
+		umount_tree(mnt, UMOUNT_PROPAGATE|UMOUNT_SYNC);
 	}
 	unlock_mount_hash();
 	namespace_unlock();
@@ -2487,7 +2488,7 @@ static void shrink_submounts(struct moun
 			m = list_first_entry(&graveyard, struct mount,
 						mnt_expire);
 			touch_mnt_namespace(m->mnt_ns);
-			umount_tree(m, 1);
+			umount_tree(m, UMOUNT_PROPAGATE|UMOUNT_SYNC);
 		}
 	}
 }
--- a/fs/pnode.h
+++ b/fs/pnode.h
@@ -47,7 +47,6 @@ int get_dominating_id(struct mount *mnt,
 unsigned int mnt_get_count(struct mount *mnt);
 void mnt_set_mountpoint(struct mount *, struct mountpoint *,
 			struct mount *);
-void umount_tree(struct mount *, int);
 struct mount *copy_tree(struct mount *, struct dentry *, int);
 bool is_path_reachable(struct mount *, struct dentry *,
 			 const struct path *root);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 094/177] mnt: Dont propagate umounts in __detach_mounts
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (89 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 093/177] mnt: Improve the umount_tree flags Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:01 ` [PATCH 3.19 096/177] perf tools: Fix perf-read-vdsox32 not building and lib64 install dir Greg Kroah-Hartman
                   ` (84 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Eric W. Biederman

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "Eric W. Biederman" <ebiederm@xmission.com>

commit 8318e667f176f7ea34451a1a530634e293f216ac upstream.

Invoking mount propagation from __detach_mounts is inefficient and
wrong.

It is inefficient because __detach_mounts already walks the list of
mounts that where something needs to be done, and mount propagation
walks some subset of those mounts again.

It is actively wrong because if the dentry that is passed to
__detach_mounts is not part of the path to a mount that mount should
not be affected.

change_mnt_propagation(p,MS_PRIVATE) modifies the mount propagation
tree of a master mount so it's slaves are connected to another master
if possible.  Which means even removing a mount from the middle of a
mount tree with __detach_mounts will not deprive any mount propagated
mount events.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/namespace.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1497,7 +1497,7 @@ void __detach_mounts(struct dentry *dent
 	lock_mount_hash();
 	while (!hlist_empty(&mp->m_list)) {
 		mnt = hlist_entry(mp->m_list.first, struct mount, mnt_mp_list);
-		umount_tree(mnt, UMOUNT_PROPAGATE);
+		umount_tree(mnt, 0);
 	}
 	unlock_mount_hash();
 	put_mountpoint(mp);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 096/177] perf tools: Fix perf-read-vdsox32 not building and lib64 install dir
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (90 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 094/177] mnt: Dont propagate umounts in __detach_mounts Greg Kroah-Hartman
@ 2015-05-02 19:01 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 098/177] powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH Greg Kroah-Hartman
                   ` (83 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, H.J. Lu, Adrian Hunter, Jiri Olsa,
	Arnaldo Carvalho de Melo

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "H.J. Lu" <hjl.tools@gmail.com>

commit 76aea7731e7050c066943a1d7456ec6510702601 upstream.

Commit:

  c6e5e9fbc3ea ("perf tools: Fix building error in x86_64 when dwarf unwind is on")

removed the definition of IS_X86_64 but not all places using it, with
the consequence that perf-read-vdsox32 would not be built anymore, and
the default lib install directory was 'lib' instead of 'lib64'.

Also needs to go to v3.19.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/CAMe9rOqpGVq3D88w+D15ef7sv6G6k57ZeTvxBm46=WFgzo9p1w@mail.gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 tools/perf/config/Makefile |    4 ++--
 tools/perf/tests/make      |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -645,7 +645,7 @@ ifeq (${IS_64_BIT}, 1)
       NO_PERF_READ_VDSO32 := 1
     endif
   endif
-  ifneq (${IS_X86_64}, 1)
+  ifneq ($(ARCH), x86)
     NO_PERF_READ_VDSOX32 := 1
   endif
   ifndef NO_PERF_READ_VDSOX32
@@ -693,7 +693,7 @@ sysconfdir = $(prefix)/etc
 ETC_PERFCONFIG = etc/perfconfig
 endif
 ifndef lib
-ifeq ($(IS_X86_64),1)
+ifeq ($(ARCH)$(IS_64_BIT), x861)
 lib = lib64
 else
 lib = lib
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -5,7 +5,7 @@ include config/Makefile.arch
 
 # FIXME looks like x86 is the only arch running tests ;-)
 # we need some IS_(32/64) flag to make this generic
-ifeq ($(IS_X86_64),1)
+ifeq ($(ARCH)$(IS_64_BIT), x861)
 lib = lib64
 else
 lib = lib



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 098/177] powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (91 preceding siblings ...)
  2015-05-02 19:01 ` [PATCH 3.19 096/177] perf tools: Fix perf-read-vdsox32 not building and lib64 install dir Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 099/177] tools lib traceevent kbuffer: Remove extra update to data pointer in PADDING Greg Kroah-Hartman
                   ` (82 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anton Blanchard, Michael Ellerman

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Anton Blanchard <anton@samba.org>

commit 9a5cbce421a283e6aea3c4007f141735bf9da8c3 upstream.

We cap 32bit userspace backtraces to PERF_MAX_STACK_DEPTH
(currently 127), but we forgot to do the same for 64bit backtraces.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/perf/callchain.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/powerpc/perf/callchain.c
+++ b/arch/powerpc/perf/callchain.c
@@ -243,7 +243,7 @@ static void perf_callchain_user_64(struc
 	sp = regs->gpr[1];
 	perf_callchain_store(entry, next_ip);
 
-	for (;;) {
+	while (entry->nr < PERF_MAX_STACK_DEPTH) {
 		fp = (unsigned long __user *) sp;
 		if (!valid_user_sp(sp, 1) || read_user_stack_64(fp, &next_sp))
 			return;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 099/177] tools lib traceevent kbuffer: Remove extra update to data pointer in PADDING
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (92 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 098/177] powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 100/177] tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile Greg Kroah-Hartman
                   ` (81 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Steven Rostedt, Andrew Morton,
	Jiri Olsa, Namhyung Kim, Arnaldo Carvalho de Melo

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>

commit c5e691928bf166ac03430e957038b60adba3cf6c upstream.

When a event PADDING is hit (a deleted event that is still in the ring
buffer), translate_data() sets the length of the padding and also updates
the data pointer which is passed back to the caller.

This is unneeded because the caller also updates the data pointer with
the passed back length. translate_data() should not update the pointer,
only set the length.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/20150324135923.461431960@goodmis.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 tools/lib/traceevent/kbuffer-parse.c |    1 -
 1 file changed, 1 deletion(-)

--- a/tools/lib/traceevent/kbuffer-parse.c
+++ b/tools/lib/traceevent/kbuffer-parse.c
@@ -372,7 +372,6 @@ translate_data(struct kbuffer *kbuf, voi
 	switch (type_len) {
 	case KBUFFER_TYPE_PADDING:
 		*length = read_4(kbuf, data);
-		data += *length;
 		break;
 
 	case KBUFFER_TYPE_TIME_EXTEND:



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 100/177] tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (93 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 099/177] tools lib traceevent kbuffer: Remove extra update to data pointer in PADDING Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 101/177] UBI: account for bitflips in both the VID header and data Greg Kroah-Hartman
                   ` (80 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Thomas D., Mark Asselstine, Len Brown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Thomas D <whissi@whissi.de>

commit f82263c6989c31ae9b94cecddffb29dcbec38710 upstream.

Since commit ee0778a30153
("tools/power: turbostat: make Makefile a bit more capable")
turbostat's Makefile is using

  [...]
  BUILD_OUTPUT    := $(PWD)
  [...]

which obviously causes trouble when building "turbostat" with

  make -C /usr/src/linux/tools/power/x86/turbostat ARCH=x86 turbostat

because GNU make does not update nor guarantee that $PWD is set.

This patch changes the Makefile to use $CURDIR instead, which GNU make
guarantees to set and update (i.e. when using "make -C ...") and also
adds support for the O= option (see "make help" in your root of your
kernel source tree for more details).

Link: https://bugs.gentoo.org/show_bug.cgi?id=533918
Fixes: ee0778a30153 ("tools/power: turbostat: make Makefile a bit more capable")
Signed-off-by: Thomas D. <whissi@whissi.de>
Cc: Mark Asselstine <mark.asselstine@windriver.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 tools/power/x86/turbostat/Makefile |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/tools/power/x86/turbostat/Makefile
+++ b/tools/power/x86/turbostat/Makefile
@@ -1,8 +1,12 @@
 CC		= $(CROSS_COMPILE)gcc
-BUILD_OUTPUT	:= $(PWD)
+BUILD_OUTPUT	:= $(CURDIR)
 PREFIX		:= /usr
 DESTDIR		:=
 
+ifeq ("$(origin O)", "command line")
+	BUILD_OUTPUT := $(O)
+endif
+
 turbostat : turbostat.c
 CFLAGS +=	-Wall
 CFLAGS +=	-DMSRHEADER='"../../../../arch/x86/include/uapi/asm/msr-index.h"'



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 101/177] UBI: account for bitflips in both the VID header and data
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (94 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 100/177] tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 102/177] UBI: fix out of bounds write Greg Kroah-Hartman
                   ` (79 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Brian Norris, Richard Weinberger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Brian Norris <computersforpeace@gmail.com>

commit 8eef7d70f7c6772c3490f410ee2bceab3b543fa1 upstream.

We are completely discarding the earlier value of 'bitflips', which
could reflect a bitflip found in ubi_io_read_vid_hdr(). Let's use the
bitwise OR of header and data 'bitflip' statuses instead.

Coverity CID #1226856

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mtd/ubi/attach.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/mtd/ubi/attach.c
+++ b/drivers/mtd/ubi/attach.c
@@ -410,7 +410,7 @@ int ubi_compare_lebs(struct ubi_device *
 		second_is_newer = !second_is_newer;
 	} else {
 		dbg_bld("PEB %d CRC is OK", pnum);
-		bitflips = !!err;
+		bitflips |= !!err;
 	}
 	mutex_unlock(&ubi->buf_mutex);
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 102/177] UBI: fix out of bounds write
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (95 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 101/177] UBI: account for bitflips in both the VID header and data Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 103/177] UBI: initialize LEB number variable Greg Kroah-Hartman
                   ` (78 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Brian Norris, Richard Weinberger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Brian Norris <computersforpeace@gmail.com>

commit d74adbdb9abf0d2506a6c4afa534d894f28b763f upstream.

If aeb->len >= vol->reserved_pebs, we should not be writing aeb into the
PEB->LEB mapping.

Caught by Coverity, CID #711212.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mtd/ubi/eba.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/mtd/ubi/eba.c
+++ b/drivers/mtd/ubi/eba.c
@@ -1362,7 +1362,8 @@ int ubi_eba_init(struct ubi_device *ubi,
 				 * during re-size.
 				 */
 				ubi_move_aeb_to_list(av, aeb, &ai->erase);
-			vol->eba_tbl[aeb->lnum] = aeb->pnum;
+			else
+				vol->eba_tbl[aeb->lnum] = aeb->pnum;
 		}
 	}
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 103/177] UBI: initialize LEB number variable
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (96 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 102/177] UBI: fix out of bounds write Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 104/177] UBI: fix check for "too many bytes" Greg Kroah-Hartman
                   ` (77 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Brian Norris, Richard Weinberger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Brian Norris <computersforpeace@gmail.com>

commit f16db8071ce18819fbd705ddcc91c6f392fb61f8 upstream.

In some of the 'out_not_moved' error paths, lnum may be used
uninitialized. Don't ignore the warning; let's fix it.

This uninitialized variable doesn't have much visible effect in the end,
since we just schedule the PEB for erasure, and its LEB number doesn't
really matter (it just gets printed in debug messages). But let's get it
straight anyway.

Coverity CID #113449

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mtd/ubi/wl.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/mtd/ubi/wl.c
+++ b/drivers/mtd/ubi/wl.c
@@ -1005,7 +1005,7 @@ static int wear_leveling_worker(struct u
 				int shutdown)
 {
 	int err, scrubbing = 0, torture = 0, protect = 0, erroneous = 0;
-	int vol_id = -1, uninitialized_var(lnum);
+	int vol_id = -1, lnum = -1;
 #ifdef CONFIG_MTD_UBI_FASTMAP
 	int anchor = wrk->anchor;
 #endif



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 104/177] UBI: fix check for "too many bytes"
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (97 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 103/177] UBI: initialize LEB number variable Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 105/177] scsi: storvsc: Fix a bug in copy_from_bounce_buffer() Greg Kroah-Hartman
                   ` (76 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Brian Norris, Richard Weinberger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Brian Norris <computersforpeace@gmail.com>

commit 299d0c5b27346a77a0777c993372bf8777d4f2e5 upstream.

The comparison from the previous line seems to have been erroneously
(partially) copied-and-pasted onto the next. The second line should be
checking req.bytes, not req.lnum.

Coverity CID #139400

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
[rw: Fixed comparison]
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mtd/ubi/cdev.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/mtd/ubi/cdev.c
+++ b/drivers/mtd/ubi/cdev.c
@@ -454,7 +454,7 @@ static long vol_cdev_ioctl(struct file *
 		/* Validate the request */
 		err = -EINVAL;
 		if (req.lnum < 0 || req.lnum >= vol->reserved_pebs ||
-		    req.bytes < 0 || req.lnum >= vol->usable_leb_size)
+		    req.bytes < 0 || req.bytes > vol->usable_leb_size)
 			break;
 
 		err = get_exclusive(ubi, desc);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 105/177] scsi: storvsc: Fix a bug in copy_from_bounce_buffer()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (98 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 104/177] UBI: fix check for "too many bytes" Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 106/177] target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling Greg Kroah-Hartman
                   ` (75 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, K. Y. Srinivasan, Long Li, James Bottomley

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "K. Y. Srinivasan" <kys@microsoft.com>

commit 8de580742fee8bc34d116f57a20b22b9a5f08403 upstream.

We may exit this function without properly freeing up the maapings
we may have acquired. Fix the bug.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Long Li <longli@microsoft.com>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/scsi/storvsc_drv.c |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -741,21 +741,22 @@ static unsigned int copy_to_bounce_buffe
 			if (bounce_sgl[j].length == PAGE_SIZE) {
 				/* full..move to next entry */
 				sg_kunmap_atomic(bounce_addr);
+				bounce_addr = 0;
 				j++;
+			}
 
-				/* if we need to use another bounce buffer */
-				if (srclen || i != orig_sgl_count - 1)
-					bounce_addr = sg_kmap_atomic(bounce_sgl,j);
+			/* if we need to use another bounce buffer */
+			if (srclen && bounce_addr == 0)
+				bounce_addr = sg_kmap_atomic(bounce_sgl, j);
 
-			} else if (srclen == 0 && i == orig_sgl_count - 1) {
-				/* unmap the last bounce that is < PAGE_SIZE */
-				sg_kunmap_atomic(bounce_addr);
-			}
 		}
 
 		sg_kunmap_atomic(src_addr - orig_sgl[i].offset);
 	}
 
+	if (bounce_addr)
+		sg_kunmap_atomic(bounce_addr);
+
 	local_irq_restore(flags);
 
 	return total_copied;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 106/177] target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (99 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 105/177] scsi: storvsc: Fix a bug in copy_from_bounce_buffer() Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 107/177] target/file: Fix BUG() when CONFIG_DEBUG_SG=y and DIF protection enabled Greg Kroah-Hartman
                   ` (74 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christoph Hellwig, Nicholas Bellinger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicholas Bellinger <nab@linux-iscsi.org>

commit c8e639852ad720499912acedfd6b072325fd2807 upstream.

This patch fixes a bug for COMPARE_AND_WRITE handling with
fabrics using SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC.

It adds the missing allocation for cmd->t_bidi_data_sg within
transport_generic_new_cmd() that is used by COMPARE_AND_WRITE
for the initial READ payload, even if the fabric is already
providing a pre-allocated buffer for cmd->t_data_sg.

Also, fix zero-length COMPARE_AND_WRITE handling within the
compare_and_write_callback() and target_complete_ok_work()
to queue the response, skipping the initial READ.

This fixes COMPARE_AND_WRITE emulation with loopback, vhost,
and xen-backend fabric drivers using SG_TO_MEM_NOALLOC.

Reported-by: Christoph Hellwig <hch@lst.de>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/target/target_core_sbc.c       |   15 ++++++++-----
 drivers/target/target_core_transport.c |   37 +++++++++++++++++++++++++++++----
 include/target/target_core_base.h      |    2 -
 3 files changed, 44 insertions(+), 10 deletions(-)

--- a/drivers/target/target_core_sbc.c
+++ b/drivers/target/target_core_sbc.c
@@ -299,7 +299,7 @@ sbc_setup_write_same(struct se_cmd *cmd,
 	return 0;
 }
 
-static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd)
+static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd, bool success)
 {
 	unsigned char *buf, *addr;
 	struct scatterlist *sg;
@@ -363,7 +363,7 @@ sbc_execute_rw(struct se_cmd *cmd)
 			       cmd->data_direction);
 }
 
-static sense_reason_t compare_and_write_post(struct se_cmd *cmd)
+static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success)
 {
 	struct se_device *dev = cmd->se_dev;
 
@@ -386,7 +386,7 @@ static sense_reason_t compare_and_write_
 	return TCM_NO_SENSE;
 }
 
-static sense_reason_t compare_and_write_callback(struct se_cmd *cmd)
+static sense_reason_t compare_and_write_callback(struct se_cmd *cmd, bool success)
 {
 	struct se_device *dev = cmd->se_dev;
 	struct scatterlist *write_sg = NULL, *sg;
@@ -401,11 +401,16 @@ static sense_reason_t compare_and_write_
 
 	/*
 	 * Handle early failure in transport_generic_request_failure(),
-	 * which will not have taken ->caw_mutex yet..
+	 * which will not have taken ->caw_sem yet..
 	 */
-	if (!cmd->t_data_sg || !cmd->t_bidi_data_sg)
+	if (!success && (!cmd->t_data_sg || !cmd->t_bidi_data_sg))
 		return TCM_NO_SENSE;
 	/*
+	 * Handle special case for zero-length COMPARE_AND_WRITE
+	 */
+	if (!cmd->data_length)
+		goto out;
+	/*
 	 * Immediately exit + release dev->caw_sem if command has already
 	 * been failed with a non-zero SCSI status.
 	 */
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -1615,11 +1615,11 @@ void transport_generic_request_failure(s
 	transport_complete_task_attr(cmd);
 	/*
 	 * Handle special case for COMPARE_AND_WRITE failure, where the
-	 * callback is expected to drop the per device ->caw_mutex.
+	 * callback is expected to drop the per device ->caw_sem.
 	 */
 	if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) &&
 	     cmd->transport_complete_callback)
-		cmd->transport_complete_callback(cmd);
+		cmd->transport_complete_callback(cmd, false);
 
 	switch (sense_reason) {
 	case TCM_NON_EXISTENT_LUN:
@@ -1975,8 +1975,12 @@ static void target_complete_ok_work(stru
 	if (cmd->transport_complete_callback) {
 		sense_reason_t rc;
 
-		rc = cmd->transport_complete_callback(cmd);
+		rc = cmd->transport_complete_callback(cmd, true);
 		if (!rc && !(cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE_POST)) {
+			if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) &&
+			    !cmd->data_length)
+				goto queue_rsp;
+
 			return;
 		} else if (rc) {
 			ret = transport_send_check_condition_and_sense(cmd,
@@ -1990,6 +1994,7 @@ static void target_complete_ok_work(stru
 		}
 	}
 
+queue_rsp:
 	switch (cmd->data_direction) {
 	case DMA_FROM_DEVICE:
 		spin_lock(&cmd->se_lun->lun_sep_lock);
@@ -2094,6 +2099,16 @@ static inline void transport_reset_sgl_o
 static inline void transport_free_pages(struct se_cmd *cmd)
 {
 	if (cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC) {
+		/*
+		 * Release special case READ buffer payload required for
+		 * SG_TO_MEM_NOALLOC to function with COMPARE_AND_WRITE
+		 */
+		if (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) {
+			transport_free_sgl(cmd->t_bidi_data_sg,
+					   cmd->t_bidi_data_nents);
+			cmd->t_bidi_data_sg = NULL;
+			cmd->t_bidi_data_nents = 0;
+		}
 		transport_reset_sgl_orig(cmd);
 		return;
 	}
@@ -2246,6 +2261,7 @@ sense_reason_t
 transport_generic_new_cmd(struct se_cmd *cmd)
 {
 	int ret = 0;
+	bool zero_flag = !(cmd->se_cmd_flags & SCF_SCSI_DATA_CDB);
 
 	/*
 	 * Determine is the TCM fabric module has already allocated physical
@@ -2254,7 +2270,6 @@ transport_generic_new_cmd(struct se_cmd
 	 */
 	if (!(cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC) &&
 	    cmd->data_length) {
-		bool zero_flag = !(cmd->se_cmd_flags & SCF_SCSI_DATA_CDB);
 
 		if ((cmd->se_cmd_flags & SCF_BIDI) ||
 		    (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE)) {
@@ -2285,6 +2300,20 @@ transport_generic_new_cmd(struct se_cmd
 				       cmd->data_length, zero_flag);
 		if (ret < 0)
 			return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
+	} else if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) &&
+		    cmd->data_length) {
+		/*
+		 * Special case for COMPARE_AND_WRITE with fabrics
+		 * using SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC.
+		 */
+		u32 caw_length = cmd->t_task_nolb *
+				 cmd->se_dev->dev_attrib.block_size;
+
+		ret = target_alloc_sgl(&cmd->t_bidi_data_sg,
+				       &cmd->t_bidi_data_nents,
+				       caw_length, zero_flag);
+		if (ret < 0)
+			return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
 	}
 	/*
 	 * If this command is not a write we can execute it right here,
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -524,7 +524,7 @@ struct se_cmd {
 	sense_reason_t		(*execute_cmd)(struct se_cmd *);
 	sense_reason_t		(*execute_rw)(struct se_cmd *, struct scatterlist *,
 					      u32, enum dma_data_direction);
-	sense_reason_t (*transport_complete_callback)(struct se_cmd *);
+	sense_reason_t (*transport_complete_callback)(struct se_cmd *, bool);
 
 	unsigned char		*t_task_cdb;
 	unsigned char		__t_task_cdb[TCM_MAX_COMMAND_SIZE];



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 107/177] target/file: Fix BUG() when CONFIG_DEBUG_SG=y and DIF protection enabled
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (100 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 106/177] target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 108/177] target/file: Fix UNMAP with DIF protection support Greg Kroah-Hartman
                   ` (73 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Akinobu Mita, Sagi Grimberg,
	Martin K. Petersen, Christoph Hellwig, James E.J. Bottomley,
	Nicholas Bellinger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Akinobu Mita <akinobu.mita@gmail.com>

commit 38da0f49e8aa1649af397d53f88e163d0e60c058 upstream.

When CONFIG_DEBUG_SG=y and DIF protection support enabled, kernel
BUG()s are triggered due to the following two issues:

1) prot_sg is not initialized by sg_init_table().

When CONFIG_DEBUG_SG=y, scatterlist helpers check sg entry has a
correct magic value.

2) vmalloc'ed buffer is passed to sg_set_buf().

sg_set_buf() uses virt_to_page() to convert virtual address to struct
page, but it doesn't work with vmalloc address.  vmalloc_to_page()
should be used instead.  As prot_buf isn't usually too large, so
fix it by allocating prot_buf by kmalloc instead of vmalloc.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/target/target_core_file.c |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

--- a/drivers/target/target_core_file.c
+++ b/drivers/target/target_core_file.c
@@ -274,7 +274,7 @@ static int fd_do_prot_rw(struct se_cmd *
 		     se_dev->prot_length;
 
 	if (!is_write) {
-		fd_prot->prot_buf = vzalloc(prot_size);
+		fd_prot->prot_buf = kzalloc(prot_size, GFP_KERNEL);
 		if (!fd_prot->prot_buf) {
 			pr_err("Unable to allocate fd_prot->prot_buf\n");
 			return -ENOMEM;
@@ -286,9 +286,10 @@ static int fd_do_prot_rw(struct se_cmd *
 					   fd_prot->prot_sg_nents, GFP_KERNEL);
 		if (!fd_prot->prot_sg) {
 			pr_err("Unable to allocate fd_prot->prot_sg\n");
-			vfree(fd_prot->prot_buf);
+			kfree(fd_prot->prot_buf);
 			return -ENOMEM;
 		}
+		sg_init_table(fd_prot->prot_sg, fd_prot->prot_sg_nents);
 		size = prot_size;
 
 		for_each_sg(fd_prot->prot_sg, sg, fd_prot->prot_sg_nents, i) {
@@ -318,7 +319,7 @@ static int fd_do_prot_rw(struct se_cmd *
 
 	if (is_write || ret < 0) {
 		kfree(fd_prot->prot_sg);
-		vfree(fd_prot->prot_buf);
+		kfree(fd_prot->prot_buf);
 	}
 
 	return ret;
@@ -653,11 +654,11 @@ fd_execute_rw(struct se_cmd *cmd, struct
 						 0, fd_prot.prot_sg, 0);
 			if (rc) {
 				kfree(fd_prot.prot_sg);
-				vfree(fd_prot.prot_buf);
+				kfree(fd_prot.prot_buf);
 				return rc;
 			}
 			kfree(fd_prot.prot_sg);
-			vfree(fd_prot.prot_buf);
+			kfree(fd_prot.prot_buf);
 		}
 	} else {
 		memset(&fd_prot, 0, sizeof(struct fd_prot));
@@ -673,7 +674,7 @@ fd_execute_rw(struct se_cmd *cmd, struct
 						  0, fd_prot.prot_sg, 0);
 			if (rc) {
 				kfree(fd_prot.prot_sg);
-				vfree(fd_prot.prot_buf);
+				kfree(fd_prot.prot_buf);
 				return rc;
 			}
 		}
@@ -709,7 +710,7 @@ fd_execute_rw(struct se_cmd *cmd, struct
 
 	if (ret < 0) {
 		kfree(fd_prot.prot_sg);
-		vfree(fd_prot.prot_buf);
+		kfree(fd_prot.prot_buf);
 		return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
 	}
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 108/177] target/file: Fix UNMAP with DIF protection support
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (101 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 107/177] target/file: Fix BUG() when CONFIG_DEBUG_SG=y and DIF protection enabled Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 109/177] target/file: Fix SG table for prot_buf initialization Greg Kroah-Hartman
                   ` (72 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Akinobu Mita, Sagi Grimberg,
	Martin K. Petersen, Christoph Hellwig, James E.J. Bottomley,
	Nicholas Bellinger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Akinobu Mita <akinobu.mita@gmail.com>

commit 64d240b721b21e266ffde645ec965c3b6d1c551f upstream.

When UNMAP command is issued with DIF protection support enabled,
the protection info for the unmapped region is remain unchanged.
So READ command for the region causes data integrity failure.

This fixes it by invalidating protection info for the unmapped region
by filling with 0xff pattern.  This change also adds helper function
fd_do_prot_fill() in order to reduce code duplication with existing
fd_format_prot().

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/target/target_core_file.c |   86 ++++++++++++++++++++++++++------------
 1 file changed, 61 insertions(+), 25 deletions(-)

--- a/drivers/target/target_core_file.c
+++ b/drivers/target/target_core_file.c
@@ -545,6 +545,56 @@ fd_execute_write_same(struct se_cmd *cmd
 	return 0;
 }
 
+static int
+fd_do_prot_fill(struct se_device *se_dev, sector_t lba, sector_t nolb,
+		void *buf, size_t bufsize)
+{
+	struct fd_dev *fd_dev = FD_DEV(se_dev);
+	struct file *prot_fd = fd_dev->fd_prot_file;
+	sector_t prot_length, prot;
+	loff_t pos = lba * se_dev->prot_length;
+
+	if (!prot_fd) {
+		pr_err("Unable to locate fd_dev->fd_prot_file\n");
+		return -ENODEV;
+	}
+
+	prot_length = nolb * se_dev->prot_length;
+
+	for (prot = 0; prot < prot_length;) {
+		sector_t len = min_t(sector_t, bufsize, prot_length - prot);
+		ssize_t ret = kernel_write(prot_fd, buf, len, pos + prot);
+
+		if (ret != len) {
+			pr_err("vfs_write to prot file failed: %zd\n", ret);
+			return ret < 0 ? ret : -ENODEV;
+		}
+		prot += ret;
+	}
+
+	return 0;
+}
+
+static int
+fd_do_prot_unmap(struct se_cmd *cmd, sector_t lba, sector_t nolb)
+{
+	void *buf;
+	int rc;
+
+	buf = (void *)__get_free_page(GFP_KERNEL);
+	if (!buf) {
+		pr_err("Unable to allocate FILEIO prot buf\n");
+		return -ENOMEM;
+	}
+	memset(buf, 0xff, PAGE_SIZE);
+
+	rc = fd_do_prot_fill(cmd->se_dev, lba, nolb, buf, PAGE_SIZE);
+
+	free_page((unsigned long)buf);
+
+	return rc;
+}
+
 static sense_reason_t
 fd_do_unmap(struct se_cmd *cmd, void *priv, sector_t lba, sector_t nolb)
 {
@@ -552,6 +602,12 @@ fd_do_unmap(struct se_cmd *cmd, void *pr
 	struct inode *inode = file->f_mapping->host;
 	int ret;
 
+	if (cmd->se_dev->dev_attrib.pi_prot_type) {
+		ret = fd_do_prot_unmap(cmd, lba, nolb);
+		if (ret)
+			return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
+	}
+
 	if (S_ISBLK(inode->i_mode)) {
 		/* The backend is block device, use discard */
 		struct block_device *bdev = inode->i_bdev;
@@ -874,48 +930,28 @@ static int fd_init_prot(struct se_device
 
 static int fd_format_prot(struct se_device *dev)
 {
-	struct fd_dev *fd_dev = FD_DEV(dev);
-	struct file *prot_fd = fd_dev->fd_prot_file;
-	sector_t prot_length, prot;
 	unsigned char *buf;
-	loff_t pos = 0;
 	int unit_size = FDBD_FORMAT_UNIT_SIZE * dev->dev_attrib.block_size;
-	int rc, ret = 0, size, len;
+	int ret;
 
 	if (!dev->dev_attrib.pi_prot_type) {
 		pr_err("Unable to format_prot while pi_prot_type == 0\n");
 		return -ENODEV;
 	}
-	if (!prot_fd) {
-		pr_err("Unable to locate fd_dev->fd_prot_file\n");
-		return -ENODEV;
-	}
 
 	buf = vzalloc(unit_size);
 	if (!buf) {
 		pr_err("Unable to allocate FILEIO prot buf\n");
 		return -ENOMEM;
 	}
-	prot_length = (dev->transport->get_blocks(dev) + 1) * dev->prot_length;
-	size = prot_length;
 
 	pr_debug("Using FILEIO prot_length: %llu\n",
-		 (unsigned long long)prot_length);
+		 (unsigned long long)(dev->transport->get_blocks(dev) + 1) *
+					dev->prot_length);
 
 	memset(buf, 0xff, unit_size);
-	for (prot = 0; prot < prot_length; prot += unit_size) {
-		len = min(unit_size, size);
-		rc = kernel_write(prot_fd, buf, len, pos);
-		if (rc != len) {
-			pr_err("vfs_write to prot file failed: %d\n", rc);
-			ret = -ENODEV;
-			goto out;
-		}
-		pos += len;
-		size -= len;
-	}
-
-out:
+	ret = fd_do_prot_fill(dev, 0, dev->transport->get_blocks(dev) + 1,
+			      buf, unit_size);
 	vfree(buf);
 	return ret;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 109/177] target/file: Fix SG table for prot_buf initialization
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (102 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 108/177] target/file: Fix UNMAP with DIF protection support Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 110/177] iser-target: Fix session hang in case of an rdma read DIF error Greg Kroah-Hartman
                   ` (71 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Akinobu Mita, Sagi Grimberg,
	Martin K. Petersen, Christoph Hellwig, James E.J. Bottomley,
	Nicholas Bellinger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Akinobu Mita <akinobu.mita@gmail.com>

commit c836777830428372074d5129ac513e1472c99791 upstream.

In fd_do_prot_rw(), it allocates prot_buf which is used to copy from
se_cmd->t_prot_sg by sbc_dif_copy_prot().  The SG table for prot_buf
is also initialized by allocating 'se_cmd->t_prot_nents' entries of
scatterlist and setting the data length of each entry to PAGE_SIZE
at most.

However if se_cmd->t_prot_sg contains a clustered entry (i.e.
sg->length > PAGE_SIZE), the SG table for prot_buf can't be
initialized correctly and sbc_dif_copy_prot() can't copy to prot_buf.
(This actually happened with TCM loopback fabric module)

As prot_buf is allocated by kzalloc() and it's physically contiguous,
we only need a single scatterlist entry.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/target/target_core_file.c |   21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

--- a/drivers/target/target_core_file.c
+++ b/drivers/target/target_core_file.c
@@ -264,11 +264,10 @@ static int fd_do_prot_rw(struct se_cmd *
 	struct se_device *se_dev = cmd->se_dev;
 	struct fd_dev *dev = FD_DEV(se_dev);
 	struct file *prot_fd = dev->fd_prot_file;
-	struct scatterlist *sg;
 	loff_t pos = (cmd->t_task_lba * se_dev->prot_length);
 	unsigned char *buf;
-	u32 prot_size, len, size;
-	int rc, ret = 1, i;
+	u32 prot_size;
+	int rc, ret = 1;
 
 	prot_size = (cmd->data_length / se_dev->dev_attrib.block_size) *
 		     se_dev->prot_length;
@@ -281,24 +280,16 @@ static int fd_do_prot_rw(struct se_cmd *
 		}
 		buf = fd_prot->prot_buf;
 
-		fd_prot->prot_sg_nents = cmd->t_prot_nents;
-		fd_prot->prot_sg = kzalloc(sizeof(struct scatterlist) *
-					   fd_prot->prot_sg_nents, GFP_KERNEL);
+		fd_prot->prot_sg_nents = 1;
+		fd_prot->prot_sg = kzalloc(sizeof(struct scatterlist),
+					   GFP_KERNEL);
 		if (!fd_prot->prot_sg) {
 			pr_err("Unable to allocate fd_prot->prot_sg\n");
 			kfree(fd_prot->prot_buf);
 			return -ENOMEM;
 		}
 		sg_init_table(fd_prot->prot_sg, fd_prot->prot_sg_nents);
-		size = prot_size;
-
-		for_each_sg(fd_prot->prot_sg, sg, fd_prot->prot_sg_nents, i) {
-
-			len = min_t(u32, PAGE_SIZE, size);
-			sg_set_buf(sg, buf, len);
-			size -= len;
-			buf += len;
-		}
+		sg_set_buf(fd_prot->prot_sg, buf, prot_size);
 	}
 
 	if (is_write) {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 110/177] iser-target: Fix session hang in case of an rdma read DIF error
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (103 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 109/177] target/file: Fix SG table for prot_buf initialization Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 111/177] iser-target: Fix possible deadlock in RDMA_CM connection error Greg Kroah-Hartman
                   ` (70 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sagi Grimberg, Nicholas Bellinger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sagi Grimberg <sagig@mellanox.com>

commit 364189f0ada5478e4faf8a552d6071a650d757cd upstream.

This hang was a result of a missing command put when
a DIF error occurred during a rdma read (and we sent
an CHECK_CONDITION error without passing it to the
backend).

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/ulp/isert/ib_isert.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -1848,11 +1848,13 @@ isert_completion_rdma_read(struct iser_t
 	cmd->i_state = ISTATE_RECEIVED_LAST_DATAOUT;
 	spin_unlock_bh(&cmd->istate_lock);
 
-	if (ret)
+	if (ret) {
+		target_put_sess_cmd(se_cmd->se_sess, se_cmd);
 		transport_send_check_condition_and_sense(se_cmd,
 							 se_cmd->pi_err, 0);
-	else
+	} else {
 		target_execute_cmd(se_cmd);
+	}
 }
 
 static void



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 111/177] iser-target: Fix possible deadlock in RDMA_CM connection error
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (104 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 110/177] iser-target: Fix session hang in case of an rdma read DIF error Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 112/177] Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card Greg Kroah-Hartman
                   ` (69 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sagi Grimberg, Nicholas Bellinger

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sagi Grimberg <sagig@mellanox.com>

commit 4a579da2586bd3b79b025947ea24ede2bbfede62 upstream.

Before we reach to connection established we may get an
error event. In this case the core won't teardown this
connection (never established it), so we take care of freeing
it ourselves.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/ulp/isert/ib_isert.c |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -222,7 +222,7 @@ fail:
 static void
 isert_free_rx_descriptors(struct isert_conn *isert_conn)
 {
-	struct ib_device *ib_dev = isert_conn->conn_cm_id->device;
+	struct ib_device *ib_dev = isert_conn->conn_device->ib_device;
 	struct iser_rx_desc *rx_desc;
 	int i;
 
@@ -719,8 +719,8 @@ out:
 static void
 isert_connect_release(struct isert_conn *isert_conn)
 {
-	struct ib_device *ib_dev = isert_conn->conn_cm_id->device;
 	struct isert_device *device = isert_conn->conn_device;
+	struct ib_device *ib_dev = device->ib_device;
 
 	isert_dbg("conn %p\n", isert_conn);
 
@@ -728,7 +728,8 @@ isert_connect_release(struct isert_conn
 		isert_conn_free_fastreg_pool(isert_conn);
 
 	isert_free_rx_descriptors(isert_conn);
-	rdma_destroy_id(isert_conn->conn_cm_id);
+	if (isert_conn->conn_cm_id)
+		rdma_destroy_id(isert_conn->conn_cm_id);
 
 	if (isert_conn->conn_qp) {
 		struct isert_comp *comp = isert_conn->conn_qp->recv_cq->cq_context;
@@ -878,12 +879,15 @@ isert_disconnected_handler(struct rdma_c
 	return 0;
 }
 
-static void
+static int
 isert_connect_error(struct rdma_cm_id *cma_id)
 {
 	struct isert_conn *isert_conn = cma_id->qp->qp_context;
 
+	isert_conn->conn_cm_id = NULL;
 	isert_put_conn(isert_conn);
+
+	return -1;
 }
 
 static int
@@ -912,7 +916,7 @@ isert_cma_handler(struct rdma_cm_id *cma
 	case RDMA_CM_EVENT_REJECTED:       /* FALLTHRU */
 	case RDMA_CM_EVENT_UNREACHABLE:    /* FALLTHRU */
 	case RDMA_CM_EVENT_CONNECT_ERROR:
-		isert_connect_error(cma_id);
+		ret = isert_connect_error(cma_id);
 		break;
 	default:
 		isert_err("Unhandled RDMA CMA event: %d\n", event->event);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 112/177] Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (105 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 111/177] iser-target: Fix possible deadlock in RDMA_CM connection error Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 113/177] arm64: fix midr range for Cortex-A57 erratum 832075 Greg Kroah-Hartman
                   ` (68 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alexander Ploumistos, Marcel Holtmann

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alexander Ploumistos <alex.ploumistos@gmail.com>

commit 2eeff0b4317a02f0e281df891d990194f0737aae upstream.

Add 04f2:aff1 to ath3k.c supported devices list and btusb.c blacklist, so
that the device can load the ath3k firmware and re-enumerate itself as an
AR3011 device.

T:  Bus=05 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=04f2 ProdID=aff1 Rev= 0.01
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms

Signed-off-by: Alexander Ploumistos <alexpl@fedoraproject.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/bluetooth/ath3k.c |    1 +
 drivers/bluetooth/btusb.c |    1 +
 2 files changed, 2 insertions(+)

--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -65,6 +65,7 @@ static const struct usb_device_id ath3k_
 	/* Atheros AR3011 with sflash firmware*/
 	{ USB_DEVICE(0x0489, 0xE027) },
 	{ USB_DEVICE(0x0489, 0xE03D) },
+	{ USB_DEVICE(0x04F2, 0xAFF1) },
 	{ USB_DEVICE(0x0930, 0x0215) },
 	{ USB_DEVICE(0x0CF3, 0x3002) },
 	{ USB_DEVICE(0x0CF3, 0xE019) },
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -153,6 +153,7 @@ static const struct usb_device_id blackl
 	/* Atheros 3011 with sflash firmware */
 	{ USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE },
 	{ USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE },
+	{ USB_DEVICE(0x04f2, 0xaff1), .driver_info = BTUSB_IGNORE },
 	{ USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
 	{ USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
 	{ USB_DEVICE(0x0cf3, 0xe019), .driver_info = BTUSB_IGNORE },



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 113/177] arm64: fix midr range for Cortex-A57 erratum 832075
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (106 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 112/177] Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 114/177] arm64: head.S: ensure visibility of page tables Greg Kroah-Hartman
                   ` (67 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andre Przywara, Paul Walmsley,
	Bo Yan, Will Deacon

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Bo Yan <byan@nvidia.com>

commit 6d1966dfd6e0ad2f8aa4b664ae1a62e33abe1998 upstream.

Register MIDR_EL1 is masked to get variant and revision fields, then
compared against midr_range_min and midr_range_max when checking
whether CPU is affected by any particular erratum. However, variant
and revision fields in MIDR_EL1 are separated by 16 bits, so the min
and max of midr range should be constructed accordingly, otherwise
the patch will not be applied when variant field is non-0.

Acked-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Bo Yan <byan@nvidia.com>
[will: use MIDR_VARIANT_SHIFT to construct upper bound]
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm64/kernel/cpu_errata.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/arch/arm64/kernel/cpu_errata.c
+++ b/arch/arm64/kernel/cpu_errata.c
@@ -88,7 +88,8 @@ struct arm64_cpu_capabilities arm64_erra
 	/* Cortex-A57 r0p0 - r1p2 */
 		.desc = "ARM erratum 832075",
 		.capability = ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE,
-		MIDR_RANGE(MIDR_CORTEX_A57, 0x00, 0x12),
+		MIDR_RANGE(MIDR_CORTEX_A57, 0x00,
+			   (1 << MIDR_VARIANT_SHIFT) | 2),
 	},
 #endif
 	{



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 114/177] arm64: head.S: ensure visibility of page tables
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (107 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 113/177] arm64: fix midr range for Cortex-A57 erratum 832075 Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 115/177] arm64: apply alternatives for !SMP kernels Greg Kroah-Hartman
                   ` (66 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mark Rutland, Catalin Marinas, Will Deacon

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Mark Rutland <mark.rutland@arm.com>

commit 91d57155dc5ab4b311624b7ee570339b6af19ad5 upstream.

After writing the page tables, we use __inval_cache_range to invalidate
any stale cache entries. Strongly Ordered memory accesses are not
ordered w.r.t. cache maintenance instructions, and hence explicit memory
barriers are required to provide this ordering. However,
__inval_cache_range was written to be used on Normal Cacheable memory
once the MMU and caches are on, and does not have any barriers prior to
the DC instructions.

This patch adds a DMB between the page tables being written and the
corresponding cachelines being invalidated, ensuring that the
invalidation makes the new data visible to subsequent cacheable
accesses. A barrier is not required before the prior invalidate as we do
not access the page table memory area prior to this, and earlier
barriers in preserve_boot_args and set_cpu_boot_mode_flag ensures
ordering w.r.t. any stores performed prior to entering Linux.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Fixes: c218bca74eeafa2f ("arm64: Relax the kernel cache requirements for boot")
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm64/kernel/head.S |    1 +
 1 file changed, 1 insertion(+)

--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -426,6 +426,7 @@ __create_page_tables:
 	 */
 	mov	x0, x25
 	add	x1, x26, #SWAPPER_DIR_SIZE
+	dmb	sy
 	bl	__inval_cache_range
 
 	mov	lr, x27



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 115/177] arm64: apply alternatives for !SMP kernels
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (108 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 114/177] arm64: head.S: ensure visibility of page tables Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 116/177] arm64: errata: add workaround for cortex-a53 erratum #845719 Greg Kroah-Hartman
                   ` (65 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andre Przywara, Catalin Marinas,
	Ard Biesheuvel, Mark Rutland, Will Deacon

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Mark Rutland <mark.rutland@arm.com>

commit 137650aad96c9594683445e41afa8ac5a2097520 upstream.

Currently we only perform alternative patching for kernels built with
CONFIG_SMP, as we call apply_alternatives_all() in smp.c, which is only
built for CONFIG_SMP. Thus !SMP kernels may not have necessary
alternatives patched in.

This patch ensures that we call apply_alternatives_all() once all CPUs
are booted, even for !SMP kernels, by having the smp_init_cpus() stub
call this for !SMP kernels via up_late_init. A new wrapper,
do_post_cpus_up_work, is added so we can hook other calls here later
(e.g. boot mode logging).

Cc: Andre Przywara <andre.przywara@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Fixes: e039ee4ee3fcf174 ("arm64: add alternative runtime patching")
Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm64/Kconfig                |    4 ++++
 arch/arm64/include/asm/smp_plat.h |    2 ++
 arch/arm64/kernel/setup.c         |   12 ++++++++++++
 arch/arm64/kernel/smp.c           |    2 +-
 4 files changed, 19 insertions(+), 1 deletion(-)

--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -416,6 +416,10 @@ config HOTPLUG_CPU
 
 source kernel/Kconfig.preempt
 
+config UP_LATE_INIT
+       def_bool y
+       depends on !SMP
+
 config HZ
 	int
 	default 100
--- a/arch/arm64/include/asm/smp_plat.h
+++ b/arch/arm64/include/asm/smp_plat.h
@@ -40,4 +40,6 @@ static inline u32 mpidr_hash_size(void)
 extern u64 __cpu_logical_map[NR_CPUS];
 #define cpu_logical_map(cpu)    __cpu_logical_map[cpu]
 
+void __init do_post_cpus_up_work(void);
+
 #endif /* __ASM_SMP_PLAT_H */
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -206,6 +206,18 @@ static void __init smp_build_mpidr_hash(
 }
 #endif
 
+void __init do_post_cpus_up_work(void)
+{
+	apply_alternatives_all();
+}
+
+#ifdef CONFIG_UP_LATE_INIT
+void __init up_late_init(void)
+{
+	do_post_cpus_up_work();
+}
+#endif /* CONFIG_UP_LATE_INIT */
+
 static void __init setup_processor(void)
 {
 	struct cpu_info *cpu_info;
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -310,7 +310,7 @@ void cpu_die(void)
 void __init smp_cpus_done(unsigned int max_cpus)
 {
 	pr_info("SMP: Total of %d processors activated.\n", num_online_cpus());
-	apply_alternatives_all();
+	do_post_cpus_up_work();
 }
 
 void __init smp_prepare_boot_cpu(void)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 116/177] arm64: errata: add workaround for cortex-a53 erratum #845719
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (109 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 115/177] arm64: apply alternatives for !SMP kernels Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 117/177] powerpc/powernv: Dont map M64 segments using M32DT Greg Kroah-Hartman
                   ` (64 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marc Zyngier, Mark Rutland,
	Will Deacon, Kevin Hilman

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Will Deacon <will.deacon@arm.com>

commit 905e8c5dcaa147163672b06fe9dcb5abaacbc711 upstream.

When running a compat (AArch32) userspace on Cortex-A53, a load at EL0
from a virtual address that matches the bottom 32 bits of the virtual
address used by a recent load at (AArch64) EL1 might return incorrect
data.

This patch works around the issue by writing to the contextidr_el1
register on the exception return path when returning to a 32-bit task.
This workaround is patched in at runtime based on the MIDR value of the
processor.

Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm64/Kconfig                  |   21 +++++++++++++++++++++
 arch/arm64/include/asm/cpufeature.h |    3 ++-
 arch/arm64/kernel/cpu_errata.c      |    8 ++++++++
 arch/arm64/kernel/entry.S           |   20 ++++++++++++++++++++
 4 files changed, 51 insertions(+), 1 deletion(-)

--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -306,6 +306,27 @@ config ARM64_ERRATUM_832075
 
 	  If unsure, say Y.
 
+config ARM64_ERRATUM_845719
+	bool "Cortex-A53: 845719: a load might read incorrect data"
+	depends on COMPAT
+	default y
+	help
+	  This option adds an alternative code sequence to work around ARM
+	  erratum 845719 on Cortex-A53 parts up to r0p4.
+
+	  When running a compat (AArch32) userspace on an affected Cortex-A53
+	  part, a load at EL0 from a virtual address that matches the bottom 32
+	  bits of the virtual address used by a recent load at (AArch64) EL1
+	  might return incorrect data.
+
+	  The workaround is to write the contextidr_el1 register on exception
+	  return to a 32-bit task.
+	  Please note that this does not necessarily enable the workaround,
+	  as it depends on the alternative framework, which will only patch
+	  the kernel if an affected CPU is detected.
+
+	  If unsure, say Y.
+
 endmenu
 
 
--- a/arch/arm64/include/asm/cpufeature.h
+++ b/arch/arm64/include/asm/cpufeature.h
@@ -23,8 +23,9 @@
 
 #define ARM64_WORKAROUND_CLEAN_CACHE		0
 #define ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE	1
+#define ARM64_WORKAROUND_845719			2
 
-#define ARM64_NCAPS				2
+#define ARM64_NCAPS				3
 
 #ifndef __ASSEMBLY__
 
--- a/arch/arm64/kernel/cpu_errata.c
+++ b/arch/arm64/kernel/cpu_errata.c
@@ -92,6 +92,14 @@ struct arm64_cpu_capabilities arm64_erra
 			   (1 << MIDR_VARIANT_SHIFT) | 2),
 	},
 #endif
+#ifdef CONFIG_ARM64_ERRATUM_845719
+	{
+	/* Cortex-A53 r0p[01234] */
+		.desc = "ARM erratum 845719",
+		.capability = ARM64_WORKAROUND_845719,
+		MIDR_RANGE(MIDR_CORTEX_A53, 0x00, 0x04),
+	},
+#endif
 	{
 	}
 };
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -21,8 +21,10 @@
 #include <linux/init.h>
 #include <linux/linkage.h>
 
+#include <asm/alternative-asm.h>
 #include <asm/assembler.h>
 #include <asm/asm-offsets.h>
+#include <asm/cpufeature.h>
 #include <asm/errno.h>
 #include <asm/esr.h>
 #include <asm/thread_info.h>
@@ -120,6 +122,24 @@
 	ct_user_enter
 	ldr	x23, [sp, #S_SP]		// load return stack pointer
 	msr	sp_el0, x23
+
+#ifdef CONFIG_ARM64_ERRATUM_845719
+	alternative_insn						\
+	"nop",								\
+	"tbz x22, #4, 1f",						\
+	ARM64_WORKAROUND_845719
+#ifdef CONFIG_PID_IN_CONTEXTIDR
+	alternative_insn						\
+	"nop; nop",							\
+	"mrs x29, contextidr_el1; msr contextidr_el1, x29; 1:",		\
+	ARM64_WORKAROUND_845719
+#else
+	alternative_insn						\
+	"nop",								\
+	"msr contextidr_el1, xzr; 1:",					\
+	ARM64_WORKAROUND_845719
+#endif
+#endif
 	.endif
 	msr	elr_el1, x21			// set up the return data
 	msr	spsr_el1, x22



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 117/177] powerpc/powernv: Dont map M64 segments using M32DT
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (110 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 116/177] arm64: errata: add workaround for cortex-a53 erratum #845719 Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 118/177] powerpc, jump_label: Include linux/jump_label.h to get HAVE_JUMP_LABEL define Greg Kroah-Hartman
                   ` (63 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Gavin Shan, Benjamin Herrenschmidt

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Gavin Shan <gwshan@linux.vnet.ibm.com>

commit 027fa02f84e851e21daffdf8900d6117071890f8 upstream.

If M64 has been supported, the prefetchable 64-bits memory resources
shouldn't be mapped to the corresponding PE# via M32DT. Unfortunately,
we're doing that in pnv_ioda_setup_pe_seg() wrongly. The issue was
introduced by commit 262af55 ("powerpc/powernv: Enable M64 aperatus
for PHB3"). The patch fixes the issue by simply skipping M64 resources
when updating to M32DT.

Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/platforms/powernv/pci-ioda.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -1750,7 +1750,8 @@ static void pnv_ioda_setup_pe_seg(struct
 				region.start += phb->ioda.io_segsize;
 				index++;
 			}
-		} else if (res->flags & IORESOURCE_MEM) {
+		} else if ((res->flags & IORESOURCE_MEM) &&
+			   !pnv_pci_is_mem_pref_64(res->flags)) {
 			region.start = res->start -
 				       hose->mem_offset[0] -
 				       phb->ioda.m32_pci_base;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 118/177] powerpc, jump_label: Include linux/jump_label.h to get HAVE_JUMP_LABEL define
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (111 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 117/177] powerpc/powernv: Dont map M64 segments using M32DT Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 119/177] powerpc: Fix missing L2 cache size in /sys/devices/system/cpu Greg Kroah-Hartman
                   ` (62 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anton Blanchard, Michael Ellerman,
	Peter Zijlstra (Intel),
	Andrew Morton, Linus Torvalds, Paul E. McKenney, Thomas Gleixner,
	benh, catalin.marinas, davem, heiko.carstens, jbaron, linux,
	linuxppc-dev, liuj97, mgorman, mmarek, paulus, ralf, rostedt,
	schwidefsky, will.deacon, Ingo Molnar

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Anton Blanchard <anton@samba.org>

commit 58995a9a5b292458f94a2356b8c878230fa56fe0 upstream.

Commit 1bc9e47aa8e4 ("powerpc/jump_label: Use HAVE_JUMP_LABEL")
converted uses of CONFIG_JUMP_LABEL to HAVE_JUMP_LABEL in
some assembly files.

HAVE_JUMP_LABEL is defined in linux/jump_label.h, so we need to
include this or we always get the non jump label fallback code.

Signed-off-by: Anton Blanchard <anton@samba.org>
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: benh@kernel.crashing.org
Cc: catalin.marinas@arm.com
Cc: davem@davemloft.net
Cc: heiko.carstens@de.ibm.com
Cc: jbaron@akamai.com
Cc: linux@arm.linux.org.uk
Cc: linuxppc-dev@lists.ozlabs.org
Cc: liuj97@gmail.com
Cc: mgorman@suse.de
Cc: mmarek@suse.cz
Cc: paulus@samba.org
Cc: ralf@linux-mips.org
Cc: rostedt@goodmis.org
Cc: schwidefsky@de.ibm.com
Cc: will.deacon@arm.com
Fixes: 1bc9e47aa8e4 ("powerpc/jump_label: Use HAVE_JUMP_LABEL")
Link: http://lkml.kernel.org/r/1428551492-21977-3-git-send-email-anton@samba.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/platforms/powernv/opal-wrappers.S |    2 +-
 arch/powerpc/platforms/pseries/hvCall.S        |    2 +-
 arch/powerpc/platforms/pseries/lpar.c          |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

--- a/arch/powerpc/platforms/powernv/opal-wrappers.S
+++ b/arch/powerpc/platforms/powernv/opal-wrappers.S
@@ -9,11 +9,11 @@
  * 2 of the License, or (at your option) any later version.
  */
 
+#include <linux/jump_label.h>
 #include <asm/ppc_asm.h>
 #include <asm/hvcall.h>
 #include <asm/asm-offsets.h>
 #include <asm/opal.h>
-#include <asm/jump_label.h>
 
 	.section	".text"
 
--- a/arch/powerpc/platforms/pseries/hvCall.S
+++ b/arch/powerpc/platforms/pseries/hvCall.S
@@ -7,12 +7,12 @@
  * as published by the Free Software Foundation; either version
  * 2 of the License, or (at your option) any later version.
  */
+#include <linux/jump_label.h>
 #include <asm/hvcall.h>
 #include <asm/processor.h>
 #include <asm/ppc_asm.h>
 #include <asm/asm-offsets.h>
 #include <asm/ptrace.h>
-#include <asm/jump_label.h>
 
 	.section	".text"
 	
--- a/arch/powerpc/platforms/pseries/lpar.c
+++ b/arch/powerpc/platforms/pseries/lpar.c
@@ -26,7 +26,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/console.h>
 #include <linux/export.h>
-#include <linux/static_key.h>
+#include <linux/jump_label.h>
 #include <asm/processor.h>
 #include <asm/mmu.h>
 #include <asm/page.h>



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 119/177] powerpc: Fix missing L2 cache size in /sys/devices/system/cpu
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (112 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 118/177] powerpc, jump_label: Include linux/jump_label.h to get HAVE_JUMP_LABEL define Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 120/177] powerpc/cell: Fix crash in iic_setup_cpu() after per_cpu changes Greg Kroah-Hartman
                   ` (61 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Dave Olson, Michael Ellerman

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Dave Olson <olson@cumulusnetworks.com>

commit f7e9e358362557c3aa2c1ec47490f29fe880a09e upstream.

This problem appears to have been introduced in 2.6.29 by commit
93197a36a9c1 "Rewrite sysfs processor cache info code".

This caused lscpu to error out on at least e500v2 devices, eg:

  error: cannot open /sys/devices/system/cpu/cpu0/cache/index2/size: No such file or directory

Some embedded powerpc systems use cache-size in DTS for the unified L2
cache size, not d-cache-size, so we need to allow for both DTS names.
Added a new CACHE_TYPE_UNIFIED_D cache_type_info structure to handle
this.

Fixes: 93197a36a9c1 ("powerpc: Rewrite sysfs processor cache info code")
Signed-off-by: Dave Olson <olson@cumulusnetworks.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/kernel/cacheinfo.c |   44 ++++++++++++++++++++++++++++++----------
 1 file changed, 34 insertions(+), 10 deletions(-)

--- a/arch/powerpc/kernel/cacheinfo.c
+++ b/arch/powerpc/kernel/cacheinfo.c
@@ -61,12 +61,22 @@ struct cache_type_info {
 };
 
 /* These are used to index the cache_type_info array. */
-#define CACHE_TYPE_UNIFIED     0
-#define CACHE_TYPE_INSTRUCTION 1
-#define CACHE_TYPE_DATA        2
+#define CACHE_TYPE_UNIFIED     0 /* cache-size, cache-block-size, etc. */
+#define CACHE_TYPE_UNIFIED_D   1 /* d-cache-size, d-cache-block-size, etc */
+#define CACHE_TYPE_INSTRUCTION 2
+#define CACHE_TYPE_DATA        3
 
 static const struct cache_type_info cache_type_info[] = {
 	{
+		/* Embedded systems that use cache-size, cache-block-size,
+		 * etc. for the Unified (typically L2) cache. */
+		.name            = "Unified",
+		.size_prop       = "cache-size",
+		.line_size_props = { "cache-line-size",
+				     "cache-block-size", },
+		.nr_sets_prop    = "cache-sets",
+	},
+	{
 		/* PowerPC Processor binding says the [di]-cache-*
 		 * must be equal on unified caches, so just use
 		 * d-cache properties. */
@@ -293,7 +303,8 @@ static struct cache *cache_find_first_si
 {
 	struct cache *iter;
 
-	if (cache->type == CACHE_TYPE_UNIFIED)
+	if (cache->type == CACHE_TYPE_UNIFIED ||
+	    cache->type == CACHE_TYPE_UNIFIED_D)
 		return cache;
 
 	list_for_each_entry(iter, &cache_list, list)
@@ -324,16 +335,29 @@ static bool cache_node_is_unified(const
 	return of_get_property(np, "cache-unified", NULL);
 }
 
-static struct cache *cache_do_one_devnode_unified(struct device_node *node,
-						  int level)
+/*
+ * Unified caches can have two different sets of tags.  Most embedded
+ * use cache-size, etc. for the unified cache size, but open firmware systems
+ * use d-cache-size, etc.   Check on initialization for which type we have, and
+ * return the appropriate structure type.  Assume it's embedded if it isn't
+ * open firmware.  If it's yet a 3rd type, then there will be missing entries
+ * in /sys/devices/system/cpu/cpu0/cache/index2/, and this code will need
+ * to be extended further.
+ */
+static int cache_is_unified_d(const struct device_node *np)
 {
-	struct cache *cache;
+	return of_get_property(np,
+		cache_type_info[CACHE_TYPE_UNIFIED_D].size_prop, NULL) ?
+		CACHE_TYPE_UNIFIED_D : CACHE_TYPE_UNIFIED;
+}
 
+/*
+ */
+static struct cache *cache_do_one_devnode_unified(struct device_node *node, int level)
+{
 	pr_debug("creating L%d ucache for %s\n", level, node->full_name);
 
-	cache = new_cache(CACHE_TYPE_UNIFIED, level, node);
-
-	return cache;
+	return new_cache(cache_is_unified_d(node), level, node);
 }
 
 static struct cache *cache_do_one_devnode_split(struct device_node *node,



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 120/177] powerpc/cell: Fix crash in iic_setup_cpu() after per_cpu changes
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (113 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 119/177] powerpc: Fix missing L2 cache size in /sys/devices/system/cpu Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 121/177] powerpc/cell: Fix cell iommu after it_page_shift changes Greg Kroah-Hartman
                   ` (60 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Michael Ellerman

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Michael Ellerman <mpe@ellerman.id.au>

commit b0dd00addc5035f87ec9c5820dacc1ebc7fcb3e6 upstream.

The conversion from __get_cpu_var() to this_cpu_ptr() in iic_setup_cpu()
is wrong. It causes an oops at boot.

We need the per-cpu address of struct cpu_iic, not cpu_iic.regs->prio.

Sparse noticed this, because we pass a non-iomem pointer to out_be64(),
but we obviously don't check the sparse results often enough.

Fixes: 69111bac42f5 ("powerpc: Replace __get_cpu_var uses")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/platforms/cell/interrupt.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -163,7 +163,7 @@ static unsigned int iic_get_irq(void)
 
 void iic_setup_cpu(void)
 {
-	out_be64(this_cpu_ptr(&cpu_iic.regs->prio), 0xff);
+	out_be64(&this_cpu_ptr(&cpu_iic)->regs->prio, 0xff);
 }
 
 u8 iic_get_target_id(int cpu)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 121/177] powerpc/cell: Fix cell iommu after it_page_shift changes
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (114 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 120/177] powerpc/cell: Fix crash in iic_setup_cpu() after per_cpu changes Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 122/177] ASoC: cs4271: Increase delay time after reset Greg Kroah-Hartman
                   ` (59 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Ellerman, Michael Ellerman

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Michael Ellerman <mpe@ellerman.id.au>

commit 7261b956b276aa97fbf60d00f1d7717d2ea6ee78 upstream.

The patch to add it_page_shift incorrectly changed the increment of
uaddr to use it_page_shift, rather then (1 << it_page_shift).

This broke booting on at least some Cell blades, as the iommu was
basically non-functional.

Fixes: 3a553170d35d ("powerpc/iommu: Add it_page_shift field to determine iommu page size")
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/platforms/cell/iommu.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -197,7 +197,7 @@ static int tce_build_cell(struct iommu_t
 
 	io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset);
 
-	for (i = 0; i < npages; i++, uaddr += tbl->it_page_shift)
+	for (i = 0; i < npages; i++, uaddr += (1 << tbl->it_page_shift))
 		io_pte[i] = base_pte | (__pa(uaddr) & CBE_IOPTE_RPN_Mask);
 
 	mb();



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 122/177] ASoC: cs4271: Increase delay time after reset
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (115 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 121/177] powerpc/cell: Fix cell iommu after it_page_shift changes Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 123/177] ASoC: wm8741: Fix rates constraints values Greg Kroah-Hartman
                   ` (58 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Pascal Huerst, Brian Austin, Mark Brown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Pascal Huerst <pascal.huerst@gmail.com>

commit 74ff960222d90999508b4ba0d3449f796695b6d5 upstream.

The delay time after a reset in the codec probe callback was too short,
and did not work on certain hw because the codec needs more time to
power on. This increases the delay time from 1us to 1ms.

Signed-off-by: Pascal Huerst <pascal.huerst@gmail.com>
Acked-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/soc/codecs/cs4271.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/sound/soc/codecs/cs4271.c
+++ b/sound/soc/codecs/cs4271.c
@@ -561,10 +561,10 @@ static int cs4271_codec_probe(struct snd
 	if (gpio_is_valid(cs4271->gpio_nreset)) {
 		/* Reset codec */
 		gpio_direction_output(cs4271->gpio_nreset, 0);
-		udelay(1);
+		mdelay(1);
 		gpio_set_value(cs4271->gpio_nreset, 1);
 		/* Give the codec time to wake up */
-		udelay(1);
+		mdelay(1);
 	}
 
 	ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 123/177] ASoC: wm8741: Fix rates constraints values
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (116 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 122/177] ASoC: cs4271: Increase delay time after reset Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 124/177] ASoC: davinci-evm: drop un-necessary remove function Greg Kroah-Hartman
                   ` (57 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sergej Sawazki, Charles Keepax, Mark Brown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sergej Sawazki <ce3a@gmx.de>

commit 8787041d9bb832b9449b1eb878cedcebce42c61a upstream.

The WM8741 DAC supports the following typical audio sampling rates:
  44.1kHz, 88.2kHz, 176.4kHz (eg: with a master clock of 22.5792MHz)
  32kHz, 48kHz, 96kHz, 192kHz (eg: with a master clock of 24.576MHz)

For the rates lists, we should use 82000 instead of 88235, 176400
instead of 1764000 and 192000 instead of 19200 (seems to be a typo).

Signed-off-by: Sergej Sawazki <ce3a@gmx.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/soc/codecs/wm8741.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

--- a/sound/soc/codecs/wm8741.c
+++ b/sound/soc/codecs/wm8741.c
@@ -123,7 +123,7 @@ static struct {
 };
 
 static const unsigned int rates_11289[] = {
-	44100, 88235,
+	44100, 88200,
 };
 
 static const struct snd_pcm_hw_constraint_list constraints_11289 = {
@@ -150,7 +150,7 @@ static const struct snd_pcm_hw_constrain
 };
 
 static const unsigned int rates_16934[] = {
-	44100, 88235,
+	44100, 88200,
 };
 
 static const struct snd_pcm_hw_constraint_list constraints_16934 = {
@@ -168,7 +168,7 @@ static const struct snd_pcm_hw_constrain
 };
 
 static const unsigned int rates_22579[] = {
-	44100, 88235, 1764000
+	44100, 88200, 176400
 };
 
 static const struct snd_pcm_hw_constraint_list constraints_22579 = {
@@ -186,7 +186,7 @@ static const struct snd_pcm_hw_constrain
 };
 
 static const unsigned int rates_36864[] = {
-	48000, 96000, 19200
+	48000, 96000, 192000
 };
 
 static const struct snd_pcm_hw_constraint_list constraints_36864 = {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 124/177] ASoC: davinci-evm: drop un-necessary remove function
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (117 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 123/177] ASoC: wm8741: Fix rates constraints values Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 125/177] ASoC: pcm512x: Add Analogue prefix to analogue volume controls Greg Kroah-Hartman
                   ` (56 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Manish Badarkhe, Jyri Sarha, Mark Brown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Manish Badarkhe <manishvb@ti.com>

commit a57069e33fbc6625f39e1b09c88ea44629a35206 upstream.

As davinci card gets registered using 'devm_' api
there is no need to unregister the card in 'remove'
function.
Hence drop the 'remove' function.

Fixes: ee2f615d6e59c (ASoC: davinci-evm: Add device tree binding)
Signed-off-by: Manish Badarkhe <manishvb@ti.com>
Signed-off-by: Jyri Sarha <jsarha@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/soc/davinci/davinci-evm.c |   10 ----------
 1 file changed, 10 deletions(-)

--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -431,18 +431,8 @@ static int davinci_evm_probe(struct plat
 	return ret;
 }
 
-static int davinci_evm_remove(struct platform_device *pdev)
-{
-	struct snd_soc_card *card = platform_get_drvdata(pdev);
-
-	snd_soc_unregister_card(card);
-
-	return 0;
-}
-
 static struct platform_driver davinci_evm_driver = {
 	.probe		= davinci_evm_probe,
-	.remove		= davinci_evm_remove,
 	.driver		= {
 		.name	= "davinci_evm",
 		.pm	= &snd_soc_pm_ops,



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 125/177] ASoC: pcm512x: Add Analogue prefix to analogue volume controls
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (118 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 124/177] ASoC: davinci-evm: drop un-necessary remove function Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 126/177] ACPICA: Utilities: split IO address types from data type models Greg Kroah-Hartman
                   ` (55 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Howard Mitchell, Mark Brown

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Howard Mitchell <hm@hmbedded.co.uk>

commit 4d9b13c7cc803fbde59d7e998f7de2b9a2101c7e upstream.

This is to ensure that 'alsactl restore' does not apply default
initialisation as the chip reset defaults are preferred.

Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/soc/codecs/pcm512x.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/sound/soc/codecs/pcm512x.c
+++ b/sound/soc/codecs/pcm512x.c
@@ -261,9 +261,9 @@ static const struct soc_enum pcm512x_ved
 static const struct snd_kcontrol_new pcm512x_controls[] = {
 SOC_DOUBLE_R_TLV("Digital Playback Volume", PCM512x_DIGITAL_VOLUME_2,
 		 PCM512x_DIGITAL_VOLUME_3, 0, 255, 1, digital_tlv),
-SOC_DOUBLE_TLV("Playback Volume", PCM512x_ANALOG_GAIN_CTRL,
+SOC_DOUBLE_TLV("Analogue Playback Volume", PCM512x_ANALOG_GAIN_CTRL,
 	       PCM512x_LAGN_SHIFT, PCM512x_RAGN_SHIFT, 1, 1, analog_tlv),
-SOC_DOUBLE_TLV("Playback Boost Volume", PCM512x_ANALOG_GAIN_BOOST,
+SOC_DOUBLE_TLV("Analogue Playback Boost Volume", PCM512x_ANALOG_GAIN_BOOST,
 	       PCM512x_AGBL_SHIFT, PCM512x_AGBR_SHIFT, 1, 0, boost_tlv),
 SOC_DOUBLE("Digital Playback Switch", PCM512x_MUTE, PCM512x_RQML_SHIFT,
 	   PCM512x_RQMR_SHIFT, 1, 1),



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 126/177] ACPICA: Utilities: split IO address types from data type models.
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (119 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 125/177] ASoC: pcm512x: Add Analogue prefix to analogue volume controls Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 127/177] ACPICA: Tables: Dont release ACPI_MTX_TABLES in acpi_tb_install_standard_table() Greg Kroah-Hartman
                   ` (54 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Lv Zheng, Bob Moore, Rafael J. Wysocki

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lv Zheng <lv.zheng@intel.com>

commit 2b8760100e1de69b6ff004c986328a82947db4ad upstream.

ACPICA commit aacf863cfffd46338e268b7415f7435cae93b451

It is reported that on a physically 64-bit addressed machine, 32-bit kernel
can trigger crashes in accessing the memory regions that are beyond the
32-bit boundary. The region field's start address should still be 32-bit
compliant, but after a calculation (adding some offsets), it may exceed the
32-bit boundary. This case is rare and buggy, but there are real BIOSes
leaked with such issues (see References below).

This patch fixes this gap by always defining IO addresses as 64-bit, and
allows OSPMs to optimize it for a real 32-bit machine to reduce the size of
the internal objects.

Internal acpi_physical_address usages in the structures that can be fixed
by this change include:
 1. struct acpi_object_region:
    acpi_physical_address		address;
 2. struct acpi_address_range:
    acpi_physical_address		start_address;
    acpi_physical_address		end_address;
 3. struct acpi_mem_space_context;
    acpi_physical_address		address;
 4. struct acpi_table_desc
    acpi_physical_address		address;
See known issues 1 for other usages.

Note that acpi_io_address which is used for ACPI_PROCESSOR may also suffer
from same problem, so this patch changes it accordingly.

For iasl, it will enforce acpi_physical_address as 32-bit to generate
32-bit OSPM compatible tables on 32-bit platforms, we need to define
ACPI_32BIT_PHYSICAL_ADDRESS for it in acenv.h.

Known issues:
 1. Cleanup of mapped virtual address
   In struct acpi_mem_space_context, acpi_physical_address is used as a virtual
   address:
    acpi_physical_address                   mapped_physical_address;
   It is better to introduce acpi_virtual_address or use acpi_size instead.
   This patch doesn't make such a change. Because this should be done along
   with a change to acpi_os_map_memory()/acpi_os_unmap_memory().
   There should be no functional problem to leave this unchanged except
   that only this structure is enlarged unexpectedly.

Link: https://github.com/acpica/acpica/commit/aacf863c
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=87971
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=79501
Reported-and-tested-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reported-and-tested-by: Sial Nije <sialnije@gmail.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/acpi/actypes.h        |   20 ++++++++++++++++++++
 include/acpi/platform/acenv.h |    1 +
 2 files changed, 21 insertions(+)

--- a/include/acpi/actypes.h
+++ b/include/acpi/actypes.h
@@ -199,9 +199,29 @@ typedef int s32;
 typedef s32 acpi_native_int;
 
 typedef u32 acpi_size;
+
+#ifdef ACPI_32BIT_PHYSICAL_ADDRESS
+
+/*
+ * OSPMs can define this to shrink the size of the structures for 32-bit
+ * none PAE environment. ASL compiler may always define this to generate
+ * 32-bit OSPM compliant tables.
+ */
 typedef u32 acpi_io_address;
 typedef u32 acpi_physical_address;
 
+#else				/* ACPI_32BIT_PHYSICAL_ADDRESS */
+
+/*
+ * It is reported that, after some calculations, the physical addresses can
+ * wrap over the 32-bit boundary on 32-bit PAE environment.
+ * https://bugzilla.kernel.org/show_bug.cgi?id=87971
+ */
+typedef u64 acpi_io_address;
+typedef u64 acpi_physical_address;
+
+#endif				/* ACPI_32BIT_PHYSICAL_ADDRESS */
+
 #define ACPI_MAX_PTR                    ACPI_UINT32_MAX
 #define ACPI_SIZE_MAX                   ACPI_UINT32_MAX
 
--- a/include/acpi/platform/acenv.h
+++ b/include/acpi/platform/acenv.h
@@ -76,6 +76,7 @@
 #define ACPI_LARGE_NAMESPACE_NODE
 #define ACPI_DATA_TABLE_DISASSEMBLY
 #define ACPI_SINGLE_THREADED
+#define ACPI_32BIT_PHYSICAL_ADDRESS
 #endif
 
 /* acpi_exec configuration. Multithreaded with full AML debugger */



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 127/177] ACPICA: Tables: Dont release ACPI_MTX_TABLES in acpi_tb_install_standard_table().
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (120 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 126/177] ACPICA: Utilities: split IO address types from data type models Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 128/177] ACPI / scan: Annotate physical_node_lock in acpi_scan_is_offline() Greg Kroah-Hartman
                   ` (53 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Octavian Purdila, Lv Zheng,
	Bob Moore, Rafael J. Wysocki

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Octavian Purdila <octavian.purdila@intel.com>

commit 77ddc2fe08329e375505bc36a3df3233fe57317b upstream.

ACPICA commit c70434d4da13e65b6163c79a5aa16b40193631c7

ACPI_MTX_TABLES is acquired and released by the callers of
acpi_tb_install_standard_table() so releasing it in the function itself is
causing the following error in Linux kernel if the table is reloaded:

ACPI Error: Mutex [0x2] is not acquired, cannot release (20141107/utmutex-321)
Call Trace:
  [<ffffffff81b0bd48>] dump_stack+0x4f/0x7b
  [<ffffffff81546bf5>] acpi_ut_release_mutex+0x47/0x67
  [<ffffffff81544357>] acpi_load_table+0x73/0xcb

Link: https://github.com/acpica/acpica/commit/c70434d4
Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/acpi/acpica/tbinstal.c |    1 -
 1 file changed, 1 deletion(-)

--- a/drivers/acpi/acpica/tbinstal.c
+++ b/drivers/acpi/acpica/tbinstal.c
@@ -346,7 +346,6 @@ acpi_tb_install_standard_table(acpi_phys
 				 */
 				acpi_tb_uninstall_table(&new_table_desc);
 				*table_index = i;
-				(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
 				return_ACPI_STATUS(AE_OK);
 			}
 		}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 128/177] ACPI / scan: Annotate physical_node_lock in acpi_scan_is_offline()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (121 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 127/177] ACPICA: Tables: Dont release ACPI_MTX_TABLES in acpi_tb_install_standard_table() Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 129/177] xtensa: xtfpga: fix hardware lockup caused by LCD driver Greg Kroah-Hartman
                   ` (52 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Toshi Kani, Rafael J. Wysocki

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>

commit 4c533c801d1c9b5c38458a0e7516e0cf50643782 upstream.

acpi_scan_is_offline() may be called under the physical_node_lock
lock of the given device object's parent, so prevent lockdep from
complaining about that by annotating that instance with
SINGLE_DEPTH_NESTING.

Fixes: caa73ea158de (ACPI / hotplug / driver core: Handle containers in a special way)
Reported-and-tested-by: Xie XiuQi <xiexiuqi@huawei.com>
Reviewed-by: Toshi Kani <toshi.kani@hp.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/acpi/scan.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -298,7 +298,11 @@ bool acpi_scan_is_offline(struct acpi_de
 	struct acpi_device_physical_node *pn;
 	bool offline = true;
 
-	mutex_lock(&adev->physical_node_lock);
+	/*
+	 * acpi_container_offline() calls this for all of the container's
+	 * children under the container's physical_node_lock lock.
+	 */
+	mutex_lock_nested(&adev->physical_node_lock, SINGLE_DEPTH_NESTING);
 
 	list_for_each_entry(pn, &adev->physical_node_list, node)
 		if (device_supports_offline(pn->dev) && !pn->dev->offline) {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 129/177] xtensa: xtfpga: fix hardware lockup caused by LCD driver
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (122 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 128/177] ACPI / scan: Annotate physical_node_lock in acpi_scan_is_offline() Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 130/177] xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range Greg Kroah-Hartman
                   ` (51 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Max Filippov

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Max Filippov <jcmvbkbc@gmail.com>

commit 4949009eb8d40a441dcddcd96e101e77d31cf1b2 upstream.

LCD driver is always built for the XTFPGA platform, but its base address
is not configurable, and is wrong for ML605/KC705. Its initialization
locks up KC705 board hardware.

Make the whole driver optional, and its base address and bus width
configurable. Implement 4-bit bus access method.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/xtensa/Kconfig                                      |   30 ++++++++
 arch/xtensa/platforms/xtfpga/Makefile                    |    3 
 arch/xtensa/platforms/xtfpga/include/platform/hardware.h |    3 
 arch/xtensa/platforms/xtfpga/include/platform/lcd.h      |   15 ++++
 arch/xtensa/platforms/xtfpga/lcd.c                       |   55 +++++++++------
 5 files changed, 81 insertions(+), 25 deletions(-)

--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -428,6 +428,36 @@ config DEFAULT_MEM_SIZE
 
 	  If unsure, leave the default value here.
 
+config XTFPGA_LCD
+	bool "Enable XTFPGA LCD driver"
+	depends on XTENSA_PLATFORM_XTFPGA
+	default n
+	help
+	  There's a 2x16 LCD on most of XTFPGA boards, kernel may output
+	  progress messages there during bootup/shutdown. It may be useful
+	  during board bringup.
+
+	  If unsure, say N.
+
+config XTFPGA_LCD_BASE_ADDR
+	hex "XTFPGA LCD base address"
+	depends on XTFPGA_LCD
+	default "0x0d0c0000"
+	help
+	  Base address of the LCD controller inside KIO region.
+	  Different boards from XTFPGA family have LCD controller at different
+	  addresses. Please consult prototyping user guide for your board for
+	  the correct address. Wrong address here may lead to hardware lockup.
+
+config XTFPGA_LCD_8BIT_ACCESS
+	bool "Use 8-bit access to XTFPGA LCD"
+	depends on XTFPGA_LCD
+	default n
+	help
+	  LCD may be connected with 4- or 8-bit interface, 8-bit access may
+	  only be used with 8-bit interface. Please consult prototyping user
+	  guide for your board for the correct interface width.
+
 endmenu
 
 menu "Executable file formats"
--- a/arch/xtensa/platforms/xtfpga/Makefile
+++ b/arch/xtensa/platforms/xtfpga/Makefile
@@ -6,4 +6,5 @@
 #
 # Note 2! The CFLAGS definitions are in the main makefile...
 
-obj-y			= setup.o lcd.o
+obj-y			+= setup.o
+obj-$(CONFIG_XTFPGA_LCD) += lcd.o
--- a/arch/xtensa/platforms/xtfpga/include/platform/hardware.h
+++ b/arch/xtensa/platforms/xtfpga/include/platform/hardware.h
@@ -40,9 +40,6 @@
 
 /* UART */
 #define DUART16552_PADDR	(XCHAL_KIO_PADDR + 0x0D050020)
-/* LCD instruction and data addresses. */
-#define LCD_INSTR_ADDR		((char *)IOADDR(0x0D040000))
-#define LCD_DATA_ADDR		((char *)IOADDR(0x0D040004))
 
 /* Misc. */
 #define XTFPGA_FPGAREGS_VADDR	IOADDR(0x0D020000)
--- a/arch/xtensa/platforms/xtfpga/include/platform/lcd.h
+++ b/arch/xtensa/platforms/xtfpga/include/platform/lcd.h
@@ -11,10 +11,25 @@
 #ifndef __XTENSA_XTAVNET_LCD_H
 #define __XTENSA_XTAVNET_LCD_H
 
+#ifdef CONFIG_XTFPGA_LCD
 /* Display string STR at position POS on the LCD. */
 void lcd_disp_at_pos(char *str, unsigned char pos);
 
 /* Shift the contents of the LCD display left or right. */
 void lcd_shiftleft(void);
 void lcd_shiftright(void);
+#else
+static inline void lcd_disp_at_pos(char *str, unsigned char pos)
+{
+}
+
+static inline void lcd_shiftleft(void)
+{
+}
+
+static inline void lcd_shiftright(void)
+{
+}
+#endif
+
 #endif
--- a/arch/xtensa/platforms/xtfpga/lcd.c
+++ b/arch/xtensa/platforms/xtfpga/lcd.c
@@ -1,50 +1,63 @@
 /*
- * Driver for the LCD display on the Tensilica LX60 Board.
+ * Driver for the LCD display on the Tensilica XTFPGA board family.
+ * http://www.mytechcorp.com/cfdata/productFile/File1/MOC-16216B-B-A0A04.pdf
  *
  * This file is subject to the terms and conditions of the GNU General Public
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
  * Copyright (C) 2001, 2006 Tensilica Inc.
+ * Copyright (C) 2015 Cadence Design Systems Inc.
  */
 
-/*
- *
- * FIXME: this code is from the examples from the LX60 user guide.
- *
- * The lcd_pause function does busy waiting, which is probably not
- * great. Maybe the code could be changed to use kernel timers, or
- * change the hardware to not need to wait.
- */
-
+#include <linux/delay.h>
 #include <linux/init.h>
 #include <linux/io.h>
 
 #include <platform/hardware.h>
 #include <platform/lcd.h>
-#include <linux/delay.h>
 
-#define LCD_PAUSE_ITERATIONS	4000
+/* LCD instruction and data addresses. */
+#define LCD_INSTR_ADDR		((char *)IOADDR(CONFIG_XTFPGA_LCD_BASE_ADDR))
+#define LCD_DATA_ADDR		(LCD_INSTR_ADDR + 4)
+
 #define LCD_CLEAR		0x1
 #define LCD_DISPLAY_ON		0xc
 
 /* 8bit and 2 lines display */
 #define LCD_DISPLAY_MODE8BIT	0x38
+#define LCD_DISPLAY_MODE4BIT	0x28
 #define LCD_DISPLAY_POS		0x80
 #define LCD_SHIFT_LEFT		0x18
 #define LCD_SHIFT_RIGHT		0x1c
 
+static void lcd_put_byte(u8 *addr, u8 data)
+{
+#ifdef CONFIG_XTFPGA_LCD_8BIT_ACCESS
+	ACCESS_ONCE(*addr) = data;
+#else
+	ACCESS_ONCE(*addr) = data & 0xf0;
+	ACCESS_ONCE(*addr) = (data << 4) & 0xf0;
+#endif
+}
+
 static int __init lcd_init(void)
 {
-	*LCD_INSTR_ADDR = LCD_DISPLAY_MODE8BIT;
+	ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE8BIT;
 	mdelay(5);
-	*LCD_INSTR_ADDR = LCD_DISPLAY_MODE8BIT;
+	ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE8BIT;
 	udelay(200);
-	*LCD_INSTR_ADDR = LCD_DISPLAY_MODE8BIT;
+	ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE8BIT;
+	udelay(50);
+#ifndef CONFIG_XTFPGA_LCD_8BIT_ACCESS
+	ACCESS_ONCE(*LCD_INSTR_ADDR) = LCD_DISPLAY_MODE4BIT;
+	udelay(50);
+	lcd_put_byte(LCD_INSTR_ADDR, LCD_DISPLAY_MODE4BIT);
 	udelay(50);
-	*LCD_INSTR_ADDR = LCD_DISPLAY_ON;
+#endif
+	lcd_put_byte(LCD_INSTR_ADDR, LCD_DISPLAY_ON);
 	udelay(50);
-	*LCD_INSTR_ADDR = LCD_CLEAR;
+	lcd_put_byte(LCD_INSTR_ADDR, LCD_CLEAR);
 	mdelay(10);
 	lcd_disp_at_pos("XTENSA LINUX", 0);
 	return 0;
@@ -52,10 +65,10 @@ static int __init lcd_init(void)
 
 void lcd_disp_at_pos(char *str, unsigned char pos)
 {
-	*LCD_INSTR_ADDR = LCD_DISPLAY_POS | pos;
+	lcd_put_byte(LCD_INSTR_ADDR, LCD_DISPLAY_POS | pos);
 	udelay(100);
 	while (*str != 0) {
-		*LCD_DATA_ADDR = *str;
+		lcd_put_byte(LCD_DATA_ADDR, *str);
 		udelay(200);
 		str++;
 	}
@@ -63,13 +76,13 @@ void lcd_disp_at_pos(char *str, unsigned
 
 void lcd_shiftleft(void)
 {
-	*LCD_INSTR_ADDR = LCD_SHIFT_LEFT;
+	lcd_put_byte(LCD_INSTR_ADDR, LCD_SHIFT_LEFT);
 	udelay(50);
 }
 
 void lcd_shiftright(void)
 {
-	*LCD_INSTR_ADDR = LCD_SHIFT_RIGHT;
+	lcd_put_byte(LCD_INSTR_ADDR, LCD_SHIFT_RIGHT);
 	udelay(50);
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 130/177] xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (123 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 129/177] xtensa: xtfpga: fix hardware lockup caused by LCD driver Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 131/177] xtensa: ISS: fix locking in TAP network adapter Greg Kroah-Hartman
                   ` (50 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Max Filippov

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Max Filippov <jcmvbkbc@gmail.com>

commit 01e84c70fe40c8111f960987bcf7f931842e6d07 upstream.

xtensa actually uses sync_file_range2 implementation, so it should
define __NR_sync_file_range2 as other architectures that use that
function. That fixes userspace interface (that apparently never worked)
and avoids special-casing xtensa in libc implementations.
See the thread ending at
http://lists.busybox.net/pipermail/uclibc/2015-February/048833.html
for more details.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/xtensa/include/uapi/asm/unistd.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/xtensa/include/uapi/asm/unistd.h
+++ b/arch/xtensa/include/uapi/asm/unistd.h
@@ -715,7 +715,7 @@ __SYSCALL(323, sys_process_vm_writev, 6)
 __SYSCALL(324, sys_name_to_handle_at, 5)
 #define __NR_open_by_handle_at			325
 __SYSCALL(325, sys_open_by_handle_at, 3)
-#define __NR_sync_file_range			326
+#define __NR_sync_file_range2			326
 __SYSCALL(326, sys_sync_file_range2, 6)
 #define __NR_perf_event_open			327
 __SYSCALL(327, sys_perf_event_open, 5)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 131/177] xtensa: ISS: fix locking in TAP network adapter
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (124 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 130/177] xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 132/177] gpio: mvebu: Fix mask/unmask managment per irq chip type Greg Kroah-Hartman
                   ` (49 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Max Filippov

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Max Filippov <jcmvbkbc@gmail.com>

commit 24e94454c8cb6a13634f5a2f5a01da53a546a58d upstream.

- don't lock lp->lock in the iss_net_timer for the call of iss_net_poll,
  it will lock it itself;
- invert order of lp->lock and opened_lock acquisition in the
  iss_net_open to make it consistent with iss_net_poll;
- replace spin_lock with spin_lock_bh when acquiring locks used in
  iss_net_timer from non-atomic context;
- replace spin_lock_irqsave with spin_lock_bh in the iss_net_start_xmit
  as the driver doesn't use lp->lock in the hard IRQ context;
- replace __SPIN_LOCK_UNLOCKED(lp.lock) with spin_lock_init, otherwise
  lockdep is unhappy about using non-static key.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/xtensa/platforms/iss/network.c |   29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

--- a/arch/xtensa/platforms/iss/network.c
+++ b/arch/xtensa/platforms/iss/network.c
@@ -349,8 +349,8 @@ static void iss_net_timer(unsigned long
 {
 	struct iss_net_private *lp = (struct iss_net_private *)priv;
 
-	spin_lock(&lp->lock);
 	iss_net_poll();
+	spin_lock(&lp->lock);
 	mod_timer(&lp->timer, jiffies + lp->timer_val);
 	spin_unlock(&lp->lock);
 }
@@ -361,7 +361,7 @@ static int iss_net_open(struct net_devic
 	struct iss_net_private *lp = netdev_priv(dev);
 	int err;
 
-	spin_lock(&lp->lock);
+	spin_lock_bh(&lp->lock);
 
 	err = lp->tp.open(lp);
 	if (err < 0)
@@ -376,9 +376,11 @@ static int iss_net_open(struct net_devic
 	while ((err = iss_net_rx(dev)) > 0)
 		;
 
-	spin_lock(&opened_lock);
+	spin_unlock_bh(&lp->lock);
+	spin_lock_bh(&opened_lock);
 	list_add(&lp->opened_list, &opened);
-	spin_unlock(&opened_lock);
+	spin_unlock_bh(&opened_lock);
+	spin_lock_bh(&lp->lock);
 
 	init_timer(&lp->timer);
 	lp->timer_val = ISS_NET_TIMER_VALUE;
@@ -387,7 +389,7 @@ static int iss_net_open(struct net_devic
 	mod_timer(&lp->timer, jiffies + lp->timer_val);
 
 out:
-	spin_unlock(&lp->lock);
+	spin_unlock_bh(&lp->lock);
 	return err;
 }
 
@@ -395,7 +397,7 @@ static int iss_net_close(struct net_devi
 {
 	struct iss_net_private *lp = netdev_priv(dev);
 	netif_stop_queue(dev);
-	spin_lock(&lp->lock);
+	spin_lock_bh(&lp->lock);
 
 	spin_lock(&opened_lock);
 	list_del(&opened);
@@ -405,18 +407,17 @@ static int iss_net_close(struct net_devi
 
 	lp->tp.close(lp);
 
-	spin_unlock(&lp->lock);
+	spin_unlock_bh(&lp->lock);
 	return 0;
 }
 
 static int iss_net_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct iss_net_private *lp = netdev_priv(dev);
-	unsigned long flags;
 	int len;
 
 	netif_stop_queue(dev);
-	spin_lock_irqsave(&lp->lock, flags);
+	spin_lock_bh(&lp->lock);
 
 	len = lp->tp.write(lp, &skb);
 
@@ -438,7 +439,7 @@ static int iss_net_start_xmit(struct sk_
 		pr_err("%s: %s failed(%d)\n", dev->name, __func__, len);
 	}
 
-	spin_unlock_irqrestore(&lp->lock, flags);
+	spin_unlock_bh(&lp->lock);
 
 	dev_kfree_skb(skb);
 	return NETDEV_TX_OK;
@@ -466,9 +467,9 @@ static int iss_net_set_mac(struct net_de
 
 	if (!is_valid_ether_addr(hwaddr->sa_data))
 		return -EADDRNOTAVAIL;
-	spin_lock(&lp->lock);
+	spin_lock_bh(&lp->lock);
 	memcpy(dev->dev_addr, hwaddr->sa_data, ETH_ALEN);
-	spin_unlock(&lp->lock);
+	spin_unlock_bh(&lp->lock);
 	return 0;
 }
 
@@ -520,11 +521,11 @@ static int iss_net_configure(int index,
 	*lp = (struct iss_net_private) {
 		.device_list		= LIST_HEAD_INIT(lp->device_list),
 		.opened_list		= LIST_HEAD_INIT(lp->opened_list),
-		.lock			= __SPIN_LOCK_UNLOCKED(lp.lock),
 		.dev			= dev,
 		.index			= index,
-		};
+	};
 
+	spin_lock_init(&lp->lock);
 	/*
 	 * If this name ends up conflicting with an existing registered
 	 * netdevice, that is OK, register_netdev{,ice}() will notice this



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 132/177] gpio: mvebu: Fix mask/unmask managment per irq chip type
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (125 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 131/177] xtensa: ISS: fix locking in TAP network adapter Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 133/177] clk: samsung: exynos4: Disable ARMCLK down feature on Exynos4210 SoC Greg Kroah-Hartman
                   ` (48 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Evgeniy A. Dushistov,
	Gregory CLEMENT, Linus Walleij

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Gregory CLEMENT <gregory.clement@free-electrons.com>

commit 61819549f572edd7fce53f228c0d8420cdc85f71 upstream.

Level IRQ handlers and edge IRQ handler are managed by tow different
sets of registers. But currently the driver uses the same mask for the
both registers. It lead to issues with the following scenario:

First, an IRQ is requested on a GPIO to be triggered on front. After,
this an other IRQ is requested for a GPIO of the same bank but
triggered on level. Then the first one will be also setup to be
triggered on level. It leads to an interrupt storm.

The different kind of handler are already associated with two
different irq chip type. With this patch the driver uses a private
mask for each one which solves this issue.

It has been tested on an Armada XP based board and on an Armada 375
board. For the both boards, with this patch is applied, there is no
such interrupt storm when running the previous scenario.

This bug was already fixed but in a different way in the legacy
version of this driver by Evgeniy Dushistov:
9ece8839b1277fb9128ff6833411614ab6c88d68 "ARM: orion: Fix for certain
sequence of request_irq can cause irq storm". The fact the new version
of the gpio drive could be affected had been discussed there:
http://thread.gmane.org/gmane.linux.ports.arm.kernel/344670/focus=364012

Reported-by: Evgeniy A. Dushistov <dushistov@mail.ru>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpio/gpio-mvebu.c |   24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -313,11 +313,13 @@ static void mvebu_gpio_edge_irq_mask(str
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	struct mvebu_gpio_chip *mvchip = gc->private;
+	struct irq_chip_type *ct = irq_data_get_chip_type(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
 
 	irq_gc_lock(gc);
-	gc->mask_cache &= ~mask;
-	writel_relaxed(gc->mask_cache, mvebu_gpioreg_edge_mask(mvchip));
+	ct->mask_cache_priv &= ~mask;
+
+	writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip));
 	irq_gc_unlock(gc);
 }
 
@@ -325,11 +327,13 @@ static void mvebu_gpio_edge_irq_unmask(s
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	struct mvebu_gpio_chip *mvchip = gc->private;
+	struct irq_chip_type *ct = irq_data_get_chip_type(d);
+
 	u32 mask = 1 << (d->irq - gc->irq_base);
 
 	irq_gc_lock(gc);
-	gc->mask_cache |= mask;
-	writel_relaxed(gc->mask_cache, mvebu_gpioreg_edge_mask(mvchip));
+	ct->mask_cache_priv |= mask;
+	writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip));
 	irq_gc_unlock(gc);
 }
 
@@ -337,11 +341,13 @@ static void mvebu_gpio_level_irq_mask(st
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	struct mvebu_gpio_chip *mvchip = gc->private;
+	struct irq_chip_type *ct = irq_data_get_chip_type(d);
+
 	u32 mask = 1 << (d->irq - gc->irq_base);
 
 	irq_gc_lock(gc);
-	gc->mask_cache &= ~mask;
-	writel_relaxed(gc->mask_cache, mvebu_gpioreg_level_mask(mvchip));
+	ct->mask_cache_priv &= ~mask;
+	writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_level_mask(mvchip));
 	irq_gc_unlock(gc);
 }
 
@@ -349,11 +355,13 @@ static void mvebu_gpio_level_irq_unmask(
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	struct mvebu_gpio_chip *mvchip = gc->private;
+	struct irq_chip_type *ct = irq_data_get_chip_type(d);
+
 	u32 mask = 1 << (d->irq - gc->irq_base);
 
 	irq_gc_lock(gc);
-	gc->mask_cache |= mask;
-	writel_relaxed(gc->mask_cache, mvebu_gpioreg_level_mask(mvchip));
+	ct->mask_cache_priv |= mask;
+	writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_level_mask(mvchip));
 	irq_gc_unlock(gc);
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 133/177] clk: samsung: exynos4: Disable ARMCLK down feature on Exynos4210 SoC
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (126 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 132/177] gpio: mvebu: Fix mask/unmask managment per irq chip type Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 134/177] clk: tegra: Register the proper number of resets Greg Kroah-Hartman
                   ` (47 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Daniel Drake, Tomasz Figa,
	Kukjin Kim, Krzysztof Kozlowski, Bartlomiej Zolnierkiewicz,
	Michael Turquette

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

commit 3a9e9cb65be84d6c64fbe9c69a73c15d59f29454 upstream.

Commit 42773b28e71d ("clk: samsung: exynos4: Enable ARMCLK
down feature") enabled ARMCLK down feature on all Exynos4
SoCs.  Unfortunately on Exynos4210 SoC ARMCLK down feature
causes a lockup when ondemand cpufreq governor is used.
Fix it by limiting ARMCLK down feature to Exynos4x12 SoCs.

This patch was tested on:
- Exynos4210 SoC based Trats board
- Exynos4210 SoC based Origen board
- Exynos4412 SoC based Trats2 board
- Exynos4412 SoC based Odroid-U3 board

Cc: Daniel Drake <drake@endlessm.com>
Cc: Tomasz Figa <t.figa@samsung.com>
Cc: Kukjin Kim <kgene@kernel.org>
Fixes: 42773b28e71d ("clk: samsung: exynos4: Enable ARMCLK down feature")
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Michael Turquette <mturquette@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/clk/samsung/clk-exynos4.c |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

--- a/drivers/clk/samsung/clk-exynos4.c
+++ b/drivers/clk/samsung/clk-exynos4.c
@@ -1354,7 +1354,7 @@ static struct samsung_pll_clock exynos4x
 			VPLL_LOCK, VPLL_CON0, NULL),
 };
 
-static void __init exynos4_core_down_clock(enum exynos4_soc soc)
+static void __init exynos4x12_core_down_clock(void)
 {
 	unsigned int tmp;
 
@@ -1373,11 +1373,9 @@ static void __init exynos4_core_down_clo
 	__raw_writel(tmp, reg_base + PWR_CTRL1);
 
 	/*
-	 * Disable the clock up feature on Exynos4x12, in case it was
-	 * enabled by bootloader.
+	 * Disable the clock up feature in case it was enabled by bootloader.
 	 */
-	if (exynos4_soc == EXYNOS4X12)
-		__raw_writel(0x0, reg_base + E4X12_PWR_CTRL2);
+	__raw_writel(0x0, reg_base + E4X12_PWR_CTRL2);
 }
 
 /* register exynos4 clocks */
@@ -1474,7 +1472,8 @@ static void __init exynos4_clk_init(stru
 	samsung_clk_register_alias(ctx, exynos4_aliases,
 			ARRAY_SIZE(exynos4_aliases));
 
-	exynos4_core_down_clock(soc);
+	if (soc == EXYNOS4X12)
+		exynos4x12_core_down_clock();
 	exynos4_clk_sleep_init();
 
 	samsung_clk_of_add_provider(np, ctx);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 134/177] clk: tegra: Register the proper number of resets
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (127 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 133/177] clk: samsung: exynos4: Disable ARMCLK down feature on Exynos4210 SoC Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 135/177] clk: qcom: Fix i2c frequency table Greg Kroah-Hartman
                   ` (46 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Peter De Schrijver, Prashant Gaikwad,
	Thierry Reding

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Thierry Reding <treding@nvidia.com>

commit 5e43e259171e1eee8bc074d9c44be434e685087b upstream.

The number of resets controls is 32 times the number of peripheral
register banks rather than 32 times the number of clocks. This reduces
(drastically) the number of reset controls registered from 10080 (315
clocks * 32) to 224 (6 peripheral register banks * 32).

This also fixes a potential crash because trying to use any of the
excess reset controls (224-10079) would have caused accesses beyond
the array bounds of the peripheral register banks definition array.

Cc: Peter De Schrijver <pdeschrijver@nvidia.com>
Cc: Prashant Gaikwad <pgaikwad@nvidia.com>
Fixes: 6d5b988e7dc5 ("clk: tegra: implement a reset driver")
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/clk/tegra/clk.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/clk/tegra/clk.c
+++ b/drivers/clk/tegra/clk.c
@@ -272,7 +272,7 @@ void __init tegra_add_of_provider(struct
 	of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
 
 	rst_ctlr.of_node = np;
-	rst_ctlr.nr_resets = clk_num * 32;
+	rst_ctlr.nr_resets = periph_banks * 32;
 	reset_controller_register(&rst_ctlr);
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 135/177] clk: qcom: Fix i2c frequency table
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (128 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 134/177] clk: tegra: Register the proper number of resets Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 136/177] clk: qcom: fix RCG M/N counter configuration Greg Kroah-Hartman
                   ` (45 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stephen Boyd, Andy Gross, Michael Turquette

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Stephen Boyd <sboyd@codeaurora.org>

commit 0bf0ff82c34da02ee5795101b328225a2d519594 upstream.

PXO is 25MHz, not 27MHz. Fix the table.

Fixes: 24d8fba44af3 "clk: qcom: Add support for IPQ8064's global
clock controller (GCC)"

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Reviewed-by: Andy Gross <agross@codeaurora.org>
Tested-by: Andy Gross <agross@codeaurora.org>
Signed-off-by: Michael Turquette <mturquette@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/clk/qcom/gcc-ipq806x.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/clk/qcom/gcc-ipq806x.c
+++ b/drivers/clk/qcom/gcc-ipq806x.c
@@ -514,8 +514,8 @@ static struct freq_tbl clk_tbl_gsbi_qup[
 	{ 10800000, P_PXO,  1, 2,  5 },
 	{ 15060000, P_PLL8, 1, 2, 51 },
 	{ 24000000, P_PLL8, 4, 1,  4 },
+	{ 25000000, P_PXO,  1, 0,  0 },
 	{ 25600000, P_PLL8, 1, 1, 15 },
-	{ 27000000, P_PXO,  1, 0,  0 },
 	{ 48000000, P_PLL8, 4, 1,  2 },
 	{ 51200000, P_PLL8, 1, 2, 15 },
 	{ }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 136/177] clk: qcom: fix RCG M/N counter configuration
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (129 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 135/177] clk: qcom: Fix i2c frequency table Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 137/177] dm crypt: fix deadlock when async crypto algorithm returns -EBUSY Greg Kroah-Hartman
                   ` (44 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Archit Taneja, Stephen Boyd

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Archit Taneja <architt@codeaurora.org>

commit 0b21503dbbfa669dbd847b33578d4041513cddb2 upstream.

Currently, a RCG's M/N counter (used for fraction division) is
set to either 'bypass' (counter disabled) or 'dual edge' (counter
enabled) based on whether the corresponding rcg struct has a mnd
field specified and a non-zero N.

In the case where M and N are the same value, the M/N counter is
still enabled by code even though no division takes place.
Leaving the RCG in such a state can result in improper behavior.
This was observed with the DSI pixel clock RCG when M and N were
both set to 1.

Add an additional check (M != N) to enable the M/N counter only
when it's needed for fraction division.

Signed-off-by: Archit Taneja <architt@codeaurora.org>
Fixes: bcd61c0f535a (clk: qcom: Add support for root clock
generators (RCGs))
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/clk/qcom/clk-rcg2.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/clk/qcom/clk-rcg2.c
+++ b/drivers/clk/qcom/clk-rcg2.c
@@ -242,7 +242,7 @@ static int clk_rcg2_configure(struct clk
 	mask |= CFG_SRC_SEL_MASK | CFG_MODE_MASK;
 	cfg = f->pre_div << CFG_SRC_DIV_SHIFT;
 	cfg |= rcg->parent_map[f->src] << CFG_SRC_SEL_SHIFT;
-	if (rcg->mnd_width && f->n)
+	if (rcg->mnd_width && f->n && (f->m != f->n))
 		cfg |= CFG_MODE_DUAL_EDGE;
 	ret = regmap_update_bits(rcg->clkr.regmap,
 			rcg->cmd_rcgr + CFG_REG, mask, cfg);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 137/177] dm crypt: fix deadlock when async crypto algorithm returns -EBUSY
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (130 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 136/177] clk: qcom: fix RCG M/N counter configuration Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 138/177] sd: Unregister integrity profile Greg Kroah-Hartman
                   ` (43 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ben Collins, Mike Snitzer

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ben Collins <ben.c@servergy.com>

commit 0618764cb25f6fa9fb31152995de42a8a0496475 upstream.

I suspect this doesn't show up for most anyone because software
algorithms typically don't have a sense of being too busy.  However,
when working with the Freescale CAAM driver it will return -EBUSY on
occasion under heavy -- which resulted in dm-crypt deadlock.

After checking the logic in some other drivers, the scheme for
crypt_convert() and it's callback, kcryptd_async_done(), were not
correctly laid out to properly handle -EBUSY or -EINPROGRESS.

Fix this by using the completion for both -EBUSY and -EINPROGRESS.  Now
crypt_convert()'s use of completion is comparable to
af_alg_wait_for_completion().  Similarly, kcryptd_async_done() follows
the pattern used in af_alg_complete().

Before this fix dm-crypt would lockup within 1-2 minutes running with
the CAAM driver.  Fix was regression tested against software algorithms
on PPC32 and x86_64, and things seem perfectly happy there as well.

Signed-off-by: Ben Collins <ben.c@servergy.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/md/dm-crypt.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -920,11 +920,10 @@ static int crypt_convert(struct crypt_co
 
 		switch (r) {
 		/* async */
+		case -EINPROGRESS:
 		case -EBUSY:
 			wait_for_completion(&ctx->restart);
 			reinit_completion(&ctx->restart);
-			/* fall through*/
-		case -EINPROGRESS:
 			ctx->req = NULL;
 			ctx->cc_sector++;
 			continue;
@@ -1315,10 +1314,8 @@ static void kcryptd_async_done(struct cr
 	struct dm_crypt_io *io = container_of(ctx, struct dm_crypt_io, ctx);
 	struct crypt_config *cc = io->cc;
 
-	if (error == -EINPROGRESS) {
-		complete(&ctx->restart);
+	if (error == -EINPROGRESS)
 		return;
-	}
 
 	if (!error && cc->iv_gen_ops && cc->iv_gen_ops->post)
 		error = cc->iv_gen_ops->post(cc, iv_of_dmreq(cc, dmreq), dmreq);
@@ -1329,12 +1326,15 @@ static void kcryptd_async_done(struct cr
 	crypt_free_req(cc, req_of_dmreq(cc, dmreq), io->base_bio);
 
 	if (!atomic_dec_and_test(&ctx->cc_pending))
-		return;
+		goto done;
 
 	if (bio_data_dir(io->base_bio) == READ)
 		kcryptd_crypt_read_done(io);
 	else
 		kcryptd_crypt_write_io_submit(io, 1);
+done:
+	if (!completion_done(&ctx->restart))
+		complete(&ctx->restart);
 }
 
 static void kcryptd_crypt(struct work_struct *work)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 138/177] sd: Unregister integrity profile
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (131 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 137/177] dm crypt: fix deadlock when async crypto algorithm returns -EBUSY Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 139/177] sd: Fix missing ATO tag check Greg Kroah-Hartman
                   ` (42 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Martin K. Petersen, Sagi Grimberg,
	Sagi Grimberg, James Bottomley

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "Martin K. Petersen" <martin.petersen@oracle.com>

commit e727c42bd55794765c460b7ac2b6cc969f2a9698 upstream.

The new integrity code did not correctly unregister the profile for SD
disks. Call blk_integrity_unregister() when we release a disk.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Reported-by: Sagi Grimberg <sagig@dev.mellanox.co.il>
Tested-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/scsi/sd.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -3100,6 +3100,7 @@ static void scsi_disk_release(struct dev
 	ida_remove(&sd_index_ida, sdkp->index);
 	spin_unlock(&sd_index_lock);
 
+	blk_integrity_unregister(disk);
 	disk->private_data = NULL;
 	put_disk(disk);
 	put_device(&sdkp->device->sdev_gendev);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 139/177] sd: Fix missing ATO tag check
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (132 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 138/177] sd: Unregister integrity profile Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 140/177] Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open() Greg Kroah-Hartman
                   ` (41 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Martin K. Petersen, Sagi Grimberg,
	James Bottomley

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "Martin K. Petersen" <martin.petersen@oracle.com>

commit e557990e358934fb168d30371c9c0f63e314c6b8 upstream.

3aec2f41a8bae introduced a merge error where we would end up check for
sdkp instead of sdkp->ATO. Fix this so we register app tag capability
correctly.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/scsi/sd_dif.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/scsi/sd_dif.c
+++ b/drivers/scsi/sd_dif.c
@@ -77,7 +77,7 @@ void sd_dif_config_host(struct scsi_disk
 
 		disk->integrity->flags |= BLK_INTEGRITY_DEVICE_CAPABLE;
 
-		if (!sdkp)
+		if (!sdkp->ATO)
 			return;
 
 		if (type == SD_DIF_TYPE3_PROTECTION)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 140/177] Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (133 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 139/177] sd: Fix missing ATO tag check Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 141/177] mvsas: fix panic on expander attached SATA devices Greg Kroah-Hartman
                   ` (40 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, K. Y. Srinivasan

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "K. Y. Srinivasan" <kys@microsoft.com>

commit 40384e4bbeb9f2651fe9bffc0062d9f31ef625bf upstream.

Correctly rollback state if the failure occurs after we have handed over
the ownership of the buffer to the host.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/hv/channel.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -135,7 +135,7 @@ int vmbus_open(struct vmbus_channel *new
 			   GFP_KERNEL);
 	if (!open_info) {
 		err = -ENOMEM;
-		goto error0;
+		goto error_gpadl;
 	}
 
 	init_completion(&open_info->waitevent);
@@ -151,7 +151,7 @@ int vmbus_open(struct vmbus_channel *new
 
 	if (userdatalen > MAX_USER_DEFINED_BYTES) {
 		err = -EINVAL;
-		goto error0;
+		goto error_gpadl;
 	}
 
 	if (userdatalen)
@@ -195,6 +195,9 @@ error1:
 	list_del(&open_info->msglistentry);
 	spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags);
 
+error_gpadl:
+	vmbus_teardown_gpadl(newchannel, newchannel->ringbuffer_gpadlhandle);
+
 error0:
 	free_pages((unsigned long)out,
 		get_order(send_ringbuffer_size + recv_ringbuffer_size));



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 141/177] mvsas: fix panic on expander attached SATA devices
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (134 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 140/177] Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open() Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 142/177] [media] rc: img-ir: fix error in parameters passed to irq_free() Greg Kroah-Hartman
                   ` (39 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Adam Talbot, James Bottomley

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: James Bottomley <JBottomley@Odin.com>

commit 56cbd0ccc1b508de19561211d7ab9e1c77e6b384 upstream.

mvsas is giving a General protection fault when it encounters an expander
attached ATA device.  Analysis of mvs_task_prep_ata() shows that the driver is
assuming all ATA devices are locally attached and obtaining the phy mask by
indexing the local phy table (in the HBA structure) with the phy id.  Since
expanders have many more phys than the HBA, this is causing the index into the
HBA phy table to overflow and returning rubbish as the pointer.

mvs_task_prep_ssp() instead does the phy mask using the port properties.
Mirror this in mvs_task_prep_ata() to fix the panic.

Reported-by: Adam Talbot <ajtalbot1@gmail.com>
Tested-by: Adam Talbot <ajtalbot1@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/scsi/mvsas/mv_sas.c |    5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -441,14 +441,11 @@ static u32 mvs_get_ncq_tag(struct sas_ta
 static int mvs_task_prep_ata(struct mvs_info *mvi,
 			     struct mvs_task_exec_info *tei)
 {
-	struct sas_ha_struct *sha = mvi->sas;
 	struct sas_task *task = tei->task;
 	struct domain_device *dev = task->dev;
 	struct mvs_device *mvi_dev = dev->lldd_dev;
 	struct mvs_cmd_hdr *hdr = tei->hdr;
 	struct asd_sas_port *sas_port = dev->port;
-	struct sas_phy *sphy = dev->phy;
-	struct asd_sas_phy *sas_phy = sha->sas_phy[sphy->number];
 	struct mvs_slot_info *slot;
 	void *buf_prd;
 	u32 tag = tei->tag, hdr_tag;
@@ -468,7 +465,7 @@ static int mvs_task_prep_ata(struct mvs_
 	slot->tx = mvi->tx_prod;
 	del_q = TXQ_MODE_I | tag |
 		(TXQ_CMD_STP << TXQ_CMD_SHIFT) |
-		(MVS_PHY_ID << TXQ_PHY_SHIFT) |
+		((sas_port->phy_mask & TXQ_PHY_MASK) << TXQ_PHY_SHIFT) |
 		(mvi_dev->taskfileset << TXQ_SRS_SHIFT);
 	mvi->tx[mvi->tx_prod] = cpu_to_le32(del_q);
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 142/177] [media] rc: img-ir: fix error in parameters passed to irq_free()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (135 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 141/177] mvsas: fix panic on expander attached SATA devices Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 143/177] [media] stk1160: Make sure current buffer is released Greg Kroah-Hartman
                   ` (38 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sifan Naeem, James Hogan,
	Mauro Carvalho Chehab

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sifan Naeem <sifan.naeem@imgtec.com>

commit 80ccf4ad06dc9d2f06a8347b2d309cdc959f72b3 upstream.

img_ir_remove() passes a pointer to the ISR function as the 2nd
parameter to irq_free() instead of a pointer to the device data
structure.
This issue causes unloading img-ir module to fail with the below
warning after building and loading img-ir as a module.

WARNING: CPU: 2 PID: 155 at ../kernel/irq/manage.c:1278
__free_irq+0xb4/0x214() Trying to free already-free IRQ 58
Modules linked in: img_ir(-)
CPU: 2 PID: 155 Comm: rmmod Not tainted 3.14.0 #55 ...
Call Trace:
...
[<8048d420>] __free_irq+0xb4/0x214
[<8048d6b4>] free_irq+0xac/0xf4
[<c009b130>] img_ir_remove+0x54/0xd4 [img_ir] [<8073ded0>]
platform_drv_remove+0x30/0x54 ...

Fixes: 160a8f8aec4d ("[media] rc: img-ir: add base driver")

Signed-off-by: Sifan Naeem <sifan.naeem@imgtec.com>
Acked-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/media/rc/img-ir/img-ir-core.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/media/rc/img-ir/img-ir-core.c
+++ b/drivers/media/rc/img-ir/img-ir-core.c
@@ -146,7 +146,7 @@ static int img_ir_remove(struct platform
 {
 	struct img_ir_priv *priv = platform_get_drvdata(pdev);
 
-	free_irq(priv->irq, img_ir_isr);
+	free_irq(priv->irq, priv);
 	img_ir_remove_hw(priv);
 	img_ir_remove_raw(priv);
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 143/177] [media] stk1160: Make sure current buffer is released
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (136 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 142/177] [media] rc: img-ir: fix error in parameters passed to irq_free() Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 144/177] IB/core: disallow registering 0-sized memory region Greg Kroah-Hartman
                   ` (37 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ezequiel Garcia, Hans Verkuil,
	Mauro Carvalho Chehab

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>

commit aeff09276748b66072f2db2e668cec955cf41959 upstream.

The available (i.e. not used) buffers are returned by stk1160_clear_queue(),
on the stop_streaming() path. However, this is insufficient and the current
buffer must be released as well. Fix it.

Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/media/usb/stk1160/stk1160-v4l.c |   17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

--- a/drivers/media/usb/stk1160/stk1160-v4l.c
+++ b/drivers/media/usb/stk1160/stk1160-v4l.c
@@ -244,6 +244,11 @@ static int stk1160_stop_streaming(struct
 	if (mutex_lock_interruptible(&dev->v4l_lock))
 		return -ERESTARTSYS;
 
+	/*
+	 * Once URBs are cancelled, the URB complete handler
+	 * won't be running. This is required to safely release the
+	 * current buffer (dev->isoc_ctl.buf).
+	 */
 	stk1160_cancel_isoc(dev);
 
 	/*
@@ -624,8 +629,16 @@ void stk1160_clear_queue(struct stk1160
 		stk1160_info("buffer [%p/%d] aborted\n",
 				buf, buf->vb.v4l2_buf.index);
 	}
-	/* It's important to clear current buffer */
-	dev->isoc_ctl.buf = NULL;
+
+	/* It's important to release the current buffer */
+	if (dev->isoc_ctl.buf) {
+		buf = dev->isoc_ctl.buf;
+		dev->isoc_ctl.buf = NULL;
+
+		vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR);
+		stk1160_info("buffer [%p/%d] aborted\n",
+				buf, buf->vb.v4l2_buf.index);
+	}
 	spin_unlock_irqrestore(&dev->buf_lock, flags);
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 144/177] IB/core: disallow registering 0-sized memory region
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (137 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 143/177] [media] stk1160: Make sure current buffer is released Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 145/177] IB/core: dont disallow registering region starting at 0x0 Greg Kroah-Hartman
                   ` (36 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Shachar Raindel, Jack Morgenstein,
	Or Gerlitz, Yann Droneaud, Doug Ledford

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Yann Droneaud <ydroneaud@opteya.com>

commit 8abaae62f3fdead8f4ce0ab46b4ab93dee39bab2 upstream.

If ib_umem_get() is called with a size equal to 0 and an
non-page aligned address, one page will be pinned and a
0-sized umem will be returned to the caller.

This should not be allowed: it's not expected for a memory
region to have a size equal to 0.

This patch adds a check to explicitly refuse to register
a 0-sized region.

Link: http://mid.gmane.org/cover.1428929103.git.ydroneaud@opteya.com
Cc: Shachar Raindel <raindel@mellanox.com>
Cc: Jack Morgenstein <jackm@mellanox.com>
Cc: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Yann Droneaud <ydroneaud@opteya.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/core/umem.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -99,6 +99,9 @@ struct ib_umem *ib_umem_get(struct ib_uc
 	if (dmasync)
 		dma_set_attr(DMA_ATTR_WRITE_BARRIER, &attrs);
 
+	if (!size)
+		return ERR_PTR(-EINVAL);
+
 	/*
 	 * If the combination of the addr and size requested for this memory
 	 * region causes an integer overflow, return error.



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 145/177] IB/core: dont disallow registering region starting at 0x0
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (138 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 144/177] IB/core: disallow registering 0-sized memory region Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 146/177] IB/mlx4: Fix WQE LSO segment calculation Greg Kroah-Hartman
                   ` (35 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Shachar Raindel, Jack Morgenstein,
	Or Gerlitz, Yann Droneaud, Sagi Grimberg, Haggai Eran,
	Doug Ledford

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Yann Droneaud <ydroneaud@opteya.com>

commit 66578b0b2f69659f00b6169e6fe7377c4b100d18 upstream.

In a call to ib_umem_get(), if address is 0x0 and size is
already page aligned, check added in commit 8494057ab5e4
("IB/uverbs: Prevent integer overflow in ib_umem_get address
arithmetic") will refuse to register a memory region that
could otherwise be valid (provided vm.mmap_min_addr sysctl
and mmap_low_allowed SELinux knobs allow userspace to map
something at address 0x0).

This patch allows back such registration: ib_umem_get()
should probably don't care of the base address provided it
can be pinned with get_user_pages().

There's two possible overflows, in (addr + size) and in
PAGE_ALIGN(addr + size), this patch keep ensuring none
of them happen while allowing to pin memory at address
0x0. Anyway, the case of size equal 0 is no more (partially)
handled as 0-length memory region are disallowed by an
earlier check.

Link: http://mid.gmane.org/cover.1428929103.git.ydroneaud@opteya.com
Cc: Shachar Raindel <raindel@mellanox.com>
Cc: Jack Morgenstein <jackm@mellanox.com>
Cc: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Yann Droneaud <ydroneaud@opteya.com>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: Haggai Eran <haggaie@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/core/umem.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -106,8 +106,8 @@ struct ib_umem *ib_umem_get(struct ib_uc
 	 * If the combination of the addr and size requested for this memory
 	 * region causes an integer overflow, return error.
 	 */
-	if ((PAGE_ALIGN(addr + size) <= size) ||
-	    (PAGE_ALIGN(addr + size) <= addr))
+	if (((addr + size) < addr) ||
+	    PAGE_ALIGN(addr + size) < (addr + size))
 		return ERR_PTR(-EINVAL);
 
 	if (!can_do_mlock())



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 146/177] IB/mlx4: Fix WQE LSO segment calculation
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (139 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 145/177] IB/core: dont disallow registering region starting at 0x0 Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 147/177] IB/iser: Fix wrong calculation of protection buffer length Greg Kroah-Hartman
                   ` (34 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Matthew Finlay, Erez Shitrit,
	Or Gerlitz, Doug Ledford

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Erez Shitrit <erezsh@mellanox.com>

commit ca9b590caa17bcbbea119594992666e96cde9c2f upstream.

The current code decreases from the mss size (which is the gso_size
from the kernel skb) the size of the packet headers.

It shouldn't do that because the mss that comes from the stack
(e.g IPoIB) includes only the tcp payload without the headers.

The result is indication to the HW that each packet that the HW sends
is smaller than what it could be, and too many packets will be sent
for big messages.

An easy way to demonstrate one more aspect of the problem is by
configuring the ipoib mtu to be less than 2*hlen (2*56) and then
run app sending big TCP messages. This will tell the HW to send packets
with giant (negative value which under unsigned arithmetics becomes
a huge positive one) length and the QP moves to SQE state.

Fixes: b832be1e4007 ('IB/mlx4: Add IPoIB LSO support')
Reported-by: Matthew Finlay <matt@mellanox.com>
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/hw/mlx4/qp.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -2564,8 +2564,7 @@ static int build_lso_seg(struct mlx4_wqe
 
 	memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen);
 
-	*lso_hdr_sz  = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 |
-				   wr->wr.ud.hlen);
+	*lso_hdr_sz  = cpu_to_be32(wr->wr.ud.mss << 16 | wr->wr.ud.hlen);
 	*lso_seg_len = halign;
 	return 0;
 }



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 147/177] IB/iser: Fix wrong calculation of protection buffer length
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (140 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 146/177] IB/mlx4: Fix WQE LSO segment calculation Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 148/177] tracing: Handle ftrace_dump() atomic context in graph_trace_open() Greg Kroah-Hartman
                   ` (33 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Sagi Grimberg, Doug Ledford

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sagi Grimberg <sagig@mellanox.com>

commit a065fe6aa25ba6ba93c02dc13486131bb3c64d5f upstream.

This length miss-calculation may cause a silent data corruption
in the DIX case and cause the device to reference unmapped area.

Fixes: d77e65350f2d ('libiscsi, iser: Adjust data_length to include protection information')
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/ulp/iser/iser_initiator.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -409,8 +409,8 @@ int iser_send_command(struct iscsi_conn
 	if (scsi_prot_sg_count(sc)) {
 		prot_buf->buf  = scsi_prot_sglist(sc);
 		prot_buf->size = scsi_prot_sg_count(sc);
-		prot_buf->data_len = data_buf->data_len >>
-				     ilog2(sc->device->sector_size) * 8;
+		prot_buf->data_len = (data_buf->data_len >>
+				     ilog2(sc->device->sector_size)) * 8;
 	}
 
 	if (hdr->flags & ISCSI_FLAG_CMD_READ) {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 148/177] tracing: Handle ftrace_dump() atomic context in graph_trace_open()
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (141 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 147/177] IB/iser: Fix wrong calculation of protection buffer length Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 149/177] tracing: Fix incorrect enabling of trace events by boot cmdline Greg Kroah-Hartman
                   ` (32 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Rabin Vincent, Steven Rostedt

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Rabin Vincent <rabin@rab.in>

commit ef99b88b16bee753fa51207abdc58ae660453ec6 upstream.

graph_trace_open() can be called in atomic context from ftrace_dump().
Use GFP_ATOMIC for the memory allocations when that's the case, in order
to avoid the following splat.

 BUG: sleeping function called from invalid context at mm/slab.c:2849
 in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/0
 Backtrace:
 ..
 [<8004dc94>] (__might_sleep) from [<801371f4>] (kmem_cache_alloc_trace+0x160/0x238)
  r7:87800040 r6:000080d0 r5:810d16e8 r4:000080d0
 [<80137094>] (kmem_cache_alloc_trace) from [<800cbd60>] (graph_trace_open+0x30/0xd0)
  r10:00000100 r9:809171a8 r8:00008e28 r7:810d16f0 r6:00000001 r5:810d16e8
  r4:810d16f0
 [<800cbd30>] (graph_trace_open) from [<800c79c4>] (trace_init_global_iter+0x50/0x9c)
  r8:00008e28 r7:808c853c r6:00000001 r5:810d16e8 r4:810d16f0 r3:800cbd30
 [<800c7974>] (trace_init_global_iter) from [<800c7aa0>] (ftrace_dump+0x90/0x2ec)
  r4:810d2580 r3:00000000
 [<800c7a10>] (ftrace_dump) from [<80414b2c>] (sysrq_ftrace_dump+0x1c/0x20)
  r10:00000100 r9:809171a8 r8:808f6e7c r7:00000001 r6:00000007 r5:0000007a
  r4:808d5394
 [<80414b10>] (sysrq_ftrace_dump) from [<800169b8>] (return_to_handler+0x0/0x18)
 [<80415498>] (__handle_sysrq) from [<800169b8>] (return_to_handler+0x0/0x18)
  r8:808c8100 r7:808c8444 r6:00000101 r5:00000010 r4:84eb3210
 [<80415668>] (handle_sysrq) from [<800169b8>] (return_to_handler+0x0/0x18)
 [<8042a760>] (pl011_int) from [<800169b8>] (return_to_handler+0x0/0x18)
  r10:809171bc r9:809171a8 r8:00000001 r7:00000026 r6:808c6000 r5:84f01e60
  r4:8454fe00
 [<8007782c>] (handle_irq_event_percpu) from [<80077b44>] (handle_irq_event+0x4c/0x6c)
  r10:808c7ef0 r9:87283e00 r8:00000001 r7:00000000 r6:8454fe00 r5:84f01e60
  r4:84f01e00
 [<80077af8>] (handle_irq_event) from [<8007aa28>] (handle_fasteoi_irq+0xf0/0x1ac)
  r6:808f52a4 r5:84f01e60 r4:84f01e00 r3:00000000
 [<8007a938>] (handle_fasteoi_irq) from [<80076dc0>] (generic_handle_irq+0x3c/0x4c)
  r6:00000026 r5:00000000 r4:00000026 r3:8007a938
 [<80076d84>] (generic_handle_irq) from [<80077128>] (__handle_domain_irq+0x8c/0xfc)
  r4:808c1e38 r3:0000002e
 [<8007709c>] (__handle_domain_irq) from [<800087b8>] (gic_handle_irq+0x34/0x6c)
  r10:80917748 r9:00000001 r8:88802100 r7:808c7ef0 r6:808c8fb0 r5:00000015
  r4:8880210c r3:808c7ef0
 [<80008784>] (gic_handle_irq) from [<80014044>] (__irq_svc+0x44/0x7c)

Link: http://lkml.kernel.org/r/1428953721-31349-1-git-send-email-rabin@rab.in
Link: http://lkml.kernel.org/r/1428957012-2319-1-git-send-email-rabin@rab.in

Signed-off-by: Rabin Vincent <rabin@rab.in>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 kernel/trace/trace_functions_graph.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -1309,15 +1309,19 @@ void graph_trace_open(struct trace_itera
 {
 	/* pid and depth on the last trace processed */
 	struct fgraph_data *data;
+	gfp_t gfpflags;
 	int cpu;
 
 	iter->private = NULL;
 
-	data = kzalloc(sizeof(*data), GFP_KERNEL);
+	/* We can be called in atomic context via ftrace_dump() */
+	gfpflags = (in_atomic() || irqs_disabled()) ? GFP_ATOMIC : GFP_KERNEL;
+
+	data = kzalloc(sizeof(*data), gfpflags);
 	if (!data)
 		goto out_err;
 
-	data->cpu_data = alloc_percpu(struct fgraph_cpu_data);
+	data->cpu_data = alloc_percpu_gfp(struct fgraph_cpu_data, gfpflags);
 	if (!data->cpu_data)
 		goto out_err_free;
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 149/177] tracing: Fix incorrect enabling of trace events by boot cmdline
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (142 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 148/177] tracing: Handle ftrace_dump() atomic context in graph_trace_open() Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 150/177] i2c: mux: use proper dev when removing "channel-X" symlinks Greg Kroah-Hartman
                   ` (31 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Joonsoo Kim, Steven Rostedt

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Joonsoo Kim <iamjoonsoo.kim@lge.com>

commit 84fce9db4d7eaebd6cb2ee30c15da6d4e4daf846 upstream.

There is a problem that trace events are not properly enabled with
boot cmdline. The problem is that if we pass "trace_event=kmem:mm_page_alloc"
to the boot cmdline, it enables all kmem trace events, and not just
the page_alloc event.

This is caused by the parsing mechanism. When we parse the cmdline, the buffer
contents is modified due to tokenization. And, if we use this buffer
again, we will get the wrong result.

Unfortunately, this buffer is be accessed three times to set trace events
properly at boot time. So, we need to handle this situation.

There is already code handling ",", but we need another for ":".
This patch adds it.

Link: http://lkml.kernel.org/r/1429159484-22977-1-git-send-email-iamjoonsoo.kim@lge.com

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
[ added missing return ret; ]
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 kernel/trace/trace_events.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -565,6 +565,7 @@ static int __ftrace_set_clr_event(struct
 static int ftrace_set_clr_event(struct trace_array *tr, char *buf, int set)
 {
 	char *event = NULL, *sub = NULL, *match;
+	int ret;
 
 	/*
 	 * The buf format can be <subsystem>:<event-name>
@@ -590,7 +591,13 @@ static int ftrace_set_clr_event(struct t
 			event = NULL;
 	}
 
-	return __ftrace_set_clr_event(tr, match, sub, event, set);
+	ret = __ftrace_set_clr_event(tr, match, sub, event, set);
+
+	/* Put back the colon to allow this to be called again */
+	if (buf)
+		*(buf - 1) = ':';
+
+	return ret;
 }
 
 /**



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 150/177] i2c: mux: use proper dev when removing "channel-X" symlinks
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (143 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 149/177] tracing: Fix incorrect enabling of trace events by boot cmdline Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 151/177] i2c: rk3x: report number of messages transmitted Greg Kroah-Hartman
                   ` (30 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Wolfram Sang, Wolfram Sang

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Wolfram Sang <wsa+renesas@sang-engineering.com>

commit 133778482ec6c8fde69406be380333963627c17a upstream.

Those symlinks are created for the mux_dev, so we need to remove it from
there. Currently, it breaks for muxes where the mux_dev is not the device
of the parent adapter like this:

[   78.234644] WARNING: CPU: 0 PID: 365 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x5c/0x78()
[   78.242438] sysfs: cannot create duplicate filename '/devices/platform/i2cbus@8/channel-0'

Remove confusing comments while we are here.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Fixes: c9449affad2ae0
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/i2c/i2c-mux.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
@@ -32,8 +32,9 @@ struct i2c_mux_priv {
 	struct i2c_algorithm algo;
 
 	struct i2c_adapter *parent;
-	void *mux_priv;	/* the mux chip/device */
-	u32  chan_id;	/* the channel id */
+	struct device *mux_dev;
+	void *mux_priv;
+	u32 chan_id;
 
 	int (*select)(struct i2c_adapter *, void *mux_priv, u32 chan_id);
 	int (*deselect)(struct i2c_adapter *, void *mux_priv, u32 chan_id);
@@ -119,6 +120,7 @@ struct i2c_adapter *i2c_add_mux_adapter(
 
 	/* Set up private adapter data */
 	priv->parent = parent;
+	priv->mux_dev = mux_dev;
 	priv->mux_priv = mux_priv;
 	priv->chan_id = chan_id;
 	priv->select = select;
@@ -203,7 +205,7 @@ void i2c_del_mux_adapter(struct i2c_adap
 	char symlink_name[20];
 
 	snprintf(symlink_name, sizeof(symlink_name), "channel-%u", priv->chan_id);
-	sysfs_remove_link(&adap->dev.parent->kobj, symlink_name);
+	sysfs_remove_link(&priv->mux_dev->kobj, symlink_name);
 
 	sysfs_remove_link(&priv->adap.dev.kobj, "mux_device");
 	i2c_del_adapter(adap);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 151/177] i2c: rk3x: report number of messages transmitted
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (144 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 150/177] i2c: mux: use proper dev when removing "channel-X" symlinks Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 152/177] i2c: core: Export bus recovery functions Greg Kroah-Hartman
                   ` (29 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Dmitry Torokhov, Wolfram Sang

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

commit c6cbfb91b878224e78408a2e15901c79de77115a upstream.

master_xfer() method should return number of i2c messages transferred,
but on Rockchip we were usually returning just 1, which caused trouble
with users that actually check number of transferred messages vs.
checking for negative error codes.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/i2c/busses/i2c-rk3x.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/i2c/busses/i2c-rk3x.c
+++ b/drivers/i2c/busses/i2c-rk3x.c
@@ -800,7 +800,7 @@ static int rk3x_i2c_xfer(struct i2c_adap
 	clk_disable(i2c->clk);
 	spin_unlock_irqrestore(&i2c->lock, flags);
 
-	return ret;
+	return ret < 0 ? ret : num;
 }
 
 static u32 rk3x_i2c_func(struct i2c_adapter *adap)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 152/177] i2c: core: Export bus recovery functions
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (145 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 151/177] i2c: rk3x: report number of messages transmitted Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 153/177] drm/radeon: fix doublescan modes (v2) Greg Kroah-Hartman
                   ` (28 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Mark Brown, Wolfram Sang

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Mark Brown <broonie@kernel.org>

commit c1c21f4e60ed4523292f1a89ff45a208bddd3849 upstream.

Current -next fails to link an ARM allmodconfig because drivers that use
the core recovery functions can be built as modules but those functions
are not exported:

ERROR: "i2c_generic_gpio_recovery" [drivers/i2c/busses/i2c-davinci.ko] undefined!
ERROR: "i2c_generic_scl_recovery" [drivers/i2c/busses/i2c-davinci.ko] undefined!
ERROR: "i2c_recover_bus" [drivers/i2c/busses/i2c-davinci.ko] undefined!

Add exports to fix this.

Fixes: 5f9296ba21b3c (i2c: Add bus recovery infrastructure)
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/i2c/i2c-core.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -596,6 +596,7 @@ int i2c_generic_scl_recovery(struct i2c_
 	adap->bus_recovery_info->set_scl(adap, 1);
 	return i2c_generic_recovery(adap);
 }
+EXPORT_SYMBOL_GPL(i2c_generic_scl_recovery);
 
 int i2c_generic_gpio_recovery(struct i2c_adapter *adap)
 {
@@ -610,6 +611,7 @@ int i2c_generic_gpio_recovery(struct i2c
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(i2c_generic_gpio_recovery);
 
 int i2c_recover_bus(struct i2c_adapter *adap)
 {
@@ -619,6 +621,7 @@ int i2c_recover_bus(struct i2c_adapter *
 	dev_dbg(&adap->dev, "Trying i2c bus recovery\n");
 	return adap->bus_recovery_info->recover_bus(adap);
 }
+EXPORT_SYMBOL_GPL(i2c_recover_bus);
 
 static int i2c_device_probe(struct device *dev)
 {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 153/177] drm/radeon: fix doublescan modes (v2)
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (146 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 152/177] i2c: core: Export bus recovery functions Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 154/177] drm/i915: Dont enable CS_PARSER_ERROR interrupts at all Greg Kroah-Hartman
                   ` (27 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Alex Deucher

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alex Deucher <alexander.deucher@amd.com>

commit fd99a0943ffaa0320ea4f69d09ed188f950c0432 upstream.

Use the correct flags for atom.

v2: handle DRM_MODE_FLAG_DBLCLK

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpu/drm/radeon/atombios_crtc.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -330,8 +330,10 @@ atombios_set_crtc_dtd_timing(struct drm_
 		misc |= ATOM_COMPOSITESYNC;
 	if (mode->flags & DRM_MODE_FLAG_INTERLACE)
 		misc |= ATOM_INTERLACE;
-	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
+	if (mode->flags & DRM_MODE_FLAG_DBLCLK)
 		misc |= ATOM_DOUBLE_CLOCK_MODE;
+	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
+		misc |= ATOM_H_REPLICATIONBY2 | ATOM_V_REPLICATIONBY2;
 
 	args.susModeMiscInfo.usAccess = cpu_to_le16(misc);
 	args.ucCRTC = radeon_crtc->crtc_id;
@@ -374,8 +376,10 @@ static void atombios_crtc_set_timing(str
 		misc |= ATOM_COMPOSITESYNC;
 	if (mode->flags & DRM_MODE_FLAG_INTERLACE)
 		misc |= ATOM_INTERLACE;
-	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
+	if (mode->flags & DRM_MODE_FLAG_DBLCLK)
 		misc |= ATOM_DOUBLE_CLOCK_MODE;
+	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
+		misc |= ATOM_H_REPLICATIONBY2 | ATOM_V_REPLICATIONBY2;
 
 	args.susModeMiscInfo.usAccess = cpu_to_le16(misc);
 	args.ucCRTC = radeon_crtc->crtc_id;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 154/177] drm/i915: Dont enable CS_PARSER_ERROR interrupts at all
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (147 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 153/177] drm/radeon: fix doublescan modes (v2) Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 155/177] drm: adv7511: Fix DDC error interrupt handling Greg Kroah-Hartman
                   ` (26 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mono, info, Mika Kuoppala,
	Daniel Vetter, Jani Nikula

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Daniel Vetter <daniel.vetter@ffwll.ch>

commit 37ef01ab5d24d1d520dc79f6a98099d451c2a901 upstream.

We stopped handling them in

commit aaecdf611a05cac26a94713bad25297e60225c29
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Tue Nov 4 15:52:22 2014 +0100

    drm/i915: Stop gathering error states for CS error interrupts

but just clearing is apparently not enough: A sufficiently dead gpu
left behind by firmware (*cough* coreboot *cough*) can keep the gpu in
an endless loop of such interrupts, eventually leading to the nmi
firing. And definitely to what looks like a machine hang.

Since we don't even enable these interrupts on gen5+ let's do the same
on earlier platforms.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=93171
Tested-by: Mono <mono-for-kernel-org@donderklumpen.de>
Tested-by: info@gluglug.org.uk
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpu/drm/i915/i915_irq.c |    8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -3717,14 +3717,12 @@ static int i8xx_irq_postinstall(struct d
 		~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
 		  I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
 		  I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
-		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
-		  I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
+		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
 	I915_WRITE16(IMR, dev_priv->irq_mask);
 
 	I915_WRITE16(IER,
 		     I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
 		     I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
-		     I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
 		     I915_USER_INTERRUPT);
 	POSTING_READ16(IER);
 
@@ -3886,14 +3884,12 @@ static int i915_irq_postinstall(struct d
 		  I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
 		  I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
 		  I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
-		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
-		  I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
+		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
 
 	enable_mask =
 		I915_ASLE_INTERRUPT |
 		I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
 		I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
-		I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
 		I915_USER_INTERRUPT;
 
 	if (I915_HAS_HOTPLUG(dev)) {



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 155/177] drm: adv7511: Fix DDC error interrupt handling
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (148 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 154/177] drm/i915: Dont enable CS_PARSER_ERROR interrupts at all Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 156/177] drm: adv7511: Fix nested sleep when reading EDID Greg Kroah-Hartman
                   ` (25 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Laurent Pinchart

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

commit 2e96206c4f952295e11c311fbb2a7aa2105024af upstream.

The DDC error interrupt bit is located in REG_INT1, not REG_INT0. Update
both the interrupt wait code and the interrupt sources reset code
accordingly.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpu/drm/i2c/adv7511.c |   14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

--- a/drivers/gpu/drm/i2c/adv7511.c
+++ b/drivers/gpu/drm/i2c/adv7511.c
@@ -467,14 +467,16 @@ static int adv7511_get_edid_block(void *
 				     block);
 			ret = adv7511_wait_for_interrupt(adv7511,
 					ADV7511_INT0_EDID_READY |
-					ADV7511_INT1_DDC_ERROR, 200);
+					(ADV7511_INT1_DDC_ERROR << 8), 200);
 
 			if (!(ret & ADV7511_INT0_EDID_READY))
 				return -EIO;
 		}
 
 		regmap_write(adv7511->regmap, ADV7511_REG_INT(0),
-			     ADV7511_INT0_EDID_READY | ADV7511_INT1_DDC_ERROR);
+			     ADV7511_INT0_EDID_READY);
+		regmap_write(adv7511->regmap, ADV7511_REG_INT(1),
+			     ADV7511_INT1_DDC_ERROR);
 
 		/* Break this apart, hopefully more I2C controllers will
 		 * support 64 byte transfers than 256 byte transfers
@@ -528,7 +530,9 @@ static int adv7511_get_modes(struct drm_
 	/* Reading the EDID only works if the device is powered */
 	if (adv7511->dpms_mode != DRM_MODE_DPMS_ON) {
 		regmap_write(adv7511->regmap, ADV7511_REG_INT(0),
-			     ADV7511_INT0_EDID_READY | ADV7511_INT1_DDC_ERROR);
+			     ADV7511_INT0_EDID_READY);
+		regmap_write(adv7511->regmap, ADV7511_REG_INT(1),
+			     ADV7511_INT1_DDC_ERROR);
 		regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER,
 				   ADV7511_POWER_POWER_DOWN, 0);
 		adv7511->current_edid_segment = -1;
@@ -563,7 +567,9 @@ static void adv7511_encoder_dpms(struct
 		adv7511->current_edid_segment = -1;
 
 		regmap_write(adv7511->regmap, ADV7511_REG_INT(0),
-			     ADV7511_INT0_EDID_READY | ADV7511_INT1_DDC_ERROR);
+			     ADV7511_INT0_EDID_READY);
+		regmap_write(adv7511->regmap, ADV7511_REG_INT(1),
+			     ADV7511_INT1_DDC_ERROR);
 		regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER,
 				   ADV7511_POWER_POWER_DOWN, 0);
 		/*



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 156/177] drm: adv7511: Fix nested sleep when reading EDID
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (149 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 155/177] drm: adv7511: Fix DDC error interrupt handling Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:02 ` [PATCH 3.19 157/177] drm/i915: vlv: fix save/restore of GFX_MAX_REQ_COUNT reg Greg Kroah-Hartman
                   ` (24 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Laurent Pinchart

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

commit a5241289c4139f0521b89e34a70f5f998463ae15 upstream.

The EDID read code waits for the read completion interrupt to occur
using wait_event_interruptible(). The condition passed to the macro
reads I2C registers. This results in sleeping with the task state set
to TASK_INTERRUPTIBLE, triggering a WARN_ON() introduced in commit
8eb23b9f35aae ("sched: Debug nested sleeps").

Fix this by reworking the EDID read code. Instead of checking whether
the read is complete through I2C reads, handle the interrupt registers
in the interrupt handler and update a new edid_read flag accordingly. As
a side effect both the IRQ and polling code paths now process the
interrupt sources through the same code path, simplifying the code.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpu/drm/i2c/adv7511.c |   96 ++++++++++++++++++++----------------------
 1 file changed, 46 insertions(+), 50 deletions(-)

--- a/drivers/gpu/drm/i2c/adv7511.c
+++ b/drivers/gpu/drm/i2c/adv7511.c
@@ -33,6 +33,7 @@ struct adv7511 {
 
 	unsigned int current_edid_segment;
 	uint8_t edid_buf[256];
+	bool edid_read;
 
 	wait_queue_head_t wq;
 	struct drm_encoder *encoder;
@@ -379,69 +380,71 @@ static bool adv7511_hpd(struct adv7511 *
 	return false;
 }
 
-static irqreturn_t adv7511_irq_handler(int irq, void *devid)
-{
-	struct adv7511 *adv7511 = devid;
-
-	if (adv7511_hpd(adv7511))
-		drm_helper_hpd_irq_event(adv7511->encoder->dev);
-
-	wake_up_all(&adv7511->wq);
-
-	return IRQ_HANDLED;
-}
-
-static unsigned int adv7511_is_interrupt_pending(struct adv7511 *adv7511,
-						 unsigned int irq)
+static int adv7511_irq_process(struct adv7511 *adv7511)
 {
 	unsigned int irq0, irq1;
-	unsigned int pending;
 	int ret;
 
 	ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(0), &irq0);
 	if (ret < 0)
-		return 0;
+		return ret;
+
 	ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(1), &irq1);
 	if (ret < 0)
-		return 0;
+		return ret;
+
+	regmap_write(adv7511->regmap, ADV7511_REG_INT(0), irq0);
+	regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1);
+
+	if (irq0 & ADV7511_INT0_HDP)
+		drm_helper_hpd_irq_event(adv7511->encoder->dev);
+
+	if (irq0 & ADV7511_INT0_EDID_READY || irq1 & ADV7511_INT1_DDC_ERROR) {
+		adv7511->edid_read = true;
+
+		if (adv7511->i2c_main->irq)
+			wake_up_all(&adv7511->wq);
+	}
+
+	return 0;
+}
 
-	pending = (irq1 << 8) | irq0;
+static irqreturn_t adv7511_irq_handler(int irq, void *devid)
+{
+	struct adv7511 *adv7511 = devid;
+	int ret;
 
-	return pending & irq;
+	ret = adv7511_irq_process(adv7511);
+	return ret < 0 ? IRQ_NONE : IRQ_HANDLED;
 }
 
-static int adv7511_wait_for_interrupt(struct adv7511 *adv7511, int irq,
-				      int timeout)
+/* -----------------------------------------------------------------------------
+ * EDID retrieval
+ */
+
+static int adv7511_wait_for_edid(struct adv7511 *adv7511, int timeout)
 {
-	unsigned int pending;
 	int ret;
 
 	if (adv7511->i2c_main->irq) {
 		ret = wait_event_interruptible_timeout(adv7511->wq,
-				adv7511_is_interrupt_pending(adv7511, irq),
-				msecs_to_jiffies(timeout));
-		if (ret <= 0)
-			return 0;
-		pending = adv7511_is_interrupt_pending(adv7511, irq);
+				adv7511->edid_read, msecs_to_jiffies(timeout));
 	} else {
-		if (timeout < 25)
-			timeout = 25;
-		do {
-			pending = adv7511_is_interrupt_pending(adv7511, irq);
-			if (pending)
+		for (; timeout > 0; timeout -= 25) {
+			ret = adv7511_irq_process(adv7511);
+			if (ret < 0)
+				break;
+
+			if (adv7511->edid_read)
 				break;
+
 			msleep(25);
-			timeout -= 25;
-		} while (timeout >= 25);
+		}
 	}
 
-	return pending;
+	return adv7511->edid_read ? 0 : -EIO;
 }
 
-/* -----------------------------------------------------------------------------
- * EDID retrieval
- */
-
 static int adv7511_get_edid_block(void *data, u8 *buf, unsigned int block,
 				  size_t len)
 {
@@ -463,21 +466,14 @@ static int adv7511_get_edid_block(void *
 			return ret;
 
 		if (status != 2) {
+			adv7511->edid_read = false;
 			regmap_write(adv7511->regmap, ADV7511_REG_EDID_SEGMENT,
 				     block);
-			ret = adv7511_wait_for_interrupt(adv7511,
-					ADV7511_INT0_EDID_READY |
-					(ADV7511_INT1_DDC_ERROR << 8), 200);
-
-			if (!(ret & ADV7511_INT0_EDID_READY))
-				return -EIO;
+			ret = adv7511_wait_for_edid(adv7511, 200);
+			if (ret < 0)
+				return ret;
 		}
 
-		regmap_write(adv7511->regmap, ADV7511_REG_INT(0),
-			     ADV7511_INT0_EDID_READY);
-		regmap_write(adv7511->regmap, ADV7511_REG_INT(1),
-			     ADV7511_INT1_DDC_ERROR);
-
 		/* Break this apart, hopefully more I2C controllers will
 		 * support 64 byte transfers than 256 byte transfers
 		 */



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 157/177] drm/i915: vlv: fix save/restore of GFX_MAX_REQ_COUNT reg
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (150 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 156/177] drm: adv7511: Fix nested sleep when reading EDID Greg Kroah-Hartman
@ 2015-05-02 19:02 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 158/177] drm/i915: cope with large i2c transfers Greg Kroah-Hartman
                   ` (23 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Imre Deak, Rodrigo Vivi,
	Mika Kuoppala, Jani Nikula

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Imre Deak <imre.deak@intel.com>

commit b5f1c97f944482e98e6e39208af356630389d1ea upstream.

Due this typo we don't save/restore the GFX_MAX_REQ_COUNT register across
suspend/resume, so fix this.

This was introduced in

commit ddeea5b0c36f3665446518c609be91f9336ef674
Author: Imre Deak <imre.deak@intel.com>
Date:   Mon May 5 15:19:56 2014 +0300

    drm/i915: vlv: add runtime PM support

I noticed this only by reading the code. To my knowledge it shouldn't
cause any real problems at the moment, since the power well backing this
register remains on across a runtime s/r. This may change once
system-wide s0ix functionality is enabled in the kernel.

v2:
- resend after a missing git add -u :/

Signed-off-by: Imre Deak <imre.deak@intel.com>
Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpu/drm/i915/i915_drv.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1040,7 +1040,7 @@ static void vlv_save_gunit_s0ix_state(st
 		s->lra_limits[i] = I915_READ(GEN7_LRA_LIMITS_BASE + i * 4);
 
 	s->media_max_req_count	= I915_READ(GEN7_MEDIA_MAX_REQ_COUNT);
-	s->gfx_max_req_count	= I915_READ(GEN7_MEDIA_MAX_REQ_COUNT);
+	s->gfx_max_req_count	= I915_READ(GEN7_GFX_MAX_REQ_COUNT);
 
 	s->render_hwsp		= I915_READ(RENDER_HWS_PGA_GEN7);
 	s->ecochk		= I915_READ(GAM_ECOCHK);
@@ -1122,7 +1122,7 @@ static void vlv_restore_gunit_s0ix_state
 		I915_WRITE(GEN7_LRA_LIMITS_BASE + i * 4, s->lra_limits[i]);
 
 	I915_WRITE(GEN7_MEDIA_MAX_REQ_COUNT, s->media_max_req_count);
-	I915_WRITE(GEN7_MEDIA_MAX_REQ_COUNT, s->gfx_max_req_count);
+	I915_WRITE(GEN7_GFX_MAX_REQ_COUNT, s->gfx_max_req_count);
 
 	I915_WRITE(RENDER_HWS_PGA_GEN7,	s->render_hwsp);
 	I915_WRITE(GAM_ECOCHK,		s->ecochk);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 158/177] drm/i915: cope with large i2c transfers
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (151 preceding siblings ...)
  2015-05-02 19:02 ` [PATCH 3.19 157/177] drm/i915: vlv: fix save/restore of GFX_MAX_REQ_COUNT reg Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 159/177] RCU pathwalk breakage when running into a symlink overmounting something Greg Kroah-Hartman
                   ` (22 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chris Wilson, Dmitry Torokhov, Jani Nikula

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>

commit 9535c4757b881e06fae72a857485ad57c422b8d2 upstream.

The hardware, according to the specs, is limited to 256 byte transfers,
and current driver has no protections in case users attempt to do larger
transfers. The code will just stomp over status register and mayhem
ensues.

Let's split larger transfers into digestable chunks. Doing this allows
Atmel MXT driver on Pixel 1 function properly (it hasn't since commit
9d8dc3e529a19e427fd379118acd132520935c5d "Input: atmel_mxt_ts -
implement T44 message handling" which tries to consume multiple
touchscreen/touchpad reports in a single transaction).

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpu/drm/i915/i915_reg.h  |    1 
 drivers/gpu/drm/i915/intel_i2c.c |   66 +++++++++++++++++++++++++++++++++------
 2 files changed, 57 insertions(+), 10 deletions(-)

--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1713,6 +1713,7 @@ enum punit_power_well {
 #define   GMBUS_CYCLE_INDEX	(2<<25)
 #define   GMBUS_CYCLE_STOP	(4<<25)
 #define   GMBUS_BYTE_COUNT_SHIFT 16
+#define   GMBUS_BYTE_COUNT_MAX   256U
 #define   GMBUS_SLAVE_INDEX_SHIFT 8
 #define   GMBUS_SLAVE_ADDR_SHIFT 1
 #define   GMBUS_SLAVE_READ	(1<<0)
--- a/drivers/gpu/drm/i915/intel_i2c.c
+++ b/drivers/gpu/drm/i915/intel_i2c.c
@@ -270,18 +270,17 @@ gmbus_wait_idle(struct drm_i915_private
 }
 
 static int
-gmbus_xfer_read(struct drm_i915_private *dev_priv, struct i2c_msg *msg,
-		u32 gmbus1_index)
+gmbus_xfer_read_chunk(struct drm_i915_private *dev_priv,
+		      unsigned short addr, u8 *buf, unsigned int len,
+		      u32 gmbus1_index)
 {
 	int reg_offset = dev_priv->gpio_mmio_base;
-	u16 len = msg->len;
-	u8 *buf = msg->buf;
 
 	I915_WRITE(GMBUS1 + reg_offset,
 		   gmbus1_index |
 		   GMBUS_CYCLE_WAIT |
 		   (len << GMBUS_BYTE_COUNT_SHIFT) |
-		   (msg->addr << GMBUS_SLAVE_ADDR_SHIFT) |
+		   (addr << GMBUS_SLAVE_ADDR_SHIFT) |
 		   GMBUS_SLAVE_READ | GMBUS_SW_RDY);
 	while (len) {
 		int ret;
@@ -303,11 +302,35 @@ gmbus_xfer_read(struct drm_i915_private
 }
 
 static int
-gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg)
+gmbus_xfer_read(struct drm_i915_private *dev_priv, struct i2c_msg *msg,
+		u32 gmbus1_index)
 {
-	int reg_offset = dev_priv->gpio_mmio_base;
-	u16 len = msg->len;
 	u8 *buf = msg->buf;
+	unsigned int rx_size = msg->len;
+	unsigned int len;
+	int ret;
+
+	do {
+		len = min(rx_size, GMBUS_BYTE_COUNT_MAX);
+
+		ret = gmbus_xfer_read_chunk(dev_priv, msg->addr,
+					    buf, len, gmbus1_index);
+		if (ret)
+			return ret;
+
+		rx_size -= len;
+		buf += len;
+	} while (rx_size != 0);
+
+	return 0;
+}
+
+static int
+gmbus_xfer_write_chunk(struct drm_i915_private *dev_priv,
+		       unsigned short addr, u8 *buf, unsigned int len)
+{
+	int reg_offset = dev_priv->gpio_mmio_base;
+	unsigned int chunk_size = len;
 	u32 val, loop;
 
 	val = loop = 0;
@@ -319,8 +342,8 @@ gmbus_xfer_write(struct drm_i915_private
 	I915_WRITE(GMBUS3 + reg_offset, val);
 	I915_WRITE(GMBUS1 + reg_offset,
 		   GMBUS_CYCLE_WAIT |
-		   (msg->len << GMBUS_BYTE_COUNT_SHIFT) |
-		   (msg->addr << GMBUS_SLAVE_ADDR_SHIFT) |
+		   (chunk_size << GMBUS_BYTE_COUNT_SHIFT) |
+		   (addr << GMBUS_SLAVE_ADDR_SHIFT) |
 		   GMBUS_SLAVE_WRITE | GMBUS_SW_RDY);
 	while (len) {
 		int ret;
@@ -337,6 +360,29 @@ gmbus_xfer_write(struct drm_i915_private
 		if (ret)
 			return ret;
 	}
+
+	return 0;
+}
+
+static int
+gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg)
+{
+	u8 *buf = msg->buf;
+	unsigned int tx_size = msg->len;
+	unsigned int len;
+	int ret;
+
+	do {
+		len = min(tx_size, GMBUS_BYTE_COUNT_MAX);
+
+		ret = gmbus_xfer_write_chunk(dev_priv, msg->addr, buf, len);
+		if (ret)
+			return ret;
+
+		buf += len;
+		tx_size -= len;
+	} while (tx_size != 0);
+
 	return 0;
 }
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 159/177] RCU pathwalk breakage when running into a symlink overmounting something
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (152 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 158/177] drm/i915: cope with large i2c transfers Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 160/177] Revert "nfs: replace nfs_add_stats with nfs_inc_stats when add one" Greg Kroah-Hartman
                   ` (21 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Al Viro

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Al Viro <viro@zeniv.linux.org.uk>

commit 3cab989afd8d8d1bc3d99fef0e7ed87c31e7b647 upstream.

Calling unlazy_walk() in walk_component() and do_last() when we find
a symlink that needs to be followed doesn't acquire a reference to vfsmount.
That's fine when the symlink is on the same vfsmount as the parent directory
(which is almost always the case), but it's not always true - one _can_
manage to bind a symlink on top of something.  And in such cases we end up
with excessive mntput().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/namei.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1585,7 +1585,8 @@ static inline int walk_component(struct
 
 	if (should_follow_link(path->dentry, follow)) {
 		if (nd->flags & LOOKUP_RCU) {
-			if (unlikely(unlazy_walk(nd, path->dentry))) {
+			if (unlikely(nd->path.mnt != path->mnt ||
+				     unlazy_walk(nd, path->dentry))) {
 				err = -ECHILD;
 				goto out_err;
 			}
@@ -3028,7 +3029,8 @@ finish_lookup:
 
 	if (should_follow_link(path->dentry, !symlink_ok)) {
 		if (nd->flags & LOOKUP_RCU) {
-			if (unlikely(unlazy_walk(nd, path->dentry))) {
+			if (unlikely(nd->path.mnt != path->mnt ||
+				     unlazy_walk(nd, path->dentry))) {
 				error = -ECHILD;
 				goto out;
 			}



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 160/177] Revert "nfs: replace nfs_add_stats with nfs_inc_stats when add one"
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (153 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 159/177] RCU pathwalk breakage when running into a symlink overmounting something Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 161/177] nfsd4: disallow ALLOCATE with special stateids Greg Kroah-Hartman
                   ` (20 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Nicolas Iooss, Trond Myklebust

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicolas Iooss <nicolas.iooss_linux@m4x.org>

commit 3708f842e107b9b79d54a75d152e666b693649e8 upstream.

This reverts commit 5a254d08b086d80cbead2ebcee6d2a4b3a15587a.

Since commit 5a254d08b086 ("nfs: replace nfs_add_stats with
nfs_inc_stats when add one"), nfs_readpage and nfs_do_writepage use
nfs_inc_stats to increment NFSIOS_READPAGES and NFSIOS_WRITEPAGES
instead of nfs_add_stats.

However nfs_inc_stats does not do the same thing as nfs_add_stats with
value 1 because these functions work on distinct stats:
nfs_inc_stats increments stats from "enum nfs_stat_eventcounters" (in
server->io_stats->events) and nfs_add_stats those from "enum
nfs_stat_bytecounters" (in server->io_stats->bytes).

Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Fixes: 5a254d08b086 ("nfs: replace nfs_add_stats with nfs_inc_stats...")
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/nfs/read.c  |    2 +-
 fs/nfs/write.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -269,7 +269,7 @@ int nfs_readpage(struct file *file, stru
 	dprintk("NFS: nfs_readpage (%p %ld@%lu)\n",
 		page, PAGE_CACHE_SIZE, page_file_index(page));
 	nfs_inc_stats(inode, NFSIOS_VFSREADPAGE);
-	nfs_inc_stats(inode, NFSIOS_READPAGES);
+	nfs_add_stats(inode, NFSIOS_READPAGES, 1);
 
 	/*
 	 * Try to flush any pending writes to the file..
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -575,7 +575,7 @@ static int nfs_do_writepage(struct page
 	int ret;
 
 	nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGE);
-	nfs_inc_stats(inode, NFSIOS_WRITEPAGES);
+	nfs_add_stats(inode, NFSIOS_WRITEPAGES, 1);
 
 	nfs_pageio_cond_complete(pgio, page_file_index(page));
 	ret = nfs_page_async_flush(pgio, page, wbc->sync_mode == WB_SYNC_NONE);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 161/177] nfsd4: disallow ALLOCATE with special stateids
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (154 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 160/177] Revert "nfs: replace nfs_add_stats with nfs_inc_stats when add one" Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 162/177] nfsd4: fix READ permission checking Greg Kroah-Hartman
                   ` (19 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Anna Schumaker, J. Bruce Fields

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "J. Bruce Fields" <bfields@redhat.com>

commit 5ba4a25ab7b13be528b23f85182f4d09cf7f71ad upstream.

vfs_fallocate will hit a NULL dereference if the client tries an
ALLOCATE or DEALLOCATE with a special stateid.  Fix that.  (We also
depend on the open to have broken any conflicting leases or delegations
for us.)

(If it turns out we need to allow special stateid's then we could do a
temporary open here in the special-stateid case, as we do for read and
write.  For now I'm assuming it's not necessary.)

Fixes: 95d871f03cae "nfsd: Add ALLOCATE support"
Cc: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/nfsd/nfs4proc.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1028,6 +1028,8 @@ nfsd4_fallocate(struct svc_rqst *rqstp,
 		dprintk("NFSD: nfsd4_fallocate: couldn't process stateid!\n");
 		return status;
 	}
+	if (!file)
+		return nfserr_bad_stateid;
 
 	status = nfsd4_vfs_fallocate(rqstp, &cstate->current_fh, file,
 				     fallocate->falloc_offset,



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 162/177] nfsd4: fix READ permission checking
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (155 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 161/177] nfsd4: disallow ALLOCATE with special stateids Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 163/177] nfsd4: disallow SEEK with special stateids Greg Kroah-Hartman
                   ` (18 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, J. Bruce Fields

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "J. Bruce Fields" <bfields@redhat.com>

commit 6e4891dc289cd191d46ab7ba1dcb29646644f9ca upstream.

In the case we already have a struct file (derived from a stateid), we
still need to do permission-checking; otherwise an unauthorized user
could gain access to a file by sniffing or guessing somebody else's
stateid.

Fixes: dc97618ddda9 "nfsd4: separate splice and readv cases"
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/nfsd/nfs4xdr.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -3246,6 +3246,7 @@ nfsd4_encode_read(struct nfsd4_compoundr
 	unsigned long maxcount;
 	struct xdr_stream *xdr = &resp->xdr;
 	struct file *file = read->rd_filp;
+	struct svc_fh *fhp = read->rd_fhp;
 	int starting_len = xdr->buf->len;
 	struct raparms *ra;
 	__be32 *p;
@@ -3269,12 +3270,15 @@ nfsd4_encode_read(struct nfsd4_compoundr
 	maxcount = min_t(unsigned long, maxcount, (xdr->buf->buflen - xdr->buf->len));
 	maxcount = min_t(unsigned long, maxcount, read->rd_length);
 
-	if (!read->rd_filp) {
+	if (read->rd_filp)
+		err = nfsd_permission(resp->rqstp, fhp->fh_export,
+				fhp->fh_dentry,
+				NFSD_MAY_READ|NFSD_MAY_OWNER_OVERRIDE);
+	else
 		err = nfsd_get_tmp_read_open(resp->rqstp, read->rd_fhp,
 						&file, &ra);
-		if (err)
-			goto err_truncate;
-	}
+	if (err)
+		goto err_truncate;
 
 	if (file->f_op->splice_read && test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags))
 		err = nfsd4_encode_splice_read(resp, read, file, maxcount);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 163/177] nfsd4: disallow SEEK with special stateids
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (156 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 162/177] nfsd4: fix READ permission checking Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 164/177] nfsd: eliminate NFSD_DEBUG Greg Kroah-Hartman
                   ` (17 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anna Schumaker, Christoph Hellwig,
	J. Bruce Fields

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "J. Bruce Fields" <bfields@redhat.com>

commit 980608fb50aea34993ba956b71cd4602aa42b14b upstream.

If the client uses a special stateid then we'll pass a NULL file to
vfs_llseek.

Fixes: 24bab491220f " NFSD: Implement SEEK"
Cc: Anna Schumaker <Anna.Schumaker@Netapp.com>
Reported-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/nfsd/nfs4proc.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1069,6 +1069,8 @@ nfsd4_seek(struct svc_rqst *rqstp, struc
 		dprintk("NFSD: nfsd4_seek: couldn't process stateid!\n");
 		return status;
 	}
+	if (!file)
+		return nfserr_bad_stateid;
 
 	switch (seek->seek_whence) {
 	case NFS4_CONTENT_DATA:



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 164/177] nfsd: eliminate NFSD_DEBUG
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (157 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 163/177] nfsd4: disallow SEEK with special stateids Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 165/177] NFS: Add a stub for GETDEVICELIST Greg Kroah-Hartman
                   ` (16 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mark Salter, Jeff Layton, J. Bruce Fields

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Mark Salter <msalter@redhat.com>

commit 135dd002c23054aaa056ea3162c1e0356905c195 upstream.

Commit f895b252d4edf ("sunrpc: eliminate RPC_DEBUG") introduced
use of IS_ENABLED() in a uapi header which leads to a build
failure for userspace apps trying to use <linux/nfsd/debug.h>:

   linux/nfsd/debug.h:18:15: error: missing binary operator before token "("
  #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
                ^

Since this was only used to define NFSD_DEBUG if CONFIG_SUNRPC_DEBUG
is enabled, replace instances of NFSD_DEBUG with CONFIG_SUNRPC_DEBUG.

Fixes: f895b252d4edf "sunrpc: eliminate RPC_DEBUG"
Signed-off-by: Mark Salter <msalter@redhat.com>
Reviewed-by: Jeff Layton <jlayton@primarydata.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/lockd/svcsubs.c              |    2 +-
 fs/nfsd/nfs4state.c             |    2 +-
 fs/nfsd/nfsd.h                  |    2 +-
 include/uapi/linux/nfsd/debug.h |    8 --------
 4 files changed, 3 insertions(+), 11 deletions(-)

--- a/fs/lockd/svcsubs.c
+++ b/fs/lockd/svcsubs.c
@@ -31,7 +31,7 @@
 static struct hlist_head	nlm_files[FILE_NRHASH];
 static DEFINE_MUTEX(nlm_file_mutex);
 
-#ifdef NFSD_DEBUG
+#ifdef CONFIG_SUNRPC_DEBUG
 static inline void nlm_debug_print_fh(char *msg, struct nfs_fh *f)
 {
 	u32 *fhp = (u32*)f->data;
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -1162,7 +1162,7 @@ hash_sessionid(struct nfs4_sessionid *se
 	return sid->sequence % SESSION_HASH_SIZE;
 }
 
-#ifdef NFSD_DEBUG
+#ifdef CONFIG_SUNRPC_DEBUG
 static inline void
 dump_sessionid(const char *fn, struct nfs4_sessionid *sessionid)
 {
--- a/fs/nfsd/nfsd.h
+++ b/fs/nfsd/nfsd.h
@@ -24,7 +24,7 @@
 #include "export.h"
 
 #undef ifdebug
-#ifdef NFSD_DEBUG
+#ifdef CONFIG_SUNRPC_DEBUG
 # define ifdebug(flag)		if (nfsd_debug & NFSDDBG_##flag)
 #else
 # define ifdebug(flag)		if (0)
--- a/include/uapi/linux/nfsd/debug.h
+++ b/include/uapi/linux/nfsd/debug.h
@@ -12,14 +12,6 @@
 #include <linux/sunrpc/debug.h>
 
 /*
- * Enable debugging for nfsd.
- * Requires RPC_DEBUG.
- */
-#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
-# define NFSD_DEBUG		1
-#endif
-
-/*
  * knfsd debug flags
  */
 #define NFSDDBG_SOCK		0x0001



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 165/177] NFS: Add a stub for GETDEVICELIST
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (158 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 164/177] nfsd: eliminate NFSD_DEBUG Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 166/177] e1000: add dummy allocator to fix race condition between mtu change and netpoll Greg Kroah-Hartman
                   ` (15 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Anna Schumaker, Trond Myklebust

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Anna Schumaker <Anna.Schumaker@netapp.com>

commit 7c61f0d3897eeeff6f3294adb9f910ddefa8035a upstream.

d4b18c3e (pnfs: remove GETDEVICELIST implementation) removed the
GETDEVICELIST operation from the NFS client, but left a "hole" in the
nfs4_procedures array.  This caused /proc/self/mountstats to report an
operation named "51" where GETDEVICELIST used to be.  This patch adds a
stub to fix mountstats.

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Fixes: d4b18c3e (pnfs: remove GETDEVICELIST implementation)
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/nfs/nfs4xdr.c |    6 ++++++
 1 file changed, 6 insertions(+)

--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -7338,6 +7338,11 @@ nfs4_stat_to_errno(int stat)
 	.p_name   = #proc,					\
 }
 
+#define STUB(proc)		\
+[NFSPROC4_CLNT_##proc] = {	\
+	.p_name = #proc,	\
+}
+
 struct rpc_procinfo	nfs4_procedures[] = {
 	PROC(READ,		enc_read,		dec_read),
 	PROC(WRITE,		enc_write,		dec_write),
@@ -7390,6 +7395,7 @@ struct rpc_procinfo	nfs4_procedures[] =
 	PROC(SECINFO_NO_NAME,	enc_secinfo_no_name,	dec_secinfo_no_name),
 	PROC(TEST_STATEID,	enc_test_stateid,	dec_test_stateid),
 	PROC(FREE_STATEID,	enc_free_stateid,	dec_free_stateid),
+	STUB(GETDEVICELIST),
 	PROC(BIND_CONN_TO_SESSION,
 			enc_bind_conn_to_session, dec_bind_conn_to_session),
 	PROC(DESTROY_CLIENTID,	enc_destroy_clientid,	dec_destroy_clientid),



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 166/177] e1000: add dummy allocator to fix race condition between mtu change and netpoll
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (159 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 165/177] NFS: Add a stub for GETDEVICELIST Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 167/177] mac80211: send AP probe as unicast again Greg Kroah-Hartman
                   ` (14 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sabrina Dubroca, Aaron Brown, Jeff Kirsher

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Sabrina Dubroca <sd@queasysnail.net>

commit 08e8331654d1d7b2c58045e549005bc356aa7810 upstream.

There is a race condition between e1000_change_mtu's cleanups and
netpoll, when we change the MTU across jumbo size:

Changing MTU frees all the rx buffers:
    e1000_change_mtu -> e1000_down -> e1000_clean_all_rx_rings ->
        e1000_clean_rx_ring

Then, close to the end of e1000_change_mtu:
    pr_info -> ... -> netpoll_poll_dev -> e1000_clean ->
        e1000_clean_rx_irq -> e1000_alloc_rx_buffers -> e1000_alloc_frag

And when we come back to do the rest of the MTU change:
    e1000_up -> e1000_configure -> e1000_configure_rx ->
        e1000_alloc_jumbo_rx_buffers

alloc_jumbo finds the buffers already != NULL, since data (shared with
page in e1000_rx_buffer->rxbuf) has been re-alloc'd, but it's garbage,
or at least not what is expected when in jumbo state.

This results in an unusable adapter (packets don't get through), and a
NULL pointer dereference on the next call to e1000_clean_rx_ring
(other mtu change, link down, shutdown):

BUG: unable to handle kernel NULL pointer dereference at           (null)
IP: [<ffffffff81194d6e>] put_compound_page+0x7e/0x330

    [...]

Call Trace:
 [<ffffffff81195445>] put_page+0x55/0x60
 [<ffffffff815d9f44>] e1000_clean_rx_ring+0x134/0x200
 [<ffffffff815da055>] e1000_clean_all_rx_rings+0x45/0x60
 [<ffffffff815df5e0>] e1000_down+0x1c0/0x1d0
 [<ffffffff811e2260>] ? deactivate_slab+0x7f0/0x840
 [<ffffffff815e21bc>] e1000_change_mtu+0xdc/0x170
 [<ffffffff81647050>] dev_set_mtu+0xa0/0x140
 [<ffffffff81664218>] do_setlink+0x218/0xac0
 [<ffffffff814459e9>] ? nla_parse+0xb9/0x120
 [<ffffffff816652d0>] rtnl_newlink+0x6d0/0x890
 [<ffffffff8104f000>] ? kvm_clock_read+0x20/0x40
 [<ffffffff810a2068>] ? sched_clock_cpu+0xa8/0x100
 [<ffffffff81663802>] rtnetlink_rcv_msg+0x92/0x260

By setting the allocator to a dummy version, netpoll can't mess up our
rx buffers.  The allocator is set back to a sane value in
e1000_configure_rx.

Fixes: edbbb3ca1077 ("e1000: implement jumbo receive with partial descriptors")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/ethernet/intel/e1000/e1000_main.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -144,6 +144,11 @@ static bool e1000_clean_rx_irq(struct e1
 static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
 				     struct e1000_rx_ring *rx_ring,
 				     int *work_done, int work_to_do);
+static void e1000_alloc_dummy_rx_buffers(struct e1000_adapter *adapter,
+					 struct e1000_rx_ring *rx_ring,
+					 int cleaned_count)
+{
+}
 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
 				   struct e1000_rx_ring *rx_ring,
 				   int cleaned_count);
@@ -3548,8 +3553,11 @@ static int e1000_change_mtu(struct net_d
 		msleep(1);
 	/* e1000_down has a dependency on max_frame_size */
 	hw->max_frame_size = max_frame;
-	if (netif_running(netdev))
+	if (netif_running(netdev)) {
+		/* prevent buffers from being reallocated */
+		adapter->alloc_rx_buf = e1000_alloc_dummy_rx_buffers;
 		e1000_down(adapter);
+	}
 
 	/* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
 	 * means we reserve 2 more, this pushes us to allocate from the next



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 167/177] mac80211: send AP probe as unicast again
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (160 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 166/177] e1000: add dummy allocator to fix race condition between mtu change and netpoll Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 168/177] ebpf: verifier: check that call reg with ARG_ANYTHING is initialized Greg Kroah-Hartman
                   ` (13 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Louis Langholtz, Johannes Berg

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Johannes Berg <johannes.berg@intel.com>

commit a73f8e21f3f93159bc19e154e8f50891c22c11db upstream.

Louis reported that a static checker was complaining that
the 'dst' variable was set (multiple times) but not used.
This is due to a previous commit having removed the usage
(apparently erroneously), so add it back.

Fixes: a344d6778a98 ("mac80211: allow drivers to support NL80211_SCAN_FLAG_RANDOM_ADDR")
Reported-by: Louis Langholtz <lou_langholtz@me.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/mac80211/mlme.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2231,7 +2231,7 @@ static void ieee80211_mgd_probe_ap_send(
 		else
 			ssid_len = ssid[1];
 
-		ieee80211_send_probe_req(sdata, sdata->vif.addr, NULL,
+		ieee80211_send_probe_req(sdata, sdata->vif.addr, dst,
 					 ssid + 2, ssid_len, NULL,
 					 0, (u32) -1, true, 0,
 					 ifmgd->associated->channel, false);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 168/177] ebpf: verifier: check that call reg with ARG_ANYTHING is initialized
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (161 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 167/177] mac80211: send AP probe as unicast again Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 169/177] lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR Greg Kroah-Hartman
                   ` (12 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Daniel Borkmann, Alexei Starovoitov,
	David S. Miller

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Daniel Borkmann <daniel@iogearbox.net>

commit 80f1d68ccba70b1060c9c7360ca83da430f66bed upstream.

I noticed that a helper function with argument type ARG_ANYTHING does
not need to have an initialized value (register).

This can worst case lead to unintented stack memory leakage in future
helper functions if they are not carefully designed, or unintended
application behaviour in case the application developer was not careful
enough to match a correct helper function signature in the API.

The underlying issue is that ARG_ANYTHING should actually be split
into two different semantics:

  1) ARG_DONTCARE for function arguments that the helper function
     does not care about (in other words: the default for unused
     function arguments), and

  2) ARG_ANYTHING that is an argument actually being used by a
     helper function and *guaranteed* to be an initialized register.

The current risk is low: ARG_ANYTHING is only used for the 'flags'
argument (r4) in bpf_map_update_elem() that internally does strict
checking.

Fixes: 17a5267067f3 ("bpf: verifier (add verifier core)")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/bpf.h   |    4 +++-
 kernel/bpf/verifier.c |    5 ++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -48,7 +48,7 @@ struct bpf_map *bpf_map_get(struct fd f)
 
 /* function argument constraints */
 enum bpf_arg_type {
-	ARG_ANYTHING = 0,	/* any argument is ok */
+	ARG_DONTCARE = 0,	/* unused argument in helper function */
 
 	/* the following constraints used to prototype
 	 * bpf_map_lookup/update/delete_elem() functions
@@ -62,6 +62,8 @@ enum bpf_arg_type {
 	 */
 	ARG_PTR_TO_STACK,	/* any pointer to eBPF program stack */
 	ARG_CONST_STACK_SIZE,	/* number of bytes accessed from stack */
+
+	ARG_ANYTHING,		/* any (initialized) argument is ok */
 };
 
 /* type of values returned from helper functions */
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -755,7 +755,7 @@ static int check_func_arg(struct verifie
 	enum bpf_reg_type expected_type;
 	int err = 0;
 
-	if (arg_type == ARG_ANYTHING)
+	if (arg_type == ARG_DONTCARE)
 		return 0;
 
 	if (reg->type == NOT_INIT) {
@@ -763,6 +763,9 @@ static int check_func_arg(struct verifie
 		return -EACCES;
 	}
 
+	if (arg_type == ARG_ANYTHING)
+		return 0;
+
 	if (arg_type == ARG_PTR_TO_STACK || arg_type == ARG_PTR_TO_MAP_KEY ||
 	    arg_type == ARG_PTR_TO_MAP_VALUE) {
 		expected_type = PTR_TO_STACK;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 169/177] lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (162 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 168/177] ebpf: verifier: check that call reg with ARG_ANYTHING is initialized Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 170/177] wl18xx: show rx_frames_per_rates as an array as it really is Greg Kroah-Hartman
                   ` (11 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Theodore Tso, mancha security,
	Daniel Borkmann, Hannes Frederic Sowa, Stephan Mueller,
	Herbert Xu

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: mancha security <mancha1@zoho.com>

commit 0b053c9518292705736329a8fe20ef4686ffc8e9 upstream.

OPTIMIZER_HIDE_VAR(), as defined when using gcc, is insufficient to
ensure protection from dead store optimization.

For the random driver and crypto drivers, calls are emitted ...

  $ gdb vmlinux
  (gdb) disassemble memzero_explicit
  Dump of assembler code for function memzero_explicit:
    0xffffffff813a18b0 <+0>:	push   %rbp
    0xffffffff813a18b1 <+1>:	mov    %rsi,%rdx
    0xffffffff813a18b4 <+4>:	xor    %esi,%esi
    0xffffffff813a18b6 <+6>:	mov    %rsp,%rbp
    0xffffffff813a18b9 <+9>:	callq  0xffffffff813a7120 <memset>
    0xffffffff813a18be <+14>:	pop    %rbp
    0xffffffff813a18bf <+15>:	retq
  End of assembler dump.

  (gdb) disassemble extract_entropy
  [...]
    0xffffffff814a5009 <+313>:	mov    %r12,%rdi
    0xffffffff814a500c <+316>:	mov    $0xa,%esi
    0xffffffff814a5011 <+321>:	callq  0xffffffff813a18b0 <memzero_explicit>
    0xffffffff814a5016 <+326>:	mov    -0x48(%rbp),%rax
  [...]

... but in case in future we might use facilities such as LTO, then
OPTIMIZER_HIDE_VAR() is not sufficient to protect gcc from a possible
eviction of the memset(). We have to use a compiler barrier instead.

Minimal test example when we assume memzero_explicit() would *not* be
a call, but would have been *inlined* instead:

  static inline void memzero_explicit(void *s, size_t count)
  {
    memset(s, 0, count);
    <foo>
  }

  int main(void)
  {
    char buff[20];

    snprintf(buff, sizeof(buff) - 1, "test");
    printf("%s", buff);

    memzero_explicit(buff, sizeof(buff));
    return 0;
  }

With <foo> := OPTIMIZER_HIDE_VAR():

  (gdb) disassemble main
  Dump of assembler code for function main:
  [...]
   0x0000000000400464 <+36>:	callq  0x400410 <printf@plt>
   0x0000000000400469 <+41>:	xor    %eax,%eax
   0x000000000040046b <+43>:	add    $0x28,%rsp
   0x000000000040046f <+47>:	retq
  End of assembler dump.

With <foo> := barrier():

  (gdb) disassemble main
  Dump of assembler code for function main:
  [...]
   0x0000000000400464 <+36>:	callq  0x400410 <printf@plt>
   0x0000000000400469 <+41>:	movq   $0x0,(%rsp)
   0x0000000000400471 <+49>:	movq   $0x0,0x8(%rsp)
   0x000000000040047a <+58>:	movl   $0x0,0x10(%rsp)
   0x0000000000400482 <+66>:	xor    %eax,%eax
   0x0000000000400484 <+68>:	add    $0x28,%rsp
   0x0000000000400488 <+72>:	retq
  End of assembler dump.

As can be seen, movq, movq, movl are being emitted inlined
via memset().

Reference: http://thread.gmane.org/gmane.linux.kernel.cryptoapi/13764/
Fixes: d4c5efdb9777 ("random: add and use memzero_explicit() for clearing data")
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: mancha security <mancha1@zoho.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 lib/string.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/lib/string.c
+++ b/lib/string.c
@@ -610,7 +610,7 @@ EXPORT_SYMBOL(memset);
 void memzero_explicit(void *s, size_t count)
 {
 	memset(s, 0, count);
-	OPTIMIZER_HIDE_VAR(s);
+	barrier();
 }
 EXPORT_SYMBOL(memzero_explicit);
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 170/177] wl18xx: show rx_frames_per_rates as an array as it really is
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (163 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 169/177] lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 171/177] crypto: omap-aes - Fix support for unequal lengths Greg Kroah-Hartman
                   ` (10 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Nicolas Iooss, Kalle Valo

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicolas Iooss <nicolas.iooss_linux@m4x.org>

commit a3fa71c40f1853d0c27e8f5bc01a722a705d9682 upstream.

In struct wl18xx_acx_rx_rate_stat, rx_frames_per_rates field is an
array, not a number.  This means WL18XX_DEBUGFS_FWSTATS_FILE can't be
used to display this field in debugfs (it would display a pointer, not
the actual data).  Use WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY instead.

This bug has been found by adding a __printf attribute to
wl1271_format_buffer.  gcc complained about "format '%u' expects
argument of type 'unsigned int', but argument 5 has type 'u32 *'".

Fixes: c5d94169e818 ("wl18xx: use new fw stats structures")
Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/wireless/ti/wl18xx/debugfs.c |    2 +-
 drivers/net/wireless/ti/wlcore/debugfs.h |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/net/wireless/ti/wl18xx/debugfs.c
+++ b/drivers/net/wireless/ti/wl18xx/debugfs.c
@@ -136,7 +136,7 @@ WL18XX_DEBUGFS_FWSTATS_FILE(rx_filter, p
 WL18XX_DEBUGFS_FWSTATS_FILE(rx_filter, accum_arp_pend_requests, "%u");
 WL18XX_DEBUGFS_FWSTATS_FILE(rx_filter, max_arp_queue_dep, "%u");
 
-WL18XX_DEBUGFS_FWSTATS_FILE(rx_rate, rx_frames_per_rates, "%u");
+WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY(rx_rate, rx_frames_per_rates, 50);
 
 WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY(aggr_size, tx_agg_vs_rate,
 				  AGGR_STATS_TX_AGG*AGGR_STATS_TX_RATE);
--- a/drivers/net/wireless/ti/wlcore/debugfs.h
+++ b/drivers/net/wireless/ti/wlcore/debugfs.h
@@ -26,8 +26,8 @@
 
 #include "wlcore.h"
 
-int wl1271_format_buffer(char __user *userbuf, size_t count,
-			 loff_t *ppos, char *fmt, ...);
+__printf(4, 5) int wl1271_format_buffer(char __user *userbuf, size_t count,
+					loff_t *ppos, char *fmt, ...);
 
 int wl1271_debugfs_init(struct wl1271 *wl);
 void wl1271_debugfs_exit(struct wl1271 *wl);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 171/177] crypto: omap-aes - Fix support for unequal lengths
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (164 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 170/177] wl18xx: show rx_frames_per_rates as an array as it really is Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 172/177] C6x: time: Ensure consistency in __init Greg Kroah-Hartman
                   ` (9 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Lokesh Vutla, Herbert Xu

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: "Vutla, Lokesh" <lokeshvutla@ti.com>

commit 6d7e7e02a044025237b6f62a20521170b794537f upstream.

For cases where total length of an input SGs is not same as
length of the input data for encryption, omap-aes driver
crashes. This happens in the case when IPsec is trying to use
omap-aes driver.

To avoid this, we copy all the pages from the input SG list
into a contiguous buffer and prepare a single element SG list
for this buffer with length as the total bytes to crypt, which is
similar thing that is done in case of unaligned lengths.

Fixes: 6242332ff2f3 ("crypto: omap-aes - Add support for cases of unaligned lengths")
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/crypto/omap-aes.c |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

--- a/drivers/crypto/omap-aes.c
+++ b/drivers/crypto/omap-aes.c
@@ -554,15 +554,23 @@ static int omap_aes_crypt_dma_stop(struc
 	return err;
 }
 
-static int omap_aes_check_aligned(struct scatterlist *sg)
+static int omap_aes_check_aligned(struct scatterlist *sg, int total)
 {
+	int len = 0;
+
 	while (sg) {
 		if (!IS_ALIGNED(sg->offset, 4))
 			return -1;
 		if (!IS_ALIGNED(sg->length, AES_BLOCK_SIZE))
 			return -1;
+
+		len += sg->length;
 		sg = sg_next(sg);
 	}
+
+	if (len != total)
+		return -1;
+
 	return 0;
 }
 
@@ -633,8 +641,8 @@ static int omap_aes_handle_queue(struct
 	dd->in_sg = req->src;
 	dd->out_sg = req->dst;
 
-	if (omap_aes_check_aligned(dd->in_sg) ||
-	    omap_aes_check_aligned(dd->out_sg)) {
+	if (omap_aes_check_aligned(dd->in_sg, dd->total) ||
+	    omap_aes_check_aligned(dd->out_sg, dd->total)) {
 		if (omap_aes_copy_sgs(dd))
 			pr_err("Failed to copy SGs for unaligned cases\n");
 		dd->sgs_copied = 1;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 172/177] C6x: time: Ensure consistency in __init
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (165 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 171/177] crypto: omap-aes - Fix support for unequal lengths Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 173/177] memstick: mspro_block: add missing curly braces Greg Kroah-Hartman
                   ` (8 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Nishanth Menon, Mark Salter

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nishanth Menon <nm@ti.com>

commit f4831605f2dacd12730fe73961c77253cc2ea425 upstream.

time_init invokes timer64_init (which is __init annotation)
since all of these are invoked at init time, lets maintain
consistency by ensuring time_init is marked appropriately
as well.

This fixes the following warning with CONFIG_DEBUG_SECTION_MISMATCH=y

WARNING: vmlinux.o(.text+0x3bfc): Section mismatch in reference from the function time_init() to the function .init.text:timer64_init()
The function time_init() references
the function __init timer64_init().
This is often because time_init lacks a __init
annotation or the annotation of timer64_init is wrong.

Fixes: 546a39546c64 ("C6X: time management")
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Mark Salter <msalter@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/c6x/kernel/time.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/c6x/kernel/time.c
+++ b/arch/c6x/kernel/time.c
@@ -49,7 +49,7 @@ u64 sched_clock(void)
 	return (tsc * sched_clock_multiplier) >> SCHED_CLOCK_SHIFT;
 }
 
-void time_init(void)
+void __init time_init(void)
 {
 	u64 tmp = (u64)NSEC_PER_SEC << SCHED_CLOCK_SHIFT;
 



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 173/177] memstick: mspro_block: add missing curly braces
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (166 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 172/177] C6x: time: Ensure consistency in __init Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 174/177] drivers: platform: parse IRQ flags from resources Greg Kroah-Hartman
                   ` (7 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Alex Dubov,
	Andrew Morton, Linus Torvalds

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Dan Carpenter <dan.carpenter@oracle.com>

commit 13f6b191aaa11c7fd718d35a0c565f3c16bc1d99 upstream.

Using the indenting we can see the curly braces were obviously intended.
This is a static checker fix, but my guess is that we don't read enough
bytes, because we don't calculate "t_len" correctly.

Fixes: f1d82698029b ('memstick: use fully asynchronous request processing')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Alex Dubov <oakad@yahoo.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/memstick/core/mspro_block.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/memstick/core/mspro_block.c
+++ b/drivers/memstick/core/mspro_block.c
@@ -758,7 +758,7 @@ static int mspro_block_complete_req(stru
 
 		if (error || (card->current_mrq.tpc == MSPRO_CMD_STOP)) {
 			if (msb->data_dir == READ) {
-				for (cnt = 0; cnt < msb->current_seg; cnt++)
+				for (cnt = 0; cnt < msb->current_seg; cnt++) {
 					t_len += msb->req_sg[cnt].length
 						 / msb->page_size;
 
@@ -766,6 +766,7 @@ static int mspro_block_complete_req(stru
 						t_len += msb->current_page - 1;
 
 					t_len *= msb->page_size;
+				}
 			}
 		} else
 			t_len = blk_rq_bytes(msb->block_req);



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 174/177] drivers: platform: parse IRQ flags from resources
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (167 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 173/177] memstick: mspro_block: add missing curly braces Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 175/177] driver core: bus: Goto appropriate labels on failure in bus_add_device Greg Kroah-Hartman
                   ` (6 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Robert Jarzmik, Linus Walleij

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Linus Walleij <linus.walleij@linaro.org>

commit 7085a7401ba54e92bbb5aa24d6f428071e18e509 upstream.

This fixes a regression from the net subsystem:
After commit d52fdbb735c36a209f36a628d40ca9185b349ba7
"smc91x: retrieve IRQ and trigger flags in a modern way"
a regression would appear on some legacy platforms such
as the ARM PXA Zylonite that specify IRQ resources like
this:

static struct resource r = {
       .start  = X,
       .end    = X,
       .flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
};

The previous code would retrieve the resource and parse
the high edge setting in the SMC91x driver, a use pattern
that means every driver specifying an IRQ flag from a
static resource need to parse resource flags and apply
them at runtime.

As we switched the code to use IRQ descriptors to retrieve
the the trigger type like this:

  irqd_get_trigger_type(irq_get_irq_data(...));

the code would work for new platforms using e.g. device
tree as the backing irq descriptor would have its flags
properly set, whereas this kind of oldstyle static
resources at no point assign the trigger flags to the
corresponding IRQ descriptor.

To make the behaviour identical on modern device tree
and legacy static platform data platforms, modify
platform_get_irq() to assign the trigger flags to the
irq descriptor when a client looks up an IRQ from static
resources.

Fixes: d52fdbb735c3 ("smc91x: retrieve IRQ and trigger flags in a modern way")
Tested-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/base/platform.c |    9 +++++++++
 1 file changed, 9 insertions(+)

--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -101,6 +101,15 @@ int platform_get_irq(struct platform_dev
 	}
 
 	r = platform_get_resource(dev, IORESOURCE_IRQ, num);
+	/*
+	 * The resources may pass trigger flags to the irqs that need
+	 * to be set up. It so happens that the trigger flags for
+	 * IORESOURCE_BITS correspond 1-to-1 to the IRQF_TRIGGER*
+	 * settings.
+	 */
+	if (r && r->flags & IORESOURCE_BITS)
+		irqd_set_trigger_type(irq_get_irq_data(r->start),
+				      r->flags & IORESOURCE_BITS);
 
 	return r ? r->start : -ENXIO;
 #endif



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 175/177] driver core: bus: Goto appropriate labels on failure in bus_add_device
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (168 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 174/177] drivers: platform: parse IRQ flags from resources Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 19:03 ` [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks Greg Kroah-Hartman
                   ` (5 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Junjie Mao

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Junjie Mao <junjie_mao@yeah.net>

commit 1c34203a1496d1849ba978021b878b3447d433c8 upstream.

It is not necessary to call device_remove_groups() when device_add_groups()
fails.

The group added by device_add_groups() should be removed if sysfs_create_link()
fails.

Fixes: fa6fdb33b486 ("driver core: bus_type: add dev_groups")
Signed-off-by: Junjie Mao <junjie_mao@yeah.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/base/bus.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -515,11 +515,11 @@ int bus_add_device(struct device *dev)
 			goto out_put;
 		error = device_add_groups(dev, bus->dev_groups);
 		if (error)
-			goto out_groups;
+			goto out_id;
 		error = sysfs_create_link(&bus->p->devices_kset->kobj,
 						&dev->kobj, dev_name(dev));
 		if (error)
-			goto out_id;
+			goto out_groups;
 		error = sysfs_create_link(&dev->kobj,
 				&dev->bus->p->subsys.kobj, "subsystem");
 		if (error)



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (169 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 175/177] driver core: bus: Goto appropriate labels on failure in bus_add_device Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-02 21:47   ` Thomas Backlund
  2015-05-02 19:03 ` [PATCH 3.19 177/177] netfilter: bridge: really save frag_max_size between PRE and POST_ROUTING Greg Kroah-Hartman
                   ` (4 subsequent siblings)
  175 siblings, 1 reply; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alexey Perevalov, Daniel Borkmann,
	Pablo Neira Ayuso

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Daniel Borkmann <daniel@iogearbox.net>

commit afb7718016fcb0370ac29a83b2839c78b76c2960 upstream.

While originally only being intended for outgoing traffic, commit
a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for
LOCAL_IN nf hooks") enabled xt_cgroups for the NF_INET_LOCAL_IN hook
as well, in order to allow for nfacct accounting.

Besides being currently limited to early demuxes only, commit
a00e76349f35 forgot to add a check if we deal with full sockets,
i.e. in this case not with time wait sockets. TCP time wait sockets
do not have the same memory layout as full sockets, a lower memory
footprint and consequently also don't have a sk_classid member;
probing for sk_classid member there could potentially lead to a
crash.

Fixes: a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for LOCAL_IN nf hooks")
Cc: Alexey Perevalov <a.perevalov@samsung.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/netfilter/xt_cgroup.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/net/netfilter/xt_cgroup.c
+++ b/net/netfilter/xt_cgroup.c
@@ -39,7 +39,7 @@ cgroup_mt(const struct sk_buff *skb, str
 {
 	const struct xt_cgroup_info *info = par->matchinfo;
 
-	if (skb->sk == NULL)
+	if (skb->sk == NULL || !sk_fullsock(skb->sk))
 		return false;
 
 	return (info->id == skb->sk->sk_classid) ^ info->invert;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* [PATCH 3.19 177/177] netfilter: bridge: really save frag_max_size between PRE and POST_ROUTING
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (170 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks Greg Kroah-Hartman
@ 2015-05-02 19:03 ` Greg Kroah-Hartman
  2015-05-03 20:00 ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
                   ` (3 subsequent siblings)
  175 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-02 19:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Florian Westphal, Pablo Neira Ayuso

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Florian Westphal <fw@strlen.de>

commit 0b67c43ce36a9964f1d5e3f973ee19eefd3f9f8f upstream.

We also need to save/store in forward, else br_parse_ip_options call
will zero frag_max_size as well.

Fixes: 93fdd47e5 ('bridge: Save frag_max_size between PRE_ROUTING and POST_ROUTING')
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/bridge/br_netfilter.c |   17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -651,6 +651,13 @@ static int br_nf_forward_finish(struct s
 	struct net_device *in;
 
 	if (!IS_ARP(skb) && !IS_VLAN_ARP(skb)) {
+		int frag_max_size;
+
+		if (skb->protocol == htons(ETH_P_IP)) {
+			frag_max_size = IPCB(skb)->frag_max_size;
+			BR_INPUT_SKB_CB(skb)->frag_max_size = frag_max_size;
+		}
+
 		in = nf_bridge->physindev;
 		if (nf_bridge->mask & BRNF_PKT_TYPE) {
 			skb->pkt_type = PACKET_OTHERHOST;
@@ -710,8 +717,14 @@ static unsigned int br_nf_forward_ip(con
 		nf_bridge->mask |= BRNF_PKT_TYPE;
 	}
 
-	if (pf == NFPROTO_IPV4 && br_parse_ip_options(skb))
-		return NF_DROP;
+	if (pf == NFPROTO_IPV4) {
+		int frag_max = BR_INPUT_SKB_CB(skb)->frag_max_size;
+
+		if (br_parse_ip_options(skb))
+			return NF_DROP;
+
+		IPCB(skb)->frag_max_size = frag_max;
+	}
 
 	/* The physdev module checks on this */
 	nf_bridge->mask |= BRNF_BRIDGED;



^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks
  2015-05-02 19:03 ` [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks Greg Kroah-Hartman
@ 2015-05-02 21:47   ` Thomas Backlund
  2015-05-03 18:45     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 200+ messages in thread
From: Thomas Backlund @ 2015-05-02 21:47 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: stable, Alexey Perevalov, Daniel Borkmann, Pablo Neira Ayuso

Den 02.05.2015 22:03, Greg Kroah-Hartman skrev:
> 3.19-stable review patch.  If anyone has any objections, please let me know.
>
> ------------------
>
> From: Daniel Borkmann <daniel@iogearbox.net>
>
> commit afb7718016fcb0370ac29a83b2839c78b76c2960 upstream.
>
> While originally only being intended for outgoing traffic, commit
> a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for
> LOCAL_IN nf hooks") enabled xt_cgroups for the NF_INET_LOCAL_IN hook
> as well, in order to allow for nfacct accounting.
>
> Besides being currently limited to early demuxes only, commit
> a00e76349f35 forgot to add a check if we deal with full sockets,
> i.e. in this case not with time wait sockets. TCP time wait sockets
> do not have the same memory layout as full sockets, a lower memory
> footprint and consequently also don't have a sk_classid member;
> probing for sk_classid member there could potentially lead to a
> crash.
>
> Fixes: a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for LOCAL_IN nf hooks")
> Cc: Alexey Perevalov <a.perevalov@samsung.com>
> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> ---
>   net/netfilter/xt_cgroup.c |    2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/net/netfilter/xt_cgroup.c
> +++ b/net/netfilter/xt_cgroup.c
> @@ -39,7 +39,7 @@ cgroup_mt(const struct sk_buff *skb, str
>   {
>   	const struct xt_cgroup_info *info = par->matchinfo;
>
> -	if (skb->sk == NULL)
> +	if (skb->sk == NULL || !sk_fullsock(skb->sk))
>   		return false;
>
>   	return (info->id == skb->sk->sk_classid) ^ info->invert;
>
>


This one breaks the build with:

net/netfilter/xt_cgroup.c: In function 'cgroup_mt':
net/netfilter/xt_cgroup.c:42:2: error: implicit declaration of function 
'sk_fullsock' [-Werror=implicit-function-declaration]


In order to fix it, you also need to add:

 From 1d0ab253872cdd3d8e7913f59c266c7fd01771d0 Mon Sep 17 00:00:00 2001
From: Eric Dumazet <edumazet@google.com>
Date: Sun, 15 Mar 2015 21:12:12 -0700
Subject: [PATCH] net: add sk_fullsock() helper


which in turn needs this one:

 From 10feb428a5045d5eb18a5d755fbb8f0cc9645626 Mon Sep 17 00:00:00 2001
From: Eric Dumazet <edumazet@google.com>
Date: Thu, 12 Mar 2015 16:44:04 -0700
Subject: [PATCH] inet: add TCP_NEW_SYN_RECV state

--
Thomas


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks
  2015-05-02 21:47   ` Thomas Backlund
@ 2015-05-03 18:45     ` Greg Kroah-Hartman
  2015-05-03 21:20       ` Daniel Borkmann
  0 siblings, 1 reply; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-03 18:45 UTC (permalink / raw)
  To: Thomas Backlund
  Cc: linux-kernel, stable, Alexey Perevalov, Daniel Borkmann,
	Pablo Neira Ayuso

On Sun, May 03, 2015 at 12:47:17AM +0300, Thomas Backlund wrote:
> Den 02.05.2015 22:03, Greg Kroah-Hartman skrev:
> >3.19-stable review patch.  If anyone has any objections, please let me know.
> >
> >------------------
> >
> >From: Daniel Borkmann <daniel@iogearbox.net>
> >
> >commit afb7718016fcb0370ac29a83b2839c78b76c2960 upstream.
> >
> >While originally only being intended for outgoing traffic, commit
> >a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for
> >LOCAL_IN nf hooks") enabled xt_cgroups for the NF_INET_LOCAL_IN hook
> >as well, in order to allow for nfacct accounting.
> >
> >Besides being currently limited to early demuxes only, commit
> >a00e76349f35 forgot to add a check if we deal with full sockets,
> >i.e. in this case not with time wait sockets. TCP time wait sockets
> >do not have the same memory layout as full sockets, a lower memory
> >footprint and consequently also don't have a sk_classid member;
> >probing for sk_classid member there could potentially lead to a
> >crash.
> >
> >Fixes: a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for LOCAL_IN nf hooks")
> >Cc: Alexey Perevalov <a.perevalov@samsung.com>
> >Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
> >Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
> >Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >
> >---
> >  net/netfilter/xt_cgroup.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >--- a/net/netfilter/xt_cgroup.c
> >+++ b/net/netfilter/xt_cgroup.c
> >@@ -39,7 +39,7 @@ cgroup_mt(const struct sk_buff *skb, str
> >  {
> >  	const struct xt_cgroup_info *info = par->matchinfo;
> >
> >-	if (skb->sk == NULL)
> >+	if (skb->sk == NULL || !sk_fullsock(skb->sk))
> >  		return false;
> >
> >  	return (info->id == skb->sk->sk_classid) ^ info->invert;
> >
> >
> 
> 
> This one breaks the build with:
> 
> net/netfilter/xt_cgroup.c: In function 'cgroup_mt':
> net/netfilter/xt_cgroup.c:42:2: error: implicit declaration of function
> 'sk_fullsock' [-Werror=implicit-function-declaration]
> 
> 
> In order to fix it, you also need to add:
> 
> From 1d0ab253872cdd3d8e7913f59c266c7fd01771d0 Mon Sep 17 00:00:00 2001
> From: Eric Dumazet <edumazet@google.com>
> Date: Sun, 15 Mar 2015 21:12:12 -0700
> Subject: [PATCH] net: add sk_fullsock() helper
> 
> 
> which in turn needs this one:
> 
> From 10feb428a5045d5eb18a5d755fbb8f0cc9645626 Mon Sep 17 00:00:00 2001
> From: Eric Dumazet <edumazet@google.com>
> Date: Thu, 12 Mar 2015 16:44:04 -0700
> Subject: [PATCH] inet: add TCP_NEW_SYN_RECV state

I've just dropped the patch, thanks for letting me know, odd that my
build tests missed it.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (171 preceding siblings ...)
  2015-05-02 19:03 ` [PATCH 3.19 177/177] netfilter: bridge: really save frag_max_size between PRE and POST_ROUTING Greg Kroah-Hartman
@ 2015-05-03 20:00 ` Guenter Roeck
  2015-05-03 21:32   ` Guenter Roeck
  2015-05-04  0:07 ` Guenter Roeck
                   ` (2 subsequent siblings)
  175 siblings, 1 reply; 200+ messages in thread
From: Guenter Roeck @ 2015-05-03 20:00 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel; +Cc: torvalds, akpm, shuah.kh, stable

On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 3.19.7 release.
> There are 177 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Mon May  4 18:59:31 UTC 2015.
> Anything received after that time might be too late.
>

Build results:
	total: 125 pass: 101 fail: 24
Failed builds:
	alpha:allmodconfig
	arm:allmodconfig
	arm64:allmodconfig
	i386:allyesconfig
	i386:allmodconfig
	m68k:allmodconfig
	mips:defconfig
	mips:allmodconfig
	mips:bcm47xx_defconfig
	mips:bcm63xx_defconfig
	mips:nlm_xlp_defconfig
	mips:ath79_defconfig
	mips:ar7_defconfig
	mips:fuloong2e_defconfig
	mips:e55_defconfig
	mips:cavium_octeon_defconfig
	mips:malta_defconfig
	powerpc:defconfig
	powerpc:allmodconfig
	s390:allmodconfig
	sparc64:allmodconfig
	x86_64:allyesconfig
	x86_64:allmodconfig
	xtensa:allmodconfig

Qemu test results:
	total: 30 pass: 22 fail: 8
Failed tests:
	mips:mips_malta_defconfig
	mips:mips_malta_smp_defconfig
	mips:mipsel_malta_defconfig
	mips:mipsel_malta_smp_defconfig
	mips64:mips_malta64_defconfig
	mips64:mips_malta64_smp_defconfig
	powerpc:ppc64_book3s_defconfig
	powerpc:ppc64_book3s_smp_defconfig

Build error:

net/netfilter/xt_cgroup.c: In function 'cgroup_mt':
net/netfilter/xt_cgroup.c:42:2: error: implicit declaration of function 'sk_fullsock'

3.19.y and 4.0.y are being rebuilt right mow, so maybe you fixed that
problem as well as the same failure in 4.0.y. I'll resend my report for 3.19.y
and wait with the report for 4.0.y until after the rebuild is complete.

Guenter


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks
  2015-05-03 18:45     ` Greg Kroah-Hartman
@ 2015-05-03 21:20       ` Daniel Borkmann
  2015-05-04  8:46         ` Pablo Neira Ayuso
  0 siblings, 1 reply; 200+ messages in thread
From: Daniel Borkmann @ 2015-05-03 21:20 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Thomas Backlund
  Cc: linux-kernel, stable, Alexey Perevalov, Pablo Neira Ayuso

Hi Greg, hi Pablo,

On 05/03/2015 08:45 PM, Greg Kroah-Hartman wrote:
> On Sun, May 03, 2015 at 12:47:17AM +0300, Thomas Backlund wrote:
>> Den 02.05.2015 22:03, Greg Kroah-Hartman skrev:
>>> 3.19-stable review patch.  If anyone has any objections, please let me know.
>>>
>>> ------------------
>>>
>>> From: Daniel Borkmann <daniel@iogearbox.net>
>>>
>>> commit afb7718016fcb0370ac29a83b2839c78b76c2960 upstream.
>>>
>>> While originally only being intended for outgoing traffic, commit
>>> a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for
>>> LOCAL_IN nf hooks") enabled xt_cgroups for the NF_INET_LOCAL_IN hook
>>> as well, in order to allow for nfacct accounting.
>>>
>>> Besides being currently limited to early demuxes only, commit
>>> a00e76349f35 forgot to add a check if we deal with full sockets,
>>> i.e. in this case not with time wait sockets. TCP time wait sockets
>>> do not have the same memory layout as full sockets, a lower memory
>>> footprint and consequently also don't have a sk_classid member;
>>> probing for sk_classid member there could potentially lead to a
>>> crash.
>>>
>>> Fixes: a00e76349f35 ("netfilter: x_tables: allow to use cgroup match for LOCAL_IN nf hooks")
>>> Cc: Alexey Perevalov <a.perevalov@samsung.com>
>>> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
>>> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
>>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>
>>> ---
>>>   net/netfilter/xt_cgroup.c |    2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> --- a/net/netfilter/xt_cgroup.c
>>> +++ b/net/netfilter/xt_cgroup.c
>>> @@ -39,7 +39,7 @@ cgroup_mt(const struct sk_buff *skb, str
>>>   {
>>>   	const struct xt_cgroup_info *info = par->matchinfo;
>>>
>>> -	if (skb->sk == NULL)
>>> +	if (skb->sk == NULL || !sk_fullsock(skb->sk))
>>>   		return false;
>>>
>>>   	return (info->id == skb->sk->sk_classid) ^ info->invert;
>>
>> This one breaks the build with:
>>
>> net/netfilter/xt_cgroup.c: In function 'cgroup_mt':
>> net/netfilter/xt_cgroup.c:42:2: error: implicit declaration of function
>> 'sk_fullsock' [-Werror=implicit-function-declaration]
>>
>>
>> In order to fix it, you also need to add:
>>
>>  From 1d0ab253872cdd3d8e7913f59c266c7fd01771d0 Mon Sep 17 00:00:00 2001
>> From: Eric Dumazet <edumazet@google.com>
>> Date: Sun, 15 Mar 2015 21:12:12 -0700
>> Subject: [PATCH] net: add sk_fullsock() helper
>>
>> which in turn needs this one:
>>
>>  From 10feb428a5045d5eb18a5d755fbb8f0cc9645626 Mon Sep 17 00:00:00 2001
>> From: Eric Dumazet <edumazet@google.com>
>> Date: Thu, 12 Mar 2015 16:44:04 -0700
>> Subject: [PATCH] inet: add TCP_NEW_SYN_RECV state
>
> I've just dropped the patch, thanks for letting me know, odd that my
> build tests missed it.

If you're nevertheless interested in this fix, you could use this version,
which should apply/build just fine:

   http://patchwork.ozlabs.org/patch/455546/

I believe Pablo usually sends netfilter patches in bundles to you.

Thanks a lot,
Daniel

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-03 20:00 ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
@ 2015-05-03 21:32   ` Guenter Roeck
  2015-05-03 21:49     ` Linus Torvalds
  0 siblings, 1 reply; 200+ messages in thread
From: Guenter Roeck @ 2015-05-03 21:32 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel; +Cc: torvalds, akpm, shuah.kh, stable

On 05/03/2015 01:00 PM, Guenter Roeck wrote:

>
> Build error:
>
> net/netfilter/xt_cgroup.c: In function 'cgroup_mt':
> net/netfilter/xt_cgroup.c:42:2: error: implicit declaration of function 'sk_fullsock'
>
> 3.19.y and 4.0.y are being rebuilt right mow, so maybe you fixed that
> problem as well as the same failure in 4.0.y. I'll resend my report for 3.19.y
> and wait with the report for 4.0.y until after the rebuild is complete.
>

Another build failure, affecting powerpc:defconfig and powerpc:allmodconfig
builds for 4.0.y and 3.19.y (and it looks like it is still there).

Error log:
include/linux/bug.h: Assembler messages:
include/linux/bug.h:7: Error: unrecognized opcode: `enum'
include/linux/bug.h:8: Error: junk at end of line, first unrecognized character is `,'
include/linux/bug.h:9: Error: junk at end of line, first unrecognized character is `,'

[ and many more similar messages ]

Bisect points to 'powerpc, jump_label: Include linux/jump_label.h to get HAVE_JUMP_LABEL define'.

After reverting the patch in 4.0.y, the files affected by it still compile,
so I don't entirely understand why this patch would be needed in -stable.

Guenter


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-03 21:32   ` Guenter Roeck
@ 2015-05-03 21:49     ` Linus Torvalds
  2015-05-03 22:40       ` Guenter Roeck
  0 siblings, 1 reply; 200+ messages in thread
From: Linus Torvalds @ 2015-05-03 21:49 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Greg Kroah-Hartman, Linux Kernel Mailing List, Andrew Morton,
	Shuah Khan, stable

On Sun, May 3, 2015 at 2:32 PM, Guenter Roeck <linux@roeck-us.net> wrote:
>
> Bisect points to 'powerpc, jump_label: Include linux/jump_label.h to get
> HAVE_JUMP_LABEL define'.

Btw, since you do these bisections (great!), it would be doubly useful
if you then (automatically?) would add the people involved with the
particular commit to the cc. At least the ones that signed off and/or
acked the commit (that jump-label commit has a lot of people on the
cc, but if they never _responded_ to the cc, I'm not sure that they
should necessarily be disturbed).

The people who signed off on it hopefully are aware of any
dependencies for that commit, in ways that Greg himself (or the stable
team) may not be.

                      Linus

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-03 21:49     ` Linus Torvalds
@ 2015-05-03 22:40       ` Guenter Roeck
  0 siblings, 0 replies; 200+ messages in thread
From: Guenter Roeck @ 2015-05-03 22:40 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Greg Kroah-Hartman, Linux Kernel Mailing List, Andrew Morton,
	Shuah Khan, stable

On 05/03/2015 02:49 PM, Linus Torvalds wrote:
> On Sun, May 3, 2015 at 2:32 PM, Guenter Roeck <linux@roeck-us.net> wrote:
>>
>> Bisect points to 'powerpc, jump_label: Include linux/jump_label.h to get
>> HAVE_JUMP_LABEL define'.
>
> Btw, since you do these bisections (great!), it would be doubly useful
> if you then (automatically?) would add the people involved with the
> particular commit to the cc. At least the ones that signed off and/or
> acked the commit (that jump-label commit has a lot of people on the
> cc, but if they never _responded_ to the cc, I'm not sure that they
> should necessarily be disturbed).
>
> The people who signed off on it hopefully are aware of any
> dependencies for that commit, in ways that Greg himself (or the stable
> team) may not be.
>

Yes, I know. Quite often I do that. I didn't do it today because of time
constraints and, in the hurry I was in, I simply forgot.

Doing the bisects automatically would be great. Unfortunately that part
(and sending the e-mail) is all manual, and I don't think I'll find the
time anytime soon to automate it.

Guenter


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (172 preceding siblings ...)
  2015-05-03 20:00 ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
@ 2015-05-04  0:07 ` Guenter Roeck
  2015-05-04  5:33   ` Ingo Molnar
                     ` (3 more replies)
  2015-05-04 16:09 ` Shuah Khan
  2015-05-05 22:10 ` Greg Kroah-Hartman
  175 siblings, 4 replies; 200+ messages in thread
From: Guenter Roeck @ 2015-05-04  0:07 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, shuah.kh, stable, Ralf Baechle, Markos Chandras,
	Anton Blanchard, Ingo Molnar

On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 3.19.7 release.
> There are 177 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Mon May  4 18:59:31 UTC 2015.
> Anything received after that time might be too late.
>

Take two:

Build results:
	total: 125 pass: 112 fail: 13
Failed builds:
	mips:defconfig
	mips:allmodconfig
	mips:bcm47xx_defconfig
	mips:bcm63xx_defconfig
	mips:nlm_xlp_defconfig
	mips:ath79_defconfig
	mips:ar7_defconfig
	mips:fuloong2e_defconfig
	mips:e55_defconfig
	mips:cavium_octeon_defconfig
	mips:malta_defconfig
	powerpc:defconfig
	powerpc:allmodconfig

Qemu test results:
	total: 30 pass: 22 fail: 8
Failed tests:
	mips:mips_malta_defconfig
	mips:mips_malta_smp_defconfig
	mips:mipsel_malta_defconfig
	mips:mipsel_malta_smp_defconfig
	mips64:mips_malta64_defconfig
	mips64:mips_malta64_smp_defconfig
	powerpc:ppc64_book3s_defconfig
	powerpc:ppc64_book3s_smp_defconfig

---
Error logs:

mips:

arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'

Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
emulation for EVA'.

---
powerpc:

include/linux/bug.h: Assembler messages:
include/linux/bug.h:7: Error: unrecognized opcode: `enum'
include/linux/bug.h:8: Error: junk at end of line, first unrecognized character is `,'

As mentioned earlier, bisect points to 'powerpc, jump_label:
Include linux/jump_label.h to get HAVE_JUMP_LABEL define'.'.

Guenter


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-04  0:07 ` Guenter Roeck
@ 2015-05-04  5:33   ` Ingo Molnar
  2015-05-04 21:46     ` Greg Kroah-Hartman
  2015-05-04 21:50   ` Greg Kroah-Hartman
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 200+ messages in thread
From: Ingo Molnar @ 2015-05-04  5:33 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Greg Kroah-Hartman, linux-kernel, torvalds, akpm, shuah.kh,
	stable, Ralf Baechle, Markos Chandras, Anton Blanchard


* Guenter Roeck <linux@roeck-us.net> wrote:

> On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
> >This is the start of the stable review cycle for the 3.19.7 release.
> >There are 177 patches in this series, all will be posted as a response
> >to this one.  If anyone has any issues with these being applied, please
> >let me know.
> >
> >Responses should be made by Mon May  4 18:59:31 UTC 2015.
> >Anything received after that time might be too late.
> >
> 
> Take two:
> 
> Build results:
> 	total: 125 pass: 112 fail: 13
> Failed builds:
> 	mips:defconfig
> 	mips:allmodconfig
> 	mips:bcm47xx_defconfig
> 	mips:bcm63xx_defconfig
> 	mips:nlm_xlp_defconfig
> 	mips:ath79_defconfig
> 	mips:ar7_defconfig
> 	mips:fuloong2e_defconfig
> 	mips:e55_defconfig
> 	mips:cavium_octeon_defconfig
> 	mips:malta_defconfig
> 	powerpc:defconfig
> 	powerpc:allmodconfig
> 
> Qemu test results:
> 	total: 30 pass: 22 fail: 8
> Failed tests:
> 	mips:mips_malta_defconfig
> 	mips:mips_malta_smp_defconfig
> 	mips:mipsel_malta_defconfig
> 	mips:mipsel_malta_smp_defconfig
> 	mips64:mips_malta64_defconfig
> 	mips64:mips_malta64_smp_defconfig
> 	powerpc:ppc64_book3s_defconfig
> 	powerpc:ppc64_book3s_smp_defconfig
> 
> ---
> Error logs:
> 
> mips:
> 
> arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
> arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'
> 
> Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
> emulation for EVA'.
> 
> ---
> powerpc:
> 
> include/linux/bug.h: Assembler messages:
> include/linux/bug.h:7: Error: unrecognized opcode: `enum'
> include/linux/bug.h:8: Error: junk at end of line, first unrecognized character is `,'
> 
> As mentioned earlier, bisect points to 'powerpc, jump_label:
> Include linux/jump_label.h to get HAVE_JUMP_LABEL define'.'.

That commit might be missing its dependencies:

 c0ccf6f99e3a jump_label: Allow jump labels to be used in assembly
 55dd0df781e5 jump_label: Allow asm/jump_label.h to be included in assembly

But I don't think the PowerPC commit should be in -stable to begin 
with, just like the two core patches are not.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks
  2015-05-03 21:20       ` Daniel Borkmann
@ 2015-05-04  8:46         ` Pablo Neira Ayuso
  0 siblings, 0 replies; 200+ messages in thread
From: Pablo Neira Ayuso @ 2015-05-04  8:46 UTC (permalink / raw)
  To: Daniel Borkmann
  Cc: Greg Kroah-Hartman, Thomas Backlund, linux-kernel, stable,
	Alexey Perevalov, netfilter-devel

On Sun, May 03, 2015 at 11:20:26PM +0200, Daniel Borkmann wrote:
> >>In order to fix it, you also need to add:
> >>
> >> From 1d0ab253872cdd3d8e7913f59c266c7fd01771d0 Mon Sep 17 00:00:00 2001
> >>From: Eric Dumazet <edumazet@google.com>
> >>Date: Sun, 15 Mar 2015 21:12:12 -0700
> >>Subject: [PATCH] net: add sk_fullsock() helper
> >>
> >>which in turn needs this one:
> >>
> >> From 10feb428a5045d5eb18a5d755fbb8f0cc9645626 Mon Sep 17 00:00:00 2001
> >>From: Eric Dumazet <edumazet@google.com>
> >>Date: Thu, 12 Mar 2015 16:44:04 -0700
> >>Subject: [PATCH] inet: add TCP_NEW_SYN_RECV state
> >
> >I've just dropped the patch, thanks for letting me know, odd that my
> >build tests missed it.
> 
> If you're nevertheless interested in this fix, you could use this version,
> which should apply/build just fine:
> 
>   http://patchwork.ozlabs.org/patch/455546/
> 
> I believe Pablo usually sends netfilter patches in bundles to you.

Yes, I keep an internal queue netfilter patches that I consider
important to go to -stable.

I think it's better if anyone willing to get some netfilter related
patch into -stable just point that to me so I take care of it. At
least that should add one extra filter step to make sure things don't
break in this process.

Thanks.

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (173 preceding siblings ...)
  2015-05-04  0:07 ` Guenter Roeck
@ 2015-05-04 16:09 ` Shuah Khan
  2015-05-05 22:10 ` Greg Kroah-Hartman
  175 siblings, 0 replies; 200+ messages in thread
From: Shuah Khan @ 2015-05-04 16:09 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel; +Cc: torvalds, akpm, linux, shuah.kh, stable

On 05/02/2015 01:00 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 3.19.7 release.
> There are 177 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Mon May  4 18:59:31 UTC 2015.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
> 

Compiled and booted on my test system. No dmesg regressions.

-- Shuah


-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-04  5:33   ` Ingo Molnar
@ 2015-05-04 21:46     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-04 21:46 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Guenter Roeck, linux-kernel, torvalds, akpm, shuah.kh, stable,
	Ralf Baechle, Markos Chandras, Anton Blanchard

On Mon, May 04, 2015 at 07:33:09AM +0200, Ingo Molnar wrote:
> 
> * Guenter Roeck <linux@roeck-us.net> wrote:
> 
> > On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
> > >This is the start of the stable review cycle for the 3.19.7 release.
> > >There are 177 patches in this series, all will be posted as a response
> > >to this one.  If anyone has any issues with these being applied, please
> > >let me know.
> > >
> > >Responses should be made by Mon May  4 18:59:31 UTC 2015.
> > >Anything received after that time might be too late.
> > >
> > 
> > Take two:
> > 
> > Build results:
> > 	total: 125 pass: 112 fail: 13
> > Failed builds:
> > 	mips:defconfig
> > 	mips:allmodconfig
> > 	mips:bcm47xx_defconfig
> > 	mips:bcm63xx_defconfig
> > 	mips:nlm_xlp_defconfig
> > 	mips:ath79_defconfig
> > 	mips:ar7_defconfig
> > 	mips:fuloong2e_defconfig
> > 	mips:e55_defconfig
> > 	mips:cavium_octeon_defconfig
> > 	mips:malta_defconfig
> > 	powerpc:defconfig
> > 	powerpc:allmodconfig
> > 
> > Qemu test results:
> > 	total: 30 pass: 22 fail: 8
> > Failed tests:
> > 	mips:mips_malta_defconfig
> > 	mips:mips_malta_smp_defconfig
> > 	mips:mipsel_malta_defconfig
> > 	mips:mipsel_malta_smp_defconfig
> > 	mips64:mips_malta64_defconfig
> > 	mips64:mips_malta64_smp_defconfig
> > 	powerpc:ppc64_book3s_defconfig
> > 	powerpc:ppc64_book3s_smp_defconfig
> > 
> > ---
> > Error logs:
> > 
> > mips:
> > 
> > arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
> > arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'
> > 
> > Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
> > emulation for EVA'.
> > 
> > ---
> > powerpc:
> > 
> > include/linux/bug.h: Assembler messages:
> > include/linux/bug.h:7: Error: unrecognized opcode: `enum'
> > include/linux/bug.h:8: Error: junk at end of line, first unrecognized character is `,'
> > 
> > As mentioned earlier, bisect points to 'powerpc, jump_label:
> > Include linux/jump_label.h to get HAVE_JUMP_LABEL define'.'.
> 
> That commit might be missing its dependencies:
> 
>  c0ccf6f99e3a jump_label: Allow jump labels to be used in assembly
>  55dd0df781e5 jump_label: Allow asm/jump_label.h to be included in assembly
> 
> But I don't think the PowerPC commit should be in -stable to begin 
> with, just like the two core patches are not.

Yes, now removed from the queue, thanks.

greg k-h

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-04  0:07 ` Guenter Roeck
  2015-05-04  5:33   ` Ingo Molnar
@ 2015-05-04 21:50   ` Greg Kroah-Hartman
  2015-05-05  3:16   ` Guenter Roeck
  2015-05-05  8:10   ` Markos Chandras
  3 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-04 21:50 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuah.kh, stable, Ralf Baechle,
	Markos Chandras, Anton Blanchard, Ingo Molnar

On Sun, May 03, 2015 at 05:07:32PM -0700, Guenter Roeck wrote:
> On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
> >This is the start of the stable review cycle for the 3.19.7 release.
> >There are 177 patches in this series, all will be posted as a response
> >to this one.  If anyone has any issues with these being applied, please
> >let me know.
> >
> >Responses should be made by Mon May  4 18:59:31 UTC 2015.
> >Anything received after that time might be too late.
> >
> 
> Take two:
> 
> Build results:
> 	total: 125 pass: 112 fail: 13
> Failed builds:
> 	mips:defconfig
> 	mips:allmodconfig
> 	mips:bcm47xx_defconfig
> 	mips:bcm63xx_defconfig
> 	mips:nlm_xlp_defconfig
> 	mips:ath79_defconfig
> 	mips:ar7_defconfig
> 	mips:fuloong2e_defconfig
> 	mips:e55_defconfig
> 	mips:cavium_octeon_defconfig
> 	mips:malta_defconfig
> 	powerpc:defconfig
> 	powerpc:allmodconfig
> 
> Qemu test results:
> 	total: 30 pass: 22 fail: 8
> Failed tests:
> 	mips:mips_malta_defconfig
> 	mips:mips_malta_smp_defconfig
> 	mips:mipsel_malta_defconfig
> 	mips:mipsel_malta_smp_defconfig
> 	mips64:mips_malta64_defconfig
> 	mips64:mips_malta64_smp_defconfig
> 	powerpc:ppc64_book3s_defconfig
> 	powerpc:ppc64_book3s_smp_defconfig
> 
> ---
> Error logs:
> 
> mips:
> 
> arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
> arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'
> 
> Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
> emulation for EVA'.

That bisect doesn't make much sense, I don't see a problem with that
patch, and it doesn't modify those lines either.

Anyone else have an idea here?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-04  0:07 ` Guenter Roeck
  2015-05-04  5:33   ` Ingo Molnar
  2015-05-04 21:50   ` Greg Kroah-Hartman
@ 2015-05-05  3:16   ` Guenter Roeck
  2015-05-05 22:01     ` Greg Kroah-Hartman
  2015-05-05  8:10   ` Markos Chandras
  3 siblings, 1 reply; 200+ messages in thread
From: Guenter Roeck @ 2015-05-05  3:16 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, shuah.kh, stable, Ralf Baechle, Markos Chandras,
	Anton Blanchard, Ingo Molnar

On 05/03/2015 05:07 PM, Guenter Roeck wrote:
> On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 3.19.7 release.
>> There are 177 patches in this series, all will be posted as a response
>> to this one.  If anyone has any issues with these being applied, please
>> let me know.
>>
>> Responses should be made by Mon May  4 18:59:31 UTC 2015.
>> Anything received after that time might be too late.
>>
>
> Take two:
>
> Build results:
>      total: 125 pass: 112 fail: 13
> Failed builds:
>      mips:defconfig
>      mips:allmodconfig
>      mips:bcm47xx_defconfig
>      mips:bcm63xx_defconfig
>      mips:nlm_xlp_defconfig
>      mips:ath79_defconfig
>      mips:ar7_defconfig
>      mips:fuloong2e_defconfig
>      mips:e55_defconfig
>      mips:cavium_octeon_defconfig
>      mips:malta_defconfig
>      powerpc:defconfig
>      powerpc:allmodconfig
>
> Qemu test results:
>      total: 30 pass: 22 fail: 8
> Failed tests:
>      mips:mips_malta_defconfig
>      mips:mips_malta_smp_defconfig
>      mips:mipsel_malta_defconfig
>      mips:mipsel_malta_smp_defconfig
>      mips64:mips_malta64_defconfig
>      mips64:mips_malta64_smp_defconfig
>      powerpc:ppc64_book3s_defconfig
>      powerpc:ppc64_book3s_smp_defconfig
>
> ---
> Error logs:
>
> mips:
>
> arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
> arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'
>
> Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
> emulation for EVA'.
>

The latest 3.19.y still fails to build mips images with this error.
A quick test suggests that reverting the patch appears to fix the problem.

Powerpc images now build without errors.

Guenter


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-04  0:07 ` Guenter Roeck
                     ` (2 preceding siblings ...)
  2015-05-05  3:16   ` Guenter Roeck
@ 2015-05-05  8:10   ` Markos Chandras
  2015-05-05 22:01     ` Greg Kroah-Hartman
  3 siblings, 1 reply; 200+ messages in thread
From: Markos Chandras @ 2015-05-05  8:10 UTC (permalink / raw)
  To: Guenter Roeck, Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, shuah.kh, stable, Ralf Baechle, Anton Blanchard,
	Ingo Molnar

On 05/04/2015 01:07 AM, Guenter Roeck wrote:
> On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 3.19.7 release.
>> There are 177 patches in this series, all will be posted as a response
>> to this one.  If anyone has any issues with these being applied, please
>> let me know.
>>
>> Responses should be made by Mon May  4 18:59:31 UTC 2015.
>> Anything received after that time might be too late.
>>
> 
> Take two:
> 
> Build results:
>     total: 125 pass: 112 fail: 13
> Failed builds:
>     mips:defconfig
>     mips:allmodconfig
>     mips:bcm47xx_defconfig
>     mips:bcm63xx_defconfig
>     mips:nlm_xlp_defconfig
>     mips:ath79_defconfig
>     mips:ar7_defconfig
>     mips:fuloong2e_defconfig
>     mips:e55_defconfig
>     mips:cavium_octeon_defconfig
>     mips:malta_defconfig
>     powerpc:defconfig
>     powerpc:allmodconfig
> 
> Qemu test results:
>     total: 30 pass: 22 fail: 8
> Failed tests:
>     mips:mips_malta_defconfig
>     mips:mips_malta_smp_defconfig
>     mips:mipsel_malta_defconfig
>     mips:mipsel_malta_smp_defconfig
>     mips64:mips_malta64_defconfig
>     mips64:mips_malta64_smp_defconfig
>     powerpc:ppc64_book3s_defconfig
>     powerpc:ppc64_book3s_smp_defconfig
> 
> ---
> Error logs:
> 
> mips:
> 
> arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
> arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'
> 
> Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
> emulation for EVA'.
> 

I guess this is a fallout caused by the missing dependencies.

Patches

- [PATCH] MIPS: unaligned: Prevent EVA instructions on kernel unaligned"
(eeb538950367e3966cbf0237ab1a1dc30e059818)

- [PATCH] MIPS: unaligned: Surround load/store macros in do {} while
(3563c32d6532ece53c9dd8905a8e41983ef9952f)

couldn't be applied to 3.19 stable according to the emails I got from
Greg, so the third one in that series (aka the offending one) is now broken.

Please remove 'MIPS: unaligned: Fix regular load/store instruction
emulation for EVA' (6eae35485b26f9e51ab896eb8a936bed9908fdf6)

I will create a suitable 3.19 backport for that patchset.

Thanks and apologies for the breakage.

-- 
markos

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-05  8:10   ` Markos Chandras
@ 2015-05-05 22:01     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-05 22:01 UTC (permalink / raw)
  To: Markos Chandras
  Cc: Guenter Roeck, linux-kernel, torvalds, akpm, shuah.kh, stable,
	Ralf Baechle, Anton Blanchard, Ingo Molnar

On Tue, May 05, 2015 at 09:10:25AM +0100, Markos Chandras wrote:
> On 05/04/2015 01:07 AM, Guenter Roeck wrote:
> > On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
> >> This is the start of the stable review cycle for the 3.19.7 release.
> >> There are 177 patches in this series, all will be posted as a response
> >> to this one.  If anyone has any issues with these being applied, please
> >> let me know.
> >>
> >> Responses should be made by Mon May  4 18:59:31 UTC 2015.
> >> Anything received after that time might be too late.
> >>
> > 
> > Take two:
> > 
> > Build results:
> >     total: 125 pass: 112 fail: 13
> > Failed builds:
> >     mips:defconfig
> >     mips:allmodconfig
> >     mips:bcm47xx_defconfig
> >     mips:bcm63xx_defconfig
> >     mips:nlm_xlp_defconfig
> >     mips:ath79_defconfig
> >     mips:ar7_defconfig
> >     mips:fuloong2e_defconfig
> >     mips:e55_defconfig
> >     mips:cavium_octeon_defconfig
> >     mips:malta_defconfig
> >     powerpc:defconfig
> >     powerpc:allmodconfig
> > 
> > Qemu test results:
> >     total: 30 pass: 22 fail: 8
> > Failed tests:
> >     mips:mips_malta_defconfig
> >     mips:mips_malta_smp_defconfig
> >     mips:mipsel_malta_defconfig
> >     mips:mipsel_malta_smp_defconfig
> >     mips64:mips_malta64_defconfig
> >     mips64:mips_malta64_smp_defconfig
> >     powerpc:ppc64_book3s_defconfig
> >     powerpc:ppc64_book3s_smp_defconfig
> > 
> > ---
> > Error logs:
> > 
> > mips:
> > 
> > arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
> > arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'
> > 
> > Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
> > emulation for EVA'.
> > 
> 
> I guess this is a fallout caused by the missing dependencies.
> 
> Patches
> 
> - [PATCH] MIPS: unaligned: Prevent EVA instructions on kernel unaligned"
> (eeb538950367e3966cbf0237ab1a1dc30e059818)
> 
> - [PATCH] MIPS: unaligned: Surround load/store macros in do {} while
> (3563c32d6532ece53c9dd8905a8e41983ef9952f)
> 
> couldn't be applied to 3.19 stable according to the emails I got from
> Greg, so the third one in that series (aka the offending one) is now broken.
> 
> Please remove 'MIPS: unaligned: Fix regular load/store instruction
> emulation for EVA' (6eae35485b26f9e51ab896eb8a936bed9908fdf6)
> 
> I will create a suitable 3.19 backport for that patchset.
> 

Thanks, now removed.

greg k-h

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-05  3:16   ` Guenter Roeck
@ 2015-05-05 22:01     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-05 22:01 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuah.kh, stable, Ralf Baechle,
	Markos Chandras, Anton Blanchard, Ingo Molnar

On Mon, May 04, 2015 at 08:16:34PM -0700, Guenter Roeck wrote:
> On 05/03/2015 05:07 PM, Guenter Roeck wrote:
> >On 05/02/2015 12:00 PM, Greg Kroah-Hartman wrote:
> >>This is the start of the stable review cycle for the 3.19.7 release.
> >>There are 177 patches in this series, all will be posted as a response
> >>to this one.  If anyone has any issues with these being applied, please
> >>let me know.
> >>
> >>Responses should be made by Mon May  4 18:59:31 UTC 2015.
> >>Anything received after that time might be too late.
> >>
> >
> >Take two:
> >
> >Build results:
> >     total: 125 pass: 112 fail: 13
> >Failed builds:
> >     mips:defconfig
> >     mips:allmodconfig
> >     mips:bcm47xx_defconfig
> >     mips:bcm63xx_defconfig
> >     mips:nlm_xlp_defconfig
> >     mips:ath79_defconfig
> >     mips:ar7_defconfig
> >     mips:fuloong2e_defconfig
> >     mips:e55_defconfig
> >     mips:cavium_octeon_defconfig
> >     mips:malta_defconfig
> >     powerpc:defconfig
> >     powerpc:allmodconfig
> >
> >Qemu test results:
> >     total: 30 pass: 22 fail: 8
> >Failed tests:
> >     mips:mips_malta_defconfig
> >     mips:mips_malta_smp_defconfig
> >     mips:mipsel_malta_defconfig
> >     mips:mipsel_malta_smp_defconfig
> >     mips64:mips_malta64_defconfig
> >     mips64:mips_malta64_smp_defconfig
> >     powerpc:ppc64_book3s_defconfig
> >     powerpc:ppc64_book3s_smp_defconfig
> >
> >---
> >Error logs:
> >
> >mips:
> >
> >arch/mips/kernel/unaligned.c: In function 'emulate_load_store_insn':
> >arch/mips/kernel/unaligned.c:570:4: error: expected '}' before 'else'
> >
> >Bisect points to 'MIPS: unaligned: Fix regular load/store instruction
> >emulation for EVA'.
> >
> 
> The latest 3.19.y still fails to build mips images with this error.
> A quick test suggests that reverting the patch appears to fix the problem.

Ok, now removed, thanks.

greg k-h

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
                   ` (174 preceding siblings ...)
  2015-05-04 16:09 ` Shuah Khan
@ 2015-05-05 22:10 ` Greg Kroah-Hartman
  2015-05-06  3:32   ` Guenter Roeck
                     ` (2 more replies)
  175 siblings, 3 replies; 200+ messages in thread
From: Greg Kroah-Hartman @ 2015-05-05 22:10 UTC (permalink / raw)
  To: linux-kernel; +Cc: torvalds, akpm, linux, shuah.kh, stable

On Sat, May 02, 2015 at 09:00:22PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 3.19.7 release.
> There are 177 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Mon May  4 18:59:31 UTC 2015.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
> and the diffstat can be found below.

-rc2 is out now that should work properly:

 	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc2.gz


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-05 22:10 ` Greg Kroah-Hartman
@ 2015-05-06  3:32   ` Guenter Roeck
  2015-05-06 16:02   ` Shuah Khan
  2015-05-07  5:25   ` Tyler Baker
  2 siblings, 0 replies; 200+ messages in thread
From: Guenter Roeck @ 2015-05-06  3:32 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel; +Cc: torvalds, akpm, shuah.kh, stable

On 05/05/2015 03:10 PM, Greg Kroah-Hartman wrote:
> On Sat, May 02, 2015 at 09:00:22PM +0200, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 3.19.7 release.
>> There are 177 patches in this series, all will be posted as a response
>> to this one.  If anyone has any issues with these being applied, please
>> let me know.
>>
>> Responses should be made by Mon May  4 18:59:31 UTC 2015.
>> Anything received after that time might be too late.
>>
>> The whole patch series can be found in one patch at:
>> 	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
>> and the diffstat can be found below.
>
> -rc2 is out now that should work properly:
>
>   	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc2.gz
>

Build results:
	total: 125 pass: 125 fail: 0
Qemu test results:
	total: 30 pass: 30 fail: 0

Details are available at http://server.roeck-us.net:8010/builders.

Guenter



^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-05 22:10 ` Greg Kroah-Hartman
  2015-05-06  3:32   ` Guenter Roeck
@ 2015-05-06 16:02   ` Shuah Khan
  2015-05-07  5:25   ` Tyler Baker
  2 siblings, 0 replies; 200+ messages in thread
From: Shuah Khan @ 2015-05-06 16:02 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel; +Cc: torvalds, akpm, linux, shuah.kh, stable

On 05/05/2015 04:10 PM, Greg Kroah-Hartman wrote:
> On Sat, May 02, 2015 at 09:00:22PM +0200, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 3.19.7 release.
>> There are 177 patches in this series, all will be posted as a response
>> to this one.  If anyone has any issues with these being applied, please
>> let me know.
>>
>> Responses should be made by Mon May  4 18:59:31 UTC 2015.
>> Anything received after that time might be too late.
>>
>> The whole patch series can be found in one patch at:
>> 	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
>> and the diffstat can be found below.
> 
> -rc2 is out now that should work properly:
> 
>  	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc2.gz
> 

rc2 is good. Compiled and booted. No dmesg regressions.

-- Shuah

-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-05 22:10 ` Greg Kroah-Hartman
  2015-05-06  3:32   ` Guenter Roeck
  2015-05-06 16:02   ` Shuah Khan
@ 2015-05-07  5:25   ` Tyler Baker
  2015-05-07  8:55     ` Luis Henriques
  2015-05-07 11:25     ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
  2 siblings, 2 replies; 200+ messages in thread
From: Tyler Baker @ 2015-05-07  5:25 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, torvalds, Andrew Morton, linux, shuah.kh, stable,
	boris.brezillon, Mike Turquette

Hi Greg,

On 5 May 2015 at 15:10, Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
> On Sat, May 02, 2015 at 09:00:22PM +0200, Greg Kroah-Hartman wrote:
>> This is the start of the stable review cycle for the 3.19.7 release.
>> There are 177 patches in this series, all will be posted as a response
>> to this one.  If anyone has any issues with these being applied, please
>> let me know.
>>
>> Responses should be made by Mon May  4 18:59:31 UTC 2015.
>> Anything received after that time might be too late.
>>
>> The whole patch series can be found in one patch at:
>>       kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
>> and the diffstat can be found below.
>
> -rc2 is out now that should work properly:
>
>         kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc2.gz

The kernelci.org robot reported new boot failures in v3.19.7 on a
variety of at91 boards[1][2][3]. I instructed the robot perform a boot
bisection which yielded...

git bisect start
# bad: [7214c55cba9630a4728f86ae6b3c73c962430711] Linux 3.19.7
git bisect bad 7214c55cba9630a4728f86ae6b3c73c962430711
# good: [3c464c73693b6d118c129d7f07dbc1ea26aa6d8a] Linux 3.19.6
git bisect good 3c464c73693b6d118c129d7f07dbc1ea26aa6d8a
# bad: [31064e86b01887a28fa26af528dc5239be384435] ptrace: fix race
between ptrace_resume() and wait_task_stopped()
git bisect bad 31064e86b01887a28fa26af528dc5239be384435
# good: [7595f5425cad83e037639e228ee24d5052510139] md/raid0: fix bug
with chunksize not a power of 2.
git bisect good 7595f5425cad83e037639e228ee24d5052510139
# good: [dc7a0b0a432521d4b40987b344a9b5473a9bd18b] usb: phy: Find the
right match in devm_usb_phy_match
git bisect good dc7a0b0a432521d4b40987b344a9b5473a9bd18b
# good: [dc7507e89e2c67143e5bb51488f4e5c7e0f6d3bd] usb: host: sl811:
use new USB_RESUME_TIMEOUT
git bisect good dc7507e89e2c67143e5bb51488f4e5c7e0f6d3bd
# bad: [92465054d08aa11c32b77969bc3be89d1c229f9f] ALSA: hda/realtek -
Enable the ALC292 dock fixup on the Thinkpad T450
git bisect bad 92465054d08aa11c32b77969bc3be89d1c229f9f
# bad: [c67881fc890916206e723329e774391c6ed354ce] clk: at91: usb:
propagate rate modification to the parent clk
git bisect bad c67881fc890916206e723329e774391c6ed354ce
# good: [d7f24470bf614ff986c9370f5704fa635b448918] usb: core: hub: use
new USB_RESUME_TIMEOUT
git bisect good d7f24470bf614ff986c9370f5704fa635b448918

c67881fc890916206e723329e774391c6ed354ce is the first bad commit
commit c67881fc890916206e723329e774391c6ed354ce
Author: Boris Brezillon <boris.brezillon@free-electrons.com>
Date:   Sun Mar 29 03:45:33 2015 +0200

    clk: at91: usb: propagate rate modification to the parent clk

    commit 4591243102faa8de92da320edea47219901461e9 upstream.

    The at91sam9n12 and at91sam9x5 usb clocks do not propagate rate
    modification requests to their parents.
    This causes a bug when the PLLB is left uninitialized by the bootloader
    (PLL multiplier set to 0, or in other words, PLL rate = 0 Hz).

    Implement the determinate_rate method and propagate the change rate
    request to the parent clk.

    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reported-by: Bo Shen <voice.shen@atmel.com>
    Tested-by: Bo Shen <voice.shen@atmel.com>
    Signed-off-by: Michael Turquette <mturquette@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Locally I've reverted c67881fc890916206e723329e774391c6ed354ce on top
of v3.19.7 and confirmed that my at91-sama5d3_xplained boots that
kernel successfully[4].


>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

Cheers,

Tyler

[1] http://kernelci.org/boot/?v3.19&at91
[2] https://lists.linaro.org/pipermail/kernel-build-reports/2015-May/008917.html
[3] http://storage.kernelci.org/stable/v3.19.7/arm-sama5_defconfig/lab-tbaker/boot-at91-sama5d3_xplained.html
[4] http://lava.kernelci.org/scheduler/job/80240/log_file

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-07  5:25   ` Tyler Baker
@ 2015-05-07  8:55     ` Luis Henriques
  2015-05-07  9:56       ` Boris Brezillon
  2015-05-07 11:25     ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
  1 sibling, 1 reply; 200+ messages in thread
From: Luis Henriques @ 2015-05-07  8:55 UTC (permalink / raw)
  To: Tyler Baker
  Cc: Greg Kroah-Hartman, linux-kernel, torvalds, Andrew Morton, linux,
	shuah.kh, stable, boris.brezillon, Mike Turquette

On Wed, May 06, 2015 at 10:25:17PM -0700, Tyler Baker wrote:
> 
> Locally I've reverted c67881fc890916206e723329e774391c6ed354ce on top
> of v3.19.7 and confirmed that my at91-sama5d3_xplained boots that
> kernel successfully[4].
> 

And that makes sense as commit 1c8e600440c7 ("clk: Add rate
constraints to clocks") isn't in 3.19.  This commit changes the
signature of .determine_rate to include the 2 extra args present in
at91sam9x5_clk_usb_determine_rate() after commit
c67881fc890916206e723329e774391c6ed354ce.

Cheers,
--
Luís

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-07  8:55     ` Luis Henriques
@ 2015-05-07  9:56       ` Boris Brezillon
  2015-05-08  1:24         ` Tyler Baker
  2015-05-08 11:09         ` Patch "clk: at91: usb: fix determine_rate prototype" has been added to the 3.19-stable tree gregkh
  0 siblings, 2 replies; 200+ messages in thread
From: Boris Brezillon @ 2015-05-07  9:56 UTC (permalink / raw)
  To: Luis Henriques
  Cc: Tyler Baker, Greg Kroah-Hartman, linux-kernel, torvalds,
	Andrew Morton, linux, shuah.kh, stable, Mike Turquette

Luis, Tyler,

On Thu, 7 May 2015 09:55:53 +0100
Luis Henriques <luis.henriques@canonical.com> wrote:

> On Wed, May 06, 2015 at 10:25:17PM -0700, Tyler Baker wrote:
> > 
> > Locally I've reverted c67881fc890916206e723329e774391c6ed354ce on top
> > of v3.19.7 and confirmed that my at91-sama5d3_xplained boots that
> > kernel successfully[4].
> > 
> 
> And that makes sense as commit 1c8e600440c7 ("clk: Add rate
> constraints to clocks") isn't in 3.19.  This commit changes the
> signature of .determine_rate to include the 2 extra args present in
> at91sam9x5_clk_usb_determine_rate() after commit
> c67881fc890916206e723329e774391c6ed354ce.

Oops, indeed. I shouldn't have tagged this commit for stable.
Below is a patch fixing this problem.
Sorry for the inconvenience.

Best Regards,

Boris

-- >8 --
>From 73a2cf633be185570c7df689afedaebed86d8451 Mon Sep 17 00:00:00 2001
Subject: [PATCH] clk: at91: usb: fix determine_rate prototype

Commit c67881fc890916206e723329e774391c6ed354ce is a backport of
0b67c43ce36a9964f1d5e3f973ee19eefd3f9f8f upstream commit, fixing a
bug on clk rate change propagation.
But in 4.0 ->determine_rate() prototype has changed, thus introducing
a prototype mismatch when applying it on 3.19.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
---
 drivers/clk/at91/clk-usb.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/clk/at91/clk-usb.c b/drivers/clk/at91/clk-usb.c
index 0b7c3e8..0283a57 100644
--- a/drivers/clk/at91/clk-usb.c
+++ b/drivers/clk/at91/clk-usb.c
@@ -58,8 +58,6 @@ static unsigned long at91sam9x5_clk_usb_recalc_rate(struct clk_hw *hw,
 
 static long at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
 					      unsigned long rate,
-					      unsigned long min_rate,
-					      unsigned long max_rate,
 					      unsigned long *best_parent_rate,
 					      struct clk_hw **best_parent_hw)
 {
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-07  5:25   ` Tyler Baker
  2015-05-07  8:55     ` Luis Henriques
@ 2015-05-07 11:25     ` Guenter Roeck
  2015-05-07 14:59       ` Tyler Baker
  1 sibling, 1 reply; 200+ messages in thread
From: Guenter Roeck @ 2015-05-07 11:25 UTC (permalink / raw)
  To: Tyler Baker, Greg Kroah-Hartman
  Cc: linux-kernel, torvalds, Andrew Morton, shuah.kh, stable,
	boris.brezillon, Mike Turquette

On 05/06/2015 10:25 PM, Tyler Baker wrote:
> Hi Greg,
>
> On 5 May 2015 at 15:10, Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
>> On Sat, May 02, 2015 at 09:00:22PM +0200, Greg Kroah-Hartman wrote:
>>> This is the start of the stable review cycle for the 3.19.7 release.
>>> There are 177 patches in this series, all will be posted as a response
>>> to this one.  If anyone has any issues with these being applied, please
>>> let me know.
>>>
>>> Responses should be made by Mon May  4 18:59:31 UTC 2015.
>>> Anything received after that time might be too late.
>>>
>>> The whole patch series can be found in one patch at:
>>>        kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
>>> and the diffstat can be found below.
>>
>> -rc2 is out now that should work properly:
>>
>>          kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc2.gz
>
> The kernelci.org robot reported new boot failures in v3.19.7 on a
> variety of at91 boards[1][2][3]. I instructed the robot perform a boot
> bisection which yielded...
>

Can one of those boards be emulated with qemu, by any chance ?

Guenter


^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-07 11:25     ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
@ 2015-05-07 14:59       ` Tyler Baker
  0 siblings, 0 replies; 200+ messages in thread
From: Tyler Baker @ 2015-05-07 14:59 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Greg Kroah-Hartman, linux-kernel, torvalds, Andrew Morton,
	shuah.kh, stable, boris.brezillon, Mike Turquette

On 7 May 2015 at 04:25, Guenter Roeck <linux@roeck-us.net> wrote:
> On 05/06/2015 10:25 PM, Tyler Baker wrote:
>>
>> Hi Greg,
>>
>> On 5 May 2015 at 15:10, Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> wrote:
>>>
>>> On Sat, May 02, 2015 at 09:00:22PM +0200, Greg Kroah-Hartman wrote:
>>>>
>>>> This is the start of the stable review cycle for the 3.19.7 release.
>>>> There are 177 patches in this series, all will be posted as a response
>>>> to this one.  If anyone has any issues with these being applied, please
>>>> let me know.
>>>>
>>>> Responses should be made by Mon May  4 18:59:31 UTC 2015.
>>>> Anything received after that time might be too late.
>>>>
>>>> The whole patch series can be found in one patch at:
>>>>
>>>> kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc1.gz
>>>> and the diffstat can be found below.
>>>
>>>
>>> -rc2 is out now that should work properly:
>>>
>>>
>>> kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.19.7-rc2.gz
>>
>>
>> The kernelci.org robot reported new boot failures in v3.19.7 on a
>> variety of at91 boards[1][2][3]. I instructed the robot perform a boot
>> bisection which yielded...
>>
>
> Can one of those boards be emulated with qemu, by any chance ?

With qemu-system 2.2... 'qemu-system-arm -machine help' does not list
any at91 based machine types. :(

>
> Guenter
>

Cheers,

Tyler

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Re: [PATCH 3.19 000/177] 3.19.7-stable review
  2015-05-07  9:56       ` Boris Brezillon
@ 2015-05-08  1:24         ` Tyler Baker
  2015-05-08 11:09         ` Patch "clk: at91: usb: fix determine_rate prototype" has been added to the 3.19-stable tree gregkh
  1 sibling, 0 replies; 200+ messages in thread
From: Tyler Baker @ 2015-05-08  1:24 UTC (permalink / raw)
  To: Boris Brezillon
  Cc: Luis Henriques, Greg Kroah-Hartman, linux-kernel, torvalds,
	Andrew Morton, Guenter Roeck, shuah.kh, stable, Mike Turquette

On 7 May 2015 at 02:56, Boris Brezillon
<boris.brezillon@free-electrons.com> wrote:
> Luis, Tyler,
>
> On Thu, 7 May 2015 09:55:53 +0100
> Luis Henriques <luis.henriques@canonical.com> wrote:
>
>> On Wed, May 06, 2015 at 10:25:17PM -0700, Tyler Baker wrote:
>> >
>> > Locally I've reverted c67881fc890916206e723329e774391c6ed354ce on top
>> > of v3.19.7 and confirmed that my at91-sama5d3_xplained boots that
>> > kernel successfully[4].
>> >
>>
>> And that makes sense as commit 1c8e600440c7 ("clk: Add rate
>> constraints to clocks") isn't in 3.19.  This commit changes the
>> signature of .determine_rate to include the 2 extra args present in
>> at91sam9x5_clk_usb_determine_rate() after commit
>> c67881fc890916206e723329e774391c6ed354ce.
>
> Oops, indeed. I shouldn't have tagged this commit for stable.
> Below is a patch fixing this problem.
> Sorry for the inconvenience.

Tested this patch, and confirmed it resolves the boot issues. Thanks
for a speedy response.

>
> Best Regards,
>
> Boris
>
> -- >8 --
> From 73a2cf633be185570c7df689afedaebed86d8451 Mon Sep 17 00:00:00 2001
> Subject: [PATCH] clk: at91: usb: fix determine_rate prototype
>
> Commit c67881fc890916206e723329e774391c6ed354ce is a backport of
> 0b67c43ce36a9964f1d5e3f973ee19eefd3f9f8f upstream commit, fixing a
> bug on clk rate change propagation.
> But in 4.0 ->determine_rate() prototype has changed, thus introducing
> a prototype mismatch when applying it on 3.19.
>
> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> ---
>  drivers/clk/at91/clk-usb.c | 2 --
>  1 file changed, 2 deletions(-)
>
> diff --git a/drivers/clk/at91/clk-usb.c b/drivers/clk/at91/clk-usb.c
> index 0b7c3e8..0283a57 100644
> --- a/drivers/clk/at91/clk-usb.c
> +++ b/drivers/clk/at91/clk-usb.c
> @@ -58,8 +58,6 @@ static unsigned long at91sam9x5_clk_usb_recalc_rate(struct clk_hw *hw,
>
>  static long at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
>                                               unsigned long rate,
> -                                             unsigned long min_rate,
> -                                             unsigned long max_rate,
>                                               unsigned long *best_parent_rate,
>                                               struct clk_hw **best_parent_hw)
>  {
> --
> 1.9.1
>

Cheers,

Tyler

^ permalink raw reply	[flat|nested] 200+ messages in thread

* Patch "clk: at91: usb: fix determine_rate prototype" has been added to the 3.19-stable tree
  2015-05-07  9:56       ` Boris Brezillon
  2015-05-08  1:24         ` Tyler Baker
@ 2015-05-08 11:09         ` gregkh
  1 sibling, 0 replies; 200+ messages in thread
From: gregkh @ 2015-05-08 11:09 UTC (permalink / raw)
  To: boris.brezillon, akpm, gregkh, linux-kernel, luis.henriques,
	mturquette, tyler.baker
  Cc: stable, stable-commits


This is a note to let you know that I've just added the patch titled

    clk: at91: usb: fix determine_rate prototype

to the 3.19-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     clk-at91-usb-fix-determine_rate-prototype.patch
and it can be found in the queue-3.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


>From boris.brezillon@free-electrons.com  Fri May  8 13:05:22 2015
From: Boris Brezillon <boris.brezillon@free-electrons.com>
Date: Thu, 7 May 2015 11:56:44 +0200
To: Luis Henriques <luis.henriques@canonical.com>
Subject: clk: at91: usb: fix determine_rate prototype
Cc: Tyler Baker <tyler.baker@linaro.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, torvalds@linux-foundation.org, Andrew Morton <akpm@linux-foundation.org>, linux@roeck-us.net, shuah.kh@samsung.com, stable@vger.kernel.org, Mike Turquette <mturquette@linaro.org>
Message-ID: <20150507115644.1ef29d2e@bbrezillon>

From: Boris Brezillon <boris.brezillon@free-electrons.com>

Commit c67881fc890916206e723329e774391c6ed354ce is a backport of
0b67c43ce36a9964f1d5e3f973ee19eefd3f9f8f upstream commit, fixing a
bug on clk rate change propagation.
But in 4.0 ->determine_rate() prototype has changed, thus introducing
a prototype mismatch when applying it on 3.19.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/clk/at91/clk-usb.c |    2 --
 1 file changed, 2 deletions(-)

--- a/drivers/clk/at91/clk-usb.c
+++ b/drivers/clk/at91/clk-usb.c
@@ -58,8 +58,6 @@ static unsigned long at91sam9x5_clk_usb_
 
 static long at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
 					      unsigned long rate,
-					      unsigned long min_rate,
-					      unsigned long max_rate,
 					      unsigned long *best_parent_rate,
 					      struct clk_hw **best_parent_hw)
 {


Patches currently in stable-queue which might be from boris.brezillon@free-electrons.com are

queue-3.19/clk-at91-usb-fix-determine_rate-prototype.patch

^ permalink raw reply	[flat|nested] 200+ messages in thread

end of thread, other threads:[~2015-05-08 11:09 UTC | newest]

Thread overview: 200+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-02 19:00 [PATCH 3.19 000/177] 3.19.7-stable review Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 001/177] ip_forward: Drop frames with attached skb->sk Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 002/177] net: add skb_checksum_complete_unset Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 003/177] ppp: call skb_checksum_complete_unset in ppp_receive_frame Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 004/177] tcp: fix possible deadlock in tcp_send_fin() Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 005/177] tcp: avoid looping " Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 006/177] net: do not deplete pfmemalloc reserve Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 007/177] net: fix crash in build_skb() Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 008/177] pxa168: fix double deallocation of managed resources Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 009/177] net/mlx4_en: Prevent setting invalid RSS hash function Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 010/177] md: fix md io stats accounting broken Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 011/177] x86/asm/decoder: Fix and enforce max instruction size in the insn decoder Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 012/177] sched/idle/x86: Restore mwait_idle() to fix boot hangs, to improve power savings and to improve performance Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 013/177] sched/idle/x86: Optimize unnecessary mwait_idle() resched IPIs Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 014/177] perf/x86/intel: Fix Core2,Atom,NHM,WSM cycles:pp events Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 015/177] KVM: x86: Fix MSR_IA32_BNDCFGS in msrs_to_save Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 016/177] Btrfs: fix log tree corruption when fs mounted with -o discard Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 017/177] btrfs: dont accept bare namespace as a valid xattr Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 018/177] Btrfs: fix inode eviction infinite loop after cloning into it Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 019/177] Btrfs: fix inode eviction infinite loop after extent_same ioctl Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 020/177] usb: gadget: printer: enqueue printers response for setup request Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 021/177] KVM: s390: fix handling of write errors in the tpi handler Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 022/177] KVM: s390: reinjection of irqs can fail " Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 023/177] KVM: s390: Zero out current VMDB of STSI before including level3 data Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 024/177] KVM: s390: no need to hold the kvm->mutex for floating interrupts Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 025/177] KVM: s390: fix get_all_floating_irqs Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 026/177] s390/hibernate: fix save and restore of kernel text section Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 028/177] KVM: arm/arm64: check IRQ number on userland injection Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 029/177] KVM: arm/arm64: vgic: vgic_init returns -ENODEV when no online vcpu Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 030/177] ARM: KVM: Fix size check in __coherent_cache_guest_page Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 031/177] arm64: KVM: Fix stage-2 PGD allocation to have per-page refcounting Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 032/177] arm64: KVM: Do not use pgd_index to index stage-2 pgd Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 034/177] MIPS: KVM: Handle MSA Disabled exceptions from guest Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 035/177] MIPS: lose_fpu(): Disable FPU when MSA enabled Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 036/177] MIPS: Malta: Detect and fix bad memsize values Greg Kroah-Hartman
2015-05-02 19:00 ` [PATCH 3.19 037/177] MIPS: asm: asm-eva: Introduce kernel load/store variants Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 038/177] MIPS: unaligned: Fix regular load/store instruction emulation for EVA Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 039/177] MIPS: Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 040/177] MIPS: Hibernate: flush TLB entries earlier Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 041/177] staging: panel: fix lcd type Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 042/177] staging: android: sync: Fix memory corruption in sync_timeline_signal() Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 043/177] staging: vt6655: use ieee80211_tx_info to select packet type Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 044/177] md/raid0: fix bug with chunksize not a power of 2 Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 045/177] drivers/base: cacheinfo: validate device node for all the caches Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 046/177] cdc-wdm: fix endianness bug in debug statements Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 048/177] spi: imx: read back the RX/TX watermark levels earlier Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 049/177] spi: spidev: fix possible arithmetic overflow for multi-transfer message Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 050/177] compal-laptop: Fix leaking hwmon device Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 051/177] compal-laptop: Check return value of power_supply_register Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 052/177] ring-buffer: Replace this_cpu_*() with __this_cpu_*() Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 053/177] power_supply: twl4030_madc: Check return value of power_supply_register Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 054/177] power_supply: lp8788-charger: Fix leaked power supply on probe fail Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 055/177] power_supply: ipaq_micro_battery: Fix leaking workqueue Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 056/177] power_supply: ipaq_micro_battery: Check return values in probe Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 057/177] NFS: fix BUG() crash in notify_change() with patch to chown_common() Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 058/177] ARM: fix broken hibernation Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 059/177] ARM: 8320/1: fix integer overflow in ELF_ET_DYN_BASE Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 060/177] ARM: mvebu: Disable CPU Idle on Armada 38x Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 061/177] ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 062/177] ARM: at91/dt: sama5d3 xplained: add phy address for macb1 Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 063/177] ARM: dts: dove: Fix uart[23] reg property Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 064/177] ARM: dts: fix mmc node updates for exynos5250-spring Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 065/177] usb: musb: core: fix TX/RX endpoint order Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 066/177] usb: phy: Find the right match in devm_usb_phy_match Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 067/177] usb: define a generic USB_RESUME_TIMEOUT macro Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 068/177] usb: musb: use new USB_RESUME_TIMEOUT Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 069/177] usb: host: oxu210hp: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 070/177] usb: host: fusbh200: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 071/177] usb: host: uhci: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 072/177] usb: host: fotg210: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 073/177] usb: host: r8a66597: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 074/177] usb: host: isp116x: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 075/177] usb: host: xhci: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 076/177] usb: host: ehci: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 077/177] usb: host: sl811: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 078/177] usb: core: hub: " Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 079/177] clk: at91: usb: propagate rate modification to the parent clk Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 080/177] ALSA: hda - Add dock support for ThinkPad X250 (17aa:2226) Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 081/177] ALSA: emu10k1: dont deadlock in proc-functions Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 082/177] ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T450 Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 083/177] ALSA: hda - fix "num_steps = 0" error on ALC256 Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 084/177] ALSA: hda/realtek - Fix Headphone Mic doesnt recording for ALC256 Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 085/177] Input: elantech - fix absolute mode setting on some ASUS laptops Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 086/177] mfd: core: Fix platform-device name collisions Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 087/177] fs/binfmt_elf.c: fix bug in loading of PIE binaries Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 088/177] ptrace: fix race between ptrace_resume() and wait_task_stopped() Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 089/177] NFC: st21nfcb: Retry i2c_master_send if it returns a negative value Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 090/177] rtlwifi: rtl8192cu: Add new USB ID Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 091/177] rtlwifi: rtl8192cu: Add new device ID Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 092/177] ext4: make fsync to sync parent dir in no-journal for real this time Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 093/177] mnt: Improve the umount_tree flags Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 094/177] mnt: Dont propagate umounts in __detach_mounts Greg Kroah-Hartman
2015-05-02 19:01 ` [PATCH 3.19 096/177] perf tools: Fix perf-read-vdsox32 not building and lib64 install dir Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 098/177] powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 099/177] tools lib traceevent kbuffer: Remove extra update to data pointer in PADDING Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 100/177] tools/power turbostat: Use $(CURDIR) instead of $(PWD) and add support for O= option in Makefile Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 101/177] UBI: account for bitflips in both the VID header and data Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 102/177] UBI: fix out of bounds write Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 103/177] UBI: initialize LEB number variable Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 104/177] UBI: fix check for "too many bytes" Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 105/177] scsi: storvsc: Fix a bug in copy_from_bounce_buffer() Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 106/177] target: Fix COMPARE_AND_WRITE with SG_TO_MEM_NOALLOC handling Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 107/177] target/file: Fix BUG() when CONFIG_DEBUG_SG=y and DIF protection enabled Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 108/177] target/file: Fix UNMAP with DIF protection support Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 109/177] target/file: Fix SG table for prot_buf initialization Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 110/177] iser-target: Fix session hang in case of an rdma read DIF error Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 111/177] iser-target: Fix possible deadlock in RDMA_CM connection error Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 112/177] Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 113/177] arm64: fix midr range for Cortex-A57 erratum 832075 Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 114/177] arm64: head.S: ensure visibility of page tables Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 115/177] arm64: apply alternatives for !SMP kernels Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 116/177] arm64: errata: add workaround for cortex-a53 erratum #845719 Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 117/177] powerpc/powernv: Dont map M64 segments using M32DT Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 118/177] powerpc, jump_label: Include linux/jump_label.h to get HAVE_JUMP_LABEL define Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 119/177] powerpc: Fix missing L2 cache size in /sys/devices/system/cpu Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 120/177] powerpc/cell: Fix crash in iic_setup_cpu() after per_cpu changes Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 121/177] powerpc/cell: Fix cell iommu after it_page_shift changes Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 122/177] ASoC: cs4271: Increase delay time after reset Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 123/177] ASoC: wm8741: Fix rates constraints values Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 124/177] ASoC: davinci-evm: drop un-necessary remove function Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 125/177] ASoC: pcm512x: Add Analogue prefix to analogue volume controls Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 126/177] ACPICA: Utilities: split IO address types from data type models Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 127/177] ACPICA: Tables: Dont release ACPI_MTX_TABLES in acpi_tb_install_standard_table() Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 128/177] ACPI / scan: Annotate physical_node_lock in acpi_scan_is_offline() Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 129/177] xtensa: xtfpga: fix hardware lockup caused by LCD driver Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 130/177] xtensa: provide __NR_sync_file_range2 instead of __NR_sync_file_range Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 131/177] xtensa: ISS: fix locking in TAP network adapter Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 132/177] gpio: mvebu: Fix mask/unmask managment per irq chip type Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 133/177] clk: samsung: exynos4: Disable ARMCLK down feature on Exynos4210 SoC Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 134/177] clk: tegra: Register the proper number of resets Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 135/177] clk: qcom: Fix i2c frequency table Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 136/177] clk: qcom: fix RCG M/N counter configuration Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 137/177] dm crypt: fix deadlock when async crypto algorithm returns -EBUSY Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 138/177] sd: Unregister integrity profile Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 139/177] sd: Fix missing ATO tag check Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 140/177] Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open() Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 141/177] mvsas: fix panic on expander attached SATA devices Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 142/177] [media] rc: img-ir: fix error in parameters passed to irq_free() Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 143/177] [media] stk1160: Make sure current buffer is released Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 144/177] IB/core: disallow registering 0-sized memory region Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 145/177] IB/core: dont disallow registering region starting at 0x0 Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 146/177] IB/mlx4: Fix WQE LSO segment calculation Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 147/177] IB/iser: Fix wrong calculation of protection buffer length Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 148/177] tracing: Handle ftrace_dump() atomic context in graph_trace_open() Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 149/177] tracing: Fix incorrect enabling of trace events by boot cmdline Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 150/177] i2c: mux: use proper dev when removing "channel-X" symlinks Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 151/177] i2c: rk3x: report number of messages transmitted Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 152/177] i2c: core: Export bus recovery functions Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 153/177] drm/radeon: fix doublescan modes (v2) Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 154/177] drm/i915: Dont enable CS_PARSER_ERROR interrupts at all Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 155/177] drm: adv7511: Fix DDC error interrupt handling Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 156/177] drm: adv7511: Fix nested sleep when reading EDID Greg Kroah-Hartman
2015-05-02 19:02 ` [PATCH 3.19 157/177] drm/i915: vlv: fix save/restore of GFX_MAX_REQ_COUNT reg Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 158/177] drm/i915: cope with large i2c transfers Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 159/177] RCU pathwalk breakage when running into a symlink overmounting something Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 160/177] Revert "nfs: replace nfs_add_stats with nfs_inc_stats when add one" Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 161/177] nfsd4: disallow ALLOCATE with special stateids Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 162/177] nfsd4: fix READ permission checking Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 163/177] nfsd4: disallow SEEK with special stateids Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 164/177] nfsd: eliminate NFSD_DEBUG Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 165/177] NFS: Add a stub for GETDEVICELIST Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 166/177] e1000: add dummy allocator to fix race condition between mtu change and netpoll Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 167/177] mac80211: send AP probe as unicast again Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 168/177] ebpf: verifier: check that call reg with ARG_ANYTHING is initialized Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 169/177] lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 170/177] wl18xx: show rx_frames_per_rates as an array as it really is Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 171/177] crypto: omap-aes - Fix support for unequal lengths Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 172/177] C6x: time: Ensure consistency in __init Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 173/177] memstick: mspro_block: add missing curly braces Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 174/177] drivers: platform: parse IRQ flags from resources Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 175/177] driver core: bus: Goto appropriate labels on failure in bus_add_device Greg Kroah-Hartman
2015-05-02 19:03 ` [PATCH 3.19 176/177] netfilter: x_tables: fix cgroup matching on non-full sks Greg Kroah-Hartman
2015-05-02 21:47   ` Thomas Backlund
2015-05-03 18:45     ` Greg Kroah-Hartman
2015-05-03 21:20       ` Daniel Borkmann
2015-05-04  8:46         ` Pablo Neira Ayuso
2015-05-02 19:03 ` [PATCH 3.19 177/177] netfilter: bridge: really save frag_max_size between PRE and POST_ROUTING Greg Kroah-Hartman
2015-05-03 20:00 ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
2015-05-03 21:32   ` Guenter Roeck
2015-05-03 21:49     ` Linus Torvalds
2015-05-03 22:40       ` Guenter Roeck
2015-05-04  0:07 ` Guenter Roeck
2015-05-04  5:33   ` Ingo Molnar
2015-05-04 21:46     ` Greg Kroah-Hartman
2015-05-04 21:50   ` Greg Kroah-Hartman
2015-05-05  3:16   ` Guenter Roeck
2015-05-05 22:01     ` Greg Kroah-Hartman
2015-05-05  8:10   ` Markos Chandras
2015-05-05 22:01     ` Greg Kroah-Hartman
2015-05-04 16:09 ` Shuah Khan
2015-05-05 22:10 ` Greg Kroah-Hartman
2015-05-06  3:32   ` Guenter Roeck
2015-05-06 16:02   ` Shuah Khan
2015-05-07  5:25   ` Tyler Baker
2015-05-07  8:55     ` Luis Henriques
2015-05-07  9:56       ` Boris Brezillon
2015-05-08  1:24         ` Tyler Baker
2015-05-08 11:09         ` Patch "clk: at91: usb: fix determine_rate prototype" has been added to the 3.19-stable tree gregkh
2015-05-07 11:25     ` [PATCH 3.19 000/177] 3.19.7-stable review Guenter Roeck
2015-05-07 14:59       ` Tyler Baker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).