linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review
@ 2015-06-05 13:56 Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 001/110] kprobes/x86: Return correct length in __copy_instruction() Luis Henriques
                   ` (109 more replies)
  0 siblings, 110 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Luis Henriques

This is the start of the review cycle for the Linux 3.16.7-ckt13 stable kernel.

This version contains 110 new patches, summarized below.  The new patches are
posted as replies to this message and also available in this git branch:

http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.16.y-review

git://kernel.ubuntu.com/ubuntu/linux.git  linux-3.16.y-review

The review period for version 3.16.7-ckt13 will be open for the next three days.
To report a problem, please reply to the relevant follow-up patch message.

For more information about the Linux 3.16.y-ckt extended stable kernel version,
see https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable .

 -Luis

--
 Documentation/virtual/kvm/mmu.txt               |  18 ++++-
 Makefile                                        |   5 +-
 arch/arm/boot/dts/exynos4412-trats2.dts         |   2 +-
 arch/arm/boot/dts/imx27.dtsi                    |   2 +-
 arch/arm/kernel/Makefile                        |   2 +-
 arch/arm/kernel/entry-common.S                  |   4 +-
 arch/arm/kernel/psci-call.S                     |  31 +++++++
 arch/arm/kernel/psci.c                          |  39 +--------
 arch/arm/mach-gemini/common.h                   |   4 +-
 arch/arm/mach-gemini/reset.c                    |   4 +-
 arch/arm/mach-mvebu/coherency.c                 |   5 +-
 arch/arm/mm/mmu.c                               |  20 ++---
 arch/arm/net/bpf_jit_32.c                       |  15 +++-
 arch/arm64/mm/dma-mapping.c                     |   4 +-
 arch/parisc/include/asm/elf.h                   |   4 +
 arch/parisc/kernel/sys_parisc.c                 |   3 +
 arch/powerpc/kernel/vmlinux.lds.S               |   1 +
 arch/s390/crypto/ghash_s390.c                   |  25 +++---
 arch/x86/Kconfig                                |   2 +-
 arch/x86/include/asm/kvm_host.h                 |   1 +
 arch/x86/kernel/cpu/perf_event_intel_rapl.c     |   1 +
 arch/x86/kernel/kprobes/core.c                  |   7 +-
 arch/x86/kvm/mmu.c                              |  16 +++-
 arch/x86/kvm/mmu.h                              |   4 +-
 arch/x86/kvm/paging_tmpl.h                      |   7 ++
 arch/x86/kvm/x86.c                              |   8 +-
 arch/x86/net/bpf_jit_comp.c                     |   7 +-
 arch/x86/vdso/Makefile                          |   2 +-
 drivers/acpi/osl.c                              |   6 +-
 drivers/ata/ahci.c                              | 103 ++++++++++++++++++++++--
 drivers/ata/libahci.c                           |   3 +-
 drivers/ata/libata-core.c                       |  40 ++++++++-
 drivers/ata/libata-eh.c                         |   3 +
 drivers/firmware/dmi_scan.c                     |   7 +-
 drivers/gpio/gpio-kempld.c                      |   2 +-
 drivers/gpu/drm/radeon/cik.c                    |   2 +-
 drivers/gpu/drm/radeon/ni.c                     |   3 +-
 drivers/gpu/drm/radeon/si.c                     |   2 +-
 drivers/hwmon/nct6775.c                         |   2 +
 drivers/hwmon/ntc_thermistor.c                  |   9 +++
 drivers/iio/accel/st_accel_core.c               |   1 +
 drivers/iio/adc/xilinx-xadc-core.c              |   5 +-
 drivers/iio/adc/xilinx-xadc.h                   |   6 +-
 drivers/iio/common/st_sensors/st_sensors_core.c |   2 -
 drivers/iio/gyro/st_gyro_core.c                 |   1 +
 drivers/iio/light/hid-sensor-prox.c             |   2 -
 drivers/iio/magnetometer/st_magn_core.c         |   1 +
 drivers/iio/pressure/hid-sensor-press.c         |   2 -
 drivers/iio/pressure/st_pressure_core.c         |   1 +
 drivers/infiniband/core/iwpm_msg.c              |   2 +-
 drivers/input/mouse/elantech.c                  |   2 +-
 drivers/lguest/core.c                           |   2 +-
 drivers/md/raid5.c                              |   3 +-
 drivers/mmc/host/atmel-mci.c                    |   9 ++-
 drivers/net/can/xilinx_can.c                    |   7 +-
 drivers/net/ethernet/intel/igb/igb_main.c       |   4 +-
 drivers/net/usb/cdc_ncm.c                       |   2 +-
 drivers/net/wireless/rt2x00/rt2800usb.c         |   1 +
 drivers/net/wireless/rtlwifi/usb.c              |   2 +-
 drivers/scsi/qla2xxx/qla_gbl.h                  |   2 -
 drivers/scsi/qla2xxx/qla_nx2.c                  |   2 +-
 drivers/scsi/sd.c                               |  19 ++---
 drivers/scsi/storvsc_drv.c                      |   3 +-
 drivers/spi/spi-bitbang.c                       |  17 ++--
 drivers/staging/gdm724x/gdm_mux.c               |  16 ++--
 drivers/staging/rtl8192e/rtllib.h               |   5 +-
 drivers/staging/rtl8192e/rtllib_softmac.c       |   2 +-
 drivers/staging/rtl8192u/ieee80211/ieee80211.h  |  10 +--
 drivers/staging/rtl8712/ieee80211.h             |   4 +-
 drivers/staging/wlags49_h2/wl_internal.h        |   4 +-
 drivers/target/target_core_pscsi.c              |   3 +
 drivers/target/target_core_pscsi.h              |   1 +
 drivers/thermal/armada_thermal.c                |   6 +-
 drivers/tty/hvc/hvc_xen.c                       |   2 +-
 drivers/tty/n_gsm.c                             |   5 +-
 drivers/usb/gadget/configfs.c                   |   1 +
 drivers/usb/host/xhci-ring.c                    |   7 +-
 drivers/usb/host/xhci.h                         |   2 +-
 drivers/usb/serial/cp210x.c                     |   1 +
 drivers/usb/serial/pl2303.c                     |   1 -
 drivers/usb/serial/pl2303.h                     |   4 -
 drivers/usb/serial/visor.c                      |   2 +-
 drivers/usb/storage/unusual_devs.h              |   7 ++
 drivers/xen/events/events_base.c                |  12 ++-
 fs/binfmt_elf.c                                 |   2 +-
 fs/dcache.c                                     |   8 +-
 fs/exec.c                                       |   3 +
 fs/ext4/ext4_jbd2.c                             |   6 ++
 fs/ext4/extents.c                               |   2 +-
 fs/fhandle.c                                    |   5 +-
 fs/jbd2/recovery.c                              |  10 ++-
 fs/jbd2/revoke.c                                |  18 +++--
 fs/jbd2/transaction.c                           |  25 +++---
 fs/nfsd/nfs4state.c                             |  21 ++---
 fs/omfs/inode.c                                 |   3 +-
 fs/udf/inode.c                                  |  32 +++++---
 fs/xfs/xfs_attr_inactive.c                      |  83 +++++++++++--------
 fs/xfs/xfs_attr_leaf.c                          |   8 +-
 fs/xfs/xfs_attr_leaf.h                          |   2 +-
 fs/xfs/xfs_inode.c                              |  12 +--
 include/drm/drm_pciids.h                        |   1 +
 include/linux/libata.h                          |  10 +++
 include/linux/sched/rt.h                        |   7 +-
 include/xen/events.h                            |   2 +-
 kernel/locking/rtmutex.c                        |  12 +--
 kernel/module.c                                 |   3 +
 kernel/sched/core.c                             |  26 +++---
 mm/mempolicy.c                                  |   2 +-
 net/bridge/br_multicast.c                       |   2 +-
 net/ceph/osd_client.c                           |  31 ++++---
 net/ipv4/route.c                                |   4 +
 net/ipv4/tcp_minisocks.c                        |   2 +-
 net/ipv6/ip6_fib.c                              |  39 ++++++++-
 net/ipv6/route.c                                |  14 ++--
 net/ipv6/tcp_ipv6.c                             |   2 +-
 net/mac80211/ieee80211_i.h                      |   3 +
 net/mac80211/rx.c                               |   5 +-
 net/mac80211/wep.c                              |   6 +-
 net/netfilter/ipvs/ip_vs_ctl.c                  |   3 +
 net/sched/sch_api.c                             |  10 ++-
 net/socket.c                                    |  24 +++---
 net/sunrpc/auth_gss/gss_rpc_xdr.c               |  23 ++++--
 sound/oss/sequencer.c                           |  12 +--
 sound/pci/hda/patch_conexant.c                  |  12 +++
 sound/pci/hda/patch_realtek.c                   |   2 +
 sound/pci/hda/thinkpad_helper.c                 |   1 -
 sound/soc/codecs/mc13783.c                      |   4 +-
 sound/soc/codecs/wm8960.c                       |   2 +-
 sound/soc/codecs/wm8994.c                       |   2 +-
 tools/vm/Makefile                               |   2 +-
 130 files changed, 739 insertions(+), 387 deletions(-)

Al Viro (1):
      d_walk() might skip too much

Alban Bedel (1):
      iio:st_sensors: Fix oops when probing SPI devices

Alex Deucher (1):
      drm/radeon: add new bonaire pci id

Alexei Starovoitov (1):
      x86: bpf_jit: fix compilation of large bpf programs

Alexey Khoroshilov (1):
      sound/oss: fix deadlock in sequencer_ioctl(SNDCTL_SEQ_OUTOFBAND)

Andi Kleen (1):
      tools/vm: fix page-flags build

Andrew Morton (1):
      fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings

Andy Grover (1):
      target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST

Ansgar Hegerfeld (1):
      ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450

Anton Blanchard (1):
      powerpc: Align TOC to 256 bytes

Arnd Bergmann (1):
      staging: rtl8712, rtl8712: avoid lots of build warnings

Axel Lin (1):
      ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls

Behan Webster (2):
      staging, rtl8192e, LLVMLinux: Change extern inline to static inline
      staging, rtl8192e, LLVMLinux: Remove unused inline prototype

Benjamin Tissoires (1):
      Input: elantech - fix semi-mt protocol for v3 HW

Bjørn Mork (1):
      cdc_ncm: Fix tx_bytes statistics

Chen Gang (1):
      qla2xxx: remove redundant declaration in 'qla_gbl.h'

Chris Lesiak (1):
      hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE

Christian König (2):
      drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling
      drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling"

Christoph Hellwig (1):
      nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op

Dan Williams (1):
      ahci: avoton port-disable reset-quirk

Darrick J. Wong (1):
      jbd2: fix r_count overflows leading to buffer overflow in journal recovery

Dave Chinner (1):
      xfs: xfs_attr_inactive leaves inconsistent attr fork state behind

David Henningsson (1):
      ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724

David Vrabel (1):
      xen/events: don't bind non-percpu VIRQs with percpu chip

Dean Nelson (1):
      arm64: add missing PAGE_ALIGN() to __dma_free()

Eric W. Biederman (1):
      ipv4: Avoid crashing in ip_error

Eryu Guan (1):
      ext4: check for zero length extent explicitly

Eugene Shatokhin (1):
      kprobes/x86: Return correct length in __copy_instruction()

Florent Fourcot (1):
      tcp/ipv6: fix flow label setting in TIME_WAIT state

Gabriele Mazzotta (2):
      libata: Add helper to determine when PHY events should be ignored
      libata: Ignore spurious PHY event on LPM policy change

Guenter Roeck (1):
      hwmon: (nct6775) Add missing sysfs attribute initialization

Hans Ulli Kroll (1):
      ARM: gemini: fix compiler warning due wrong data type

Hans de Goede (1):
      usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices

Harald Freudenberger (1):
      crypto: s390/ghash - Fix incorrect ghash icv buffer handling.

Helge Deller (1):
      parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures

Ilya Dryomov (1):
      libceph: request a new osdmap if lingering request maps to no osd

Inki Dae (1):
      ARM: dts: set display clock correctly for exynos4412-trats2

Jan Kara (2):
      udf: Remove repeated loads blocksize
      udf: Check length of extended attributes and allocation descriptors

Janusz Dziedzic (1):
      mac80211: move WEP tailroom size check

Jason A. Donenfeld (2):
      USB: pl2303: Remove support for Samsung I330
      USB: visor: Match I330 phone more precisely

Jean Delvare (1):
      firmware: dmi_scan: Fix ordering of product_uuid

Jeppe Ledet-Pedersen (1):
      net: can: xilinx_can: fix extended frame handling

Joe Lawrence (1):
      xhci: gracefully handle xhci_irq dead device

Johannes Berg (1):
      mac80211: don't use napi_gro_receive() outside NAPI context

Junling Zheng (1):
      net: socket: Fix the wrong returns for recvmsg and sendmsg

K. Y. Srinivasan (1):
      storvsc: Set the SRB flags correctly when no data transfer is needed

Kirill A. Shutemov (1):
      kernel: use the gnu89 standard explicitly

Konrad Rzeszutek Wilk (1):
      config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected

Krzysztof Opasiak (1):
      usb: gadget: configfs: Fix interfaces array NULL-termination

Larry Finger (1):
      rtlwifi: rtl8192cu: Fix kernel deadlock

Ludovic Desroches (1):
      mmc: atmel-mci: fix bad variable type for clkdiv

Lukas Czerner (1):
      ext4: fix NULL pointer dereference when journal restart fails

Mark Edwards (1):
      USB: cp210x: add ID for KCF Technologies PRN device

Mark Hounschell (1):
      sd: Disable support for 256 byte/sector disks

Mark Rutland (2):
      ARM: 8307/1: psci: move psci firmware calls out of line
      ARM: 8356/1: mm: handle non-pmd-aligned end of RAM

Martin K. Petersen (3):
      libata: Update Crucial/Micron blacklist
      libata: Blacklist queued TRIM on Samsung SSD 850 Pro
      libata: Blacklist queued TRIM on all Samsung 800-series

Mathias Nyman (2):
      xhci: fix isoc endpoint dequeue from advancing too far on transaction error
      xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256

Mel Gorman (1):
      mm, numa: really disable NUMA balancing by default on single node machines

Michael Brunner (1):
      gpio: gpio-kempld: Fix get_direction return value

Michal Kubeček (2):
      ipv6: do not delete previously existing ECMP routes if add fails
      ipv6: fix ECMP route replacement

Nadav Haklai (1):
      thermal: armada: Update Armada 380 thermal sensor coefficients

NeilBrown (1):
      md/raid5: don't record new size if resize_stripes fails.

Nicolas Schichan (1):
      ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction.

Oleg Nesterov (1):
      x86/vdso: Fix 'make bzImage' on older distros

Pan Xinhui (1):
      tty/n_gsm.c: fix a memory leak when gsmtty is removed

Paolo Bonzini (1):
      KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages

Pelle Nilsson (1):
      spi: bitbang: Make setup_transfer() callback optional

Philippe Reynes (1):
      ARM: dts: imx27: only map 4 Kbyte for fec registers

Rafael J. Wysocki (1):
      ACPI / init: Fix the ordering of acpi_reserve_resources()

Russell King (1):
      ARM: fix missing syscall trace exit

Rusty Russell (1):
      lguest: fix out-by-one error in address checking.

Sasha Levin (2):
      fs, omfs: add NULL terminator in the end up the token list
      vfs: read file_handle only once in handle_to_path

Scott Branden (1):
      rt2x00: add new rt2800usb device DWA 130

Scott Mayhew (1):
      svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures

Srinivas Pandruvada (2):
      iio: light: hid-sensor-prox: Fix modifier
      iio: pressure: hid-sensor-press: Fix modifier

Stephane Eranian (1):
      perf/x86/rapl: Enable Broadwell-U RAPL support

Steven Rostedt (1):
      module: Call module notifier on failure after complete_formation()

Sławomir Demeszko (1):
      staging: gdm724x: Correction of variable usage after applying ALIGN()

Takashi Iwai (2):
      ALSA: hda - Add headphone quirk for Lifebook E752
      Revert "ALSA: hda - Add mute-LED mode control to Thinkpad"

Tatyana Nikolova (1):
      RDMA/core: Fix for parsing netlink string attribute

Thadeu Lima de Souza Cascardo (1):
      bridge: fix parsing of MLDv2 reports

Thomas Betker (4):
      iio: adc: xilinx: Fix register addresses
      iio: adc: xilinx: Fix "vccaux" channel .address
      iio: adc: xilinx: Fix VREFP scale
      iio: adc: xilinx: Fix VREFN sign

Thomas Gleixner (1):
      sched: Handle priority boosted tasks proper in setscheduler()

Thomas Petazzoni (1):
      ARM: mvebu: do not register custom DMA operations when coherency is disabled

Tommi Kyntola (1):
      x86/vdso: Fix the x86 vdso2c tool includes

Tommi Rantala (1):
      ipvs: fix memory leak in ip_vs_ctl.c

Toshiaki Makita (2):
      igb: Fix oops on changing number of rings
      igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector

WANG Cong (1):
      net_sched: invoke ->attach() after setting dev->qdisc

Xiao Guangrong (2):
      KVM: MMU: fix smap permission check
      KVM: MMU: fix SMAP virtualization

Zidan Wang (2):
      ASoC: wm8960: fix "RINPUT3" audio route error
      ASoC: wm8994: correct BCLK DIV 348 to 384

gregkh@linuxfoundation.org (1):
      staging: wlags49_h2: fix extern inline functions

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

* [PATCH 3.16.y-ckt 001/110] kprobes/x86: Return correct length in __copy_instruction()
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 002/110] iio: light: hid-sensor-prox: Fix modifier Luis Henriques
                   ` (108 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Eugene Shatokhin, Masami Hiramatsu, Ingo Molnar, Luis Henriques

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

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

From: Eugene Shatokhin <eugene.shatokhin@rosalab.ru>

commit c80e5c0c23ce2282476fdc64c4b5e3d3a40723fd upstream.

On x86-64, __copy_instruction() always returns 0 (error) if the
instruction uses %rip-relative addressing. This is because
kernel_insn_init() is called the second time for 'insn' instance
in such cases and sets all its fields to 0.

Because of this, trying to place a kprobe on such instruction
will fail, register_kprobe() will return -EINVAL.

This patch fixes the problem.

Signed-off-by: Eugene Shatokhin <eugene.shatokhin@rosalab.ru>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Link: http://lkml.kernel.org/r/20150317100918.28349.94654.stgit@localhost.localdomain
Signed-off-by: Ingo Molnar <mingo@kernel.org>
[ luis: backported to 3.16: used Eugene's backport for 3.16.y-3.18.y ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/kernel/kprobes/core.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
index 93d2c04c6f8f..f2e281cf8c19 100644
--- a/arch/x86/kernel/kprobes/core.c
+++ b/arch/x86/kernel/kprobes/core.c
@@ -330,13 +330,16 @@ int __copy_instruction(u8 *dest, u8 *src)
 {
 	struct insn insn;
 	kprobe_opcode_t buf[MAX_INSN_SIZE];
+	int length;
 
 	kernel_insn_init(&insn, (void *)recover_probed_instruction(buf, (unsigned long)src));
 	insn_get_length(&insn);
+	length = insn.length;
+
 	/* Another subsystem puts a breakpoint, failed to recover */
 	if (insn.opcode.bytes[0] == BREAKPOINT_INSTRUCTION)
 		return 0;
-	memcpy(dest, insn.kaddr, insn.length);
+	memcpy(dest, insn.kaddr, length);
 
 #ifdef CONFIG_X86_64
 	if (insn_rip_relative(&insn)) {
@@ -366,7 +369,7 @@ int __copy_instruction(u8 *dest, u8 *src)
 		*(s32 *) disp = (s32) newdisp;
 	}
 #endif
-	return insn.length;
+	return length;
 }
 
 static int arch_copy_kprobe(struct kprobe *p)

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

* [PATCH 3.16.y-ckt 002/110] iio: light: hid-sensor-prox: Fix modifier
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 001/110] kprobes/x86: Return correct length in __copy_instruction() Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 003/110] iio: pressure: hid-sensor-press: " Luis Henriques
                   ` (107 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Srinivas Pandruvada, Jonathan Cameron, Luis Henriques

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

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

From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

commit c2aab3d58b96002555a3e70004f593b043830248 upstream.

Currently in_proximity_(null)_raw is getting presented as raw sysfs
attribute. Same with the scan_elements.
The modifier doesn't apply to this channel.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/iio/light/hid-sensor-prox.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-sensor-prox.c
index 412bae86d6ae..c95b9682f0da 100644
--- a/drivers/iio/light/hid-sensor-prox.c
+++ b/drivers/iio/light/hid-sensor-prox.c
@@ -43,8 +43,6 @@ struct prox_state {
 static const struct iio_chan_spec prox_channels[] = {
 	{
 		.type = IIO_PROXIMITY,
-		.modified = 1,
-		.channel2 = IIO_NO_MOD,
 		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
 		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
 		BIT(IIO_CHAN_INFO_SCALE) |

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

* [PATCH 3.16.y-ckt 003/110] iio: pressure: hid-sensor-press: Fix modifier
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 001/110] kprobes/x86: Return correct length in __copy_instruction() Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 002/110] iio: light: hid-sensor-prox: Fix modifier Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 004/110] iio: adc: xilinx: Fix register addresses Luis Henriques
                   ` (106 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Srinivas Pandruvada, Jonathan Cameron, Luis Henriques

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

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

From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

commit 964e2255f1d73fc0136bc206a78a1f86bdad72a7 upstream.

Fix "null" in the raw attribute and scan elements.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/iio/pressure/hid-sensor-press.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/iio/pressure/hid-sensor-press.c b/drivers/iio/pressure/hid-sensor-press.c
index 2c0d2a4fed8c..759b153f1955 100644
--- a/drivers/iio/pressure/hid-sensor-press.c
+++ b/drivers/iio/pressure/hid-sensor-press.c
@@ -47,8 +47,6 @@ struct press_state {
 static const struct iio_chan_spec press_channels[] = {
 	{
 		.type = IIO_PRESSURE,
-		.modified = 1,
-		.channel2 = IIO_NO_MOD,
 		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
 		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
 		BIT(IIO_CHAN_INFO_SCALE) |

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

* [PATCH 3.16.y-ckt 004/110] iio: adc: xilinx: Fix register addresses
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (2 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 003/110] iio: pressure: hid-sensor-press: " Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 005/110] iio: adc: xilinx: Fix "vccaux" channel .address Luis Henriques
                   ` (105 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Thomas Betker, Jonathan Cameron, Luis Henriques

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

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

From: Thomas Betker <thomas.betker@rohde-schwarz.com>

commit 3960d2c0c4aafe98da47a4a2eb64dfa8e88d8df5 upstream.

Define the register addresses for MIN_VCCPINT, MIN_VCCPAUX, MIN_VCCO_DDR
correctly.

Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/iio/adc/xilinx-xadc.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/adc/xilinx-xadc.h b/drivers/iio/adc/xilinx-xadc.h
index c7487e8d7f80..54adc5087210 100644
--- a/drivers/iio/adc/xilinx-xadc.h
+++ b/drivers/iio/adc/xilinx-xadc.h
@@ -145,9 +145,9 @@ static inline int xadc_write_adc_reg(struct xadc *xadc, unsigned int reg,
 #define XADC_REG_MAX_VCCPINT	0x28
 #define XADC_REG_MAX_VCCPAUX	0x29
 #define XADC_REG_MAX_VCCO_DDR	0x2a
-#define XADC_REG_MIN_VCCPINT	0x2b
-#define XADC_REG_MIN_VCCPAUX	0x2c
-#define XADC_REG_MIN_VCCO_DDR	0x2d
+#define XADC_REG_MIN_VCCPINT	0x2c
+#define XADC_REG_MIN_VCCPAUX	0x2d
+#define XADC_REG_MIN_VCCO_DDR	0x2e
 
 #define XADC_REG_CONF0		0x40
 #define XADC_REG_CONF1		0x41

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

* [PATCH 3.16.y-ckt 005/110] iio: adc: xilinx: Fix "vccaux" channel .address
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (3 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 004/110] iio: adc: xilinx: Fix register addresses Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 006/110] iio: adc: xilinx: Fix VREFP scale Luis Henriques
                   ` (104 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Thomas Betker, Jonathan Cameron, Luis Henriques

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

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

From: Thomas Betker <thomas.betker@rohde-schwarz.com>

commit d6c96c42283601e311a7a1a3d7e51cde9d7fdb6e upstream.

For the "vccaux" channel, read the VCCAUX register, not VCCINT.

Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/iio/adc/xilinx-xadc-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
index 41d3a5efd62c..2a7ff1d428ef 100644
--- a/drivers/iio/adc/xilinx-xadc-core.c
+++ b/drivers/iio/adc/xilinx-xadc-core.c
@@ -1008,7 +1008,7 @@ static const struct iio_event_spec xadc_voltage_events[] = {
 static const struct iio_chan_spec xadc_channels[] = {
 	XADC_CHAN_TEMP(0, 8, XADC_REG_TEMP),
 	XADC_CHAN_VOLTAGE(0, 9, XADC_REG_VCCINT, "vccint", true),
-	XADC_CHAN_VOLTAGE(1, 10, XADC_REG_VCCINT, "vccaux", true),
+	XADC_CHAN_VOLTAGE(1, 10, XADC_REG_VCCAUX, "vccaux", true),
 	XADC_CHAN_VOLTAGE(2, 14, XADC_REG_VCCBRAM, "vccbram", true),
 	XADC_CHAN_VOLTAGE(3, 5, XADC_REG_VCCPINT, "vccpint", true),
 	XADC_CHAN_VOLTAGE(4, 6, XADC_REG_VCCPAUX, "vccpaux", true),

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

* [PATCH 3.16.y-ckt 006/110] iio: adc: xilinx: Fix VREFP scale
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (4 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 005/110] iio: adc: xilinx: Fix "vccaux" channel .address Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 007/110] iio: adc: xilinx: Fix VREFN sign Luis Henriques
                   ` (103 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Thomas Betker, Jonathan Cameron, Luis Henriques

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

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

From: Thomas Betker <thomas.betker@rohde-schwarz.com>

commit 00db4e52f4541965f7fda225eb458a75f892017b upstream.

The scaling factor for VREFP is 3.0/4096, not 1.0/4096; fix this to get
correct readings.

Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/iio/adc/xilinx-xadc-core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
index 2a7ff1d428ef..4976aed06344 100644
--- a/drivers/iio/adc/xilinx-xadc-core.c
+++ b/drivers/iio/adc/xilinx-xadc-core.c
@@ -856,6 +856,7 @@ static int xadc_read_raw(struct iio_dev *indio_dev,
 			switch (chan->address) {
 			case XADC_REG_VCCINT:
 			case XADC_REG_VCCAUX:
+			case XADC_REG_VREFP:
 			case XADC_REG_VCCBRAM:
 			case XADC_REG_VCCPINT:
 			case XADC_REG_VCCPAUX:

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

* [PATCH 3.16.y-ckt 007/110] iio: adc: xilinx: Fix VREFN sign
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (5 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 006/110] iio: adc: xilinx: Fix VREFP scale Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 008/110] libata: Add helper to determine when PHY events should be ignored Luis Henriques
                   ` (102 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Thomas Betker, Jonathan Cameron, Luis Henriques

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

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

From: Thomas Betker <thomas.betker@rohde-schwarz.com>

commit 97ffae1d30c3f6ceee67d5b0d3e540c08c13c744 upstream.

The VREFN channel is bipolar, not unipolar. Small negative values do
occur (e.g., -1mV), and unsigned conversion maps them incorrectly to
large positive values (about +1V), so fix this.

Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/iio/adc/xilinx-xadc-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
index 4976aed06344..c7637716fa8f 100644
--- a/drivers/iio/adc/xilinx-xadc-core.c
+++ b/drivers/iio/adc/xilinx-xadc-core.c
@@ -997,7 +997,7 @@ static const struct iio_event_spec xadc_voltage_events[] = {
 	.num_event_specs = (_alarm) ? ARRAY_SIZE(xadc_voltage_events) : 0, \
 	.scan_index = (_scan_index), \
 	.scan_type = { \
-		.sign = 'u', \
+		.sign = ((_addr) == XADC_REG_VREFN) ? 's' : 'u', \
 		.realbits = 12, \
 		.storagebits = 16, \
 		.shift = 4, \

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

* [PATCH 3.16.y-ckt 008/110] libata: Add helper to determine when PHY events should be ignored
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (6 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 007/110] iio: adc: xilinx: Fix VREFN sign Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 009/110] libata: Ignore spurious PHY event on LPM policy change Luis Henriques
                   ` (101 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Gabriele Mazzotta, Tejun Heo, Luis Henriques

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

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

From: Gabriele Mazzotta <gabriele.mzt@gmail.com>

commit 8393b811f38acdf7fd8da2028708edad3e68ce1f upstream.

This is a preparation commit that will allow to add other criteria
according to which PHY events should be dropped.

Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/ata/libahci.c     |  3 +--
 drivers/ata/libata-core.c | 19 +++++++++++++++++++
 include/linux/libata.h    |  1 +
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index d72ce0470309..86c3c24b835f 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -1712,8 +1712,7 @@ static void ahci_handle_port_interrupt(struct ata_port *ap,
 	if (unlikely(resetting))
 		status &= ~PORT_IRQ_BAD_PMP;
 
-	/* if LPM is enabled, PHYRDY doesn't mean anything */
-	if (ap->link.lpm_policy > ATA_LPM_MAX_POWER) {
+	if (sata_lpm_ignore_phy_events(&ap->link)) {
 		status &= ~PORT_IRQ_PHYRDY;
 		ahci_scr_write(&ap->link, SCR_ERROR, SERR_PHYRDY_CHG);
 	}
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index e1ad6e53073d..c89f10fbf169 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -6813,6 +6813,25 @@ u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val,
 	return tmp;
 }
 
+/**
+ *	sata_lpm_ignore_phy_events - test if PHY event should be ignored
+ *	@link: Link receiving the event
+ *
+ *	Test whether the received PHY event has to be ignored or not.
+ *
+ *	LOCKING:
+ *	None:
+ *
+ *	RETURNS:
+ *	True if the event has to be ignored.
+ */
+bool sata_lpm_ignore_phy_events(struct ata_link *link)
+{
+	/* if LPM is enabled, PHYRDY doesn't mean anything */
+	return !!(link->lpm_policy > ATA_LPM_MAX_POWER);
+}
+EXPORT_SYMBOL_GPL(sata_lpm_ignore_phy_events);
+
 /*
  * Dummy port_ops
  */
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 622459aea211..6461f30ae5bf 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1199,6 +1199,7 @@ extern struct ata_device *ata_dev_pair(struct ata_device *adev);
 extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
 extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap);
 extern void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, struct list_head *eh_q);
+extern bool sata_lpm_ignore_phy_events(struct ata_link *link);
 
 extern int ata_cable_40wire(struct ata_port *ap);
 extern int ata_cable_80wire(struct ata_port *ap);

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

* [PATCH 3.16.y-ckt 009/110] libata: Ignore spurious PHY event on LPM policy change
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (7 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 008/110] libata: Add helper to determine when PHY events should be ignored Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 010/110] iio:st_sensors: Fix oops when probing SPI devices Luis Henriques
                   ` (100 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Gabriele Mazzotta, Tejun Heo, Luis Henriques

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

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

From: Gabriele Mazzotta <gabriele.mzt@gmail.com>

commit 09c5b4803a80a5451d950d6a539d2eb311dc0fb1 upstream.

When the LPM policy is set to ATA_LPM_MAX_POWER, the device might
generate a spurious PHY event that cuases errors on the link.
Ignore this event if it occured within 10s after the policy change.

The timeout was chosen observing that on a Dell XPS13 9333 these
spurious events can occur up to roughly 6s after the policy change.

Link: http://lkml.kernel.org/g/3352987.ugV1Ipy7Z5@xps13
Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/ata/libata-core.c | 15 ++++++++++++++-
 drivers/ata/libata-eh.c   |  3 +++
 include/linux/libata.h    |  9 +++++++++
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index c89f10fbf169..52ddc0afcaf6 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -6827,8 +6827,21 @@ u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val,
  */
 bool sata_lpm_ignore_phy_events(struct ata_link *link)
 {
+	unsigned long lpm_timeout = link->last_lpm_change +
+				    msecs_to_jiffies(ATA_TMOUT_SPURIOUS_PHY);
+
 	/* if LPM is enabled, PHYRDY doesn't mean anything */
-	return !!(link->lpm_policy > ATA_LPM_MAX_POWER);
+	if (link->lpm_policy > ATA_LPM_MAX_POWER)
+		return true;
+
+	/* ignore the first PHY event after the LPM policy changed
+	 * as it is might be spurious
+	 */
+	if ((link->flags & ATA_LFLAG_CHANGED) &&
+	    time_before(jiffies, lpm_timeout))
+		return true;
+
+	return false;
 }
 EXPORT_SYMBOL_GPL(sata_lpm_ignore_phy_events);
 
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index dad83df555c4..4ec95b76f6a1 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -3490,6 +3490,9 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
 		}
 	}
 
+	link->last_lpm_change = jiffies;
+	link->flags |= ATA_LFLAG_CHANGED;
+
 	return 0;
 
 fail:
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 6461f30ae5bf..91aac2525c09 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -204,6 +204,7 @@ enum {
 	ATA_LFLAG_SW_ACTIVITY	= (1 << 7), /* keep activity stats */
 	ATA_LFLAG_NO_LPM	= (1 << 8), /* disable LPM on this link */
 	ATA_LFLAG_RST_ONCE	= (1 << 9), /* limit recovery to one reset */
+	ATA_LFLAG_CHANGED	= (1 << 10), /* LPM state changed on this link */
 
 	/* struct ata_port flags */
 	ATA_FLAG_SLAVE_POSS	= (1 << 0), /* host supports slave dev */
@@ -308,6 +309,12 @@ enum {
 	 */
 	ATA_TMOUT_PMP_SRST_WAIT	= 5000,
 
+	/* When the LPM policy is set to ATA_LPM_MAX_POWER, there might
+	 * be a spurious PHY event, so ignore the first PHY event that
+	 * occurs within 10s after the policy change.
+	 */
+	ATA_TMOUT_SPURIOUS_PHY	= 10000,
+
 	/* ATA bus states */
 	BUS_UNKNOWN		= 0,
 	BUS_DMA			= 1,
@@ -786,6 +793,8 @@ struct ata_link {
 	struct ata_eh_context	eh_context;
 
 	struct ata_device	device[ATA_MAX_DEVICES];
+
+	unsigned long		last_lpm_change; /* when last LPM change happened */
 };
 #define ATA_LINK_CLEAR_BEGIN		offsetof(struct ata_link, active_tag)
 #define ATA_LINK_CLEAR_END		offsetof(struct ata_link, device[0])

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

* [PATCH 3.16.y-ckt 010/110] iio:st_sensors: Fix oops when probing SPI devices
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (8 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 009/110] libata: Ignore spurious PHY event on LPM policy change Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 011/110] usb: gadget: configfs: Fix interfaces array NULL-termination Luis Henriques
                   ` (99 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Alban Bedel, Jonathan Cameron, Luis Henriques

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

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

From: Alban Bedel <alban.bedel@avionic-design.de>

commit 8e71c04f863a1754f21b27fb8ecb773d680a0a80 upstream.

In SPI mode the transfer buffer is locked with a mutex. However this
mutex is only initilized after the probe, but some transfer needs to
be done in the probe.

To fix this bug we move the mutex initialization at the beginning of
the device probe.

Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de>
Acked-by: Denis Ciocca <denis.ciocca@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
[ luis: backported to 3.16:
  - use 'pdata' instead of 'press_data' in st_press_common_probe()
  - adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/iio/accel/st_accel_core.c               | 1 +
 drivers/iio/common/st_sensors/st_sensors_core.c | 2 --
 drivers/iio/gyro/st_gyro_core.c                 | 1 +
 drivers/iio/magnetometer/st_magn_core.c         | 1 +
 drivers/iio/pressure/st_pressure_core.c         | 1 +
 5 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
index a2abf7c2ce3b..36cb5139e48e 100644
--- a/drivers/iio/accel/st_accel_core.c
+++ b/drivers/iio/accel/st_accel_core.c
@@ -458,6 +458,7 @@ int st_accel_common_probe(struct iio_dev *indio_dev,
 
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->info = &accel_info;
+	mutex_init(&adata->tb.buf_lock);
 
 	st_sensors_power_enable(indio_dev);
 
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
index e8b932fed70e..4cafb43f948e 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -271,8 +271,6 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,
 	struct st_sensor_data *sdata = iio_priv(indio_dev);
 	int err = 0;
 
-	mutex_init(&sdata->tb.buf_lock);
-
 	if (pdata)
 		err = st_sensors_set_drdy_int_pin(indio_dev, pdata);
 
diff --git a/drivers/iio/gyro/st_gyro_core.c b/drivers/iio/gyro/st_gyro_core.c
index ed74a9069989..bd6015d01d08 100644
--- a/drivers/iio/gyro/st_gyro_core.c
+++ b/drivers/iio/gyro/st_gyro_core.c
@@ -310,6 +310,7 @@ int st_gyro_common_probe(struct iio_dev *indio_dev,
 
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->info = &gyro_info;
+	mutex_init(&gdata->tb.buf_lock);
 
 	st_sensors_power_enable(indio_dev);
 
diff --git a/drivers/iio/magnetometer/st_magn_core.c b/drivers/iio/magnetometer/st_magn_core.c
index 4d55151893af..04ec7bae5655 100644
--- a/drivers/iio/magnetometer/st_magn_core.c
+++ b/drivers/iio/magnetometer/st_magn_core.c
@@ -362,6 +362,7 @@ int st_magn_common_probe(struct iio_dev *indio_dev,
 
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->info = &magn_info;
+	mutex_init(&mdata->tb.buf_lock);
 
 	st_sensors_power_enable(indio_dev);
 
diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c
index cd7e01f3a93b..1aa7c18471a8 100644
--- a/drivers/iio/pressure/st_pressure_core.c
+++ b/drivers/iio/pressure/st_pressure_core.c
@@ -395,6 +395,7 @@ int st_press_common_probe(struct iio_dev *indio_dev,
 
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->info = &press_info;
+	mutex_init(&pdata->tb.buf_lock);
 
 	st_sensors_power_enable(indio_dev);
 

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

* [PATCH 3.16.y-ckt 011/110] usb: gadget: configfs: Fix interfaces array NULL-termination
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (9 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 010/110] iio:st_sensors: Fix oops when probing SPI devices Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 012/110] rtlwifi: rtl8192cu: Fix kernel deadlock Luis Henriques
                   ` (98 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Krzysztof Opasiak, Felipe Balbi, Luis Henriques

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

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

From: Krzysztof Opasiak <k.opasiak@samsung.com>

commit 903124fe1aa284f61745a9dd4fbfa0184e569fff upstream.

memset() to 0 interfaces array before reusing
usb_configuration structure.

This commit fix bug:

ln -s functions/acm.1 configs/c.1
ln -s functions/acm.2 configs/c.1
ln -s functions/acm.3 configs/c.1
echo "UDC name" > UDC
echo "" > UDC
rm configs/c.1/acm.*
rmdir functions/*
mkdir functions/ecm.usb0
ln -s functions/ecm.usb0 configs/c.1
echo "UDC name" > UDC

[   82.220969] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[   82.229009] pgd = c0004000
[   82.231698] [00000000] *pgd=00000000
[   82.235260] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
[   82.240638] Modules linked in:
[   82.243681] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.0.0-rc2 #39
[   82.249926] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[   82.256003] task: c07cd2f0 ti: c07c8000 task.ti: c07c8000
[   82.261393] PC is at composite_setup+0xe3c/0x1674
[   82.266073] LR is at composite_setup+0xf20/0x1674
[   82.270760] pc : [<c03510d4>]    lr : [<c03511b8>]    psr: 600001d3
[   82.270760] sp : c07c9df0  ip : c0806448  fp : ed8c9c9c
[   82.282216] r10: 00000001  r9 : 00000000  r8 : edaae918
[   82.287425] r7 : ed551cc0  r6 : 00007fff  r5 : 00000000  r4 : ed799634
[   82.293934] r3 : 00000003  r2 : 00010002  r1 : edaae918  r0 : 0000002e
[   82.300446] Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
[   82.307910] Control: 10c5387d  Table: 6bc1804a  DAC: 00000015
[   82.313638] Process swapper/0 (pid: 0, stack limit = 0xc07c8210)
[   82.319627] Stack: (0xc07c9df0 to 0xc07ca000)
[   82.323969] 9de0:                                     00000000 c06e65f4 00000000 c07c9f68
[   82.332130] 9e00: 00000067 c07c59ac 000003f7 edaae918 ed8c9c98 ed799690 eca2f140 200001d3
[   82.340289] 9e20: ee79a2d8 c07c9e88 c07c5304 ffff55db 00010002 edaae810 edaae860 eda96d50
[   82.348448] 9e40: 00000009 ee264510 00000007 c07ca444 edaae860 c0340890 c0827a40 ffff55e0
[   82.356607] 9e60: c0827a40 eda96e40 ee264510 edaae810 00000000 edaae860 00000007 c07ca444
[   82.364766] 9e80: edaae860 c0354170 c03407dc c033db4c edaae810 00000000 00000000 00000010
[   82.372925] 9ea0: 00000032 c0341670 00000000 00000000 00000001 eda96e00 00000000 00000000
[   82.381084] 9ec0: 00000000 00000032 c0803a23 ee1aa840 00000001 c005d54c 249e2450 00000000
[   82.389244] 9ee0: 200001d3 ee1aa840 ee1aa8a0 ed84f4c0 00000000 c07c9f68 00000067 c07c59ac
[   82.397403] 9f00: 00000000 c005d688 ee1aa840 ee1aa8a0 c07db4b4 c006009c 00000032 00000000
[   82.405562] 9f20: 00000001 c005ce20 c07c59ac c005cf34 f002000c c07ca780 c07c9f68 00000057
[   82.413722] 9f40: f0020000 413fc090 00000001 c00086b4 c000f804 60000053 ffffffff c07c9f9c
[   82.421880] 9f60: c0803a20 c0011fc0 00000000 00000000 c07c9fb8 c001bee0 c07ca4f0 c057004c
[   82.430040] 9f80: c07ca4fc c0803a20 c0803a20 413fc090 00000001 00000000 01000000 c07c9fb0
[   82.438199] 9fa0: c000f800 c000f804 60000053 ffffffff 00000000 c0050e70 c0803bc0 c0783bd8
[   82.446358] 9fc0: ffffffff ffffffff c0783664 00000000 00000000 c07b13e8 00000000 c0803e54
[   82.454517] 9fe0: c07ca480 c07b13e4 c07ce40c 4000406a 00000000 40008074 00000000 00000000
[   82.462689] [<c03510d4>] (composite_setup) from [<c0340890>] (s3c_hsotg_complete_setup+0xb4/0x418)
[   82.471626] [<c0340890>] (s3c_hsotg_complete_setup) from [<c0354170>] (usb_gadget_giveback_request+0xc/0x10)
[   82.481429] [<c0354170>] (usb_gadget_giveback_request) from [<c033db4c>] (s3c_hsotg_complete_request+0xcc/0x12c)
[   82.491583] [<c033db4c>] (s3c_hsotg_complete_request) from [<c0341670>] (s3c_hsotg_irq+0x4fc/0x558)
[   82.500614] [<c0341670>] (s3c_hsotg_irq) from [<c005d54c>] (handle_irq_event_percpu+0x50/0x150)
[   82.509291] [<c005d54c>] (handle_irq_event_percpu) from [<c005d688>] (handle_irq_event+0x3c/0x5c)
[   82.518145] [<c005d688>] (handle_irq_event) from [<c006009c>] (handle_fasteoi_irq+0xd4/0x18c)
[   82.526650] [<c006009c>] (handle_fasteoi_irq) from [<c005ce20>] (generic_handle_irq+0x20/0x30)
[   82.535242] [<c005ce20>] (generic_handle_irq) from [<c005cf34>] (__handle_domain_irq+0x6c/0xdc)
[   82.543923] [<c005cf34>] (__handle_domain_irq) from [<c00086b4>] (gic_handle_irq+0x2c/0x6c)
[   82.552256] [<c00086b4>] (gic_handle_irq) from [<c0011fc0>] (__irq_svc+0x40/0x74)
[   82.559716] Exception stack(0xc07c9f68 to 0xc07c9fb0)
[   82.564753] 9f60:                   00000000 00000000 c07c9fb8 c001bee0 c07ca4f0 c057004c
[   82.572913] 9f80: c07ca4fc c0803a20 c0803a20 413fc090 00000001 00000000 01000000 c07c9fb0
[   82.581069] 9fa0: c000f800 c000f804 60000053 ffffffff
[   82.586113] [<c0011fc0>] (__irq_svc) from [<c000f804>] (arch_cpu_idle+0x30/0x3c)
[   82.593491] [<c000f804>] (arch_cpu_idle) from [<c0050e70>] (cpu_startup_entry+0x128/0x1a4)
[   82.601740] [<c0050e70>] (cpu_startup_entry) from [<c0783bd8>] (start_kernel+0x350/0x3bc)
[   82.609890] Code: 0a000002 e3530005 05975010 15975008 (e5953000)
[   82.615965] ---[ end trace f57d5f599a5f1bfa ]---

Most of kernel code assume that interface array in
struct usb_configuration is NULL terminated.

When gadget is composed with configfs configuration
structure may be reused for different functions set.

This bug happens because purge_configs_funcs() sets
only next_interface_id to 0. Interface array still
contains pointers to already freed interfaces. If in
second try we add less interfaces than earlier we
may access unallocated memory when trying to get
interface descriptors.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/gadget/configfs.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c
index 45a94a77d986..451296b2b71f 100644
--- a/drivers/usb/gadget/configfs.c
+++ b/drivers/usb/gadget/configfs.c
@@ -1297,6 +1297,7 @@ static void purge_configs_funcs(struct gadget_info *gi)
 			}
 		}
 		c->next_interface_id = 0;
+		memset(c->interface, 0, sizeof(c->interface));
 		c->superspeed = 0;
 		c->highspeed = 0;
 		c->fullspeed = 0;

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

* [PATCH 3.16.y-ckt 012/110] rtlwifi: rtl8192cu: Fix kernel deadlock
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (10 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 011/110] usb: gadget: configfs: Fix interfaces array NULL-termination Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 013/110] USB: cp210x: add ID for KCF Technologies PRN device Luis Henriques
                   ` (97 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Larry Finger, Bernhard Wiedemann, Takashi Iwai, Kalle Valo,
	Luis Henriques

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

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

From: Larry Finger <Larry.Finger@lwfinger.net>

commit 414b7e3b9ce8b0577f613e656fdbc36b34b444dd upstream.

The USB mini-driver in rtlwifi, which is used by rtl8192cu, issues a call to
usb_control_msg() with a timeout value of 0. In some instances where the
interface is shutting down, this infinite wait results in a CPU deadlock. A
one second timeout fixes this problem without affecting any normal operations.

This bug is reported at https://bugzilla.novell.com/show_bug.cgi?id=927786.

Reported-by: Bernhard Wiedemann <bwiedemann@suse.com>
Tested-by: Bernhard Wiedemann <bwiedemann@suse.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Bernhard Wiedemann <bwiedemann@suse.com>
Cc: Takashi Iwai<tiwai@suse.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/net/wireless/rtlwifi/usb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c
index 0398d3ea15b0..cdd0dd7a938a 100644
--- a/drivers/net/wireless/rtlwifi/usb.c
+++ b/drivers/net/wireless/rtlwifi/usb.c
@@ -126,7 +126,7 @@ static int _usbctrl_vendorreq_sync_read(struct usb_device *udev, u8 request,
 
 	do {
 		status = usb_control_msg(udev, pipe, request, reqtype, value,
-					 index, pdata, len, 0); /*max. timeout*/
+					 index, pdata, len, 1000);
 		if (status < 0) {
 			/* firmware download is checksumed, don't retry */
 			if ((value >= FW_8192C_START_ADDRESS &&

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

* [PATCH 3.16.y-ckt 013/110] USB: cp210x: add ID for KCF Technologies PRN device
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (11 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 012/110] rtlwifi: rtl8192cu: Fix kernel deadlock Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 014/110] USB: pl2303: Remove support for Samsung I330 Luis Henriques
                   ` (96 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Mark Edwards, Johan Hovold, Luis Henriques

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

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

From: Mark Edwards <sonofaforester@gmail.com>

commit c735ed74d83f8ecb45c4c4c95a16853c9c3c8157 upstream.

Added the USB serial console device ID for KCF Technologies PRN device
which has a USB port for its serial console.

Signed-off-by: Mark Edwards <sonofaforester@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/serial/cp210x.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index 8d114b9733ed..02de4cf48a5b 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -127,6 +127,7 @@ static const struct usb_device_id id_table[] = {
 	{ USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */
 	{ USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */
 	{ USB_DEVICE(0x10C4, 0x8977) },	/* CEL MeshWorks DevKit Device */
+	{ USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */
 	{ USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
 	{ USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
 	{ USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */

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

* [PATCH 3.16.y-ckt 014/110] USB: pl2303: Remove support for Samsung I330
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (12 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 013/110] USB: cp210x: add ID for KCF Technologies PRN device Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 015/110] USB: visor: Match I330 phone more precisely Luis Henriques
                   ` (95 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Jason A. Donenfeld, Johan Hovold, Luis Henriques

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

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

From: "Jason A. Donenfeld" <Jason@zx2c4.com>

commit 48ef23a4f686b1e4519d4193c20d26834ff810ff upstream.

This phone is already supported by the visor driver.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/serial/pl2303.c | 1 -
 drivers/usb/serial/pl2303.h | 4 ----
 2 files changed, 5 deletions(-)

diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index e9bad928039f..521959370b66 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -61,7 +61,6 @@ static const struct usb_device_id id_table[] = {
 	{ USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) },
 	{ USB_DEVICE(SITECOM_VENDOR_ID, SITECOM_PRODUCT_ID) },
 	{ USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_ID) },
-	{ USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) },
 	{ USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_SX1),
 		.driver_info = PL2303_QUIRK_UART_STATE_IDX0 },
 	{ USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65),
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
index 71fd9da1d6e7..e3b7af8adfb7 100644
--- a/drivers/usb/serial/pl2303.h
+++ b/drivers/usb/serial/pl2303.h
@@ -62,10 +62,6 @@
 #define ALCATEL_VENDOR_ID	0x11f7
 #define ALCATEL_PRODUCT_ID	0x02df
 
-/* Samsung I330 phone cradle */
-#define SAMSUNG_VENDOR_ID	0x04e8
-#define SAMSUNG_PRODUCT_ID	0x8001
-
 #define SIEMENS_VENDOR_ID	0x11f5
 #define SIEMENS_PRODUCT_ID_SX1	0x0001
 #define SIEMENS_PRODUCT_ID_X65	0x0003

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

* [PATCH 3.16.y-ckt 015/110] USB: visor: Match I330 phone more precisely
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (13 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 014/110] USB: pl2303: Remove support for Samsung I330 Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 016/110] net: can: xilinx_can: fix extended frame handling Luis Henriques
                   ` (94 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Jason A. Donenfeld, Johan Hovold, Luis Henriques

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

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

From: "Jason A. Donenfeld" <Jason@zx2c4.com>

commit 82ee3aeb9295c5fc37fd2ddf20f13ac2b40ec97d upstream.

Samsung has just released a portable USB3 SSD, coming in a very small
and nice form factor. It's USB ID is 04e8:8001, which unfortunately is
already used by the Palm Visor driver for the Samsung I330 phone cradle.
Having pl2303 or visor pick up this device ID results in conflicts with
the usb-storage driver, which handles the newly released portable USB3
SSD.

To work around this conflict, I've dug up a mailing list post [1] from a
long time ago, in which a user posts the full USB descriptor
information. The most specific value in this appears to be the interface
class, which has value 255 (0xff). Since usb-storage requires an
interface class of 0x8, I believe it's correct to disambiguate the two
devices by matching on 0xff inside visor.

[1] http://permalink.gmane.org/gmane.linux.usb.user/4264

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/serial/visor.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
index bf2bd40e5f2a..60afb39eb73c 100644
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -95,7 +95,7 @@ static const struct usb_device_id id_table[] = {
 		.driver_info = (kernel_ulong_t)&palm_os_4_probe },
 	{ USB_DEVICE(ACER_VENDOR_ID, ACER_S10_ID),
 		.driver_info = (kernel_ulong_t)&palm_os_4_probe },
-	{ USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID),
+	{ USB_DEVICE_INTERFACE_CLASS(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID, 0xff),
 		.driver_info = (kernel_ulong_t)&palm_os_4_probe },
 	{ USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID),
 		.driver_info = (kernel_ulong_t)&palm_os_4_probe },

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

* [PATCH 3.16.y-ckt 016/110] net: can: xilinx_can: fix extended frame handling
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (14 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 015/110] USB: visor: Match I330 phone more precisely Luis Henriques
@ 2015-06-05 13:56 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 017/110] nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op Luis Henriques
                   ` (93 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:56 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Jeppe Ledet-Pedersen, Marc Kleine-Budde, Luis Henriques

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

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

From: Jeppe Ledet-Pedersen <jlp@gomspace.com>

commit 5793affe8c723ece8114b898ab9003c7d97f86d1 upstream.

Using IDR_SRR in RXFIFO_ID to test for the presence of data is only
valid for standard frames. For extended frames the bit is always 1 and
IDR_RTR should be used instead. This patch switches the check to use
CAN_RTR_FLAG which is correctly set when reading the ID.

The patch also changes the DW1/DW2 to be read unconditionally, since
this is necessary to remove the frame from the RXFIFO.

Signed-off-by: Jeppe Ledet-Pedersen <jlp@gomspace.com>
Acked-by: Kedareswara rao Appana <appanad@xilinx.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/net/can/xilinx_can.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/can/xilinx_can.c b/drivers/net/can/xilinx_can.c
index 5e8b5609c067..479e962c0492 100644
--- a/drivers/net/can/xilinx_can.c
+++ b/drivers/net/can/xilinx_can.c
@@ -508,10 +508,11 @@ static int xcan_rx(struct net_device *ndev)
 			cf->can_id |= CAN_RTR_FLAG;
 	}
 
-	if (!(id_xcan & XCAN_IDR_SRR_MASK)) {
-		data[0] = priv->read_reg(priv, XCAN_RXFIFO_DW1_OFFSET);
-		data[1] = priv->read_reg(priv, XCAN_RXFIFO_DW2_OFFSET);
+	/* DW1/DW2 must always be read to remove message from RXFIFO */
+	data[0] = priv->read_reg(priv, XCAN_RXFIFO_DW1_OFFSET);
+	data[1] = priv->read_reg(priv, XCAN_RXFIFO_DW2_OFFSET);
 
+	if (!(cf->can_id & CAN_RTR_FLAG)) {
 		/* Change Xilinx CAN data format to socketCAN data format */
 		if (cf->can_dlc > 0)
 			*(__be32 *)(cf->data) = cpu_to_be32(data[0]);

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

* [PATCH 3.16.y-ckt 017/110] nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (15 preceding siblings ...)
  2015-06-05 13:56 ` [PATCH 3.16.y-ckt 016/110] net: can: xilinx_can: fix extended frame handling Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 018/110] svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures Luis Henriques
                   ` (92 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Christoph Hellwig, J. Bruce Fields, Luis Henriques

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

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

From: Christoph Hellwig <hch@lst.de>

commit ebe9cb3bb13e7b9b281969cd279ce70834f7500f upstream.

If we find a non-confirmed openowner we jump to exit the function, but do
not set an error value.  Fix this by factoring out a helper to do the
check and properly set the error from nfsd4_validate_stateid.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
[ luis: backported to 3.16:
  - return status immediately in nfsd4_validate_stateid() ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/nfsd/nfs4state.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index e34d9842be3e..a666b6bb0433 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -3661,10 +3661,17 @@ static __be32 check_stateid_generation(stateid_t *in, stateid_t *ref, bool has_s
 	return nfserr_old_stateid;
 }
 
+static __be32 nfsd4_check_openowner_confirmed(struct nfs4_ol_stateid *ols)
+{
+	if (ols->st_stateowner->so_is_open_owner &&
+	    !(openowner(ols->st_stateowner)->oo_flags & NFS4_OO_CONFIRMED))
+		return nfserr_bad_stateid;
+	return nfs_ok;
+}
+
 static __be32 nfsd4_validate_stateid(struct nfs4_client *cl, stateid_t *stateid)
 {
 	struct nfs4_stid *s;
-	struct nfs4_ol_stateid *ols;
 	__be32 status;
 
 	if (ZERO_STATEID(stateid) || ONE_STATEID(stateid))
@@ -3691,12 +3698,8 @@ static __be32 nfsd4_validate_stateid(struct nfs4_client *cl, stateid_t *stateid)
 		return nfserr_deleg_revoked;
 	case NFS4_OPEN_STID:
 	case NFS4_LOCK_STID:
-		ols = openlockstateid(s);
-		if (ols->st_stateowner->so_is_open_owner
-	    			&& !(openowner(ols->st_stateowner)->oo_flags
-						& NFS4_OO_CONFIRMED))
-			return nfserr_bad_stateid;
-		return nfs_ok;
+		status = nfsd4_check_openowner_confirmed(openlockstateid(s));
+		return status;
 	default:
 		printk("unknown stateid type %x\n", s->sc_type);
 	case NFS4_CLOSED_STID:
@@ -3783,8 +3786,8 @@ nfs4_preprocess_stateid_op(struct net *net, struct nfsd4_compound_state *cstate,
 		status = nfs4_check_fh(current_fh, stp);
 		if (status)
 			goto out;
-		if (stp->st_stateowner->so_is_open_owner
-		    && !(openowner(stp->st_stateowner)->oo_flags & NFS4_OO_CONFIRMED))
+		status = nfsd4_check_openowner_confirmed(stp);
+		if (status)
 			goto out;
 		status = nfs4_check_openmode(stp, flags);
 		if (status)

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

* [PATCH 3.16.y-ckt 018/110] svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (16 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 017/110] nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 019/110] libata: Update Crucial/Micron blacklist Luis Henriques
                   ` (91 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Scott Mayhew, J. Bruce Fields, Luis Henriques

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

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

From: Scott Mayhew <smayhew@redhat.com>

commit 9507271d960a1911a51683888837d75c171cd91f upstream.

In an environment where the KDC is running Active Directory, the
exported composite name field returned in the context could be large
enough to span a page boundary.  Attaching a scratch buffer to the
decoding xdr_stream helps deal with those cases.

The case where we saw this was actually due to behavior that's been
fixed in newer gss-proxy versions, but we're fixing it here too.

Signed-off-by: Scott Mayhew <smayhew@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/sunrpc/auth_gss/gss_rpc_xdr.c | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/net/sunrpc/auth_gss/gss_rpc_xdr.c b/net/sunrpc/auth_gss/gss_rpc_xdr.c
index 1ec19f6f0c2b..eeeba5adee6d 100644
--- a/net/sunrpc/auth_gss/gss_rpc_xdr.c
+++ b/net/sunrpc/auth_gss/gss_rpc_xdr.c
@@ -793,20 +793,26 @@ int gssx_dec_accept_sec_context(struct rpc_rqst *rqstp,
 {
 	u32 value_follows;
 	int err;
+	struct page *scratch;
+
+	scratch = alloc_page(GFP_KERNEL);
+	if (!scratch)
+		return -ENOMEM;
+	xdr_set_scratch_buffer(xdr, page_address(scratch), PAGE_SIZE);
 
 	/* res->status */
 	err = gssx_dec_status(xdr, &res->status);
 	if (err)
-		return err;
+		goto out_free;
 
 	/* res->context_handle */
 	err = gssx_dec_bool(xdr, &value_follows);
 	if (err)
-		return err;
+		goto out_free;
 	if (value_follows) {
 		err = gssx_dec_ctx(xdr, res->context_handle);
 		if (err)
-			return err;
+			goto out_free;
 	} else {
 		res->context_handle = NULL;
 	}
@@ -814,11 +820,11 @@ int gssx_dec_accept_sec_context(struct rpc_rqst *rqstp,
 	/* res->output_token */
 	err = gssx_dec_bool(xdr, &value_follows);
 	if (err)
-		return err;
+		goto out_free;
 	if (value_follows) {
 		err = gssx_dec_buffer(xdr, res->output_token);
 		if (err)
-			return err;
+			goto out_free;
 	} else {
 		res->output_token = NULL;
 	}
@@ -826,14 +832,17 @@ int gssx_dec_accept_sec_context(struct rpc_rqst *rqstp,
 	/* res->delegated_cred_handle */
 	err = gssx_dec_bool(xdr, &value_follows);
 	if (err)
-		return err;
+		goto out_free;
 	if (value_follows) {
 		/* we do not support upcall servers sending this data. */
-		return -EINVAL;
+		err = -EINVAL;
+		goto out_free;
 	}
 
 	/* res->options */
 	err = gssx_dec_option_array(xdr, &res->options);
 
+out_free:
+	__free_page(scratch);
 	return err;
 }

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

* [PATCH 3.16.y-ckt 019/110] libata: Update Crucial/Micron blacklist
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (17 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 018/110] svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 020/110] libata: Blacklist queued TRIM on Samsung SSD 850 Pro Luis Henriques
                   ` (90 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Martin K. Petersen, Tejun Heo, Ben Hutchings, Luis Henriques

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

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

From: "Martin K. Petersen" <martin.petersen@oracle.com>

commit ff7f53fb82a7801a778e5902bdbbc5e195ab0de0 upstream.

Micron has released an updated firmware (MU02) for M510/M550/MX100
drives to fix the issues with queued TRIM. Queued TRIM remains broken on
M500 but is working fine on later drives such as M600 and MX200.

Tweak our blacklist to reflect the above.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=71371
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
[bwh: Backported to 3.16: adjust context and drop ZERO_AFTER_TRIM flags]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/ata/libata-core.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 52ddc0afcaf6..8804fb879252 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4225,9 +4225,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
 
 	/* devices that don't properly handle queued TRIM commands */
 	{ "Micron_M500*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
-	{ "Crucial_CT???M500SSD*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
-	{ "Micron_M550*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
-	{ "Crucial_CT*M550SSD*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
+	{ "Crucial_CT*M500*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
+	{ "Micron_M5[15]0*",		"MU01",	ATA_HORKAGE_NO_NCQ_TRIM, },
+	{ "Crucial_CT*M550*",		"MU01",	ATA_HORKAGE_NO_NCQ_TRIM, },
+	{ "Crucial_CT*MX100*",		"MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
 
 	/*
 	 * Some WD SATA-I drives spin up and down erratically when the link

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

* [PATCH 3.16.y-ckt 020/110] libata: Blacklist queued TRIM on Samsung SSD 850 Pro
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (18 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 019/110] libata: Update Crucial/Micron blacklist Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 021/110] libata: Blacklist queued TRIM on all Samsung 800-series Luis Henriques
                   ` (89 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Martin K. Petersen, Tejun Heo, Ben Hutchings, Luis Henriques

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

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

From: "Martin K. Petersen" <martin.petersen@oracle.com>

commit 6fc4d97a4987c5d247655a157a9377996626221a upstream.

Blacklist queued TRIM on this drive for now.

Reported-by: Stefan Keller <linux-list@zahlenfresser.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
[bwh: Backported to 3.16: adjust context and drop ZERO_AFTER_TRIM flag]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/ata/libata-core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 8804fb879252..7d094261d8ca 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4229,6 +4229,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
 	{ "Micron_M5[15]0*",		"MU01",	ATA_HORKAGE_NO_NCQ_TRIM, },
 	{ "Crucial_CT*M550*",		"MU01",	ATA_HORKAGE_NO_NCQ_TRIM, },
 	{ "Crucial_CT*MX100*",		"MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
+	{ "Samsung SSD 850 PRO*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
 
 	/*
 	 * Some WD SATA-I drives spin up and down erratically when the link

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

* [PATCH 3.16.y-ckt 021/110] libata: Blacklist queued TRIM on all Samsung 800-series
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (19 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 020/110] libata: Blacklist queued TRIM on Samsung SSD 850 Pro Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 022/110] ACPI / init: Fix the ordering of acpi_reserve_resources() Luis Henriques
                   ` (88 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Martin K. Petersen, Tejun Heo, Luis Henriques

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

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

From: "Martin K. Petersen" <martin.petersen@oracle.com>

commit 9a9324d3969678d44b330e1230ad2c8ae67acf81 upstream.

The queued TRIM problems appear to be generic to Samsung's firmware and
not tied to a particular model. A recent update to the 840 EVO firmware
introduced the same issue as we saw on 850 Pro.

Blacklist queued TRIM on all 800-series drives while we work this issue
with Samsung.

Reported-by: Günter Waller <g.wal@web.de>
Reported-by: Sven Köhler <sven.koehler@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
[ luis: backported to 3.16:
  - adjusted context
  - drop ZERO_AFTER_TRIM flag ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/ata/libata-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 7d094261d8ca..29358ff3e05e 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4229,7 +4229,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
 	{ "Micron_M5[15]0*",		"MU01",	ATA_HORKAGE_NO_NCQ_TRIM, },
 	{ "Crucial_CT*M550*",		"MU01",	ATA_HORKAGE_NO_NCQ_TRIM, },
 	{ "Crucial_CT*MX100*",		"MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
-	{ "Samsung SSD 850 PRO*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
+	{ "Samsung SSD 8*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM, },
 
 	/*
 	 * Some WD SATA-I drives spin up and down erratically when the link

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

* [PATCH 3.16.y-ckt 022/110] ACPI / init: Fix the ordering of acpi_reserve_resources()
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (20 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 021/110] libata: Blacklist queued TRIM on all Samsung 800-series Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 023/110] md/raid5: don't record new size if resize_stripes fails Luis Henriques
                   ` (87 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Rafael J. Wysocki, Luis Henriques

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

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

From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>

commit b9a5e5e18fbf223502c0b2264c15024e393da928 upstream.

Since acpi_reserve_resources() is defined as a device_initcall(),
there's no guarantee that it will be executed in the right order
with respect to the rest of the ACPI initialization code.  On some
systems this leads to breakage if, for example, the address range
that should be reserved for the ACPI fixed registers is given to
the PCI host bridge instead if the race is won by the wrong code
path.

Fix this by turning acpi_reserve_resources() into a void function
and calling it directly from within the ACPI initialization sequence.

Reported-and-tested-by: George McCollister <george.mccollister@gmail.com>
Link: http://marc.info/?t=143092384600002&r=1&w=2
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/acpi/osl.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index bad25b070fe0..1b2d872c7398 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -172,7 +172,7 @@ static void __init acpi_request_region (struct acpi_generic_address *gas,
 		request_mem_region(addr, length, desc);
 }
 
-static int __init acpi_reserve_resources(void)
+static void __init acpi_reserve_resources(void)
 {
 	acpi_request_region(&acpi_gbl_FADT.xpm1a_event_block, acpi_gbl_FADT.pm1_event_length,
 		"ACPI PM1a_EVT_BLK");
@@ -201,10 +201,7 @@ static int __init acpi_reserve_resources(void)
 	if (!(acpi_gbl_FADT.gpe1_block_length & 0x1))
 		acpi_request_region(&acpi_gbl_FADT.xgpe1_block,
 			       acpi_gbl_FADT.gpe1_block_length, "ACPI GPE1_BLK");
-
-	return 0;
 }
-device_initcall(acpi_reserve_resources);
 
 void acpi_os_printf(const char *fmt, ...)
 {
@@ -1827,6 +1824,7 @@ acpi_status __init acpi_os_initialize(void)
 
 acpi_status __init acpi_os_initialize1(void)
 {
+	acpi_reserve_resources();
 	kacpid_wq = alloc_workqueue("kacpid", 0, 1);
 	kacpi_notify_wq = alloc_workqueue("kacpi_notify", 0, 1);
 	kacpi_hotplug_wq = alloc_ordered_workqueue("kacpi_hotplug", 0);

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

* [PATCH 3.16.y-ckt 023/110] md/raid5: don't record new size if resize_stripes fails.
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (21 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 022/110] ACPI / init: Fix the ordering of acpi_reserve_resources() Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 024/110] sched: Handle priority boosted tasks proper in setscheduler() Luis Henriques
                   ` (86 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: NeilBrown, Luis Henriques

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

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

From: NeilBrown <neilb@suse.de>

commit 6e9eac2dcee5e19f125967dd2be3e36558c42fff upstream.

If any memory allocation in resize_stripes fails we will return
-ENOMEM, but in some cases we update conf->pool_size anyway.

This means that if we try again, the allocations will be assumed
to be larger than they are, and badness results.

So only update pool_size if there is no error.

This bug was introduced in 2.6.17 and the patch is suitable for
-stable.

Fixes: ad01c9e3752f ("[PATCH] md: Allow stripes to be expanded in preparation for expanding an array")
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/md/raid5.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index b1b9efb5359f..6d7d2f3059a7 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -1941,7 +1941,8 @@ static int resize_stripes(struct r5conf *conf, int newsize)
 
 	conf->slab_cache = sc;
 	conf->active_name = 1-conf->active_name;
-	conf->pool_size = newsize;
+	if (!err)
+		conf->pool_size = newsize;
 	return err;
 }
 

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

* [PATCH 3.16.y-ckt 024/110] sched: Handle priority boosted tasks proper in setscheduler()
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (22 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 023/110] md/raid5: don't record new size if resize_stripes fails Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 025/110] xhci: fix isoc endpoint dequeue from advancing too far on transaction error Luis Henriques
                   ` (85 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Thomas Gleixner, Peter Zijlstra (Intel),
	Borislav Petkov, H. Peter Anvin, Mike Galbraith, Ingo Molnar,
	Luis Henriques

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

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

From: Thomas Gleixner <tglx@linutronix.de>

commit 0782e63bc6fe7e2d3408d250df11d388b7799c6b upstream.

Ronny reported that the following scenario is not handled correctly:

	T1 (prio = 10)
	   lock(rtmutex);

	T2 (prio = 20)
	   lock(rtmutex)
	      boost T1

	T1 (prio = 20)
	   sys_set_scheduler(prio = 30)
	   T1 prio = 30
	   ....
	   sys_set_scheduler(prio = 10)
	   T1 prio = 30

The last step is wrong as T1 should now be back at prio 20.

Commit c365c292d059 ("sched: Consider pi boosting in setscheduler()")
only handles the case where a boosted tasks tries to lower its
priority.

Fix it by taking the new effective priority into account for the
decision whether a change of the priority is required.

Reported-by: Ronny Meeus <ronny.meeus@gmail.com>
Tested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Mike Galbraith <umgwanakikbuti@gmail.com>
Fixes: c365c292d059 ("sched: Consider pi boosting in setscheduler()")
Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1505051806060.4225@nanos
Signed-off-by: Ingo Molnar <mingo@kernel.org>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 include/linux/sched/rt.h |  7 ++++---
 kernel/locking/rtmutex.c | 12 +++++++-----
 kernel/sched/core.c      | 26 ++++++++++++++------------
 3 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/include/linux/sched/rt.h b/include/linux/sched/rt.h
index 6341f5be6e24..a30b172df6e1 100644
--- a/include/linux/sched/rt.h
+++ b/include/linux/sched/rt.h
@@ -18,7 +18,7 @@ static inline int rt_task(struct task_struct *p)
 #ifdef CONFIG_RT_MUTEXES
 extern int rt_mutex_getprio(struct task_struct *p);
 extern void rt_mutex_setprio(struct task_struct *p, int prio);
-extern int rt_mutex_check_prio(struct task_struct *task, int newprio);
+extern int rt_mutex_get_effective_prio(struct task_struct *task, int newprio);
 extern struct task_struct *rt_mutex_get_top_task(struct task_struct *task);
 extern void rt_mutex_adjust_pi(struct task_struct *p);
 static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
@@ -31,9 +31,10 @@ static inline int rt_mutex_getprio(struct task_struct *p)
 	return p->normal_prio;
 }
 
-static inline int rt_mutex_check_prio(struct task_struct *task, int newprio)
+static inline int rt_mutex_get_effective_prio(struct task_struct *task,
+					      int newprio)
 {
-	return 0;
+	return newprio;
 }
 
 static inline struct task_struct *rt_mutex_get_top_task(struct task_struct *task)
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index f9878d16b80b..3c9082036365 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -265,15 +265,17 @@ struct task_struct *rt_mutex_get_top_task(struct task_struct *task)
 }
 
 /*
- * Called by sched_setscheduler() to check whether the priority change
- * is overruled by a possible priority boosting.
+ * Called by sched_setscheduler() to get the priority which will be
+ * effective after the change.
  */
-int rt_mutex_check_prio(struct task_struct *task, int newprio)
+int rt_mutex_get_effective_prio(struct task_struct *task, int newprio)
 {
 	if (!task_has_pi_waiters(task))
-		return 0;
+		return newprio;
 
-	return task_top_pi_waiter(task)->task->prio <= newprio;
+	if (task_top_pi_waiter(task)->task->prio <= newprio)
+		return task_top_pi_waiter(task)->task->prio;
+	return newprio;
 }
 
 /*
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 6356f644a47b..5c89af9ea192 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3251,15 +3251,18 @@ static void __setscheduler_params(struct task_struct *p,
 
 /* Actually do priority change: must hold pi & rq lock. */
 static void __setscheduler(struct rq *rq, struct task_struct *p,
-			   const struct sched_attr *attr)
+			   const struct sched_attr *attr, bool keep_boost)
 {
 	__setscheduler_params(p, attr);
 
 	/*
-	 * If we get here, there was no pi waiters boosting the
-	 * task. It is safe to use the normal prio.
+	 * Keep a potential priority boosting if called from
+	 * sched_setscheduler().
 	 */
-	p->prio = normal_prio(p);
+	if (keep_boost)
+		p->prio = rt_mutex_get_effective_prio(p, normal_prio(p));
+	else
+		p->prio = normal_prio(p);
 
 	if (dl_prio(p->prio))
 		p->sched_class = &dl_sched_class;
@@ -3345,7 +3348,7 @@ static int __sched_setscheduler(struct task_struct *p,
 	int newprio = dl_policy(attr->sched_policy) ? MAX_DL_PRIO - 1 :
 		      MAX_RT_PRIO - 1 - attr->sched_priority;
 	int retval, oldprio, oldpolicy = -1, on_rq, running;
-	int policy = attr->sched_policy;
+	int new_effective_prio, policy = attr->sched_policy;
 	unsigned long flags;
 	const struct sched_class *prev_class;
 	struct rq *rq;
@@ -3527,15 +3530,14 @@ change:
 	oldprio = p->prio;
 
 	/*
-	 * Special case for priority boosted tasks.
-	 *
-	 * If the new priority is lower or equal (user space view)
-	 * than the current (boosted) priority, we just store the new
+	 * Take priority boosted tasks into account. If the new
+	 * effective priority is unchanged, we just store the new
 	 * normal parameters and do not touch the scheduler class and
 	 * the runqueue. This will be done when the task deboost
 	 * itself.
 	 */
-	if (rt_mutex_check_prio(p, newprio)) {
+	new_effective_prio = rt_mutex_get_effective_prio(p, newprio);
+	if (new_effective_prio == oldprio) {
 		__setscheduler_params(p, attr);
 		task_rq_unlock(rq, p, &flags);
 		return 0;
@@ -3549,7 +3551,7 @@ change:
 		p->sched_class->put_prev_task(rq, p);
 
 	prev_class = p->sched_class;
-	__setscheduler(rq, p, attr);
+	__setscheduler(rq, p, attr, true);
 
 	if (running)
 		p->sched_class->set_curr_task(rq);
@@ -7112,7 +7114,7 @@ static void normalize_task(struct rq *rq, struct task_struct *p)
 	on_rq = p->on_rq;
 	if (on_rq)
 		dequeue_task(rq, p, 0);
-	__setscheduler(rq, p, &attr);
+	__setscheduler(rq, p, &attr, false);
 	if (on_rq) {
 		enqueue_task(rq, p, 0);
 		resched_task(rq->curr);

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

* [PATCH 3.16.y-ckt 025/110] xhci: fix isoc endpoint dequeue from advancing too far on transaction error
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (23 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 024/110] sched: Handle priority boosted tasks proper in setscheduler() Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 026/110] xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 Luis Henriques
                   ` (84 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Mathias Nyman, Greg Kroah-Hartman, Luis Henriques

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

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

From: Mathias Nyman <mathias.nyman@linux.intel.com>

commit d104d0152a97fade389f47635b73a9ccc7295d0b upstream.

Isoc TDs usually consist of one TRB, sometimes two. When all goes well we
receive only one success event for a TD, and move the dequeue pointer to
the next TD.

This fails if the TD consists of two TRBs and we get a transfer error
on the first TRB, we will then see two events for that TD.

Fix this by making sure the event we get is for the last TRB in that TD
before moving the dequeue pointer to the next TD. This will resolve some
of the uvc and dvb issues with the
"ERROR Transfer event TRB DMA ptr not part of current TD" error message

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/host/xhci-ring.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index f176280e2fcf..f033c4854b26 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2061,8 +2061,13 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td,
 		break;
 	case COMP_DEV_ERR:
 	case COMP_STALL:
+		frame->status = -EPROTO;
+		skip_td = true;
+		break;
 	case COMP_TX_ERR:
 		frame->status = -EPROTO;
+		if (event_trb != td->last_trb)
+			return 0;
 		skip_td = true;
 		break;
 	case COMP_STOP:

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

* [PATCH 3.16.y-ckt 026/110] xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (24 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 025/110] xhci: fix isoc endpoint dequeue from advancing too far on transaction error Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 027/110] xhci: gracefully handle xhci_irq dead device Luis Henriques
                   ` (83 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Mathias Nyman, Greg Kroah-Hartman, Luis Henriques

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

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

From: Mathias Nyman <mathias.nyman@linux.intel.com>

commit 18cc2f4cbbaf825a4fedcf2d60fd388d291e0a38 upstream.

Our event ring consists of only one segment, and we risk filling
the event ring in case we get isoc transfers with short intervals
such as webcams that fill a TD every microframe (125us)

With 64 TRB segment size one usb camera could fill the event ring in 8ms.
A setup with several cameras and other devices can fill up the
event ring as it is shared between all devices.
This has occurred when uvcvideo queues 5 * 32TD URBs which then
get cancelled when the video mode changes. The cancelled URBs are returned
in the xhci interrupt context and blocks the interrupt handler from
handling the new events.

A full event ring will block xhci from scheduling traffic and affect all
devices conneted to the xhci, will see errors such as Missed Service
Intervals for isoc devices, and  and Split transaction errors for LS/FS
interrupt devices.

Increasing the TRB_PER_SEGMENT will also increase the default endpoint ring
size, which is welcome as for most isoc transfer we had to dynamically
expand the endpoint ring anyway to be able to queue the 5 * 32TDs uvcvideo
queues.

The default size used to be 64 TRBs per segment

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/host/xhci.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index d40a72b69f26..a70e45c7c440 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1267,7 +1267,7 @@ union xhci_trb {
  * since the command ring is 64-byte aligned.
  * It must also be greater than 16.
  */
-#define TRBS_PER_SEGMENT	64
+#define TRBS_PER_SEGMENT	256
 /* Allow two commands + a link TRB, along with any reserved command TRBs */
 #define MAX_RSVD_CMD_TRBS	(TRBS_PER_SEGMENT - 3)
 #define TRB_SEGMENT_SIZE	(TRBS_PER_SEGMENT*16)

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

* [PATCH 3.16.y-ckt 027/110] xhci: gracefully handle xhci_irq dead device
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (25 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 026/110] xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 028/110] staging: gdm724x: Correction of variable usage after applying ALIGN() Luis Henriques
                   ` (82 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Joe Lawrence, Mathias Nyman, Greg Kroah-Hartman, Luis Henriques

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

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

From: Joe Lawrence <joe.lawrence@stratus.com>

commit 948fa13504f80b9765d2b753691ab94c83a10341 upstream.

If the xHCI host controller has died (ie, device removed) or suffered
other serious fatal error (STS_FATAL), then xhci_irq should handle this
condition with IRQ_HANDLED instead of -ESHUTDOWN.

Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/host/xhci-ring.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index f033c4854b26..3303132d875e 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2675,7 +2675,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd)
 		xhci_halt(xhci);
 hw_died:
 		spin_unlock(&xhci->lock);
-		return -ESHUTDOWN;
+		return IRQ_HANDLED;
 	}
 
 	/*

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

* [PATCH 3.16.y-ckt 028/110] staging: gdm724x: Correction of variable usage after applying ALIGN()
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (26 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 027/110] xhci: gracefully handle xhci_irq dead device Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 029/110] usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices Luis Henriques
                   ` (81 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Sławomir Demeszko, Greg Kroah-Hartman, Luis Henriques

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

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

From: =?UTF-8?q?S=C5=82awomir=20Demeszko?=

commit 892c89d5d7ffd1bb794fe54d86c0eef18d215fab upstream.

Fix regression introduced by commit <29ef8a53542a>. After it writing
AT commands to /dev/GCT-ATM0 is unsuccessful (no echo, no response)
and dmesg show "gdmtty: invalid payload : 1 16 f011".

Before that commit value of dummy_cnt was only a padding size. After using
ALIGN() this value is increased by its first argument. So the following
usage of this variable needs correction.

Signed-off-by: Sławomir Demeszko <s.demeszko@wireless-instruments.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/staging/gdm724x/gdm_mux.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/gdm724x/gdm_mux.c b/drivers/staging/gdm724x/gdm_mux.c
index 10ce2c1805bb..233e0768d1ef 100644
--- a/drivers/staging/gdm724x/gdm_mux.c
+++ b/drivers/staging/gdm724x/gdm_mux.c
@@ -158,7 +158,7 @@ static int up_to_host(struct mux_rx *r)
 	unsigned int start_flag;
 	unsigned int payload_size;
 	unsigned short packet_type;
-	int dummy_cnt;
+	int total_len;
 	u32 packet_size_sum = r->offset;
 	int index;
 	int ret = TO_HOST_INVALID_PACKET;
@@ -176,10 +176,10 @@ static int up_to_host(struct mux_rx *r)
 			break;
 		}
 
-		dummy_cnt = ALIGN(MUX_HEADER_SIZE + payload_size, 4);
+		total_len = ALIGN(MUX_HEADER_SIZE + payload_size, 4);
 
 		if (len - packet_size_sum <
-			MUX_HEADER_SIZE + payload_size + dummy_cnt) {
+			total_len) {
 			pr_err("invalid payload : %d %d %04x\n",
 			       payload_size, len, packet_type);
 			break;
@@ -202,7 +202,7 @@ static int up_to_host(struct mux_rx *r)
 			break;
 		}
 
-		packet_size_sum += MUX_HEADER_SIZE + payload_size + dummy_cnt;
+		packet_size_sum += total_len;
 		if (len - packet_size_sum <= MUX_HEADER_SIZE + 2) {
 			ret = r->callback(NULL,
 					0,
@@ -361,7 +361,6 @@ static int gdm_mux_send(void *priv_dev, void *data, int len, int tty_index,
 	struct mux_pkt_header *mux_header;
 	struct mux_tx *t = NULL;
 	static u32 seq_num = 1;
-	int dummy_cnt;
 	int total_len;
 	int ret;
 	unsigned long flags;
@@ -374,9 +373,7 @@ static int gdm_mux_send(void *priv_dev, void *data, int len, int tty_index,
 
 	spin_lock_irqsave(&mux_dev->write_lock, flags);
 
-	dummy_cnt = ALIGN(MUX_HEADER_SIZE + len, 4);
-
-	total_len = len + MUX_HEADER_SIZE + dummy_cnt;
+	total_len = ALIGN(MUX_HEADER_SIZE + len, 4);
 
 	t = alloc_mux_tx(total_len);
 	if (!t) {
@@ -392,7 +389,8 @@ static int gdm_mux_send(void *priv_dev, void *data, int len, int tty_index,
 	mux_header->packet_type = __cpu_to_le16(packet_type[tty_index]);
 
 	memcpy(t->buf+MUX_HEADER_SIZE, data, len);
-	memset(t->buf+MUX_HEADER_SIZE+len, 0, dummy_cnt);
+	memset(t->buf+MUX_HEADER_SIZE+len, 0, total_len - MUX_HEADER_SIZE -
+	       len);
 
 	t->len = total_len;
 	t->callback = cb;

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

* [PATCH 3.16.y-ckt 029/110] usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (27 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 028/110] staging: gdm724x: Correction of variable usage after applying ALIGN() Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 030/110] ahci: avoton port-disable reset-quirk Luis Henriques
                   ` (80 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Hans de Goede, Greg Kroah-Hartman, Luis Henriques

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

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

From: Hans de Goede <hdegoede@redhat.com>

commit 172115090f5e739660b97694618a2ba86457063a upstream.

Without this flag some versions of these enclosures do not work.

Reported-and-tested-by: Christian Schaller <cschalle@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/usb/storage/unusual_devs.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 40528ca4d274..1b79286e385a 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -760,6 +760,13 @@ UNUSUAL_DEV(  0x059f, 0x0643, 0x0000, 0x0000,
 		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
 		US_FL_GO_SLOW ),
 
+/* Reported by Christian Schaller <cschalle@redhat.com> */
+UNUSUAL_DEV(  0x059f, 0x0651, 0x0000, 0x0000,
+		"LaCie",
+		"External HDD",
+		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+		US_FL_NO_WP_DETECT ),
+
 /* Submitted by Joel Bourquard <numlock@freesurf.ch>
  * Some versions of this device need the SubClass and Protocol overrides
  * while others don't.

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

* [PATCH 3.16.y-ckt 030/110] ahci: avoton port-disable reset-quirk
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (28 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 029/110] usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 031/110] tty/n_gsm.c: fix a memory leak when gsmtty is removed Luis Henriques
                   ` (79 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Dan Williams, Tejun Heo, Luis Henriques

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

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

From: Dan Williams <dan.j.williams@intel.com>

commit dbfe8ef5599a5370abc441fcdbb382b656563eb4 upstream.

Avoton AHCI occasionally sees drive probe timeouts at driver load time.
When this happens SCR_STATUS indicates device detected, but no D2H FIS
reception.  Reset the internal link state machines by bouncing
port-enable in the PCS register when this occurs.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/ata/ahci.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 95 insertions(+), 8 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 3b18399290b3..8e7574afb716 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -66,6 +66,7 @@ enum board_ids {
 	board_ahci_yes_fbs,
 
 	/* board IDs for specific chipsets in alphabetical order */
+	board_ahci_avn,
 	board_ahci_mcp65,
 	board_ahci_mcp77,
 	board_ahci_mcp89,
@@ -84,6 +85,8 @@ enum board_ids {
 static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
 static int ahci_vt8251_hardreset(struct ata_link *link, unsigned int *class,
 				 unsigned long deadline);
+static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class,
+			      unsigned long deadline);
 static void ahci_mcp89_apple_enable(struct pci_dev *pdev);
 static bool is_mcp89_apple(struct pci_dev *pdev);
 static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class,
@@ -107,6 +110,11 @@ static struct ata_port_operations ahci_p5wdh_ops = {
 	.hardreset		= ahci_p5wdh_hardreset,
 };
 
+static struct ata_port_operations ahci_avn_ops = {
+	.inherits		= &ahci_ops,
+	.hardreset		= ahci_avn_hardreset,
+};
+
 static const struct ata_port_info ahci_port_info[] = {
 	/* by features */
 	[board_ahci] = {
@@ -151,6 +159,12 @@ static const struct ata_port_info ahci_port_info[] = {
 		.port_ops	= &ahci_ops,
 	},
 	/* by chipsets */
+	[board_ahci_avn] = {
+		.flags		= AHCI_FLAG_COMMON,
+		.pio_mask	= ATA_PIO4,
+		.udma_mask	= ATA_UDMA6,
+		.port_ops	= &ahci_avn_ops,
+	},
 	[board_ahci_mcp65] = {
 		AHCI_HFLAGS	(AHCI_HFLAG_NO_FPDMA_AA | AHCI_HFLAG_NO_PMP |
 				 AHCI_HFLAG_YES_NCQ),
@@ -290,14 +304,14 @@ static const struct pci_device_id ahci_pci_tbl[] = {
 	{ PCI_VDEVICE(INTEL, 0x1f27), board_ahci }, /* Avoton RAID */
 	{ PCI_VDEVICE(INTEL, 0x1f2e), board_ahci }, /* Avoton RAID */
 	{ PCI_VDEVICE(INTEL, 0x1f2f), board_ahci }, /* Avoton RAID */
-	{ PCI_VDEVICE(INTEL, 0x1f32), board_ahci }, /* Avoton AHCI */
-	{ PCI_VDEVICE(INTEL, 0x1f33), board_ahci }, /* Avoton AHCI */
-	{ PCI_VDEVICE(INTEL, 0x1f34), board_ahci }, /* Avoton RAID */
-	{ PCI_VDEVICE(INTEL, 0x1f35), board_ahci }, /* Avoton RAID */
-	{ PCI_VDEVICE(INTEL, 0x1f36), board_ahci }, /* Avoton RAID */
-	{ PCI_VDEVICE(INTEL, 0x1f37), board_ahci }, /* Avoton RAID */
-	{ PCI_VDEVICE(INTEL, 0x1f3e), board_ahci }, /* Avoton RAID */
-	{ PCI_VDEVICE(INTEL, 0x1f3f), board_ahci }, /* Avoton RAID */
+	{ PCI_VDEVICE(INTEL, 0x1f32), board_ahci_avn }, /* Avoton AHCI */
+	{ PCI_VDEVICE(INTEL, 0x1f33), board_ahci_avn }, /* Avoton AHCI */
+	{ PCI_VDEVICE(INTEL, 0x1f34), board_ahci_avn }, /* Avoton RAID */
+	{ PCI_VDEVICE(INTEL, 0x1f35), board_ahci_avn }, /* Avoton RAID */
+	{ PCI_VDEVICE(INTEL, 0x1f36), board_ahci_avn }, /* Avoton RAID */
+	{ PCI_VDEVICE(INTEL, 0x1f37), board_ahci_avn }, /* Avoton RAID */
+	{ PCI_VDEVICE(INTEL, 0x1f3e), board_ahci_avn }, /* Avoton RAID */
+	{ PCI_VDEVICE(INTEL, 0x1f3f), board_ahci_avn }, /* Avoton RAID */
 	{ PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Wellsburg RAID */
 	{ PCI_VDEVICE(INTEL, 0x2827), board_ahci }, /* Wellsburg RAID */
 	{ PCI_VDEVICE(INTEL, 0x8d02), board_ahci }, /* Wellsburg AHCI */
@@ -675,6 +689,79 @@ static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class,
 	return rc;
 }
 
+/*
+ * ahci_avn_hardreset - attempt more aggressive recovery of Avoton ports.
+ *
+ * It has been observed with some SSDs that the timing of events in the
+ * link synchronization phase can leave the port in a state that can not
+ * be recovered by a SATA-hard-reset alone.  The failing signature is
+ * SStatus.DET stuck at 1 ("Device presence detected but Phy
+ * communication not established").  It was found that unloading and
+ * reloading the driver when this problem occurs allows the drive
+ * connection to be recovered (DET advanced to 0x3).  The critical
+ * component of reloading the driver is that the port state machines are
+ * reset by bouncing "port enable" in the AHCI PCS configuration
+ * register.  So, reproduce that effect by bouncing a port whenever we
+ * see DET==1 after a reset.
+ */
+static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class,
+			      unsigned long deadline)
+{
+	const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context);
+	struct ata_port *ap = link->ap;
+	struct ahci_port_priv *pp = ap->private_data;
+	struct ahci_host_priv *hpriv = ap->host->private_data;
+	u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG;
+	unsigned long tmo = deadline - jiffies;
+	struct ata_taskfile tf;
+	bool online;
+	int rc, i;
+
+	DPRINTK("ENTER\n");
+
+	ahci_stop_engine(ap);
+
+	for (i = 0; i < 2; i++) {
+		u16 val;
+		u32 sstatus;
+		int port = ap->port_no;
+		struct ata_host *host = ap->host;
+		struct pci_dev *pdev = to_pci_dev(host->dev);
+
+		/* clear D2H reception area to properly wait for D2H FIS */
+		ata_tf_init(link->device, &tf);
+		tf.command = ATA_BUSY;
+		ata_tf_to_fis(&tf, 0, 0, d2h_fis);
+
+		rc = sata_link_hardreset(link, timing, deadline, &online,
+				ahci_check_ready);
+
+		if (sata_scr_read(link, SCR_STATUS, &sstatus) != 0 ||
+				(sstatus & 0xf) != 1)
+			break;
+
+		ata_link_printk(link, KERN_INFO, "avn bounce port%d\n",
+				port);
+
+		pci_read_config_word(pdev, 0x92, &val);
+		val &= ~(1 << port);
+		pci_write_config_word(pdev, 0x92, val);
+		ata_msleep(ap, 1000);
+		val |= 1 << port;
+		pci_write_config_word(pdev, 0x92, val);
+		deadline += tmo;
+	}
+
+	hpriv->start_engine(ap);
+
+	if (online)
+		*class = ahci_dev_classify(ap);
+
+	DPRINTK("EXIT, rc=%d, class=%u\n", rc, *class);
+	return rc;
+}
+
+
 #ifdef CONFIG_PM
 static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg)
 {

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

* [PATCH 3.16.y-ckt 031/110] tty/n_gsm.c: fix a memory leak when gsmtty is removed
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (29 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 030/110] ahci: avoton port-disable reset-quirk Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 032/110] ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction Luis Henriques
                   ` (78 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Pan Xinhui, Greg Kroah-Hartman, Luis Henriques

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

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

From: Pan Xinhui <xinhuix.pan@intel.com>

commit 8f9cfeed3eae86c70d3b04445a6f2036b27b6304 upstream.

when gsmtty_remove put dlci, it will cause memory leak if dlci->port's refcount is zero.
So we do the cleanup work in .cleanup callback instead.

dlci will be last put in two call chains.
1) gsmld_close -> gsm_cleanup_mux -> gsm_dlci_release -> dlci_put
2) gsmld_remove -> dlci_put
so there is a race. the memory leak depends on the race.

In call chain 2. we hit the memory leak. below comment tells.

release_tty -> tty_driver_remove_tty -> gsmtty_remove -> dlci_put -> tty_port_destructor (WARN_ON(port->itty) and return directly)
                         |
                tty->port->itty = NULL;
                         |
                tty_kref_put ---> release_one_tty -> gsmtty_cleanup (added by our patch)

So our patch fix the memory leak by doing the cleanup work after tty core did.

Signed-off-by: Pan Xinhui <xinhuix.pan@intel.com>
Fixes: dfabf7ffa30585
Acked-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/tty/n_gsm.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
index 2ebe47b78a3e..5bfd8076b21f 100644
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -3166,7 +3166,7 @@ static int gsmtty_break_ctl(struct tty_struct *tty, int state)
 	return gsmtty_modem_update(dlci, encode);
 }
 
-static void gsmtty_remove(struct tty_driver *driver, struct tty_struct *tty)
+static void gsmtty_cleanup(struct tty_struct *tty)
 {
 	struct gsm_dlci *dlci = tty->driver_data;
 	struct gsm_mux *gsm = dlci->gsm;
@@ -3174,7 +3174,6 @@ static void gsmtty_remove(struct tty_driver *driver, struct tty_struct *tty)
 	dlci_put(dlci);
 	dlci_put(gsm->dlci[0]);
 	mux_put(gsm);
-	driver->ttys[tty->index] = NULL;
 }
 
 /* Virtual ttys for the demux */
@@ -3195,7 +3194,7 @@ static const struct tty_operations gsmtty_ops = {
 	.tiocmget		= gsmtty_tiocmget,
 	.tiocmset		= gsmtty_tiocmset,
 	.break_ctl		= gsmtty_break_ctl,
-	.remove			= gsmtty_remove,
+	.cleanup		= gsmtty_cleanup,
 };
 
 

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

* [PATCH 3.16.y-ckt 032/110] ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction.
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (30 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 031/110] tty/n_gsm.c: fix a memory leak when gsmtty is removed Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 033/110] x86/vdso: Fix the x86 vdso2c tool includes Luis Henriques
                   ` (77 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Nicolas Schichan, David S. Miller, Luis Henriques

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

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

From: Nicolas Schichan <nschichan@freebox.fr>

commit 19fc99d0c6ba7d9b65456496b5bb2169d5f74cd0 upstream.

In that case, emit_udiv() will be called with rn == ARM_R0 (r_scratch)
and loading rm first into ARM_R0 will result in jit_udiv() function
being called the same dividend and divisor. Fix that by loading rn
first into ARM_R1 and then rm into ARM_R0.

Signed-off-by: Nicolas Schichan <nschichan@freebox.fr>
Fixes: aee636c4809f (bpf: do not use reciprocal divide)
Acked-by: Mircea Gherzan <mgherzan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/net/bpf_jit_32.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c
index fb5503ce016f..75ee31c95ff3 100644
--- a/arch/arm/net/bpf_jit_32.c
+++ b/arch/arm/net/bpf_jit_32.c
@@ -441,10 +441,21 @@ static inline void emit_udiv(u8 rd, u8 rm, u8 rn, struct jit_ctx *ctx)
 		return;
 	}
 #endif
-	if (rm != ARM_R0)
-		emit(ARM_MOV_R(ARM_R0, rm), ctx);
+
+	/*
+	 * For BPF_ALU | BPF_DIV | BPF_K instructions, rm is ARM_R4
+	 * (r_A) and rn is ARM_R0 (r_scratch) so load rn first into
+	 * ARM_R1 to avoid accidentally overwriting ARM_R0 with rm
+	 * before using it as a source for ARM_R1.
+	 *
+	 * For BPF_ALU | BPF_DIV | BPF_X rm is ARM_R4 (r_A) and rn is
+	 * ARM_R5 (r_X) so there is no particular register overlap
+	 * issues.
+	 */
 	if (rn != ARM_R1)
 		emit(ARM_MOV_R(ARM_R1, rn), ctx);
+	if (rm != ARM_R0)
+		emit(ARM_MOV_R(ARM_R0, rm), ctx);
 
 	ctx->seen |= SEEN_CALL;
 	emit_mov_i(ARM_R3, (u32)jit_udiv, ctx);

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

* [PATCH 3.16.y-ckt 033/110] x86/vdso: Fix the x86 vdso2c tool includes
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (31 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 032/110] ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 034/110] x86/vdso: Fix 'make bzImage' on older distros Luis Henriques
                   ` (76 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Tommi Kyntola, Andy Lutomirski, Ingo Molnar, Luis Henriques

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

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

From: Tommi Kyntola <tommi.kyntola@gmail.com>

commit 0a4f59d6e09ef16fbb7d213cfa1bf472c7845fda upstream.

The build-time tool arch/x86/vdso/vdso2c.c includes <linux/elf.h>,
but cannot find it, unless the build host happens to provide it.

It should be reading the uapi linux/elf.h

This build regression came along with the vdso2c changes between
v3.15 and v3.16.

Signed-off-by: Tommi Kyntola <tommi.kyntola@gmail.com>
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Link: http://lkml.kernel.org/r/1525002.3cJ7BySVpA@musta
Link: http://lkml.kernel.org/r/efe1ec29eda830b1d0030882706f3dac99ce1f73.1427482099.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/vdso/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
index 61b04fe36e66..17f3e7e9f120 100644
--- a/arch/x86/vdso/Makefile
+++ b/arch/x86/vdso/Makefile
@@ -49,7 +49,7 @@ VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \
 $(obj)/vdso64.so.dbg: $(src)/vdso.lds $(vobjs) FORCE
 	$(call if_changed,vdso)
 
-HOST_EXTRACFLAGS += -I$(srctree)/tools/include
+HOST_EXTRACFLAGS += -I$(srctree)/tools/include -I$(srctree)/include/uapi
 hostprogs-y			+= vdso2c
 
 quiet_cmd_vdso2c = VDSO2C  $@

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

* [PATCH 3.16.y-ckt 034/110] x86/vdso: Fix 'make bzImage' on older distros
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (32 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 033/110] x86/vdso: Fix the x86 vdso2c tool includes Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 035/110] perf/x86/rapl: Enable Broadwell-U RAPL support Luis Henriques
                   ` (75 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Oleg Nesterov, Borislav Petkov, Andy Lutomirski, Borislav Petkov,
	Brian Gerst, Denys Vlasenko, H. Peter Anvin, Jiri Olsa,
	Linus Torvalds, Peter Zijlstra, Rusty Russell, Thomas Gleixner,
	Ingo Molnar, Luis Henriques

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

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

From: Oleg Nesterov <oleg@redhat.com>

commit ef7254a595912b026d80a4116b8c4cd5b79d9c62 upstream.

Change HOST_EXTRACFLAGS to include arch/x86/include/uapi along
with include/uapi.

This looks more consistent, and this fixes "make bzImage" on my
old distro which doesn't have asm/bitsperlong.h in /usr/include/.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: 6f121e548f83 ("x86, vdso: Reimplement vdso.so preparation in build-time C")
Link: http://lkml.kernel.org/r/1431332153-18566-6-git-send-email-bp@alien8.de
Link: http://lkml.kernel.org/r/20150507165835.GB18652@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/vdso/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
index 17f3e7e9f120..265803394896 100644
--- a/arch/x86/vdso/Makefile
+++ b/arch/x86/vdso/Makefile
@@ -49,7 +49,7 @@ VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \
 $(obj)/vdso64.so.dbg: $(src)/vdso.lds $(vobjs) FORCE
 	$(call if_changed,vdso)
 
-HOST_EXTRACFLAGS += -I$(srctree)/tools/include -I$(srctree)/include/uapi
+HOST_EXTRACFLAGS += -I$(srctree)/tools/include -I$(srctree)/include/uapi -I$(srctree)/arch/x86/include/uapi
 hostprogs-y			+= vdso2c
 
 quiet_cmd_vdso2c = VDSO2C  $@

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

* [PATCH 3.16.y-ckt 035/110] perf/x86/rapl: Enable Broadwell-U RAPL support
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (33 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 034/110] x86/vdso: Fix 'make bzImage' on older distros Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 036/110] drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling Luis Henriques
                   ` (74 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Stephane Eranian, Andy Lutomirski, Borislav Petkov, Brian Gerst,
	Denys Vlasenko, H. Peter Anvin, Linus Torvalds, Thomas Gleixner,
	jacob.jun.pan, kan.liang, peterz, sonnyrao, Ingo Molnar,
	Luis Henriques

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

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

From: Stephane Eranian <eranian@google.com>

commit 44b11fee51711ca85aa2b121a49bf029d18a3722 upstream.

This patch enables RAPL counters (energy consumption counters)
support for Intel Broadwell-U processors (Model 61):

To use:

  $ perf stat -a -I 1000 -e power/energy-cores/,power/energy-pkg/,power/energy-ram/ sleep 10

Signed-off-by: Stephane Eranian <eranian@google.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: jacob.jun.pan@linux.intel.com
Cc: kan.liang@intel.com
Cc: peterz@infradead.org
Cc: sonnyrao@chromium.org
Link: http://lkml.kernel.org/r/20150423070709.GA4970@thinkpad
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/kernel/cpu/perf_event_intel_rapl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
index 619f7699487a..0ee067ee830f 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
@@ -664,6 +664,7 @@ static int __init rapl_pmu_init(void)
 		break;
 	case 60: /* Haswell */
 	case 69: /* Haswell-Celeron */
+	case 61: /* Broadwell */
 		rapl_cntr_mask = RAPL_IDX_HSW;
 		rapl_pmu_events_group.attrs = rapl_events_hsw_attr;
 		break;

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

* [PATCH 3.16.y-ckt 036/110] drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (34 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 035/110] perf/x86/rapl: Enable Broadwell-U RAPL support Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 037/110] RDMA/core: Fix for parsing netlink string attribute Luis Henriques
                   ` (73 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Christian König, Alex Deucher, Luis Henriques

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

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

From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>

commit 607d48063512707a414e346972e2210dc71ab491 upstream.

The mapping range is inclusive between starting and ending addresses.

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/gpu/drm/radeon/cik.c       | 4 ++--
 drivers/gpu/drm/radeon/evergreen.c | 2 +-
 drivers/gpu/drm/radeon/ni.c        | 5 +++--
 drivers/gpu/drm/radeon/r600.c      | 2 +-
 drivers/gpu/drm/radeon/rv770.c     | 2 +-
 drivers/gpu/drm/radeon/si.c        | 4 ++--
 6 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 574d1f4ec7e5..0cd584934768 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -5438,7 +5438,7 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
 	       L2_CACHE_BIGK_FRAGMENT_SIZE(4));
 	/* setup context0 */
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
 			(u32)(rdev->dummy_page.addr >> 12));
@@ -5456,7 +5456,7 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
 	 */
 	/* set vm size, must be a multiple of 4 */
 	WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0);
-	WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn);
+	WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn - 1);
 	for (i = 1; i < 16; i++) {
 		if (i < 8)
 			WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2),
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 5428b692f9a2..aaff62717f7b 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -2458,7 +2458,7 @@ static int evergreen_pcie_gart_enable(struct radeon_device *rdev)
 	WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
 	WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
 				RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 1d0c08de1731..587a45a3003b 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -1251,7 +1251,7 @@ static int cayman_pcie_gart_enable(struct radeon_device *rdev)
 	       L2_CACHE_BIGK_FRAGMENT_SIZE(6));
 	/* setup context0 */
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
 			(u32)(rdev->dummy_page.addr >> 12));
@@ -1270,7 +1270,8 @@ static int cayman_pcie_gart_enable(struct radeon_device *rdev)
 	 */
 	for (i = 1; i < 8; i++) {
 		WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR + (i << 2), 0);
-		WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i << 2), rdev->vm_manager.max_pfn);
+		WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i << 2),
+			rdev->vm_manager.max_pfn - 1);
 		WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2),
 			rdev->gart.table_addr >> 12);
 	}
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 5e31413fb454..4dae32b4cb6b 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -996,7 +996,7 @@ static int r600_pcie_gart_enable(struct radeon_device *rdev)
 	WREG32(MC_VM_L1_TLB_MCB_RD_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE);
 	WREG32(MC_VM_L1_TLB_MCB_WR_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
 				RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 11cd3d887428..146168d85fbd 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -922,7 +922,7 @@ static int rv770_pcie_gart_enable(struct radeon_device *rdev)
 	WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
 	WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
 				RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index b9368bc50570..0555ce98986b 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -4072,7 +4072,7 @@ static int si_pcie_gart_enable(struct radeon_device *rdev)
 	       L2_CACHE_BIGK_FRAGMENT_SIZE(4));
 	/* setup context0 */
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
 			(u32)(rdev->dummy_page.addr >> 12));
@@ -4087,7 +4087,7 @@ static int si_pcie_gart_enable(struct radeon_device *rdev)
 	/* empty context1-15 */
 	/* set vm size, must be a multiple of 4 */
 	WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0);
-	WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn);
+	WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn - 1);
 	/* Assign the pt base to something valid for now; the pts used for
 	 * the VMs are determined by the application and setup and assigned
 	 * on the fly in the vm part of radeon_gart.c

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

* [PATCH 3.16.y-ckt 037/110] RDMA/core: Fix for parsing netlink string attribute
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (35 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 036/110] drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 038/110] drm/radeon: add new bonaire pci id Luis Henriques
                   ` (72 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Tatyana Nikolova, Doug Ledford, Luis Henriques

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

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

From: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>

commit ec04847c0c5b471bab2dacceadfdb803a9d1a2ea upstream.

The string iwpm_ulib_name is recorded in a nlmsg as a netlink attribute.
Without this fix parsing of the nlmsg by the userspace port mapper service fails
because of unknown attribute length, causing the port mapper service not to
register the client, which has sent the nlmsg.

Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
Reviewed-By: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/infiniband/core/iwpm_msg.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/core/iwpm_msg.c b/drivers/infiniband/core/iwpm_msg.c
index b85ddbc979e0..e5558b2660f2 100644
--- a/drivers/infiniband/core/iwpm_msg.c
+++ b/drivers/infiniband/core/iwpm_msg.c
@@ -33,7 +33,7 @@
 
 #include "iwpm_util.h"
 
-static const char iwpm_ulib_name[] = "iWarpPortMapperUser";
+static const char iwpm_ulib_name[IWPM_ULIBNAME_SIZE] = "iWarpPortMapperUser";
 static int iwpm_ulib_version = 3;
 static int iwpm_user_pid = IWPM_PID_UNDEFINED;
 static atomic_t echo_nlmsg_seq;

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

* [PATCH 3.16.y-ckt 038/110] drm/radeon: add new bonaire pci id
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (36 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 037/110] RDMA/core: Fix for parsing netlink string attribute Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 039/110] parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures Luis Henriques
                   ` (71 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Alex Deucher, Luis Henriques

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

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

From: Alex Deucher <alexander.deucher@amd.com>

commit fcf3b54282e4c5a95a1f45f67558bc105acdbc6a upstream.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 include/drm/drm_pciids.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
index 2dd405c9be78..45c39a37f924 100644
--- a/include/drm/drm_pciids.h
+++ b/include/drm/drm_pciids.h
@@ -186,6 +186,7 @@
 	{0x1002, 0x6658, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_NEW_MEMMAP}, \
 	{0x1002, 0x665c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_NEW_MEMMAP}, \
 	{0x1002, 0x665d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_NEW_MEMMAP}, \
+	{0x1002, 0x665f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_NEW_MEMMAP}, \
 	{0x1002, 0x6660, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_HAINAN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
 	{0x1002, 0x6663, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_HAINAN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
 	{0x1002, 0x6664, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_HAINAN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \

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

* [PATCH 3.16.y-ckt 039/110] parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (37 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 038/110] drm/radeon: add new bonaire pci id Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 040/110] firmware: dmi_scan: Fix ordering of product_uuid Luis Henriques
                   ` (70 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Helge Deller, linux-parisc, James Hogan, linux-metag, Luis Henriques

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

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

From: Helge Deller <deller@gmx.de>

commit d045c77c1a69703143a36169c224429c48b9eecd upstream.

On architectures where the stack grows upwards (CONFIG_STACK_GROWSUP=y,
currently parisc and metag only) stack randomization sometimes leads to crashes
when the stack ulimit is set to lower values than STACK_RND_MASK (which is 8 MB
by default if not defined in arch-specific headers).

The problem is, that when the stack vm_area_struct is set up in fs/exec.c, the
additional space needed for the stack randomization (as defined by the value of
STACK_RND_MASK) was not taken into account yet and as such, when the stack
randomization code added a random offset to the stack start, the stack
effectively got smaller than what the user defined via rlimit_max(RLIMIT_STACK)
which then sometimes leads to out-of-stack situations and crashes.

This patch fixes it by adding the maximum possible amount of memory (based on
STACK_RND_MASK) which theoretically could be added by the stack randomization
code to the initial stack size. That way, the user-defined stack size is always
guaranteed to be at minimum what is defined via rlimit_max(RLIMIT_STACK).

This bug is currently not visible on the metag architecture, because on metag
STACK_RND_MASK is defined to 0 which effectively disables stack randomization.

The changes to fs/exec.c are inside an "#ifdef CONFIG_STACK_GROWSUP"
section, so it does not affect other platformws beside those where the
stack grows upwards (parisc and metag).

Signed-off-by: Helge Deller <deller@gmx.de>
Cc: linux-parisc@vger.kernel.org
Cc: James Hogan <james.hogan@imgtec.com>
Cc: linux-metag@vger.kernel.org
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/parisc/include/asm/elf.h   | 4 ++++
 arch/parisc/kernel/sys_parisc.c | 3 +++
 fs/exec.c                       | 3 +++
 3 files changed, 10 insertions(+)

diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h
index 3391d061eccc..78c9fd32c554 100644
--- a/arch/parisc/include/asm/elf.h
+++ b/arch/parisc/include/asm/elf.h
@@ -348,6 +348,10 @@ struct pt_regs;	/* forward declaration... */
 
 #define ELF_HWCAP	0
 
+#define STACK_RND_MASK	(is_32bit_task() ? \
+				0x7ff >> (PAGE_SHIFT - 12) : \
+				0x3ffff >> (PAGE_SHIFT - 12))
+
 struct mm_struct;
 extern unsigned long arch_randomize_brk(struct mm_struct *);
 #define arch_randomize_brk arch_randomize_brk
diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
index e1ffea2f9a0b..5aba01ac457f 100644
--- a/arch/parisc/kernel/sys_parisc.c
+++ b/arch/parisc/kernel/sys_parisc.c
@@ -77,6 +77,9 @@ static unsigned long mmap_upper_limit(void)
 	if (stack_base > STACK_SIZE_MAX)
 		stack_base = STACK_SIZE_MAX;
 
+	/* Add space for stack randomization. */
+	stack_base += (STACK_RND_MASK << PAGE_SHIFT);
+
 	return PAGE_ALIGN(STACK_TOP - stack_base);
 }
 
diff --git a/fs/exec.c b/fs/exec.c
index 68a0843250c9..993ed0aba99a 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -662,6 +662,9 @@ int setup_arg_pages(struct linux_binprm *bprm,
 	if (stack_base > STACK_SIZE_MAX)
 		stack_base = STACK_SIZE_MAX;
 
+	/* Add space for stack randomization. */
+	stack_base += (STACK_RND_MASK << PAGE_SHIFT);
+
 	/* Make sure we didn't let the argument array grow too large. */
 	if (vma->vm_end - vma->vm_start > stack_base)
 		return -ENOMEM;

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

* [PATCH 3.16.y-ckt 040/110] firmware: dmi_scan: Fix ordering of product_uuid
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (38 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 039/110] parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 041/110] ext4: fix NULL pointer dereference when journal restart fails Luis Henriques
                   ` (69 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Jean Delvare, Ben Hutchings, Artem Savkov, Ivan Khoronzhuk,
	Matt Fleming, Luis Henriques

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

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

From: Jean Delvare <jdelvare@suse.de>

commit 5c1ac56b51b9d222ab202dec1ac2f4215346129d upstream.

In function dmi_present(), dmi_walk_early() calls dmi_table(), which
calls dmi_decode(), which ultimately calls dmi_save_uuid(). This last
function makes a decision based on the value of global variable
dmi_ver. The problem is that this variable is set right _after_
dmi_walk_early() returns. So dmi_save_uuid() always sees dmi_ver == 0
regardless of the actual version implemented.

This causes /sys/class/dmi/id/product_uuid to always use the old
ordering even on systems implementing DMI/SMBIOS 2.6 or later, which
should use the new ordering.

This is broken since kernel v3.8 for legacy DMI implementations and
since kernel v3.10 for SMBIOS 2 implementations. SMBIOS 3
implementations with the 64-bit entry point are not affected.

The first breakage does not matter much as in practice legacy DMI
implementations are always for versions older than 2.6, which is when
the UUID ordering changed. The second breakage is more problematic as
it affects the vast majority of x86 systems manufactured since 2009.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Fixes: 9f9c9cbb6057 ("drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists")
Fixes: 79bae42d51a5 ("dmi_scan: refactor dmi_scan_machine(), {smbios,dmi}_present()")
Acked-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Cc: Ben Hutchings <ben@decadent.org.uk>
Cc: Artem Savkov <artem.savkov@gmail.com>
Cc: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Cc: Matt Fleming <matt.fleming@intel.com>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/firmware/dmi_scan.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index 17afc51f3054..35286fe52823 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -489,6 +489,10 @@ static int __init dmi_present(const u8 *buf)
 	buf += 16;
 
 	if (memcmp(buf, "_DMI_", 5) == 0 && dmi_checksum(buf, 15)) {
+		if (smbios_ver)
+			dmi_ver = smbios_ver;
+		else
+			dmi_ver = (buf[14] & 0xF0) << 4 | (buf[14] & 0x0F);
 		dmi_num = (buf[13] << 8) | buf[12];
 		dmi_len = (buf[7] << 8) | buf[6];
 		dmi_base = (buf[11] << 24) | (buf[10] << 16) |
@@ -496,12 +500,9 @@ static int __init dmi_present(const u8 *buf)
 
 		if (dmi_walk_early(dmi_decode) == 0) {
 			if (smbios_ver) {
-				dmi_ver = smbios_ver;
 				pr_info("SMBIOS %d.%d present.\n",
 				       dmi_ver >> 8, dmi_ver & 0xFF);
 			} else {
-				dmi_ver = (buf[14] & 0xF0) << 4 |
-					   (buf[14] & 0x0F);
 				pr_info("Legacy DMI %d.%d present.\n",
 				       dmi_ver >> 8, dmi_ver & 0xFF);
 			}

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

* [PATCH 3.16.y-ckt 041/110] ext4: fix NULL pointer dereference when journal restart fails
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (39 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 040/110] firmware: dmi_scan: Fix ordering of product_uuid Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 042/110] ext4: check for zero length extent explicitly Luis Henriques
                   ` (68 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Lukas Czerner, Theodore Ts'o, Luis Henriques

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

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

From: Lukas Czerner <lczerner@redhat.com>

commit 9d506594069355d1fb2de3f9104667312ff08ed3 upstream.

Currently when journal restart fails, we'll have the h_transaction of
the handle set to NULL to indicate that the handle has been effectively
aborted. We handle this situation quietly in the jbd2_journal_stop() and just
free the handle and exit because everything else has been done before we
attempted (and failed) to restart the journal.

Unfortunately there are a number of problems with that approach
introduced with commit

41a5b913197c "jbd2: invalidate handle if jbd2_journal_restart()
fails"

First of all in ext4 jbd2_journal_stop() will be called through
__ext4_journal_stop() where we would try to get a hold of the superblock
by dereferencing h_transaction which in this case would lead to NULL
pointer dereference and crash.

In addition we're going to free the handle regardless of the refcount
which is bad as well, because others up the call chain will still
reference the handle so we might potentially reference already freed
memory.

Moreover it's expected that we'll get aborted handle as well as detached
handle in some of the journalling function as the error propagates up
the stack, so it's unnecessary to call WARN_ON every time we get
detached handle.

And finally we might leak some memory by forgetting to free reserved
handle in jbd2_journal_stop() in the case where handle was detached from
the transaction (h_transaction is NULL).

Fix the NULL pointer dereference in __ext4_journal_stop() by just
calling jbd2_journal_stop() quietly as suggested by Jan Kara. Also fix
the potential memory leak in jbd2_journal_stop() and use proper
handle refcounting before we attempt to free it to avoid use-after-free
issues.

And finally remove all WARN_ON(!transaction) from the code so that we do
not get random traces when something goes wrong because when journal
restart fails we will get to some of those functions.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/ext4/ext4_jbd2.c   |  6 ++++++
 fs/jbd2/transaction.c | 25 ++++++++++++++++---------
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c
index 0074e0d23d6e..44c89188c62c 100644
--- a/fs/ext4/ext4_jbd2.c
+++ b/fs/ext4/ext4_jbd2.c
@@ -87,6 +87,12 @@ int __ext4_journal_stop(const char *where, unsigned int line, handle_t *handle)
 		ext4_put_nojournal(handle);
 		return 0;
 	}
+
+	if (!handle->h_transaction) {
+		err = jbd2_journal_stop(handle);
+		return handle->h_err ? handle->h_err : err;
+	}
+
 	sb = handle->h_transaction->t_journal->j_private;
 	err = handle->h_err;
 	rc = jbd2_journal_stop(handle);
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
index 6f0f590cc5a3..99ebbd72a064 100644
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
@@ -551,7 +551,6 @@ int jbd2_journal_extend(handle_t *handle, int nblocks)
 	int result;
 	int wanted;
 
-	WARN_ON(!transaction);
 	if (is_handle_aborted(handle))
 		return -EROFS;
 	journal = transaction->t_journal;
@@ -627,7 +626,6 @@ int jbd2__journal_restart(handle_t *handle, int nblocks, gfp_t gfp_mask)
 	tid_t		tid;
 	int		need_to_start, ret;
 
-	WARN_ON(!transaction);
 	/* If we've had an abort of any type, don't even think about
 	 * actually doing the restart! */
 	if (is_handle_aborted(handle))
@@ -791,7 +789,6 @@ do_get_write_access(handle_t *handle, struct journal_head *jh,
 	int need_copy = 0;
 	unsigned long start_lock, time_lock;
 
-	WARN_ON(!transaction);
 	if (is_handle_aborted(handle))
 		return -EROFS;
 	journal = transaction->t_journal;
@@ -1057,7 +1054,6 @@ int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh)
 	int err;
 
 	jbd_debug(5, "journal_head %p\n", jh);
-	WARN_ON(!transaction);
 	err = -EROFS;
 	if (is_handle_aborted(handle))
 		goto out;
@@ -1272,7 +1268,6 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh)
 	struct journal_head *jh;
 	int ret = 0;
 
-	WARN_ON(!transaction);
 	if (is_handle_aborted(handle))
 		return -EROFS;
 	journal = transaction->t_journal;
@@ -1403,7 +1398,6 @@ int jbd2_journal_forget (handle_t *handle, struct buffer_head *bh)
 	int err = 0;
 	int was_modified = 0;
 
-	WARN_ON(!transaction);
 	if (is_handle_aborted(handle))
 		return -EROFS;
 	journal = transaction->t_journal;
@@ -1536,8 +1530,22 @@ int jbd2_journal_stop(handle_t *handle)
 	tid_t tid;
 	pid_t pid;
 
-	if (!transaction)
-		goto free_and_exit;
+	if (!transaction) {
+		/*
+		 * Handle is already detached from the transaction so
+		 * there is nothing to do other than decrease a refcount,
+		 * or free the handle if refcount drops to zero
+		 */
+		if (--handle->h_ref > 0) {
+			jbd_debug(4, "h_ref %d -> %d\n", handle->h_ref + 1,
+							 handle->h_ref);
+			return err;
+		} else {
+			if (handle->h_rsv_handle)
+				jbd2_free_handle(handle->h_rsv_handle);
+			goto free_and_exit;
+		}
+	}
 	journal = transaction->t_journal;
 
 	J_ASSERT(journal_current_handle() == handle);
@@ -2379,7 +2387,6 @@ int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *jinode)
 	transaction_t *transaction = handle->h_transaction;
 	journal_t *journal;
 
-	WARN_ON(!transaction);
 	if (is_handle_aborted(handle))
 		return -EROFS;
 	journal = transaction->t_journal;

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

* [PATCH 3.16.y-ckt 042/110] ext4: check for zero length extent explicitly
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (40 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 041/110] ext4: fix NULL pointer dereference when journal restart fails Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 043/110] jbd2: fix r_count overflows leading to buffer overflow in journal recovery Luis Henriques
                   ` (67 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Eryu Guan, Theodore Ts'o, Luis Henriques

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

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

From: Eryu Guan <guaneryu@gmail.com>

commit 2f974865ffdfe7b9f46a9940836c8b167342563d upstream.

The following commit introduced a bug when checking for zero length extent

5946d08 ext4: check for overlapping extents in ext4_valid_extent_entries()

Zero length extent could pass the check if lblock is zero.

Adding the explicit check for zero length back.

Signed-off-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/ext4/extents.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 99d74306e770..a2c5bb7e71bb 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -361,7 +361,7 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext)
 	ext4_lblk_t lblock = le32_to_cpu(ext->ee_block);
 	ext4_lblk_t last = lblock + len - 1;
 
-	if (lblock > last)
+	if (len == 0 || lblock > last)
 		return 0;
 	return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len);
 }

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

* [PATCH 3.16.y-ckt 043/110] jbd2: fix r_count overflows leading to buffer overflow in journal recovery
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (41 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 042/110] ext4: check for zero length extent explicitly Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 044/110] mm, numa: really disable NUMA balancing by default on single node machines Luis Henriques
                   ` (66 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Darrick J. Wong, Theodore Ts'o, Luis Henriques

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

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

From: "Darrick J. Wong" <darrick.wong@oracle.com>

commit e531d0bceb402e643a4499de40dd3fa39d8d2e43 upstream.

The journal revoke block recovery code does not check r_count for
sanity, which means that an evil value of r_count could result in
the kernel reading off the end of the revoke table and into whatever
garbage lies beyond.  This could crash the kernel, so fix that.

However, in testing this fix, I discovered that the code to write
out the revoke tables also was not correctly checking to see if the
block was full -- the current offset check is fine so long as the
revoke table space size is a multiple of the record size, but this
is not true when either journal_csum_v[23] are set.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/jbd2/recovery.c | 10 +++++++++-
 fs/jbd2/revoke.c   | 18 ++++++++++--------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index bcbef08a4d8f..a5f72a36c6c8 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -839,15 +839,23 @@ static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
 {
 	jbd2_journal_revoke_header_t *header;
 	int offset, max;
+	int csum_size = 0;
+	__u32 rcount;
 	int record_len = 4;
 
 	header = (jbd2_journal_revoke_header_t *) bh->b_data;
 	offset = sizeof(jbd2_journal_revoke_header_t);
-	max = be32_to_cpu(header->r_count);
+	rcount = be32_to_cpu(header->r_count);
 
 	if (!jbd2_revoke_block_csum_verify(journal, header))
 		return -EINVAL;
 
+	if (jbd2_journal_has_csum_v2or3(journal))
+		csum_size = sizeof(struct jbd2_journal_revoke_tail);
+	if (rcount > journal->j_blocksize - csum_size)
+		return -EINVAL;
+	max = rcount;
+
 	if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
 		record_len = 8;
 
diff --git a/fs/jbd2/revoke.c b/fs/jbd2/revoke.c
index d5e95a175c92..8ecf9b92f163 100644
--- a/fs/jbd2/revoke.c
+++ b/fs/jbd2/revoke.c
@@ -583,7 +583,7 @@ static void write_one_revoke_record(journal_t *journal,
 {
 	int csum_size = 0;
 	struct buffer_head *descriptor;
-	int offset;
+	int sz, offset;
 	journal_header_t *header;
 
 	/* If we are already aborting, this all becomes a noop.  We
@@ -600,9 +600,14 @@ static void write_one_revoke_record(journal_t *journal,
 	if (jbd2_journal_has_csum_v2or3(journal))
 		csum_size = sizeof(struct jbd2_journal_revoke_tail);
 
+	if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
+		sz = 8;
+	else
+		sz = 4;
+
 	/* Make sure we have a descriptor with space left for the record */
 	if (descriptor) {
-		if (offset >= journal->j_blocksize - csum_size) {
+		if (offset + sz > journal->j_blocksize - csum_size) {
 			flush_descriptor(journal, descriptor, offset, write_op);
 			descriptor = NULL;
 		}
@@ -625,16 +630,13 @@ static void write_one_revoke_record(journal_t *journal,
 		*descriptorp = descriptor;
 	}
 
-	if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT)) {
+	if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
 		* ((__be64 *)(&descriptor->b_data[offset])) =
 			cpu_to_be64(record->blocknr);
-		offset += 8;
-
-	} else {
+	else
 		* ((__be32 *)(&descriptor->b_data[offset])) =
 			cpu_to_be32(record->blocknr);
-		offset += 4;
-	}
+	offset += sz;
 
 	*offsetp = offset;
 }

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

* [PATCH 3.16.y-ckt 044/110] mm, numa: really disable NUMA balancing by default on single node machines
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (42 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 043/110] jbd2: fix r_count overflows leading to buffer overflow in journal recovery Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 045/110] spi: bitbang: Make setup_transfer() callback optional Luis Henriques
                   ` (65 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Mel Gorman, Andrew Morton, Linus Torvalds, Luis Henriques

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

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

From: Mel Gorman <mgorman@suse.de>

commit b0dc2b9bb4ab782115b964310518ee0b17784277 upstream.

NUMA balancing is meant to be disabled by default on UMA machines but
the check is using nr_node_ids (highest node) instead of
num_online_nodes (online nodes).

The consequences are that a UMA machine with a node ID of 1 or higher
will enable NUMA balancing.  This will incur useless overhead due to
minor faults with the impact depending on the workload.  These are the
impact on the stats when running a kernel build on a single node machine
whose node ID happened to be 1:

  			       vanilla     patched
  NUMA base PTE updates          5113158           0
  NUMA huge PMD updates              643           0
  NUMA page range updates        5442374           0
  NUMA hint faults               2109622           0
  NUMA hint local faults         2109622           0
  NUMA hint local percent            100         100
  NUMA pages migrated                  0           0

Signed-off-by: Mel Gorman <mgorman@suse.de>
Reviewed-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 mm/mempolicy.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 8f5330d74f47..7832affffda5 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -2560,7 +2560,7 @@ static void __init check_numabalancing_enable(void)
 	if (numabalancing_override)
 		set_numabalancing_state(numabalancing_override == 1);
 
-	if (nr_node_ids > 1 && !numabalancing_override) {
+	if (num_online_nodes() > 1 && !numabalancing_override) {
 		pr_info("%s automatic NUMA balancing. "
 			"Configure with numa_balancing= or the "
 			"kernel.numa_balancing sysctl",

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

* [PATCH 3.16.y-ckt 045/110] spi: bitbang: Make setup_transfer() callback optional
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (43 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 044/110] mm, numa: really disable NUMA balancing by default on single node machines Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 046/110] igb: Fix oops on changing number of rings Luis Henriques
                   ` (64 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Pelle Nilsson, Mark Brown, Luis Henriques

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

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

From: Pelle Nilsson <per.nilsson@xelmo.com>

commit 7d0ec8b6f40b356f780b79de63eeafd6b907d68c upstream.

Some controller drivers have no need of this callback (spi-altera even
causes a NULL pointer dereference because it doesn't register the callback,
falsely assuming that it is already optional).

Fixes: 30af9b558a56 ("spi/bitbang: Drop empty setup() functions")
Signed-off-by: Pelle Nilsson <per.nilsson@xelmo.com>
Reviewed-by: Ezequiel Garcia <ezequiel.garcia@vanguardiasur.com.ar>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/spi/spi-bitbang.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/spi/spi-bitbang.c b/drivers/spi/spi-bitbang.c
index dc7d2c2d643e..fecdda270c5d 100644
--- a/drivers/spi/spi-bitbang.c
+++ b/drivers/spi/spi-bitbang.c
@@ -184,7 +184,6 @@ int spi_bitbang_setup(struct spi_device *spi)
 {
 	struct spi_bitbang_cs	*cs = spi->controller_state;
 	struct spi_bitbang	*bitbang;
-	int			retval;
 	unsigned long		flags;
 
 	bitbang = spi_master_get_devdata(spi->master);
@@ -201,9 +200,11 @@ int spi_bitbang_setup(struct spi_device *spi)
 	if (!cs->txrx_word)
 		return -EINVAL;
 
-	retval = bitbang->setup_transfer(spi, NULL);
-	if (retval < 0)
-		return retval;
+	if (bitbang->setup_transfer) {
+		int retval = bitbang->setup_transfer(spi, NULL);
+		if (retval < 0)
+			return retval;
+	}
 
 	dev_dbg(&spi->dev, "%s, %u nsec/bit\n", __func__, 2 * cs->nsecs);
 
@@ -299,9 +300,11 @@ static int spi_bitbang_transfer_one(struct spi_master *master,
 
 		/* init (-1) or override (1) transfer params */
 		if (do_setup != 0) {
-			status = bitbang->setup_transfer(spi, t);
-			if (status < 0)
-				break;
+			if (bitbang->setup_transfer) {
+				status = bitbang->setup_transfer(spi, t);
+				if (status < 0)
+					break;
+			}
 			if (do_setup == -1)
 				do_setup = 0;
 		}

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

* [PATCH 3.16.y-ckt 046/110] igb: Fix oops on changing number of rings
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (44 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 045/110] spi: bitbang: Make setup_transfer() callback optional Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 047/110] igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector Luis Henriques
                   ` (63 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Toshiaki Makita, Jeff Kirsher, Luis Henriques

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

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

From: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>

commit c0a06ee185f2b785c7bd44c4fb6fcae80f7d1a54 upstream.

When changing the number of rings by ethtool -L, q_vectors are reused,
which causes oops because of uninitialized pointers.

- When an rx is reused as a tx, q_vector->rx.ring is not set to NULL, which
  misleads igb_poll() to determine that it has an rx ring although it
  actually points to the tx ring.
- When a tx is reused as an rx, q_vector->rx.ring->skb
  (q_vector->ring[0].skb) has a value that was used as tx_stats before.

Fix these problems by zeroing it out on reuseing it.

Fixes: 02ef6e1d0b00 ("igb: Fix queue allocation method to accommodate changing during runtime")
Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 4d2dc17fd31b..3bf362078cc5 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1208,6 +1208,8 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter,
 	q_vector = adapter->q_vector[v_idx];
 	if (!q_vector)
 		q_vector = kzalloc(size, GFP_KERNEL);
+	else
+		memset(q_vector, 0, size);
 	if (!q_vector)
 		return -ENOMEM;
 

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

* [PATCH 3.16.y-ckt 047/110] igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (45 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 046/110] igb: Fix oops on changing number of rings Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 048/110] ARM: gemini: fix compiler warning due wrong data type Luis Henriques
                   ` (62 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Toshiaki Makita, Jeff Kirsher, Luis Henriques

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

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

From: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>

commit 2439fc4d71f71b47c8ace1f42eb46039222282a0 upstream.

adapter->tx_ring is set to NULL where rx_ring should be.

Fixes: 5536d2102a2d ("igb: Combine q_vector and ring allocation into a single function")
Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 3bf362078cc5..b554cc9e492d 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1037,7 +1037,7 @@ static void igb_reset_q_vector(struct igb_adapter *adapter, int v_idx)
 		adapter->tx_ring[q_vector->tx.ring->queue_index] = NULL;
 
 	if (q_vector->rx.ring)
-		adapter->tx_ring[q_vector->rx.ring->queue_index] = NULL;
+		adapter->rx_ring[q_vector->rx.ring->queue_index] = NULL;
 
 	netif_napi_del(&q_vector->napi);
 

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

* [PATCH 3.16.y-ckt 048/110] ARM: gemini: fix compiler warning due wrong data type
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (46 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 047/110] igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 049/110] arm64: add missing PAGE_ALIGN() to __dma_free() Luis Henriques
                   ` (61 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Hans Ulli Kroll, Arnd Bergmann, Luis Henriques

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

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

From: Hans Ulli Kroll <ulli.kroll@googlemail.com>

commit 31fc835fc787aad38e8985d593f8ad0d18825323 upstream.

This patch fixes a compiler warning in gemini_restart()
issued by commit 7b6d864b48d9 ("reboot:arm: reboot_mode
changes from char to enum reboot_mode").

arch/arm/mach-gemini/board-rut1xx.c:93:2: warning: initialization from incompatible pointer type

The warning is harmless, and the patch does not need to
be backported to stable kernels.

Fixes: 7b6d864b48d ("reboot:arm: reboot_mode changes from char to enum reboot_mode.")
Signed-off-by: Hans Ulli Kroll <ulli.kroll@googlemail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/mach-gemini/common.h | 4 +++-
 arch/arm/mach-gemini/reset.c  | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-gemini/common.h b/arch/arm/mach-gemini/common.h
index 38a45260a7c8..dd883698ff7e 100644
--- a/arch/arm/mach-gemini/common.h
+++ b/arch/arm/mach-gemini/common.h
@@ -12,6 +12,8 @@
 #ifndef __GEMINI_COMMON_H__
 #define __GEMINI_COMMON_H__
 
+#include <linux/reboot.h>
+
 struct mtd_partition;
 
 extern void gemini_map_io(void);
@@ -26,6 +28,6 @@ extern int platform_register_pflash(unsigned int size,
 				    struct mtd_partition *parts,
 				    unsigned int nr_parts);
 
-extern void gemini_restart(char mode, const char *cmd);
+extern void gemini_restart(enum reboot_mode mode, const char *cmd);
 
 #endif /* __GEMINI_COMMON_H__ */
diff --git a/arch/arm/mach-gemini/reset.c b/arch/arm/mach-gemini/reset.c
index b26659759e27..21a6d6d4f9c4 100644
--- a/arch/arm/mach-gemini/reset.c
+++ b/arch/arm/mach-gemini/reset.c
@@ -14,7 +14,9 @@
 #include <mach/hardware.h>
 #include <mach/global_reg.h>
 
-void gemini_restart(char mode, const char *cmd)
+#include "common.h"
+
+void gemini_restart(enum reboot_mode mode, const char *cmd)
 {
 	__raw_writel(RESET_GLOBAL | RESET_CPU1,
 		     IO_ADDRESS(GEMINI_GLOBAL_BASE) + GLOBAL_RESET);

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

* [PATCH 3.16.y-ckt 049/110] arm64: add missing PAGE_ALIGN() to __dma_free()
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (47 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 048/110] ARM: gemini: fix compiler warning due wrong data type Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 050/110] sound/oss: fix deadlock in sequencer_ioctl(SNDCTL_SEQ_OUTOFBAND) Luis Henriques
                   ` (60 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Dean Nelson, Will Deacon, Luis Henriques

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

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

From: Dean Nelson <dnelson@redhat.com>

commit 2cff98b99c469880ce830cbcde015b53b67e0a7b upstream.

__dma_alloc() does a PAGE_ALIGN() on the passed in size argument before
doing anything else. __dma_free() does not. And because it doesn't, it is
possible to leak memory should size not be an integer multiple of PAGE_SIZE.

The solution is to add a PAGE_ALIGN() to __dma_free() like is done in
__dma_alloc().

Additionally, this patch removes a redundant PAGE_ALIGN() from
__dma_alloc_coherent(), since __dma_alloc_coherent() can only be called
from __dma_alloc(), which already does a PAGE_ALIGN() before the call.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Dean Nelson <dnelson@redhat.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
[ luis: backported to 3.16: based on Dean's 3.19 backport ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm64/mm/dma-mapping.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index 893802645efe..0ada77e5d9e7 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -86,7 +86,7 @@ static void __dma_free_coherent(struct device *dev, size_t size,
 
 		dma_release_from_contiguous(dev,
 					phys_to_page(paddr),
-					size >> PAGE_SHIFT);
+					PAGE_ALIGN(size) >> PAGE_SHIFT);
 	} else {
 		swiotlb_free_coherent(dev, size, vaddr, dma_handle);
 	}
@@ -138,6 +138,8 @@ static void __dma_free_noncoherent(struct device *dev, size_t size,
 {
 	void *swiotlb_addr = phys_to_virt(dma_to_phys(dev, dma_handle));
 
+	size = PAGE_ALIGN(size);
+
 	vunmap(vaddr);
 	__dma_free_coherent(dev, size, swiotlb_addr, dma_handle, attrs);
 }

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

* [PATCH 3.16.y-ckt 050/110] sound/oss: fix deadlock in sequencer_ioctl(SNDCTL_SEQ_OUTOFBAND)
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (48 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 049/110] arm64: add missing PAGE_ALIGN() to __dma_free() Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 051/110] ARM: 8307/1: psci: move psci firmware calls out of line Luis Henriques
                   ` (59 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Alexey Khoroshilov, Takashi Iwai, Luis Henriques

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

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

From: Alexey Khoroshilov <khoroshilov@ispras.ru>

commit bc26d4d06e337ade069f33d3f4377593b24e6e36 upstream.

A deadlock can be initiated by userspace via ioctl(SNDCTL_SEQ_OUTOFBAND)
on /dev/sequencer with TMR_ECHO midi event.

In this case the control flow is:
sound_ioctl()
-> case SND_DEV_SEQ:
   case SND_DEV_SEQ2:
     sequencer_ioctl()
     -> case SNDCTL_SEQ_OUTOFBAND:
          spin_lock_irqsave(&lock,flags);
          play_event();
          -> case EV_TIMING:
               seq_timing_event()
               -> case TMR_ECHO:
                    seq_copy_to_input()
                    -> spin_lock_irqsave(&lock,flags);

It seems that spin_lock_irqsave() around play_event() is not necessary,
because the only other call location in seq_startplay() makes the call
without acquiring spinlock.

So, the patch just removes spinlocks around play_event().
By the way, it removes unreachable code in seq_timing_event(),
since (seq_mode == SEQ_2) case is handled in the beginning.

Compile tested only.

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

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/oss/sequencer.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/sound/oss/sequencer.c b/sound/oss/sequencer.c
index c0eea1dfe90f..f19da4b47c1d 100644
--- a/sound/oss/sequencer.c
+++ b/sound/oss/sequencer.c
@@ -681,13 +681,8 @@ static int seq_timing_event(unsigned char *event_rec)
 			break;
 
 		case TMR_ECHO:
-			if (seq_mode == SEQ_2)
-				seq_copy_to_input(event_rec, 8);
-			else
-			{
-				parm = (parm << 8 | SEQ_ECHO);
-				seq_copy_to_input((unsigned char *) &parm, 4);
-			}
+			parm = (parm << 8 | SEQ_ECHO);
+			seq_copy_to_input((unsigned char *) &parm, 4);
 			break;
 
 		default:;
@@ -1324,7 +1319,6 @@ int sequencer_ioctl(int dev, struct file *file, unsigned int cmd, void __user *a
 	int mode = translate_mode(file);
 	struct synth_info inf;
 	struct seq_event_rec event_rec;
-	unsigned long flags;
 	int __user *p = arg;
 
 	orig_dev = dev = dev >> 4;
@@ -1479,9 +1473,7 @@ int sequencer_ioctl(int dev, struct file *file, unsigned int cmd, void __user *a
 		case SNDCTL_SEQ_OUTOFBAND:
 			if (copy_from_user(&event_rec, arg, sizeof(event_rec)))
 				return -EFAULT;
-			spin_lock_irqsave(&lock,flags);
 			play_event(event_rec.arr);
-			spin_unlock_irqrestore(&lock,flags);
 			return 0;
 
 		case SNDCTL_MIDI_INFO:

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

* [PATCH 3.16.y-ckt 051/110] ARM: 8307/1: psci: move psci firmware calls out of line
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (49 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 050/110] sound/oss: fix deadlock in sequencer_ioctl(SNDCTL_SEQ_OUTOFBAND) Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 052/110] config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected Luis Henriques
                   ` (58 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Mark Rutland, Will Deacon, Russell King, Luis Henriques

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

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

From: Mark Rutland <mark.rutland@arm.com>

commit c097877319ab61dd045b6497953b4e3df8f2bb44 upstream.

arm64 builds with GCC 5 have caused the __asmeq assertions in the PSCI
calling code to fire, so move the ARM PSCI calls out of line into their
own assembly file for consistency and to safeguard against the same
issue occuring with the 32-bit toolchain.

[will: brought into line with arm64 implementation]

Reported-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/kernel/Makefile    |  2 +-
 arch/arm/kernel/psci-call.S | 31 +++++++++++++++++++++++++++++++
 arch/arm/kernel/psci.c      | 39 +++------------------------------------
 3 files changed, 35 insertions(+), 37 deletions(-)
 create mode 100644 arch/arm/kernel/psci-call.S

diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index 38ddd9f83d0e..03120e656aea 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -97,7 +97,7 @@ obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
 
 obj-$(CONFIG_ARM_VIRT_EXT)	+= hyp-stub.o
 ifeq ($(CONFIG_ARM_PSCI),y)
-obj-y				+= psci.o
+obj-y				+= psci.o psci-call.o
 obj-$(CONFIG_SMP)		+= psci_smp.o
 endif
 
diff --git a/arch/arm/kernel/psci-call.S b/arch/arm/kernel/psci-call.S
new file mode 100644
index 000000000000..a78e9e1e206d
--- /dev/null
+++ b/arch/arm/kernel/psci-call.S
@@ -0,0 +1,31 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * Copyright (C) 2015 ARM Limited
+ *
+ * Author: Mark Rutland <mark.rutland@arm.com>
+ */
+
+#include <linux/linkage.h>
+
+#include <asm/opcodes-sec.h>
+#include <asm/opcodes-virt.h>
+
+/* int __invoke_psci_fn_hvc(u32 function_id, u32 arg0, u32 arg1, u32 arg2) */
+ENTRY(__invoke_psci_fn_hvc)
+	__HVC(0)
+	bx	lr
+ENDPROC(__invoke_psci_fn_hvc)
+
+/* int __invoke_psci_fn_smc(u32 function_id, u32 arg0, u32 arg1, u32 arg2) */
+ENTRY(__invoke_psci_fn_smc)
+	__SMC(0)
+	bx	lr
+ENDPROC(__invoke_psci_fn_smc)
diff --git a/arch/arm/kernel/psci.c b/arch/arm/kernel/psci.c
index f73891b6b730..f90fdf4ce7c7 100644
--- a/arch/arm/kernel/psci.c
+++ b/arch/arm/kernel/psci.c
@@ -23,8 +23,6 @@
 
 #include <asm/compiler.h>
 #include <asm/errno.h>
-#include <asm/opcodes-sec.h>
-#include <asm/opcodes-virt.h>
 #include <asm/psci.h>
 #include <asm/system_misc.h>
 
@@ -33,6 +31,9 @@ struct psci_operations psci_ops;
 static int (*invoke_psci_fn)(u32, u32, u32, u32);
 typedef int (*psci_initcall_t)(const struct device_node *);
 
+asmlinkage int __invoke_psci_fn_hvc(u32, u32, u32, u32);
+asmlinkage int __invoke_psci_fn_smc(u32, u32, u32, u32);
+
 enum psci_function {
 	PSCI_FN_CPU_SUSPEND,
 	PSCI_FN_CPU_ON,
@@ -71,40 +72,6 @@ static u32 psci_power_state_pack(struct psci_power_state state)
 		 & PSCI_0_2_POWER_STATE_AFFL_MASK);
 }
 
-/*
- * The following two functions are invoked via the invoke_psci_fn pointer
- * and will not be inlined, allowing us to piggyback on the AAPCS.
- */
-static noinline int __invoke_psci_fn_hvc(u32 function_id, u32 arg0, u32 arg1,
-					 u32 arg2)
-{
-	asm volatile(
-			__asmeq("%0", "r0")
-			__asmeq("%1", "r1")
-			__asmeq("%2", "r2")
-			__asmeq("%3", "r3")
-			__HVC(0)
-		: "+r" (function_id)
-		: "r" (arg0), "r" (arg1), "r" (arg2));
-
-	return function_id;
-}
-
-static noinline int __invoke_psci_fn_smc(u32 function_id, u32 arg0, u32 arg1,
-					 u32 arg2)
-{
-	asm volatile(
-			__asmeq("%0", "r0")
-			__asmeq("%1", "r1")
-			__asmeq("%2", "r2")
-			__asmeq("%3", "r3")
-			__SMC(0)
-		: "+r" (function_id)
-		: "r" (arg0), "r" (arg1), "r" (arg2));
-
-	return function_id;
-}
-
 static int psci_get_version(void)
 {
 	int err;

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

* [PATCH 3.16.y-ckt 052/110] config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (50 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 051/110] ARM: 8307/1: psci: move psci firmware calls out of line Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 053/110] staging, rtl8192e, LLVMLinux: Change extern inline to static inline Luis Henriques
                   ` (57 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Konrad Rzeszutek Wilk, Borislav Petkov, H. Peter Anvin,
	Linus Torvalds, Michael Chan, Thomas Gleixner, boris.ostrovsky,
	cascardo, david.vrabel, sanjeevb, siva.kallam, vyasevich,
	xen-devel, Ingo Molnar, Ben Hutchings, Luis Henriques

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

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

From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

commit a6dfa128ce5c414ab46b1d690f7a1b8decb8526d upstream.

A huge amount of NIC drivers use the DMA API, however if
compiled under 32-bit an very important part of the DMA API can
be ommitted leading to the drivers not working at all
(especially if used with 'swiotlb=force iommu=soft').

As Prashant Sreedharan explains it: "the driver [tg3] uses
DEFINE_DMA_UNMAP_ADDR(), dma_unmap_addr_set() to keep a copy of
the dma "mapping" and dma_unmap_addr() to get the "mapping"
value. On most of the platforms this is a no-op, but ... with
"iommu=soft and swiotlb=force" this house keeping is required,
... otherwise we pass 0 while calling pci_unmap_/pci_dma_sync_
instead of the DMA address."

As such enable this even when using 32-bit kernels.

Reported-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Prashant Sreedharan <prashant@broadcom.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Michael Chan <mchan@broadcom.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: boris.ostrovsky@oracle.com
Cc: cascardo@linux.vnet.ibm.com
Cc: david.vrabel@citrix.com
Cc: sanjeevb@broadcom.com
Cc: siva.kallam@broadcom.com
Cc: vyasevich@gmail.com
Cc: xen-devel@lists.xensource.com
Link: http://lkml.kernel.org/r/20150417190448.GA9462@l.oracle.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 12c8ea635f4d..04fe4a66c3ec 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -164,7 +164,7 @@ config SBUS
 
 config NEED_DMA_MAP_STATE
 	def_bool y
-	depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG
+	depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG || SWIOTLB
 
 config NEED_SG_DMA_LENGTH
 	def_bool y

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

* [PATCH 3.16.y-ckt 053/110] staging, rtl8192e, LLVMLinux: Change extern inline to static inline
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (51 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 052/110] config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 054/110] kernel: use the gnu89 standard explicitly Luis Henriques
                   ` (56 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Behan Webster, Arnd Bergmann, Greg Kroah-Hartman,
	Philip Müller, Luis Henriques

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

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

From: Behan Webster <behanw@converseincode.com>

commit 6d91857d4826b382b3fd4fad95f52713be646f96 upstream.

With compilers which follow the C99 standard (like modern versions of gcc and
clang), "extern inline" does the opposite thing from older versions of gcc
(emits code for an externally linkable version of the inline function).

"static inline" does the intended behavior in all cases instead.

Signed-off-by: Behan Webster <behanw@converseincode.com>
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Philip Müller <philm@manjaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/staging/rtl8192e/rtllib.h         | 4 ++--
 drivers/staging/rtl8192e/rtllib_softmac.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/rtl8192e/rtllib.h b/drivers/staging/rtl8192e/rtllib.h
index 83f5f57373a6..9471ff142cf1 100644
--- a/drivers/staging/rtl8192e/rtllib.h
+++ b/drivers/staging/rtl8192e/rtllib.h
@@ -2943,12 +2943,12 @@ void rtllib_softmac_scan_syncro(struct rtllib_device *ieee, u8 is_mesh);
 
 extern const long rtllib_wlan_frequencies[];
 
-extern inline void rtllib_increment_scans(struct rtllib_device *ieee)
+static inline void rtllib_increment_scans(struct rtllib_device *ieee)
 {
 	ieee->scans++;
 }
 
-extern inline int rtllib_get_scans(struct rtllib_device *ieee)
+static inline int rtllib_get_scans(struct rtllib_device *ieee)
 {
 	return ieee->scans;
 }
diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c
index 684ceed17232..79524c542f0f 100644
--- a/drivers/staging/rtl8192e/rtllib_softmac.c
+++ b/drivers/staging/rtl8192e/rtllib_softmac.c
@@ -341,7 +341,7 @@ inline void softmac_ps_mgmt_xmit(struct sk_buff *skb,
 	}
 }
 
-inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee)
+static inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee)
 {
 	unsigned int len, rate_len;
 	u8 *tag;

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

* [PATCH 3.16.y-ckt 054/110] kernel: use the gnu89 standard explicitly
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (52 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 053/110] staging, rtl8192e, LLVMLinux: Change extern inline to static inline Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 055/110] staging, rtl8192e, LLVMLinux: Remove unused inline prototype Luis Henriques
                   ` (55 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Sasha Levin, Linus Torvalds, Philip Müller, Luis Henriques

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

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

From: "Kirill A. Shutemov" <kirill@shutemov.name>

commit 51b97e354ba9fce1890cf38ecc754aa49677fc89 upstream.

Sasha Levin reports:
 "gcc5 changes the default standard to c11, which makes kernel build
  unhappy

  Explicitly define the kernel standard to be gnu89 which should keep
  everything working exactly like it was before gcc5"

There are multiple small issues with the new default, but the biggest
issue seems to be that the old - and very useful - GNU extension to
allow a cast in front of an initializer has gone away.

Patch updated by Kirill:
 "I'm pretty sure all gcc versions you can build kernel with supports
  -std=gnu89.  cc-option is redunrant.

  We also need to adjust HOSTCFLAGS otherwise allmodconfig fails for me"

Note by Andrew Pinski:
 "Yes it was reported and both problems relating to this extension has
  been added to gnu99 and gnu11.  Though there are other issues with the
  kernel dealing with extern inline have different semantics between
  gnu89 and gnu99/11"

End result: we may be able to move up to a newer stdc model eventually,
but right now the newer models have some annoying deficiencies, so the
traditional "gnu89" model ends up being the preferred one.

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Singed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Philip Müller <philm@manjaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index c2c3ab88cea7..8b63a6640123 100644
--- a/Makefile
+++ b/Makefile
@@ -303,7 +303,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
 
 HOSTCC       = gcc
 HOSTCXX      = g++
-HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
+HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
 HOSTCXXFLAGS = -O2
 
 ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
@@ -406,7 +406,8 @@ KBUILD_CPPFLAGS := -D__KERNEL__
 KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
 		   -fno-strict-aliasing -fno-common \
 		   -Werror-implicit-function-declaration \
-		   -Wno-format-security
+		   -Wno-format-security \
+		   -std=gnu89
 
 KBUILD_AFLAGS_KERNEL :=
 KBUILD_CFLAGS_KERNEL :=

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

* [PATCH 3.16.y-ckt 055/110] staging, rtl8192e, LLVMLinux: Remove unused inline prototype
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (53 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 054/110] kernel: use the gnu89 standard explicitly Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 056/110] staging: wlags49_h2: fix extern inline functions Luis Henriques
                   ` (54 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Behan Webster, Arnd Bergmann, Greg Kroah-Hartman,
	Philip Müller, Luis Henriques

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

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

From: Behan Webster <behanw@converseincode.com>

commit 62ec95f86d2850b7ce6d73fb236a6fcf48411aea upstream.

rtllib_probe_req is defined as "static inline" in rtllib_softmac.c however it
is declared differently as "extern inline" in rtllib_softmac.h. Since it isn't
used outside of the scope of rtllib_softmac, it makes sense to remove the
incorrect declaration.

Signed-off-by: Behan Webster <behanw@converseincode.com>
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Philip Müller <philm@manjaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/staging/rtl8192e/rtllib.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/staging/rtl8192e/rtllib.h b/drivers/staging/rtl8192e/rtllib.h
index 9471ff142cf1..59dc0782df44 100644
--- a/drivers/staging/rtl8192e/rtllib.h
+++ b/drivers/staging/rtl8192e/rtllib.h
@@ -2761,7 +2761,6 @@ extern void rtllib_stop_scan(struct rtllib_device *ieee);
 extern bool rtllib_act_scanning(struct rtllib_device *ieee, bool sync_scan);
 extern void rtllib_stop_scan_syncro(struct rtllib_device *ieee);
 extern void rtllib_start_scan_syncro(struct rtllib_device *ieee, u8 is_mesh);
-extern inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee);
 extern u8 MgntQuery_MgntFrameTxRate(struct rtllib_device *ieee);
 extern void rtllib_sta_ps_send_null_frame(struct rtllib_device *ieee,
 					  short pwr);

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

* [PATCH 3.16.y-ckt 056/110] staging: wlags49_h2: fix extern inline functions
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (54 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 055/110] staging, rtl8192e, LLVMLinux: Remove unused inline prototype Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 057/110] staging: rtl8712, rtl8712: avoid lots of build warnings Luis Henriques
                   ` (53 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Greg Kroah-Hartman, Philip Müller, Luis Henriques

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

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

From: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>

Patch not upstream as this driver is deleted there.

Fix up some "extern inline" functions as they break the build when using
a "modern" complier (i.e. gcc5).

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Philip Müller <philm@manjaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/staging/wlags49_h2/wl_internal.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/wlags49_h2/wl_internal.h b/drivers/staging/wlags49_h2/wl_internal.h
index 78129e93920f..1ecb5cb44bd5 100644
--- a/drivers/staging/wlags49_h2/wl_internal.h
+++ b/drivers/staging/wlags49_h2/wl_internal.h
@@ -1013,7 +1013,7 @@ static inline void wl_unlock(struct wl_private *lp,
 /* Interrupt enable disable functions                               */
 /********************************************************************/
 
-extern inline void wl_act_int_on(struct wl_private *lp)
+static inline void wl_act_int_on(struct wl_private *lp)
 {
 	/*
 	 * Only do something when the driver is handling
@@ -1025,7 +1025,7 @@ extern inline void wl_act_int_on(struct wl_private *lp)
 	}
 }
 
-extern inline void wl_act_int_off(struct wl_private *lp)
+static inline void wl_act_int_off(struct wl_private *lp)
 {
 	/*
 	 * Only do something when the driver is handling

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

* [PATCH 3.16.y-ckt 057/110] staging: rtl8712, rtl8712: avoid lots of build warnings
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (55 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 056/110] staging: wlags49_h2: fix extern inline functions Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 058/110] qla2xxx: remove redundant declaration in 'qla_gbl.h' Luis Henriques
                   ` (52 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Arnd Bergmann, Larry Finger, Florian Schilhabel,
	Greg Kroah-Hartman, Philip Müller, Luis Henriques

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

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

From: Arnd Bergmann <arnd@arndb.de>

commit 0c9f3a65c5eb7fe1fc611a22eb8a8b71ea865998 upstream.

The rtl8712 driver has an 'extern inline' function that contains an
'if', which causes lots of warnings with CONFIG_PROFILE_ALL_BRANCHES
overriding the definition of 'if':

drivers/staging/rtl8712/ieee80211.h:759:229: warning: '______f' is static but declared in inline function 'ieee80211_get_hdrlen' which is not static [enabled by default]

This changes the driver to use 'static inline' instead, which happens
to be the correct annotation anyway.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Philip Müller <philm@manjaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/staging/rtl8192u/ieee80211/ieee80211.h | 10 +++++-----
 drivers/staging/rtl8712/ieee80211.h            |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211.h b/drivers/staging/rtl8192u/ieee80211/ieee80211.h
index e0aa069fe9b1..1040bab9702a 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211.h
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211.h
@@ -2238,7 +2238,7 @@ static inline void *ieee80211_priv(struct net_device *dev)
 	return ((struct ieee80211_device *)netdev_priv(dev))->priv;
 }
 
-extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
+static inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
 {
 	/* Single white space is for Linksys APs */
 	if (essid_len == 1 && essid[0] == ' ')
@@ -2254,7 +2254,7 @@ extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
 	return 1;
 }
 
-extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode)
+static inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode)
 {
 	/*
 	 * It is possible for both access points and our device to support
@@ -2280,7 +2280,7 @@ extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mod
 	return 0;
 }
 
-extern inline int ieee80211_get_hdrlen(u16 fc)
+static inline int ieee80211_get_hdrlen(u16 fc)
 {
 	int hdrlen = IEEE80211_3ADDR_LEN;
 
@@ -2564,12 +2564,12 @@ void ieee80211_softmac_scan_syncro(struct ieee80211_device *ieee);
 
 extern const long ieee80211_wlan_frequencies[];
 
-extern inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
+static inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
 {
 	ieee->scans++;
 }
 
-extern inline int ieee80211_get_scans(struct ieee80211_device *ieee)
+static inline int ieee80211_get_scans(struct ieee80211_device *ieee)
 {
 	return ieee->scans;
 }
diff --git a/drivers/staging/rtl8712/ieee80211.h b/drivers/staging/rtl8712/ieee80211.h
index da4000e49da6..8269be80437a 100644
--- a/drivers/staging/rtl8712/ieee80211.h
+++ b/drivers/staging/rtl8712/ieee80211.h
@@ -734,7 +734,7 @@ enum ieee80211_state {
 #define IEEE_G            (1<<2)
 #define IEEE_MODE_MASK    (IEEE_A|IEEE_B|IEEE_G)
 
-extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
+static inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
 {
 	/* Single white space is for Linksys APs */
 	if (essid_len == 1 && essid[0] == ' ')
@@ -748,7 +748,7 @@ extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
 	return 1;
 }
 
-extern inline int ieee80211_get_hdrlen(u16 fc)
+static inline int ieee80211_get_hdrlen(u16 fc)
 {
 	int hdrlen = 24;
 

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

* [PATCH 3.16.y-ckt 058/110] qla2xxx: remove redundant declaration in 'qla_gbl.h'
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (56 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 057/110] staging: rtl8712, rtl8712: avoid lots of build warnings Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 059/110] ARM: mvebu: do not register custom DMA operations when coherency is disabled Luis Henriques
                   ` (51 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Chen Gang, Christoph Hellwig, Philip Müller, Luis Henriques

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

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

From: Chen Gang <gang.chen.5i5j@gmail.com>

commit 9493c2422cae272d6f1f567cbb424195defe4176 upstream.

Remove 2 redundant extern inline functions: qla8044_set_qsnt_ready() and
qla8044_need_reset_handler(). At present, within upstream next kernel
source code, they are only used within "drivers/scsi/qla2xxx/qla_nx2.c".

The related error and warnings (with allmodconfig under tile):

    CC [M]  drivers/scsi/qla2xxx/qla_nx2.o
  drivers/scsi/qla2xxx/qla_nx2.c:1633:1: error: static declaration of 'qla8044_need_reset_handler' follows non-static declaration
   qla8044_need_reset_handler(struct scsi_qla_host *vha)
   ^
  In file included from drivers/scsi/qla2xxx/qla_def.h:3706:0,
                   from drivers/scsi/qla2xxx/qla_nx2.c:11:
  drivers/scsi/qla2xxx/qla_gbl.h:756:20: note: previous declaration of 'qla8044_need_reset_handler' was here
   extern inline void qla8044_need_reset_handler(struct scsi_qla_host *vha);
                      ^
  drivers/scsi/qla2xxx/qla_gbl.h:756:20: warning: inline function 'qla8044_need_reset_handler' declared but never defined
  make[3]: *** [drivers/scsi/qla2xxx/qla_nx2.o] Error 1
  make[2]: *** [drivers/scsi/qla2xxx] Error 2
  make[1]: *** [drivers/scsi] Error 2
  make: *** [drivers] Error 2

    CC [M]  drivers/scsi/qla2xxx/qla_tmpl.o
  In file included from drivers/scsi/qla2xxx/qla_def.h:3706:0,
                   from drivers/scsi/qla2xxx/qla_tmpl.c:7:
  drivers/scsi/qla2xxx/qla_gbl.h:755:20: warning: inline function 'qla8044_set_qsnt_ready' declared but never defined
   extern inline void qla8044_set_qsnt_ready(struct scsi_qla_host *vha);
                    ^

Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
Acked-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Philip Müller <philm@manjaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/scsi/qla2xxx/qla_gbl.h | 2 --
 drivers/scsi/qla2xxx/qla_nx2.c | 2 +-
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index d48dea8fab1b..02c6973f24a3 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -750,8 +750,6 @@ extern void qla8044_set_idc_dontreset(struct scsi_qla_host *ha);
 extern int qla8044_rd_direct(struct scsi_qla_host *vha, const uint32_t crb_reg);
 extern void qla8044_wr_direct(struct scsi_qla_host *vha,
 			      const uint32_t crb_reg, const uint32_t value);
-extern inline void qla8044_set_qsnt_ready(struct scsi_qla_host *vha);
-extern inline void qla8044_need_reset_handler(struct scsi_qla_host *vha);
 extern int qla8044_device_state_handler(struct scsi_qla_host *vha);
 extern void qla8044_clear_qsnt_ready(struct scsi_qla_host *vha);
 extern void qla8044_clear_drv_active(struct qla_hw_data *);
diff --git a/drivers/scsi/qla2xxx/qla_nx2.c b/drivers/scsi/qla2xxx/qla_nx2.c
index da9e3902f219..fdfd863305db 100644
--- a/drivers/scsi/qla2xxx/qla_nx2.c
+++ b/drivers/scsi/qla2xxx/qla_nx2.c
@@ -238,7 +238,7 @@ qla8044_rmw_crb_reg(struct scsi_qla_host *vha,
 	return;
 }
 
-inline void
+static inline void
 qla8044_set_qsnt_ready(struct scsi_qla_host *vha)
 {
 	uint32_t qsnt_state;

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

* [PATCH 3.16.y-ckt 059/110] ARM: mvebu: do not register custom DMA operations when coherency is disabled
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (57 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 058/110] qla2xxx: remove redundant declaration in 'qla_gbl.h' Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 060/110] net: socket: Fix the wrong returns for recvmsg and sendmsg Luis Henriques
                   ` (50 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Thomas Petazzoni, Jason Cooper, Bjørn Mork, Luis Henriques

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

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

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

This patch is a partial backport of commit ef01c6c36bb8 ("ARM: mvebu:
remove Armada 375 Z1 workaround for I/O coherency"). This commit was
merged in v3.19, so kernel versions later than v3.19 are not affected
by the problem that this commit fixes.

It does not make a lot of sense to backport this commit entirely,
since it is mainly removing some no longer useful code. However, this
commit is also making sure that the bus_register_notifier that
register the custom DMA operations that should be used for HW I/O
coherency does not get registered when said HW I/O coherency is not
enabled.

This is particularly critical since we have decided to disable HW I/O
coherency completely in all kernels < 4.0, to be on the safe side,
while experimenting a new implementation of the HW I/O coherency in >=
4.0.

Without this commit, kernels earlier than 3.18 have the custom DMA
operations normally used for HW I/O coherency registered (they don't
do cache maintenance operations), while HW I/O coherency is
disabled. It essentially causes every DMA transfer to transfer
garbage.

The issue fixed by this commit was introduced by 5ab5afd8ba83 ("ARM:
mvebu: implement Armada 375 coherency workaround"), but it was not
visible until now since it didn't cause any problem when HW I/O
coherency is enabled.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/mach-mvebu/coherency.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c
index 2ffccd4eb084..01efe130912e 100644
--- a/arch/arm/mach-mvebu/coherency.c
+++ b/arch/arm/mach-mvebu/coherency.c
@@ -448,8 +448,9 @@ static int __init coherency_late_init(void)
 			armada_375_coherency_init_wa();
 	}
 
-	bus_register_notifier(&platform_bus_type,
-			      &mvebu_hwcc_nb);
+	if (coherency_available())
+		bus_register_notifier(&platform_bus_type,
+				      &mvebu_hwcc_nb);
 
 	return 0;
 }

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

* [PATCH 3.16.y-ckt 060/110] net: socket: Fix the wrong returns for recvmsg and sendmsg
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (58 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 059/110] ARM: mvebu: do not register custom DMA operations when coherency is disabled Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 061/110] ALSA: hda - Add headphone quirk for Lifebook E752 Luis Henriques
                   ` (49 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Junling Zheng, Hanbing Xu, Li Zefan, Al Viro, David Miller,
	Luis Henriques

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

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

From: Junling Zheng <zhengjunling@huawei.com>

Based on 08adb7dabd4874cc5666b4490653b26534702ce0 upstream.

Commit 281c9c36 (net: compat: Update get_compat_msghdr() to match
copy_msghdr_from_user() behaviour) made get_compat_msghdr() return
error if msg_sys->msg_namelen was negative, which changed the behaviors
of recvmsg and sendmsg syscall in a lib32 system:

Before commit 281c9c36, get_compat_msghdr() wouldn't fail and it would
return -EINVAL in move_addr_to_user() or somewhere if msg_sys->msg_namelen
was invalid and then syscall returned -EINVAL, which is correct.

And now, when msg_sys->msg_namelen is negative, get_compat_msghdr() will
fail and wants to return -EINVAL, however, the outer syscall will return
-EFAULT directly, which is unexpected.

This patch gets the return value of get_compat_msghdr() as well as
copy_msghdr_from_user(), then returns this expected value if
get_compat_msghdr() fails.

Fixes: 281c9c36 (net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour)
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Hanbing Xu <xuhanbing@huawei.com>
Cc: Li Zefan <lizefan@huawei.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/socket.c | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/net/socket.c b/net/socket.c
index 4980af97d87c..fc7ba8cabb72 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -2011,14 +2011,12 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
 	int err, ctl_len, total_len;
 
 	err = -EFAULT;
-	if (MSG_CMSG_COMPAT & flags) {
-		if (get_compat_msghdr(msg_sys, msg_compat))
-			return -EFAULT;
-	} else {
+	if (MSG_CMSG_COMPAT & flags)
+		err = get_compat_msghdr(msg_sys, msg_compat);
+	else
 		err = copy_msghdr_from_user(msg_sys, msg);
-		if (err)
-			return err;
-	}
+	if (err)
+		return err;
 
 	if (msg_sys->msg_iovlen > UIO_FASTIOV) {
 		err = -EMSGSIZE;
@@ -2223,14 +2221,12 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
 	struct sockaddr __user *uaddr;
 	int __user *uaddr_len;
 
-	if (MSG_CMSG_COMPAT & flags) {
-		if (get_compat_msghdr(msg_sys, msg_compat))
-			return -EFAULT;
-	} else {
+	if (MSG_CMSG_COMPAT & flags)
+		err = get_compat_msghdr(msg_sys, msg_compat);
+	else
 		err = copy_msghdr_from_user(msg_sys, msg);
-		if (err)
-			return err;
-	}
+	if (err)
+		return err;
 
 	if (msg_sys->msg_iovlen > UIO_FASTIOV) {
 		err = -EMSGSIZE;

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

* [PATCH 3.16.y-ckt 061/110] ALSA: hda - Add headphone quirk for Lifebook E752
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (59 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 060/110] net: socket: Fix the wrong returns for recvmsg and sendmsg Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 062/110] ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls Luis Henriques
                   ` (48 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Takashi Iwai, Luis Henriques

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

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

From: Takashi Iwai <tiwai@suse.de>

commit 88776f366ede7d9cdce60bd2c9753dd6d6fa8b77 upstream.

Fujitsu Lifebook E752 laptop needs a similar quirk done for Lifebook
T731.  Otherwise the headphone is always muted.

Reported-and-tested-by: Christian Weber <we_chris@hotmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/pci/hda/patch_realtek.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 7b16c8ca5faf..dfbe42dfd365 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4879,6 +4879,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
 	SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
 	SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
+	SND_PCI_QUIRK(0x10cf, 0x1757, "Lifebook E752", ALC269_FIXUP_LIFEBOOK_HP_PIN),
 	SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
 	SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE),
 	SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE),

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

* [PATCH 3.16.y-ckt 062/110] ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (60 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 061/110] ALSA: hda - Add headphone quirk for Lifebook E752 Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 063/110] thermal: armada: Update Armada 380 thermal sensor coefficients Luis Henriques
                   ` (47 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Axel Lin, Mark Brown, Luis Henriques

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

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

From: Axel Lin <axel.lin@ingics.com>

commit 545774bd6e1427d98dde77244329d2311c5eca6f upstream.

mc13xxx_reg_rmw() won't change any bit if passing 0 to the mask field.
Pass AUDIO_SSI_SEL instead of 0 for the mask field to set AUDIO_SSI_SEL
bit.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/soc/codecs/mc13783.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
index 9965277b595a..3e8642de299f 100644
--- a/sound/soc/codecs/mc13783.c
+++ b/sound/soc/codecs/mc13783.c
@@ -623,14 +623,14 @@ static int mc13783_probe(struct snd_soc_codec *codec)
 				AUDIO_SSI_SEL, 0);
 	else
 		mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_CODEC,
-				0, AUDIO_SSI_SEL);
+				AUDIO_SSI_SEL, AUDIO_SSI_SEL);
 
 	if (priv->dac_ssi_port == MC13783_SSI1_PORT)
 		mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC,
 				AUDIO_SSI_SEL, 0);
 	else
 		mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC,
-				0, AUDIO_SSI_SEL);
+				AUDIO_SSI_SEL, AUDIO_SSI_SEL);
 
 	return 0;
 }

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

* [PATCH 3.16.y-ckt 063/110] thermal: armada: Update Armada 380 thermal sensor coefficients
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (61 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 062/110] ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 064/110] mac80211: move WEP tailroom size check Luis Henriques
                   ` (46 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Nadav Haklai, Gregory CLEMENT, Eduardo Valentin, Luis Henriques

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

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

From: Nadav Haklai <nadavh@marvell.com>

commit efa86858e1d8970411a140fa1e0c4dd18a8f2a89 upstream.

Improve the Armada 380 thermal sensor accuracy by using updated formula.
The updated formula is:
Temperature[C degrees] = 0.4761 * tsen_vsen_out - 279.1

Signed-off-by: Nadav Haklai <nadavh@marvell.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/thermal/armada_thermal.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
index 9d1420acb391..e6f1acc71996 100644
--- a/drivers/thermal/armada_thermal.c
+++ b/drivers/thermal/armada_thermal.c
@@ -240,9 +240,9 @@ static const struct armada_thermal_data armada380_data = {
 	.is_valid_shift = 10,
 	.temp_shift = 0,
 	.temp_mask = 0x3ff,
-	.coef_b = 1169498786UL,
-	.coef_m = 2000000UL,
-	.coef_div = 4289,
+	.coef_b = 2931108200UL,
+	.coef_m = 5000000UL,
+	.coef_div = 10502,
 	.inverted = true,
 };
 

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

* [PATCH 3.16.y-ckt 064/110] mac80211: move WEP tailroom size check
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (62 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 063/110] thermal: armada: Update Armada 380 thermal sensor coefficients Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 065/110] KVM: MMU: fix smap permission check Luis Henriques
                   ` (45 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Janusz Dziedzic, Johannes Berg, Luis Henriques

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

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

From: Janusz Dziedzic <janusz.dziedzic@tieto.com>

commit 47b4e1fc4972cc43a19121bc2608a60aef3bf216 upstream.

Remove checking tailroom when adding IV as it uses only
headroom, and move the check to the ICV generation that
actually needs the tailroom.

In other case I hit such warning and datapath don't work,
when testing:
- IBSS + WEP
- ath9k with hw crypt enabled
- IPv6 data (ping6)

WARNING: CPU: 3 PID: 13301 at net/mac80211/wep.c:102 ieee80211_wep_add_iv+0x129/0x190 [mac80211]()
[...]
Call Trace:
[<ffffffff817bf491>] dump_stack+0x45/0x57
[<ffffffff8107746a>] warn_slowpath_common+0x8a/0xc0
[<ffffffff8107755a>] warn_slowpath_null+0x1a/0x20
[<ffffffffc09ae109>] ieee80211_wep_add_iv+0x129/0x190 [mac80211]
[<ffffffffc09ae7ab>] ieee80211_crypto_wep_encrypt+0x6b/0xd0 [mac80211]
[<ffffffffc09d3fb1>] invoke_tx_handlers+0xc51/0xf30 [mac80211]
[...]

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/mac80211/wep.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/net/mac80211/wep.c b/net/mac80211/wep.c
index 6ee2b5863572..f21b142dee1f 100644
--- a/net/mac80211/wep.c
+++ b/net/mac80211/wep.c
@@ -98,8 +98,7 @@ static u8 *ieee80211_wep_add_iv(struct ieee80211_local *local,
 
 	hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED);
 
-	if (WARN_ON(skb_tailroom(skb) < IEEE80211_WEP_ICV_LEN ||
-		    skb_headroom(skb) < IEEE80211_WEP_IV_LEN))
+	if (WARN_ON(skb_headroom(skb) < IEEE80211_WEP_IV_LEN))
 		return NULL;
 
 	hdrlen = ieee80211_hdrlen(hdr->frame_control);
@@ -169,6 +168,9 @@ int ieee80211_wep_encrypt(struct ieee80211_local *local,
 	size_t len;
 	u8 rc4key[3 + WLAN_KEY_LEN_WEP104];
 
+	if (WARN_ON(skb_tailroom(skb) < IEEE80211_WEP_ICV_LEN))
+		return -1;
+
 	iv = ieee80211_wep_add_iv(local, skb, keylen, keyidx);
 	if (!iv)
 		return -1;

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

* [PATCH 3.16.y-ckt 065/110] KVM: MMU: fix smap permission check
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (63 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 064/110] mac80211: move WEP tailroom size check Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 066/110] KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages Luis Henriques
                   ` (44 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Xiao Guangrong, Paolo Bonzini, Luis Henriques

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

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

From: Xiao Guangrong <guangrong.xiao@linux.intel.com>

commit 7cbeed9bce7580479bb97457dad220cb3594b875 upstream.

Current permission check assumes that RSVD bit in PFEC is always zero,
however, it is not true since MMIO #PF will use it to quickly identify
MMIO access

Fix it by clearing the bit if walking guest page table is needed

Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/kvm/mmu.h         | 2 ++
 arch/x86/kvm/paging_tmpl.h | 7 +++++++
 2 files changed, 9 insertions(+)

diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
index b982112d2ca5..6baa9221829e 100644
--- a/arch/x86/kvm/mmu.h
+++ b/arch/x86/kvm/mmu.h
@@ -174,6 +174,8 @@ static inline bool permission_fault(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
 	int index = (pfec >> 1) +
 		    (smap >> (X86_EFLAGS_AC_BIT - PFERR_RSVD_BIT + 1));
 
+	WARN_ON(pfec & PFERR_RSVD_MASK);
+
 	return (mmu->permissions[index] >> pte_access) & 1;
 }
 
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index 410776528265..484711d2c71f 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -706,6 +706,13 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr, u32 error_code,
 					      mmu_is_nested(vcpu));
 		if (likely(r != RET_MMIO_PF_INVALID))
 			return r;
+
+		/*
+		 * page fault with PFEC.RSVD  = 1 is caused by shadow
+		 * page fault, should not be used to walk guest page
+		 * table.
+		 */
+		error_code &= ~PFERR_RSVD_MASK;
 	};
 
 	r = mmu_topup_memory_caches(vcpu);

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

* [PATCH 3.16.y-ckt 066/110] KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (64 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 065/110] KVM: MMU: fix smap permission check Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 067/110] KVM: MMU: fix SMAP virtualization Luis Henriques
                   ` (43 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Paolo Bonzini, Luis Henriques

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

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

From: Paolo Bonzini <pbonzini@redhat.com>

commit 898761158be7682082955e3efa4ad24725305fc7 upstream.

smep_andnot_wp is initialized in kvm_init_shadow_mmu and shadow pages
should not be reused for different values of it.  Thus, it has to be
added to the mask in kvm_mmu_pte_write.

Reviewed-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/kvm/mmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 1bbf6861507e..f1a1bb45a702 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -4110,7 +4110,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
 	++vcpu->kvm->stat.mmu_pte_write;
 	kvm_mmu_audit(vcpu, AUDIT_PRE_PTE_WRITE);
 
-	mask.cr0_wp = mask.cr4_pae = mask.nxe = 1;
+	mask.cr0_wp = mask.cr4_pae = mask.nxe = mask.smep_andnot_wp = 1;
 	for_each_gfn_indirect_valid_sp(vcpu->kvm, sp, gfn) {
 		if (detect_write_misaligned(sp, gpa, bytes) ||
 		      detect_write_flooding(sp)) {

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

* [PATCH 3.16.y-ckt 067/110] KVM: MMU: fix SMAP virtualization
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (65 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 066/110] KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 068/110] storvsc: Set the SRB flags correctly when no data transfer is needed Luis Henriques
                   ` (42 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Xiao Guangrong, Paolo Bonzini, Luis Henriques

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

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

From: Xiao Guangrong <guangrong.xiao@linux.intel.com>

commit 0be0226f07d14b153a5eedf2bb86e1eb7dcefab5 upstream.

KVM may turn a user page to a kernel page when kernel writes a readonly
user page if CR0.WP = 1. This shadow page entry will be reused after
SMAP is enabled so that kernel is allowed to access this user page

Fix it by setting SMAP && !CR0.WP into shadow page's role and reset mmu
once CR4.SMAP is updated

Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 Documentation/virtual/kvm/mmu.txt | 18 ++++++++++++++----
 arch/x86/include/asm/kvm_host.h   |  1 +
 arch/x86/kvm/mmu.c                | 16 ++++++++++++----
 arch/x86/kvm/mmu.h                |  2 --
 arch/x86/kvm/x86.c                |  8 +++-----
 5 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/Documentation/virtual/kvm/mmu.txt b/Documentation/virtual/kvm/mmu.txt
index 53838d9c6295..c59bd9bc41ef 100644
--- a/Documentation/virtual/kvm/mmu.txt
+++ b/Documentation/virtual/kvm/mmu.txt
@@ -169,6 +169,10 @@ Shadow pages contain the following information:
     Contains the value of cr4.smep && !cr0.wp for which the page is valid
     (pages for which this is true are different from other pages; see the
     treatment of cr0.wp=0 below).
+  role.smap_andnot_wp:
+    Contains the value of cr4.smap && !cr0.wp for which the page is valid
+    (pages for which this is true are different from other pages; see the
+    treatment of cr0.wp=0 below).
   gfn:
     Either the guest page table containing the translations shadowed by this
     page, or the base page frame for linear translations.  See role.direct.
@@ -344,10 +348,16 @@ on fault type:
 
 (user write faults generate a #PF)
 
-In the first case there is an additional complication if CR4.SMEP is
-enabled: since we've turned the page into a kernel page, the kernel may now
-execute it.  We handle this by also setting spte.nx.  If we get a user
-fetch or read fault, we'll change spte.u=1 and spte.nx=gpte.nx back.
+In the first case there are two additional complications:
+- if CR4.SMEP is enabled: since we've turned the page into a kernel page,
+  the kernel may now execute it.  We handle this by also setting spte.nx.
+  If we get a user fetch or read fault, we'll change spte.u=1 and
+  spte.nx=gpte.nx back.
+- if CR4.SMAP is disabled: since the page has been changed to a kernel
+  page, it can not be reused when CR4.SMAP is enabled. We set
+  CR4.SMAP && !CR0.WP into shadow page's role to avoid this case. Note,
+  here we do not care the case that CR4.SMAP is enabled since KVM will
+  directly inject #PF to guest due to failed permission check.
 
 To prevent an spte that was converted into a kernel page with cr0.wp=0
 from being written by the kernel after cr0.wp has changed to 1, we make
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 3d9bcc6b9d99..554dcdf7ad82 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -203,6 +203,7 @@ union kvm_mmu_page_role {
 		unsigned nxe:1;
 		unsigned cr0_wp:1;
 		unsigned smep_andnot_wp:1;
+		unsigned smap_andnot_wp:1;
 	};
 };
 
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index f1a1bb45a702..458ae4d1324d 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -3609,8 +3609,8 @@ static void reset_rsvds_bits_mask_ept(struct kvm_vcpu *vcpu,
 	}
 }
 
-void update_permission_bitmask(struct kvm_vcpu *vcpu,
-		struct kvm_mmu *mmu, bool ept)
+static void update_permission_bitmask(struct kvm_vcpu *vcpu,
+				      struct kvm_mmu *mmu, bool ept)
 {
 	unsigned bit, byte, pfec;
 	u8 map;
@@ -3791,6 +3791,7 @@ static void init_kvm_tdp_mmu(struct kvm_vcpu *vcpu)
 void kvm_init_shadow_mmu(struct kvm_vcpu *vcpu, struct kvm_mmu *context)
 {
 	bool smep = kvm_read_cr4_bits(vcpu, X86_CR4_SMEP);
+	bool smap = kvm_read_cr4_bits(vcpu, X86_CR4_SMAP);
 	ASSERT(vcpu);
 	ASSERT(!VALID_PAGE(vcpu->arch.mmu.root_hpa));
 
@@ -3808,6 +3809,8 @@ void kvm_init_shadow_mmu(struct kvm_vcpu *vcpu, struct kvm_mmu *context)
 	vcpu->arch.mmu.base_role.cr0_wp  = is_write_protection(vcpu);
 	vcpu->arch.mmu.base_role.smep_andnot_wp
 		= smep && !is_write_protection(vcpu);
+	context->base_role.smap_andnot_wp
+		= smap && !is_write_protection(vcpu);
 }
 EXPORT_SYMBOL_GPL(kvm_init_shadow_mmu);
 
@@ -4079,12 +4082,18 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
 		       const u8 *new, int bytes)
 {
 	gfn_t gfn = gpa >> PAGE_SHIFT;
-	union kvm_mmu_page_role mask = { .word = 0 };
 	struct kvm_mmu_page *sp;
 	LIST_HEAD(invalid_list);
 	u64 entry, gentry, *spte;
 	int npte;
 	bool remote_flush, local_flush, zap_page;
+	union kvm_mmu_page_role mask = (union kvm_mmu_page_role) {
+		.cr0_wp = 1,
+		.cr4_pae = 1,
+		.nxe = 1,
+		.smep_andnot_wp = 1,
+		.smap_andnot_wp = 1,
+	};
 
 	/*
 	 * If we don't have indirect shadow pages, it means no page is
@@ -4110,7 +4119,6 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
 	++vcpu->kvm->stat.mmu_pte_write;
 	kvm_mmu_audit(vcpu, AUDIT_PRE_PTE_WRITE);
 
-	mask.cr0_wp = mask.cr4_pae = mask.nxe = mask.smep_andnot_wp = 1;
 	for_each_gfn_indirect_valid_sp(vcpu->kvm, sp, gfn) {
 		if (detect_write_misaligned(sp, gpa, bytes) ||
 		      detect_write_flooding(sp)) {
diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
index 6baa9221829e..1d4548867c86 100644
--- a/arch/x86/kvm/mmu.h
+++ b/arch/x86/kvm/mmu.h
@@ -79,8 +79,6 @@ int handle_mmio_page_fault_common(struct kvm_vcpu *vcpu, u64 addr, bool direct);
 void kvm_init_shadow_mmu(struct kvm_vcpu *vcpu, struct kvm_mmu *context);
 void kvm_init_shadow_ept_mmu(struct kvm_vcpu *vcpu, struct kvm_mmu *context,
 		bool execonly);
-void update_permission_bitmask(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
-		bool ept);
 
 static inline unsigned int kvm_mmu_available_pages(struct kvm *kvm)
 {
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 6018e319d7fb..e05ef62906f4 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -648,8 +648,9 @@ EXPORT_SYMBOL_GPL(kvm_set_xcr);
 int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
 {
 	unsigned long old_cr4 = kvm_read_cr4(vcpu);
-	unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE |
-				   X86_CR4_PAE | X86_CR4_SMEP;
+	unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE |
+				   X86_CR4_SMEP | X86_CR4_SMAP;
+
 	if (cr4 & CR4_RESERVED_BITS)
 		return 1;
 
@@ -690,9 +691,6 @@ int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
 	    (!(cr4 & X86_CR4_PCIDE) && (old_cr4 & X86_CR4_PCIDE)))
 		kvm_mmu_reset_context(vcpu);
 
-	if ((cr4 ^ old_cr4) & X86_CR4_SMAP)
-		update_permission_bitmask(vcpu, vcpu->arch.walk_mmu, false);
-
 	if ((cr4 ^ old_cr4) & X86_CR4_OSXSAVE)
 		kvm_update_cpuid(vcpu);
 

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

* [PATCH 3.16.y-ckt 068/110] storvsc: Set the SRB flags correctly when no data transfer is needed
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (66 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 067/110] KVM: MMU: fix SMAP virtualization Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 069/110] ASoC: wm8960: fix "RINPUT3" audio route error Luis Henriques
                   ` (41 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: K. Y. Srinivasan, James Bottomley, Luis Henriques

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

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

From: "K. Y. Srinivasan" <kys@microsoft.com>

commit dc45708ca9988656d706940df5fd102672c5de92 upstream.

Set the SRB flags correctly when there is no data transfer.  Without this
change some IHV drivers will fail valid commands such as TEST_UNIT_READY.

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: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/scsi/storvsc_drv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 97892f258043..3bb6646bb406 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -1625,8 +1625,7 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
 		break;
 	default:
 		vm_srb->data_in = UNKNOWN_TYPE;
-		vm_srb->win8_extension.srb_flags |= (SRB_FLAGS_DATA_IN |
-						     SRB_FLAGS_DATA_OUT);
+		vm_srb->win8_extension.srb_flags |= SRB_FLAGS_NO_DATA_TRANSFER;
 		break;
 	}
 

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

* [PATCH 3.16.y-ckt 069/110] ASoC: wm8960: fix "RINPUT3" audio route error
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (67 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 068/110] storvsc: Set the SRB flags correctly when no data transfer is needed Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 070/110] ASoC: wm8994: correct BCLK DIV 348 to 384 Luis Henriques
                   ` (40 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Zidan Wang, Mark Brown, Luis Henriques

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

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

From: Zidan Wang <zidan.wang@freescale.com>

commit 85e36a1f4a735d991ba5106781ea48e89a0b8901 upstream.

It should be "RINPUT3" instead of "LINPUT3" route to "Right Input
Mixer".

Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/soc/codecs/wm8960.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index de65ad096248..1f5a5eebfd67 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -392,7 +392,7 @@ static const struct snd_soc_dapm_route audio_paths[] = {
 	{ "Right Input Mixer", "Boost Switch", "Right Boost Mixer", },
 	{ "Right Input Mixer", NULL, "RINPUT1", },  /* Really Boost Switch */
 	{ "Right Input Mixer", NULL, "RINPUT2" },
-	{ "Right Input Mixer", NULL, "LINPUT3" },
+	{ "Right Input Mixer", NULL, "RINPUT3" },
 
 	{ "Left ADC", NULL, "Left Input Mixer" },
 	{ "Right ADC", NULL, "Right Input Mixer" },

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

* [PATCH 3.16.y-ckt 070/110] ASoC: wm8994: correct BCLK DIV 348 to 384
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (68 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 069/110] ASoC: wm8960: fix "RINPUT3" audio route error Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 071/110] Input: elantech - fix semi-mt protocol for v3 HW Luis Henriques
                   ` (39 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Zidan Wang, Mark Brown, Luis Henriques

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

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

From: Zidan Wang <zidan.wang@freescale.com>

commit 17fc2e0a3db11889e942c5ab15a1fcb876638f25 upstream.

According to the RM of wm8958, BCLK DIV 348 doesn't exist, correct it
to 384.

Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/soc/codecs/wm8994.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 9719d3ca8e47..d54c10e4fa90 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -2753,7 +2753,7 @@ static struct {
 };
 
 static int fs_ratios[] = {
-	64, 128, 192, 256, 348, 512, 768, 1024, 1408, 1536
+	64, 128, 192, 256, 384, 512, 768, 1024, 1408, 1536
 };
 
 static int bclk_divs[] = {

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

* [PATCH 3.16.y-ckt 071/110] Input: elantech - fix semi-mt protocol for v3 HW
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (69 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 070/110] ASoC: wm8994: correct BCLK DIV 348 to 384 Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 072/110] powerpc: Align TOC to 256 bytes Luis Henriques
                   ` (38 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Benjamin Tissoires, Dmitry Torokhov, Luis Henriques

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

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

From: Benjamin Tissoires <benjamin.tissoires@redhat.com>

commit 3c0213d17a09601e0c6c0ae0e27caf70d988290f upstream.

When the v3 hardware sees more than one finger, it uses the semi-mt
protocol to report the touches. However, it currently works when
num_fingers is 0, 1 or 2, but when it is 3 and above, it sends only 1
finger as if num_fingers was 1.

This confuses userspace which knows how to deal with extra fingers
when all the slots are used, but not when some are missing.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90101

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/input/mouse/elantech.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index b865f55e4b62..b94686f62eb8 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -314,7 +314,7 @@ static void elantech_report_semi_mt_data(struct input_dev *dev,
 					 unsigned int x2, unsigned int y2)
 {
 	elantech_set_slot(dev, 0, num_fingers != 0, x1, y1);
-	elantech_set_slot(dev, 1, num_fingers == 2, x2, y2);
+	elantech_set_slot(dev, 1, num_fingers >= 2, x2, y2);
 }
 
 /*

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

* [PATCH 3.16.y-ckt 072/110] powerpc: Align TOC to 256 bytes
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (70 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 071/110] Input: elantech - fix semi-mt protocol for v3 HW Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 073/110] ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 Luis Henriques
                   ` (37 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Anton Blanchard, Michael Ellerman, Luis Henriques

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

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

From: Anton Blanchard <anton@samba.org>

commit 5e95235ccd5442d4a4fe11ec4eb99ba1b7959368 upstream.

Recent toolchains force the TOC to be 256 byte aligned. We need
to enforce this alignment in our linker script, otherwise pointers
to our TOC variables (__toc_start, __prom_init_toc_start) could
be incorrect.

If they are bad, we die a few hundred instructions into boot.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/powerpc/kernel/vmlinux.lds.S | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index f096e72262f4..1db685104ffc 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -213,6 +213,7 @@ SECTIONS
 		*(.opd)
 	}
 
+	. = ALIGN(256);
 	.got : AT(ADDR(.got) - LOAD_OFFSET) {
 		__toc_start = .;
 #ifndef CONFIG_RELOCATABLE

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

* [PATCH 3.16.y-ckt 073/110] ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (71 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 072/110] powerpc: Align TOC to 256 bytes Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 074/110] ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450 Luis Henriques
                   ` (36 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: David Henningsson, Takashi Iwai, Luis Henriques

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

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

From: David Henningsson <david.henningsson@canonical.com>

commit 6ffc0898b29a2811a6c0569c5dd9b581980110df upstream.

This patch adds support for Conexant HD Audio codecs
CX20721, CX20722, CX20723 and CX20724.

BugLink: https://bugs.launchpad.net/bugs/1454656
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/pci/hda/patch_conexant.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index c7c3c153be31..db4a157bfc1b 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -3582,6 +3582,14 @@ static const struct hda_codec_preset snd_hda_preset_conexant[] = {
 	  .patch = patch_conexant_auto },
 	{ .id = 0x14f150b9, .name = "CX20665",
 	  .patch = patch_conexant_auto },
+	{ .id = 0x14f150f1, .name = "CX20721",
+	  .patch = patch_conexant_auto },
+	{ .id = 0x14f150f2, .name = "CX20722",
+	  .patch = patch_conexant_auto },
+	{ .id = 0x14f150f3, .name = "CX20723",
+	  .patch = patch_conexant_auto },
+	{ .id = 0x14f150f4, .name = "CX20724",
+	  .patch = patch_conexant_auto },
 	{ .id = 0x14f1510f, .name = "CX20751/2",
 	  .patch = patch_conexant_auto },
 	{ .id = 0x14f15110, .name = "CX20751/2",
@@ -3616,6 +3624,10 @@ MODULE_ALIAS("snd-hda-codec-id:14f150ab");
 MODULE_ALIAS("snd-hda-codec-id:14f150ac");
 MODULE_ALIAS("snd-hda-codec-id:14f150b8");
 MODULE_ALIAS("snd-hda-codec-id:14f150b9");
+MODULE_ALIAS("snd-hda-codec-id:14f150f1");
+MODULE_ALIAS("snd-hda-codec-id:14f150f2");
+MODULE_ALIAS("snd-hda-codec-id:14f150f3");
+MODULE_ALIAS("snd-hda-codec-id:14f150f4");
 MODULE_ALIAS("snd-hda-codec-id:14f1510f");
 MODULE_ALIAS("snd-hda-codec-id:14f15110");
 MODULE_ALIAS("snd-hda-codec-id:14f15111");

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

* [PATCH 3.16.y-ckt 074/110] ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (72 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 073/110] ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 075/110] mmc: atmel-mci: fix bad variable type for clkdiv Luis Henriques
                   ` (35 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Ansgar Hegerfeld, Takashi Iwai, Luis Henriques

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

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

From: Ansgar Hegerfeld <linux@hegerfeld.org>

commit 09ea997677cd44ebe7f42573119aaf46b775c683 upstream.

The Lenovo ThinkPad L450 requires the ALC292_FIXUP_TPT440_DOCK fix in
order to get sound output on the docking stations audio port.

This patch was tested using a ThinkPad L450 (20DSS00B00) using kernel
4.0.3 and a ThinkPad Pro Dock.

Signed-off-by: Ansgar Hegerfeld <linux@hegerfeld.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/pci/hda/patch_realtek.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index dfbe42dfd365..e4239715a5e6 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4906,6 +4906,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	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, 0x503c, "Thinkpad L450", 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),
 	SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),

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

* [PATCH 3.16.y-ckt 075/110] mmc: atmel-mci: fix bad variable type for clkdiv
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (73 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 074/110] ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450 Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 076/110] sd: Disable support for 256 byte/sector disks Luis Henriques
                   ` (34 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Ludovic Desroches, Ulf Hansson, Luis Henriques

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

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

From: Ludovic Desroches <ludovic.desroches@atmel.com>

commit 60c8f783a18feb95ad967c87e9660caf09fb4700 upstream.

clkdiv is declared as an u32 but it can be set to a negative value
causing a huge divisor value. Change its type to int to avoid this case.

Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/mmc/host/atmel-mci.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index bb585d940901..6be0878893ad 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -1294,7 +1294,7 @@ static void atmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 
 	if (ios->clock) {
 		unsigned int clock_min = ~0U;
-		u32 clkdiv;
+		int clkdiv;
 
 		clk_prepare(host->mck);
 		unprepare_clk = true;
@@ -1323,7 +1323,12 @@ static void atmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 		/* Calculate clock divider */
 		if (host->caps.has_odd_clk_div) {
 			clkdiv = DIV_ROUND_UP(host->bus_hz, clock_min) - 2;
-			if (clkdiv > 511) {
+			if (clkdiv < 0) {
+				dev_warn(&mmc->class_dev,
+					 "clock %u too fast; using %lu\n",
+					 clock_min, host->bus_hz / 2);
+				clkdiv = 0;
+			} else if (clkdiv > 511) {
 				dev_warn(&mmc->class_dev,
 				         "clock %u too slow; using %lu\n",
 				         clock_min, host->bus_hz / (511 + 2));

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

* [PATCH 3.16.y-ckt 076/110] sd: Disable support for 256 byte/sector disks
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (74 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 075/110] mmc: atmel-mci: fix bad variable type for clkdiv Luis Henriques
@ 2015-06-05 13:57 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 077/110] xen/events: don't bind non-percpu VIRQs with percpu chip Luis Henriques
                   ` (33 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:57 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Mark Hounschell, Hannes Reinecke, James Bottomley, Luis Henriques

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

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

From: Mark Hounschell <dmarkh@cfl.rr.com>

commit 74856fbf441929918c49ff262ace9835048e4e6a upstream.

256 bytes per sector support has been broken since 2.6.X,
and no-one stepped up to fix this.
So disable support for it.

Signed-off-by: Mark Hounschell <dmarkh@cfl.rr.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/scsi/sd.c | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index ed2e99eca336..2e4708dff208 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1585,6 +1585,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
 {
 	u64 start_lba = blk_rq_pos(scmd->request);
 	u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512);
+	u64 factor = scmd->device->sector_size / 512;
 	u64 bad_lba;
 	int info_valid;
 	/*
@@ -1606,16 +1607,9 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
 	if (scsi_bufflen(scmd) <= scmd->device->sector_size)
 		return 0;
 
-	if (scmd->device->sector_size < 512) {
-		/* only legitimate sector_size here is 256 */
-		start_lba <<= 1;
-		end_lba <<= 1;
-	} else {
-		/* be careful ... don't want any overflows */
-		unsigned int factor = scmd->device->sector_size / 512;
-		do_div(start_lba, factor);
-		do_div(end_lba, factor);
-	}
+	/* be careful ... don't want any overflows */
+	do_div(start_lba, factor);
+	do_div(end_lba, factor);
 
 	/* The bad lba was reported incorrectly, we have no idea where
 	 * the error is.
@@ -2182,8 +2176,7 @@ got_data:
 	if (sector_size != 512 &&
 	    sector_size != 1024 &&
 	    sector_size != 2048 &&
-	    sector_size != 4096 &&
-	    sector_size != 256) {
+	    sector_size != 4096) {
 		sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
 			  sector_size);
 		/*
@@ -2234,8 +2227,6 @@ got_data:
 		sdkp->capacity <<= 2;
 	else if (sector_size == 1024)
 		sdkp->capacity <<= 1;
-	else if (sector_size == 256)
-		sdkp->capacity >>= 1;
 
 	blk_queue_physical_block_size(sdp->request_queue,
 				      sdkp->physical_block_size);

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

* [PATCH 3.16.y-ckt 077/110] xen/events: don't bind non-percpu VIRQs with percpu chip
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (75 preceding siblings ...)
  2015-06-05 13:57 ` [PATCH 3.16.y-ckt 076/110] sd: Disable support for 256 byte/sector disks Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 078/110] libceph: request a new osdmap if lingering request maps to no osd Luis Henriques
                   ` (32 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: David Vrabel, Luis Henriques

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

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

From: David Vrabel <david.vrabel@citrix.com>

commit 77bb3dfdc0d554befad58fdefbc41be5bc3ed38a upstream.

A non-percpu VIRQ (e.g., VIRQ_CONSOLE) may be freed on a different
VCPU than it is bound to.  This can result in a race between
handle_percpu_irq() and removing the action in __free_irq() because
handle_percpu_irq() does not take desc->lock.  The interrupt handler
sees a NULL action and oopses.

Only use the percpu chip/handler for per-CPU VIRQs (like VIRQ_TIMER).

  # cat /proc/interrupts | grep virq
   40:      87246          0  xen-percpu-virq      timer0
   44:          0          0  xen-percpu-virq      debug0
   47:          0      20995  xen-percpu-virq      timer1
   51:          0          0  xen-percpu-virq      debug1
   69:          0          0   xen-dyn-virq      xen-pcpu
   74:          0          0   xen-dyn-virq      mce
   75:         29          0   xen-dyn-virq      hvc_console

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/tty/hvc/hvc_xen.c        |  2 +-
 drivers/xen/events/events_base.c | 12 ++++++++----
 include/xen/events.h             |  2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/tty/hvc/hvc_xen.c b/drivers/tty/hvc/hvc_xen.c
index 8eb65f26fcae..59a7da7c6c5e 100644
--- a/drivers/tty/hvc/hvc_xen.c
+++ b/drivers/tty/hvc/hvc_xen.c
@@ -289,7 +289,7 @@ static int xen_initial_domain_console_init(void)
 			return -ENOMEM;
 	}
 
-	info->irq = bind_virq_to_irq(VIRQ_CONSOLE, 0);
+	info->irq = bind_virq_to_irq(VIRQ_CONSOLE, 0, false);
 	info->vtermno = HVC_COOKIE;
 
 	spin_lock(&xencons_lock);
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index 31ac2eec06e4..bb2aab85f8e9 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -956,7 +956,7 @@ unsigned xen_evtchn_nr_channels(void)
 }
 EXPORT_SYMBOL_GPL(xen_evtchn_nr_channels);
 
-int bind_virq_to_irq(unsigned int virq, unsigned int cpu)
+int bind_virq_to_irq(unsigned int virq, unsigned int cpu, bool percpu)
 {
 	struct evtchn_bind_virq bind_virq;
 	int evtchn, irq, ret;
@@ -970,8 +970,12 @@ int bind_virq_to_irq(unsigned int virq, unsigned int cpu)
 		if (irq < 0)
 			goto out;
 
-		irq_set_chip_and_handler_name(irq, &xen_percpu_chip,
-					      handle_percpu_irq, "virq");
+		if (percpu)
+			irq_set_chip_and_handler_name(irq, &xen_percpu_chip,
+						      handle_percpu_irq, "virq");
+		else
+			irq_set_chip_and_handler_name(irq, &xen_dynamic_chip,
+						      handle_edge_irq, "virq");
 
 		bind_virq.virq = virq;
 		bind_virq.vcpu = cpu;
@@ -1061,7 +1065,7 @@ int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu,
 {
 	int irq, retval;
 
-	irq = bind_virq_to_irq(virq, cpu);
+	irq = bind_virq_to_irq(virq, cpu, irqflags & IRQF_PERCPU);
 	if (irq < 0)
 		return irq;
 	retval = request_irq(irq, handler, irqflags, devname, dev_id);
diff --git a/include/xen/events.h b/include/xen/events.h
index 8bee7a75e850..7c69e1d650e6 100644
--- a/include/xen/events.h
+++ b/include/xen/events.h
@@ -17,7 +17,7 @@ int bind_evtchn_to_irqhandler(unsigned int evtchn,
 			      irq_handler_t handler,
 			      unsigned long irqflags, const char *devname,
 			      void *dev_id);
-int bind_virq_to_irq(unsigned int virq, unsigned int cpu);
+int bind_virq_to_irq(unsigned int virq, unsigned int cpu, bool percpu);
 int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu,
 			    irq_handler_t handler,
 			    unsigned long irqflags, const char *devname,

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

* [PATCH 3.16.y-ckt 078/110] libceph: request a new osdmap if lingering request maps to no osd
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (76 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 077/110] xen/events: don't bind non-percpu VIRQs with percpu chip Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 079/110] crypto: s390/ghash - Fix incorrect ghash icv buffer handling Luis Henriques
                   ` (31 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Ilya Dryomov, Luis Henriques

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

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

From: Ilya Dryomov <idryomov@gmail.com>

commit b0494532214bdfbf241e94fabab5dd46f7b82631 upstream.

This commit does two things.  First, if there are any homeless
lingering requests, we now request a new osdmap even if the osdmap that
is being processed brought no changes, i.e. if a given lingering
request turned homeless in one of the previous epochs and remained
homeless in the current epoch.  Not doing so leaves us with a stale
osdmap and as a result we may miss our window for reestablishing the
watch and lose notifies.

MON=1 OSD=1:

    # cat linger-needmap.sh
    #!/bin/bash
    rbd create --size 1 test
    DEV=$(rbd map test)
    ceph osd out 0
    rbd map dne/dne # obtain a new osdmap as a side effect (!)
    sleep 1
    ceph osd in 0
    rbd resize --size 2 test
    # rbd info test | grep size -> 2M
    # blockdev --getsize $DEV -> 1M

N.B.: Not obtaining a new osdmap in between "osd out" and "osd in"
above is enough to make it miss that resize notify, but that is a
bug^Wlimitation of ceph watch/notify v1.

Second, homeless lingering requests are now kicked just like those
lingering requests whose mapping has changed.  This is mainly to
recognize that a homeless lingering request makes no sense and to
preserve the invariant that a registered lingering request is not
sitting on any of r_req_lru_item lists.  This spares us a WARN_ON,
which commit ba9d114ec557 ("libceph: clear r_req_lru_item in
__unregister_linger_request()") tried to fix the _wrong_ way.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/ceph/osd_client.c | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 8cbd41f5c424..446548de09f8 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -1959,20 +1959,29 @@ static void kick_requests(struct ceph_osd_client *osdc, bool force_resend,
 		err = __map_request(osdc, req,
 				    force_resend || force_resend_writes);
 		dout("__map_request returned %d\n", err);
-		if (err == 0)
-			continue;  /* no change and no osd was specified */
 		if (err < 0)
 			continue;  /* hrm! */
-		if (req->r_osd == NULL) {
-			dout("tid %llu maps to no valid osd\n", req->r_tid);
-			needmap++;  /* request a newer map */
-			continue;
-		}
+		if (req->r_osd == NULL || err > 0) {
+			if (req->r_osd == NULL) {
+				dout("lingering %p tid %llu maps to no osd\n",
+				     req, req->r_tid);
+				/*
+				 * A homeless lingering request makes
+				 * no sense, as it's job is to keep
+				 * a particular OSD connection open.
+				 * Request a newer map and kick the
+				 * request, knowing that it won't be
+				 * resent until we actually get a map
+				 * that can tell us where to send it.
+				 */
+				needmap++;
+			}
 
-		dout("kicking lingering %p tid %llu osd%d\n", req, req->r_tid,
-		     req->r_osd ? req->r_osd->o_osd : -1);
-		__register_request(osdc, req);
-		__unregister_linger_request(osdc, req);
+			dout("kicking lingering %p tid %llu osd%d\n", req,
+			     req->r_tid, req->r_osd ? req->r_osd->o_osd : -1);
+			__register_request(osdc, req);
+			__unregister_linger_request(osdc, req);
+		}
 	}
 	reset_changed_osds(osdc);
 	mutex_unlock(&osdc->request_mutex);

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

* [PATCH 3.16.y-ckt 079/110] crypto: s390/ghash - Fix incorrect ghash icv buffer handling.
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (77 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 078/110] libceph: request a new osdmap if lingering request maps to no osd Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 080/110] ipvs: fix memory leak in ip_vs_ctl.c Luis Henriques
                   ` (30 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Harald Freudenberger, Gerald Schaefer, Herbert Xu, Luis Henriques

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

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

From: Harald Freudenberger <freude@linux.vnet.ibm.com>

commit a1cae34e23b1293eccbcc8ee9b39298039c3952a upstream.

Multitheaded tests showed that the icv buffer in the current ghash
implementation is not handled correctly. A move of this working ghash
buffer value to the descriptor context fixed this. Code is tested and
verified with an multithreaded application via af_alg interface.

Signed-off-by: Harald Freudenberger <freude@linux.vnet.ibm.com>
Signed-off-by: Gerald Schaefer <geraldsc@linux.vnet.ibm.com>
Reported-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/s390/crypto/ghash_s390.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/arch/s390/crypto/ghash_s390.c b/arch/s390/crypto/ghash_s390.c
index 7940dc90e80b..b258110da952 100644
--- a/arch/s390/crypto/ghash_s390.c
+++ b/arch/s390/crypto/ghash_s390.c
@@ -16,11 +16,12 @@
 #define GHASH_DIGEST_SIZE	16
 
 struct ghash_ctx {
-	u8 icv[16];
-	u8 key[16];
+	u8 key[GHASH_BLOCK_SIZE];
 };
 
 struct ghash_desc_ctx {
+	u8 icv[GHASH_BLOCK_SIZE];
+	u8 key[GHASH_BLOCK_SIZE];
 	u8 buffer[GHASH_BLOCK_SIZE];
 	u32 bytes;
 };
@@ -28,8 +29,10 @@ struct ghash_desc_ctx {
 static int ghash_init(struct shash_desc *desc)
 {
 	struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
+	struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
 
 	memset(dctx, 0, sizeof(*dctx));
+	memcpy(dctx->key, ctx->key, GHASH_BLOCK_SIZE);
 
 	return 0;
 }
@@ -45,7 +48,6 @@ static int ghash_setkey(struct crypto_shash *tfm,
 	}
 
 	memcpy(ctx->key, key, GHASH_BLOCK_SIZE);
-	memset(ctx->icv, 0, GHASH_BLOCK_SIZE);
 
 	return 0;
 }
@@ -54,7 +56,6 @@ static int ghash_update(struct shash_desc *desc,
 			 const u8 *src, unsigned int srclen)
 {
 	struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
-	struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
 	unsigned int n;
 	u8 *buf = dctx->buffer;
 	int ret;
@@ -70,7 +71,7 @@ static int ghash_update(struct shash_desc *desc,
 		src += n;
 
 		if (!dctx->bytes) {
-			ret = crypt_s390_kimd(KIMD_GHASH, ctx, buf,
+			ret = crypt_s390_kimd(KIMD_GHASH, dctx, buf,
 					      GHASH_BLOCK_SIZE);
 			if (ret != GHASH_BLOCK_SIZE)
 				return -EIO;
@@ -79,7 +80,7 @@ static int ghash_update(struct shash_desc *desc,
 
 	n = srclen & ~(GHASH_BLOCK_SIZE - 1);
 	if (n) {
-		ret = crypt_s390_kimd(KIMD_GHASH, ctx, src, n);
+		ret = crypt_s390_kimd(KIMD_GHASH, dctx, src, n);
 		if (ret != n)
 			return -EIO;
 		src += n;
@@ -94,7 +95,7 @@ static int ghash_update(struct shash_desc *desc,
 	return 0;
 }
 
-static int ghash_flush(struct ghash_ctx *ctx, struct ghash_desc_ctx *dctx)
+static int ghash_flush(struct ghash_desc_ctx *dctx)
 {
 	u8 *buf = dctx->buffer;
 	int ret;
@@ -104,24 +105,24 @@ static int ghash_flush(struct ghash_ctx *ctx, struct ghash_desc_ctx *dctx)
 
 		memset(pos, 0, dctx->bytes);
 
-		ret = crypt_s390_kimd(KIMD_GHASH, ctx, buf, GHASH_BLOCK_SIZE);
+		ret = crypt_s390_kimd(KIMD_GHASH, dctx, buf, GHASH_BLOCK_SIZE);
 		if (ret != GHASH_BLOCK_SIZE)
 			return -EIO;
+
+		dctx->bytes = 0;
 	}
 
-	dctx->bytes = 0;
 	return 0;
 }
 
 static int ghash_final(struct shash_desc *desc, u8 *dst)
 {
 	struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
-	struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
 	int ret;
 
-	ret = ghash_flush(ctx, dctx);
+	ret = ghash_flush(dctx);
 	if (!ret)
-		memcpy(dst, ctx->icv, GHASH_BLOCK_SIZE);
+		memcpy(dst, dctx->icv, GHASH_BLOCK_SIZE);
 	return ret;
 }
 

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

* [PATCH 3.16.y-ckt 080/110] ipvs: fix memory leak in ip_vs_ctl.c
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (78 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 079/110] crypto: s390/ghash - Fix incorrect ghash icv buffer handling Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 081/110] tcp/ipv6: fix flow label setting in TIME_WAIT state Luis Henriques
                   ` (29 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Tommi Rantala, Simon Horman, Luis Henriques

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

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

From: Tommi Rantala <tt.rantala@gmail.com>

commit f30bf2a5cac6c60ab366c4bc6db913597bf4d6ab upstream.

Fix memory leak introduced in commit a0840e2e165a ("IPVS: netns,
ip_vs_ctl local vars moved to ipvs struct."):

unreferenced object 0xffff88005785b800 (size 2048):
  comm "(-localed)", pid 1434, jiffies 4294755650 (age 1421.089s)
  hex dump (first 32 bytes):
    bb 89 0b 83 ff ff ff ff b0 78 f0 4e 00 88 ff ff  .........x.N....
    04 00 00 00 a4 01 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffffff8262ea8e>] kmemleak_alloc+0x4e/0xb0
    [<ffffffff811fba74>] __kmalloc_track_caller+0x244/0x430
    [<ffffffff811b88a0>] kmemdup+0x20/0x50
    [<ffffffff823276b7>] ip_vs_control_net_init+0x1f7/0x510
    [<ffffffff8231d630>] __ip_vs_init+0x100/0x250
    [<ffffffff822363a1>] ops_init+0x41/0x190
    [<ffffffff82236583>] setup_net+0x93/0x150
    [<ffffffff82236cc2>] copy_net_ns+0x82/0x140
    [<ffffffff810ab13d>] create_new_namespaces+0xfd/0x190
    [<ffffffff810ab49a>] unshare_nsproxy_namespaces+0x5a/0xc0
    [<ffffffff810833e3>] SyS_unshare+0x173/0x310
    [<ffffffff8265cbd7>] system_call_fastpath+0x12/0x6f
    [<ffffffffffffffff>] 0xffffffffffffffff

Fixes: a0840e2e165a ("IPVS: netns, ip_vs_ctl local vars moved to ipvs struct.")
Signed-off-by: Tommi Rantala <tt.rantala@gmail.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/netfilter/ipvs/ip_vs_ctl.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index 581a6584ed0c..285ae0dc1e03 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -3779,6 +3779,9 @@ static void __net_exit ip_vs_control_net_cleanup_sysctl(struct net *net)
 	cancel_work_sync(&ipvs->defense_work.work);
 	unregister_net_sysctl_table(ipvs->sysctl_hdr);
 	ip_vs_stop_estimator(net, &ipvs->tot_stats);
+
+	if (!net_eq(net, &init_net))
+		kfree(ipvs->sysctl_tbl);
 }
 
 #else

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

* [PATCH 3.16.y-ckt 081/110] tcp/ipv6: fix flow label setting in TIME_WAIT state
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (79 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 080/110] ipvs: fix memory leak in ip_vs_ctl.c Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 082/110] ipv6: do not delete previously existing ECMP routes if add fails Luis Henriques
                   ` (28 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Florent Fourcot, David S. Miller, Luis Henriques

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

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

From: Florent Fourcot <florent.fourcot@enst-bretagne.fr>

commit 21858cd02dabcf290564cbf4769b101eba54d7bb upstream.

commit 1d13a96c74fc ("ipv6: tcp: fix flowlabel value in ACK messages
send from TIME_WAIT") added the flow label in the last TCP packets.
Unfortunately, it was not casted properly.

This patch replace the buggy shift with be32_to_cpu/cpu_to_be32.

Fixes: 1d13a96c74fc ("ipv6: tcp: fix flowlabel value in ACK messages")
Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Florent Fourcot <florent.fourcot@enst-bretagne.fr>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/ipv4/tcp_minisocks.c | 2 +-
 net/ipv6/tcp_ipv6.c      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index e68e0d4af6c9..0c0255136992 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -297,7 +297,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
 			tw->tw_v6_daddr = sk->sk_v6_daddr;
 			tw->tw_v6_rcv_saddr = sk->sk_v6_rcv_saddr;
 			tw->tw_tclass = np->tclass;
-			tw->tw_flowlabel = np->flow_label >> 12;
+			tw->tw_flowlabel = be32_to_cpu(np->flow_label & IPV6_FLOWLABEL_MASK);
 			tw->tw_ipv6only = np->ipv6only;
 		}
 #endif
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index d15a5484076f..f9f8bb3c2605 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -920,7 +920,7 @@ static void tcp_v6_timewait_ack(struct sock *sk, struct sk_buff *skb)
 			tcptw->tw_rcv_wnd >> tw->tw_rcv_wscale,
 			tcp_time_stamp + tcptw->tw_ts_offset,
 			tcptw->tw_ts_recent, tw->tw_bound_dev_if, tcp_twsk_md5_key(tcptw),
-			tw->tw_tclass, (tw->tw_flowlabel << 12));
+			tw->tw_tclass, cpu_to_be32(tw->tw_flowlabel));
 
 	inet_twsk_put(tw);
 }

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

* [PATCH 3.16.y-ckt 082/110] ipv6: do not delete previously existing ECMP routes if add fails
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (80 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 081/110] tcp/ipv6: fix flow label setting in TIME_WAIT state Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 083/110] ipv6: fix ECMP route replacement Luis Henriques
                   ` (27 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Michal Kubecek, David S. Miller, Luis Henriques

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

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

From: =?UTF-8?q?Michal=20Kube=C4=8Dek?= <mkubecek@suse.cz>

commit 35f1b4e96b9258a3668872b1139c51e5a23eb876 upstream.

If adding a nexthop of an IPv6 multipath route fails, comment in
ip6_route_multipath() says we are going to delete all nexthops already
added. However, current implementation deletes even the routes it
hasn't even tried to add yet. For example, running

  ip route add 1234:5678::/64 \
      nexthop via fe80::aa dev dummy1 \
      nexthop via fe80::bb dev dummy1 \
      nexthop via fe80::cc dev dummy1

twice results in removing all routes first command added.

Limit the second (delete) run to nexthops that succeeded in the first
(add) run.

Fixes: 51ebd3181572 ("ipv6: add support of equal cost multipath (ECMP)")
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/ipv6/route.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 07b1eee067b1..3560a8118063 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -2432,9 +2432,9 @@ static int ip6_route_multipath(struct fib6_config *cfg, int add)
 	int attrlen;
 	int err = 0, last_err = 0;
 
+	remaining = cfg->fc_mp_len;
 beginning:
 	rtnh = (struct rtnexthop *)cfg->fc_mp;
-	remaining = cfg->fc_mp_len;
 
 	/* Parse a Multipath Entry */
 	while (rtnh_ok(rtnh, remaining)) {
@@ -2464,6 +2464,7 @@ beginning:
 				 * next hops that have been already added.
 				 */
 				add = 0;
+				remaining = cfg->fc_mp_len - remaining;
 				goto beginning;
 			}
 		}

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

* [PATCH 3.16.y-ckt 083/110] ipv6: fix ECMP route replacement
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (81 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 082/110] ipv6: do not delete previously existing ECMP routes if add fails Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 084/110] ipv4: Avoid crashing in ip_error Luis Henriques
                   ` (26 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Michal Kubecek, David S. Miller, Luis Henriques

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

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

From: =?UTF-8?q?Michal=20Kube=C4=8Dek?= <mkubecek@suse.cz>

commit 27596472473a02cfef2908a6bcda7e55264ba6b7 upstream.

When replacing an IPv6 multipath route with "ip route replace", i.e.
NLM_F_CREATE | NLM_F_REPLACE, fib6_add_rt2node() replaces only first
matching route without fixing its siblings, resulting in corrupted
siblings linked list; removing one of the siblings can then end in an
infinite loop.

IPv6 ECMP implementation is a bit different from IPv4 so that route
replacement cannot work in exactly the same way. This should be a
reasonable approximation:

1. If the new route is ECMP-able and there is a matching ECMP-able one
already, replace it and all its siblings (if any).

2. If the new route is ECMP-able and no matching ECMP-able route exists,
replace first matching non-ECMP-able (if any) or just add the new one.

3. If the new route is not ECMP-able, replace first matching
non-ECMP-able route (if any) or add the new route.

We also need to remove the NLM_F_REPLACE flag after replacing old
route(s) by first nexthop of an ECMP route so that each subsequent
nexthop does not replace previous one.

Fixes: 51ebd3181572 ("ipv6: add support of equal cost multipath (ECMP)")
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/ipv6/ip6_fib.c | 39 +++++++++++++++++++++++++++++++++++++--
 net/ipv6/route.c   | 11 +++++++----
 2 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index 4bffae914120..5c3f0dc1c754 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -694,6 +694,7 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
 {
 	struct rt6_info *iter = NULL;
 	struct rt6_info **ins;
+	struct rt6_info **fallback_ins = NULL;
 	int replace = (info->nlh &&
 		       (info->nlh->nlmsg_flags & NLM_F_REPLACE));
 	int add = (!info->nlh ||
@@ -717,8 +718,13 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
 			    (info->nlh->nlmsg_flags & NLM_F_EXCL))
 				return -EEXIST;
 			if (replace) {
-				found++;
-				break;
+				if (rt_can_ecmp == rt6_qualify_for_ecmp(iter)) {
+					found++;
+					break;
+				}
+				if (rt_can_ecmp)
+					fallback_ins = fallback_ins ?: ins;
+				goto next_iter;
 			}
 
 			if (iter->dst.dev == rt->dst.dev &&
@@ -754,9 +760,17 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
 		if (iter->rt6i_metric > rt->rt6i_metric)
 			break;
 
+next_iter:
 		ins = &iter->dst.rt6_next;
 	}
 
+	if (fallback_ins && !found) {
+		/* No ECMP-able route found, replace first non-ECMP one */
+		ins = fallback_ins;
+		iter = *ins;
+		found++;
+	}
+
 	/* Reset round-robin state, if necessary */
 	if (ins == &fn->leaf)
 		fn->rr_ptr = NULL;
@@ -817,6 +831,8 @@ add:
 		}
 
 	} else {
+		int nsiblings;
+
 		if (!found) {
 			if (add)
 				goto add;
@@ -837,8 +853,27 @@ add:
 			info->nl_net->ipv6.rt6_stats->fib_route_nodes++;
 			fn->fn_flags |= RTN_RTINFO;
 		}
+		nsiblings = iter->rt6i_nsiblings;
 		fib6_purge_rt(iter, fn, info->nl_net);
 		rt6_release(iter);
+
+		if (nsiblings) {
+			/* Replacing an ECMP route, remove all siblings */
+			ins = &rt->dst.rt6_next;
+			iter = *ins;
+			while (iter) {
+				if (rt6_qualify_for_ecmp(iter)) {
+					*ins = iter->dst.rt6_next;
+					fib6_purge_rt(iter, fn, info->nl_net);
+					rt6_release(iter);
+					nsiblings--;
+				} else {
+					ins = &iter->dst.rt6_next;
+				}
+				iter = *ins;
+			}
+			WARN_ON(nsiblings != 0);
+		}
 	}
 
 	return 0;
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 3560a8118063..4967b50cdf52 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -2469,11 +2469,14 @@ beginning:
 			}
 		}
 		/* Because each route is added like a single route we remove
-		 * this flag after the first nexthop (if there is a collision,
-		 * we have already fail to add the first nexthop:
-		 * fib6_add_rt2node() has reject it).
+		 * these flags after the first nexthop: if there is a collision,
+		 * we have already failed to add the first nexthop:
+		 * fib6_add_rt2node() has rejected it; when replacing, old
+		 * nexthops have been replaced by first new, the rest should
+		 * be added to it.
 		 */
-		cfg->fc_nlinfo.nlh->nlmsg_flags &= ~NLM_F_EXCL;
+		cfg->fc_nlinfo.nlh->nlmsg_flags &= ~(NLM_F_EXCL |
+						     NLM_F_REPLACE);
 		rtnh = rtnh_next(rtnh, &remaining);
 	}
 

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

* [PATCH 3.16.y-ckt 084/110] ipv4: Avoid crashing in ip_error
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (82 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 083/110] ipv6: fix ECMP route replacement Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 085/110] cdc_ncm: Fix tx_bytes statistics Luis Henriques
                   ` (25 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Vittorio Gambaletta, Eric W. Biederman, David S. Miller, Luis Henriques

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

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

From: "Eric W. Biederman" <ebiederm@xmission.com>

commit 381c759d9916c42959515ad34a6d467e24a88e93 upstream.

ip_error does not check if in_dev is NULL before dereferencing it.

IThe following sequence of calls is possible:
CPU A                          CPU B
ip_rcv_finish
    ip_route_input_noref()
        ip_route_input_slow()
                               inetdev_destroy()
    dst_input()

With the result that a network device can be destroyed while processing
an input packet.

A crash was triggered with only unicast packets in flight, and
forwarding enabled on the only network device.   The error condition
was created by the removal of the network device.

As such it is likely the that error code was -EHOSTUNREACH, and the
action taken by ip_error (if in_dev had been accessible) would have
been to not increment any counters and to have tried and likely failed
to send an icmp error as the network device is going away.

Therefore handle this weird case by just dropping the packet if
!in_dev.  It will result in dropping the packet sooner, and will not
result in an actual change of behavior.

Fixes: 251da4130115b ("ipv4: Cache ip_error() routes even when not forwarding.")
Reported-by: Vittorio Gambaletta <linuxbugs@vittgam.net>
Tested-by: Vittorio Gambaletta <linuxbugs@vittgam.net>
Signed-off-by: Vittorio Gambaletta <linuxbugs@vittgam.net>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/ipv4/route.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 5b2e13a7b790..d53aee9cbfe2 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -903,6 +903,10 @@ static int ip_error(struct sk_buff *skb)
 	bool send;
 	int code;
 
+	/* IP on this device is disabled. */
+	if (!in_dev)
+		goto out;
+
 	net = dev_net(rt->dst.dev);
 	if (!IN_DEV_FORWARD(in_dev)) {
 		switch (rt->dst.error) {

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

* [PATCH 3.16.y-ckt 085/110] cdc_ncm: Fix tx_bytes statistics
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (83 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 084/110] ipv4: Avoid crashing in ip_error Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 086/110] bridge: fix parsing of MLDv2 reports Luis Henriques
                   ` (24 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Ben Hutchings, Bjørn Mork, David S. Miller, Luis Henriques

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

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

From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>

commit 44f6731d8b68fa02f5ed65eaceac41f8c3c9279e upstream.

The tx_curr_frame_payload field is u32. When we try to calculate a
small negative delta based on it, we end up with a positive integer
close to 2^32 instead.  So the tx_bytes pointer increases by about
2^32 for every transmitted frame.

Fix by calculating the delta as a signed long.

Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
Reported-by: Florian Bruhin <me@the-compiler.org>
Fixes: 7a1e890e2168 ("usbnet: Fix tx_bytes statistic running backward in cdc_ncm")
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/net/usb/cdc_ncm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index c3e4da9e79ca..8067b8fbb0ee 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -1182,7 +1182,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)
 	 * payload data instead.
 	 */
 	usbnet_set_skb_tx_stats(skb_out, n,
-				ctx->tx_curr_frame_payload - skb_out->len);
+				(long)ctx->tx_curr_frame_payload - skb_out->len);
 
 	return skb_out;
 

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

* [PATCH 3.16.y-ckt 086/110] bridge: fix parsing of MLDv2 reports
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (84 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 085/110] cdc_ncm: Fix tx_bytes statistics Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 087/110] ARM: fix missing syscall trace exit Luis Henriques
                   ` (23 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Thadeu Lima de Souza Cascardo, David S. Miller, Luis Henriques

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

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

From: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>

commit 47cc84ce0c2fe75c99ea5963c4b5704dd78ead54 upstream.

When more than a multicast address is present in a MLDv2 report, all but
the first address is ignored, because the code breaks out of the loop if
there has not been an error adding that address.

This has caused failures when two guests connected through the bridge
tried to communicate using IPv6. Neighbor discoveries would not be
transmitted to the other guest when both used a link-local address and a
static address.

This only happens when there is a MLDv2 querier in the network.

The fix will only break out of the loop when there is a failure adding a
multicast address.

The mdb before the patch:

dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
dev ovirtmgmt port bond0.86 grp ff02::2 temp

After the patch:

dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
dev ovirtmgmt port bond0.86 grp ff02::fb temp
dev ovirtmgmt port bond0.86 grp ff02::2 temp
dev ovirtmgmt port bond0.86 grp ff02::d temp
dev ovirtmgmt port vnet0 grp ff02::1:ff00:76 temp
dev ovirtmgmt port bond0.86 grp ff02::16 temp
dev ovirtmgmt port vnet1 grp ff02::1:ff00:77 temp
dev ovirtmgmt port bond0.86 grp ff02::1:ff00:def temp
dev ovirtmgmt port bond0.86 grp ff02::1:ffa1:40bf temp

Fixes: 08b202b67264 ("bridge br_multicast: IPv6 MLD support.")
Reported-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Tested-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/bridge/br_multicast.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index eb73398dd237..799379e81264 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1071,7 +1071,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 
 		err = br_ip6_multicast_add_group(br, port, &grec->grec_mca,
 						 vid);
-		if (!err)
+		if (err)
 			break;
 	}
 

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

* [PATCH 3.16.y-ckt 087/110] ARM: fix missing syscall trace exit
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (85 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 086/110] bridge: fix parsing of MLDv2 reports Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 088/110] module: Call module notifier on failure after complete_formation() Luis Henriques
                   ` (22 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Russell King, Luis Henriques

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

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

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

commit 1b97937246d8b97c0760d16d8992c7937bdf5e6a upstream.

Josh Stone reports:

  I've discovered a case where both arm and arm64 will miss a ptrace
  syscall-exit that they should report.  If the syscall is entered
  without TIF_SYSCALL_TRACE set, then it goes on the fast path.  It's
  then possible to have TIF_SYSCALL_TRACE added in the middle of the
  syscall, but ret_fast_syscall doesn't check this flag again.

Fix this by always checking for a syscall trace in the fast exit path.

Reported-by: Josh Stone <jistone@redhat.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/kernel/entry-common.S | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 7139d4a7dea7..29b81fc959fe 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -32,7 +32,9 @@ ret_fast_syscall:
  UNWIND(.fnstart	)
  UNWIND(.cantunwind	)
 	disable_irq				@ disable interrupts
-	ldr	r1, [tsk, #TI_FLAGS]
+	ldr	r1, [tsk, #TI_FLAGS]		@ re-check for syscall tracing
+	tst	r1, #_TIF_SYSCALL_WORK
+	bne	__sys_trace_return
 	tst	r1, #_TIF_WORK_MASK
 	bne	fast_work_pending
 	asm_trace_hardirqs_on

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

* [PATCH 3.16.y-ckt 088/110] module: Call module notifier on failure after complete_formation()
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (86 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 087/110] ARM: fix missing syscall trace exit Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 089/110] gpio: gpio-kempld: Fix get_direction return value Luis Henriques
                   ` (21 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Steven Rostedt, Rusty Russell, Luis Henriques

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

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

From: Steven Rostedt <rostedt@goodmis.org>

commit 37815bf866ab6722a47550f8d25ad3f1a16a680c upstream.

The module notifier call chain for MODULE_STATE_COMING was moved up before
the parsing of args, into the complete_formation() call. But if the module failed
to load after that, the notifier call chain for MODULE_STATE_GOING was
never called and that prevented the users of those call chains from
cleaning up anything that was allocated.

Link: http://lkml.kernel.org/r/554C52B9.9060700@gmail.com

Reported-by: Pontus Fuchs <pontus.fuchs@gmail.com>
Fixes: 4982223e51e8 "module: set nx before marking module MODULE_STATE_COMING"
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 kernel/module.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/kernel/module.c b/kernel/module.c
index 3775cafdfb4a..fd876c5fcb13 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -3311,6 +3311,9 @@ static int load_module(struct load_info *info, const char __user *uargs,
 	module_bug_cleanup(mod);
 	mutex_unlock(&module_mutex);
 
+	blocking_notifier_call_chain(&module_notify_list,
+				     MODULE_STATE_GOING, mod);
+
 	/* we can't deallocate the module until we clear memory protection */
 	unset_module_init_ro_nx(mod);
 	unset_module_core_ro_nx(mod);

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

* [PATCH 3.16.y-ckt 089/110] gpio: gpio-kempld: Fix get_direction return value
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (87 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 088/110] module: Call module notifier on failure after complete_formation() Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 090/110] ARM: dts: imx27: only map 4 Kbyte for fec registers Luis Henriques
                   ` (20 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Michael Brunner, Linus Walleij, Luis Henriques

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

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

From: Michael Brunner <mibru@gmx.de>

commit f230e8ffc03f17bd9d6b90ea890b8252a8cc1821 upstream.

This patch fixes an inverted return value of the gpio get_direction
function.

The wrong value causes the direction sysfs entry and GPIO debugfs file
to indicate incorrect GPIO direction settings. In some cases it also
prevents setting GPIO output values.

The problem is also present in all other stable kernel versions since
linux-3.12.

Reported-by: Jochen Henneberg <jh@henneberg-systemdesign.com>
Signed-off-by: Michael Brunner <michael.brunner@kontron.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/gpio/gpio-kempld.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-kempld.c b/drivers/gpio/gpio-kempld.c
index 1e5e51987d31..b6ea5494ac78 100644
--- a/drivers/gpio/gpio-kempld.c
+++ b/drivers/gpio/gpio-kempld.c
@@ -117,7 +117,7 @@ static int kempld_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
 		= container_of(chip, struct kempld_gpio_data, chip);
 	struct kempld_device_data *pld = gpio->pld;
 
-	return kempld_gpio_get_bit(pld, KEMPLD_GPIO_DIR_NUM(offset), offset);
+	return !kempld_gpio_get_bit(pld, KEMPLD_GPIO_DIR_NUM(offset), offset);
 }
 
 static int kempld_gpio_pincount(struct kempld_device_data *pld)

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

* [PATCH 3.16.y-ckt 090/110] ARM: dts: imx27: only map 4 Kbyte for fec registers
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (88 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 089/110] gpio: gpio-kempld: Fix get_direction return value Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 091/110] ARM: 8356/1: mm: handle non-pmd-aligned end of RAM Luis Henriques
                   ` (19 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Philippe Reynes, Shawn Guo, Luis Henriques

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

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

From: Philippe Reynes <tremyfr@gmail.com>

commit a29ef819f3f34f89a1b9b6a939b4c1cdfe1e85ce upstream.

According to the imx27 documentation, fec has a 4 Kbyte
memory space map. Moreover, the actual 16 Kbyte mapping
overlaps the SCC (Security Controller) memory register
space. So, we reduce the memory register space to 4 Kbyte.

Signed-off-by: Philippe Reynes <tremyfr@gmail.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fixes: 9f0749e3eb88 ("ARM i.MX27: Add devicetree support")
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/boot/dts/imx27.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
index a75555c39533..e721736fe879 100644
--- a/arch/arm/boot/dts/imx27.dtsi
+++ b/arch/arm/boot/dts/imx27.dtsi
@@ -499,7 +499,7 @@
 
 			fec: ethernet@1002b000 {
 				compatible = "fsl,imx27-fec";
-				reg = <0x1002b000 0x4000>;
+				reg = <0x1002b000 0x1000>;
 				interrupts = <50>;
 				clocks = <&clks 48>, <&clks 67>;
 				clock-names = "ipg", "ahb";

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

* [PATCH 3.16.y-ckt 091/110] ARM: 8356/1: mm: handle non-pmd-aligned end of RAM
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (89 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 090/110] ARM: dts: imx27: only map 4 Kbyte for fec registers Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 092/110] mac80211: don't use napi_gro_receive() outside NAPI context Luis Henriques
                   ` (18 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Mark Rutland, Catalin Marinas, Steve Capper, Russell King,
	Luis Henriques

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

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

From: Mark Rutland <mark.rutland@arm.com>

commit 965278dcb8ab0b1f666cc47937933c4be4aea48d upstream.

At boot time we round the memblock limit down to section size in an
attempt to ensure that we will have mapped this RAM with section
mappings prior to allocating from it. When mapping RAM we iterate over
PMD-sized chunks, creating these section mappings.

Section mappings are only created when the end of a chunk is aligned to
section size. Unfortunately, with classic page tables (where PMD_SIZE is
2 * SECTION_SIZE) this means that if a chunk is between 1M and 2M in
size the first 1M will not be mapped despite having been accounted for
in the memblock limit. This has been observed to result in page tables
being allocated from unmapped memory, causing boot-time hangs.

This patch modifies the memblock limit rounding to always round down to
PMD_SIZE instead of SECTION_SIZE. For classic MMU this means that we
will round the memblock limit down to a 2M boundary, matching the limits
on section mappings, and preventing allocations from unmapped memory.
For LPAE there should be no change as PMD_SIZE == SECTION_SIZE.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reported-by: Stefan Agner <stefan@agner.ch>
Tested-by: Stefan Agner <stefan@agner.ch>
Acked-by: Laura Abbott <labbott@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Steve Capper <steve.capper@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/mm/mmu.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 6e3ba8d112a2..8a7c998f789d 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -1118,22 +1118,22 @@ void __init sanity_check_meminfo(void)
 			}
 
 			/*
-			 * Find the first non-section-aligned page, and point
+			 * Find the first non-pmd-aligned page, and point
 			 * memblock_limit at it. This relies on rounding the
-			 * limit down to be section-aligned, which happens at
-			 * the end of this function.
+			 * limit down to be pmd-aligned, which happens at the
+			 * end of this function.
 			 *
 			 * With this algorithm, the start or end of almost any
-			 * bank can be non-section-aligned. The only exception
-			 * is that the start of the bank 0 must be section-
+			 * bank can be non-pmd-aligned. The only exception is
+			 * that the start of the bank 0 must be section-
 			 * aligned, since otherwise memory would need to be
 			 * allocated when mapping the start of bank 0, which
 			 * occurs before any free memory is mapped.
 			 */
 			if (!memblock_limit) {
-				if (!IS_ALIGNED(block_start, SECTION_SIZE))
+				if (!IS_ALIGNED(block_start, PMD_SIZE))
 					memblock_limit = block_start;
-				else if (!IS_ALIGNED(block_end, SECTION_SIZE))
+				else if (!IS_ALIGNED(block_end, PMD_SIZE))
 					memblock_limit = arm_lowmem_limit;
 			}
 
@@ -1143,12 +1143,12 @@ void __init sanity_check_meminfo(void)
 	high_memory = __va(arm_lowmem_limit - 1) + 1;
 
 	/*
-	 * Round the memblock limit down to a section size.  This
+	 * Round the memblock limit down to a pmd size.  This
 	 * helps to ensure that we will allocate memory from the
-	 * last full section, which should be mapped.
+	 * last full pmd, which should be mapped.
 	 */
 	if (memblock_limit)
-		memblock_limit = round_down(memblock_limit, SECTION_SIZE);
+		memblock_limit = round_down(memblock_limit, PMD_SIZE);
 	if (!memblock_limit)
 		memblock_limit = arm_lowmem_limit;
 

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

* [PATCH 3.16.y-ckt 092/110] mac80211: don't use napi_gro_receive() outside NAPI context
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (90 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 091/110] ARM: 8356/1: mm: handle non-pmd-aligned end of RAM Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 093/110] ARM: dts: set display clock correctly for exynos4412-trats2 Luis Henriques
                   ` (17 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Johannes Berg, Luis Henriques

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

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

From: Johannes Berg <johannes.berg@intel.com>

commit 22d3a3c829fa9ecdb493d1f1f2838d543f8d86a3 upstream.

No matter how the driver manages its NAPI context, there's no way
sending frames to it from a timer can be correct, since it would
corrupt the internal GRO lists.

To avoid that, always use the non-NAPI path when releasing frames
from the timer.

Reported-by: Jean Trivelly <jean.trivelly@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/mac80211/ieee80211_i.h | 3 +++
 net/mac80211/rx.c          | 5 +++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 6b943c29937b..d7a4c0ff66ff 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -203,6 +203,8 @@ enum ieee80211_packet_rx_flags {
  * @IEEE80211_RX_CMNTR: received on cooked monitor already
  * @IEEE80211_RX_BEACON_REPORTED: This frame was already reported
  *	to cfg80211_report_obss_beacon().
+ * @IEEE80211_RX_REORDER_TIMER: this frame is released by the
+ *	reorder buffer timeout timer, not the normal RX path
  *
  * These flags are used across handling multiple interfaces
  * for a single frame.
@@ -210,6 +212,7 @@ enum ieee80211_packet_rx_flags {
 enum ieee80211_rx_flags {
 	IEEE80211_RX_CMNTR		= BIT(0),
 	IEEE80211_RX_BEACON_REPORTED	= BIT(1),
+	IEEE80211_RX_REORDER_TIMER	= BIT(2),
 };
 
 struct ieee80211_rx_data {
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 07fb67803097..3ee2abd4007e 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1968,7 +1968,8 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
 		/* deliver to local stack */
 		skb->protocol = eth_type_trans(skb, dev);
 		memset(skb->cb, 0, sizeof(skb->cb));
-		if (rx->local->napi)
+		if (!(rx->flags & IEEE80211_RX_REORDER_TIMER) &&
+		    rx->local->napi)
 			napi_gro_receive(rx->local->napi, skb);
 		else
 			netif_receive_skb(skb);
@@ -3038,7 +3039,7 @@ void ieee80211_release_reorder_timeout(struct sta_info *sta, int tid)
 		/* This is OK -- must be QoS data frame */
 		.security_idx = tid,
 		.seqno_idx = tid,
-		.flags = 0,
+		.flags = IEEE80211_RX_REORDER_TIMER,
 	};
 	struct tid_ampdu_rx *tid_agg_rx;
 

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

* [PATCH 3.16.y-ckt 093/110] ARM: dts: set display clock correctly for exynos4412-trats2
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (91 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 092/110] mac80211: don't use napi_gro_receive() outside NAPI context Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 094/110] Revert "ALSA: hda - Add mute-LED mode control to Thinkpad" Luis Henriques
                   ` (16 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Inki Dae, Kukjin Kim, Luis Henriques

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

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

From: Inki Dae <inki.dae@samsung.com>

commit 242ddf04297f2c4768bd8eb7593ab911910c5f76 upstream.

This patch sets display clock correctly. If Display clock isn't set
correctly then you would find below messages and Display controller
doesn't work correctly.

 exynos-drm: No connectors reported connected with modes
 [drm] Cannot find any crtc or sizes - going 1024x768

Fixes: abc0b1447d49 ("drm: Perform basic sanity checks on probed modes")
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Kukjin Kim <kgene@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm/boot/dts/exynos4412-trats2.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
index 77878447b312..0cee640ea9c9 100644
--- a/arch/arm/boot/dts/exynos4412-trats2.dts
+++ b/arch/arm/boot/dts/exynos4412-trats2.dts
@@ -639,7 +639,7 @@
 
 			display-timings {
 				timing-0 {
-					clock-frequency = <0>;
+					clock-frequency = <57153600>;
 					hactive = <720>;
 					vactive = <1280>;
 					hfront-porch = <5>;

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

* [PATCH 3.16.y-ckt 094/110] Revert "ALSA: hda - Add mute-LED mode control to Thinkpad"
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (92 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 093/110] ARM: dts: set display clock correctly for exynos4412-trats2 Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 095/110] hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE Luis Henriques
                   ` (15 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Pali Rohár, Takashi Iwai, Luis Henriques

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

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

From: Takashi Iwai <tiwai@suse.de>

commit 3530febb5c7636f6b26d15637f68296804d26491 upstream.

This reverts commit 7290006d8c0900c56d8c58428134f02c35109d17.

Through the regression report, it was revealed that the
tpacpi_led_set() call to thinkpad_acpi helper doesn't only toggle the
mute LED but actually mutes the sound.  This is contradiction to the
expectation, and rather confuses user.

According to Henrique, it's not trivial to judge which TP model
behaves "LED-only" and which model does whatever more intrusive, as
Lenovo's implementations vary model by model.  So, from the safety
reason, we should revert the patch for now.

Reported-by: Martin Steigerwald <martin@lichtvoll.de>
Cc: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 sound/pci/hda/thinkpad_helper.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/sound/pci/hda/thinkpad_helper.c b/sound/pci/hda/thinkpad_helper.c
index 2341fc334163..6ba0b5517c40 100644
--- a/sound/pci/hda/thinkpad_helper.c
+++ b/sound/pci/hda/thinkpad_helper.c
@@ -72,7 +72,6 @@ static void hda_fixup_thinkpad_acpi(struct hda_codec *codec,
 		if (led_set_func(TPACPI_LED_MUTE, false) >= 0) {
 			old_vmaster_hook = spec->vmaster_mute.hook;
 			spec->vmaster_mute.hook = update_tpacpi_mute_led;
-			spec->vmaster_mute_enum = 1;
 			removefunc = false;
 		}
 		if (led_set_func(TPACPI_LED_MICMUTE, false) >= 0) {

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

* [PATCH 3.16.y-ckt 095/110] hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (93 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 094/110] Revert "ALSA: hda - Add mute-LED mode control to Thinkpad" Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 096/110] lguest: fix out-by-one error in address checking Luis Henriques
                   ` (14 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Chris Lesiak, Guenter Roeck, Luis Henriques

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

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

From: Chris Lesiak <chris.lesiak@licor.com>

commit adba657533bdd255f7b78bc8a324091f46b294cd upstream.

When configured via device tree, the associated iio device needs to be
measuring voltage for the conversion to resistance to be correct.
Return -EINVAL if that is not the case.

Signed-off-by: Chris Lesiak <chris.lesiak@licor.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/hwmon/ntc_thermistor.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c
index ae66f42c4d6d..387ea83783df 100644
--- a/drivers/hwmon/ntc_thermistor.c
+++ b/drivers/hwmon/ntc_thermistor.c
@@ -193,8 +193,10 @@ static struct ntc_thermistor_platform_data *
 ntc_thermistor_parse_dt(struct platform_device *pdev)
 {
 	struct iio_channel *chan;
+	enum iio_chan_type type;
 	struct device_node *np = pdev->dev.of_node;
 	struct ntc_thermistor_platform_data *pdata;
+	int ret;
 
 	if (!np)
 		return NULL;
@@ -207,6 +209,13 @@ ntc_thermistor_parse_dt(struct platform_device *pdev)
 	if (IS_ERR(chan))
 		return ERR_CAST(chan);
 
+	ret = iio_get_channel_type(chan, &type);
+	if (ret < 0)
+		return ERR_PTR(ret);
+
+	if (type != IIO_VOLTAGE)
+		return ERR_PTR(-EINVAL);
+
 	if (of_property_read_u32(np, "pullup-uv", &pdata->pullup_uv))
 		return ERR_PTR(-ENODEV);
 	if (of_property_read_u32(np, "pullup-ohm", &pdata->pullup_ohm))

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

* [PATCH 3.16.y-ckt 096/110] lguest: fix out-by-one error in address checking.
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (94 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 095/110] hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 097/110] drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling" Luis Henriques
                   ` (13 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Rusty Russell, Linus Torvalds, Luis Henriques

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

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

From: Rusty Russell <rusty@rustcorp.com.au>

commit 83a35114d0e4583e6b0ca39502e68b6a92e2910c upstream.

This bug has been there since day 1; addresses in the top guest physical
page weren't considered valid.  You could map that page (the check in
check_gpte() is correct), but if a guest tried to put a pagetable there
we'd check that address manually when walking it, and kill the guest.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/lguest/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c
index 0bf1e4edf04d..19da22249bd8 100644
--- a/drivers/lguest/core.c
+++ b/drivers/lguest/core.c
@@ -176,7 +176,7 @@ static void unmap_switcher(void)
 bool lguest_address_ok(const struct lguest *lg,
 		       unsigned long addr, unsigned long len)
 {
-	return (addr+len) / PAGE_SIZE < lg->pfn_limit && (addr+len >= addr);
+	return addr+len <= lg->pfn_limit * PAGE_SIZE && (addr+len >= addr);
 }
 
 /*

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

* [PATCH 3.16.y-ckt 097/110] drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling"
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (95 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 096/110] lguest: fix out-by-one error in address checking Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 098/110] xfs: xfs_attr_inactive leaves inconsistent attr fork state behind Luis Henriques
                   ` (12 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Christian König, Alex Deucher, Luis Henriques

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

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

From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>

commit 7c0411d2fabc2e2702c9871ffb603e251158b317 upstream.

We have that bug for years and some users report side effects when fixing it on older hardware.

So revert it for VM_CONTEXT0_PAGE_TABLE_END_ADDR, but keep it for VM 1-15.

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/gpu/drm/radeon/cik.c       | 2 +-
 drivers/gpu/drm/radeon/evergreen.c | 2 +-
 drivers/gpu/drm/radeon/ni.c        | 2 +-
 drivers/gpu/drm/radeon/r600.c      | 2 +-
 drivers/gpu/drm/radeon/rv770.c     | 2 +-
 drivers/gpu/drm/radeon/si.c        | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 0cd584934768..0cf54a4b83bd 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -5438,7 +5438,7 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
 	       L2_CACHE_BIGK_FRAGMENT_SIZE(4));
 	/* setup context0 */
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
 			(u32)(rdev->dummy_page.addr >> 12));
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index aaff62717f7b..5428b692f9a2 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -2458,7 +2458,7 @@ static int evergreen_pcie_gart_enable(struct radeon_device *rdev)
 	WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
 	WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
 				RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 587a45a3003b..41ddc14bfab3 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -1251,7 +1251,7 @@ static int cayman_pcie_gart_enable(struct radeon_device *rdev)
 	       L2_CACHE_BIGK_FRAGMENT_SIZE(6));
 	/* setup context0 */
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
 			(u32)(rdev->dummy_page.addr >> 12));
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 4dae32b4cb6b..5e31413fb454 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -996,7 +996,7 @@ static int r600_pcie_gart_enable(struct radeon_device *rdev)
 	WREG32(MC_VM_L1_TLB_MCB_RD_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE);
 	WREG32(MC_VM_L1_TLB_MCB_WR_SEM_CNTL, tmp | ENABLE_SEMAPHORE_MODE);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
 				RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 146168d85fbd..11cd3d887428 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -922,7 +922,7 @@ static int rv770_pcie_gart_enable(struct radeon_device *rdev)
 	WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
 	WREG32(MC_VM_MB_L1_TLB3_CNTL, tmp);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) |
 				RANGE_PROTECTION_FAULT_ENABLE_DEFAULT);
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 0555ce98986b..5040fac05655 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -4072,7 +4072,7 @@ static int si_pcie_gart_enable(struct radeon_device *rdev)
 	       L2_CACHE_BIGK_FRAGMENT_SIZE(4));
 	/* setup context0 */
 	WREG32(VM_CONTEXT0_PAGE_TABLE_START_ADDR, rdev->mc.gtt_start >> 12);
-	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, (rdev->mc.gtt_end >> 12) - 1);
+	WREG32(VM_CONTEXT0_PAGE_TABLE_END_ADDR, rdev->mc.gtt_end >> 12);
 	WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR, rdev->gart.table_addr >> 12);
 	WREG32(VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR,
 			(u32)(rdev->dummy_page.addr >> 12));

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

* [PATCH 3.16.y-ckt 098/110] xfs: xfs_attr_inactive leaves inconsistent attr fork state behind
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (96 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 097/110] drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling" Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 099/110] fs, omfs: add NULL terminator in the end up the token list Luis Henriques
                   ` (11 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Dave Chinner, Dave Chinner, Luis Henriques

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

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

From: Dave Chinner <dchinner@redhat.com>

commit 6dfe5a049f2d48582050339d2a6b6fda36dfd14c upstream.

xfs_attr_inactive() is supposed to clean up the attribute fork when
the inode is being freed. While it removes attribute fork extents,
it completely ignores attributes in local format, which means that
there can still be active attributes on the inode after
xfs_attr_inactive() has run.

This leads to problems with concurrent inode writeback - the in-core
inode attribute fork is removed without locking on the assumption
that nothing will be attempting to access the attribute fork after a
call to xfs_attr_inactive() because it isn't supposed to exist on
disk any more.

To fix this, make xfs_attr_inactive() completely remove all traces
of the attribute fork from the inode, regardless of it's state.
Further, also remove the in-core attribute fork structure safely so
that there is nothing further that needs to be done by callers to
clean up the attribute fork. This means we can remove the in-core
and on-disk attribute forks atomically.

Also, on error simply remove the in-memory attribute fork. There's
nothing that can be done with it once we have failed to remove the
on-disk attribute fork, so we may as well just blow it away here
anyway.

Reported-by: Waiman Long <waiman.long@hp.com>
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
[ luis: backported to 3.16:
  - no libxfs in 3.16, xfs_attr_leaf.{c,h} in fs/xfs/ dir
  - adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/xfs/xfs_attr_inactive.c | 83 +++++++++++++++++++++++++++-------------------
 fs/xfs/xfs_attr_leaf.c     |  8 ++---
 fs/xfs/xfs_attr_leaf.h     |  2 +-
 fs/xfs/xfs_inode.c         | 12 +++----
 4 files changed, 58 insertions(+), 47 deletions(-)

diff --git a/fs/xfs/xfs_attr_inactive.c b/fs/xfs/xfs_attr_inactive.c
index 09480c57f069..ced1dd9dd095 100644
--- a/fs/xfs/xfs_attr_inactive.c
+++ b/fs/xfs/xfs_attr_inactive.c
@@ -382,23 +382,31 @@ xfs_attr3_root_inactive(
 	return error;
 }
 
+/*
+ * xfs_attr_inactive kills all traces of an attribute fork on an inode. It
+ * removes both the on-disk and in-memory inode fork. Note that this also has to
+ * handle the condition of inodes without attributes but with an attribute fork
+ * configured, so we can't use xfs_inode_hasattr() here.
+ *
+ * The in-memory attribute fork is removed even on error.
+ */
 int
-xfs_attr_inactive(xfs_inode_t *dp)
+xfs_attr_inactive(
+	struct xfs_inode	*dp)
 {
-	xfs_trans_t *trans;
-	xfs_mount_t *mp;
-	int error;
+	struct xfs_trans	*trans;
+	struct xfs_mount	*mp;
+	int			cancel_flags = 0;
+	int			lock_mode = XFS_ILOCK_SHARED;
+	int			error = 0;
 
 	mp = dp->i_mount;
 	ASSERT(! XFS_NOT_DQATTACHED(mp, dp));
 
-	xfs_ilock(dp, XFS_ILOCK_SHARED);
-	if (!xfs_inode_hasattr(dp) ||
-	    dp->i_d.di_aformat == XFS_DINODE_FMT_LOCAL) {
-		xfs_iunlock(dp, XFS_ILOCK_SHARED);
-		return 0;
-	}
-	xfs_iunlock(dp, XFS_ILOCK_SHARED);
+	xfs_ilock(dp, lock_mode);
+	if (!XFS_IFORK_Q(dp))
+		goto out_destroy_fork;
+	xfs_iunlock(dp, lock_mode);
 
 	/*
 	 * Start our first transaction of the day.
@@ -410,13 +418,18 @@ xfs_attr_inactive(xfs_inode_t *dp)
 	 * the inode in every transaction to let it float upward through
 	 * the log.
 	 */
+	lock_mode = 0;
 	trans = xfs_trans_alloc(mp, XFS_TRANS_ATTRINVAL);
 	error = xfs_trans_reserve(trans, &M_RES(mp)->tr_attrinval, 0, 0);
-	if (error) {
-		xfs_trans_cancel(trans, 0);
-		return(error);
-	}
-	xfs_ilock(dp, XFS_ILOCK_EXCL);
+	if (error)
+		goto out_cancel;
+
+	lock_mode = XFS_ILOCK_EXCL;
+	cancel_flags = XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT;
+	xfs_ilock(dp, lock_mode);
+
+	if (!XFS_IFORK_Q(dp))
+		goto out_cancel;
 
 	/*
 	 * No need to make quota reservations here. We expect to release some
@@ -424,29 +437,31 @@ xfs_attr_inactive(xfs_inode_t *dp)
 	 */
 	xfs_trans_ijoin(trans, dp, 0);
 
-	/*
-	 * Decide on what work routines to call based on the inode size.
-	 */
-	if (!xfs_inode_hasattr(dp) ||
-	    dp->i_d.di_aformat == XFS_DINODE_FMT_LOCAL) {
-		error = 0;
-		goto out;
+	/* invalidate and truncate the attribute fork extents */
+	if (dp->i_d.di_aformat != XFS_DINODE_FMT_LOCAL) {
+		error = xfs_attr3_root_inactive(&trans, dp);
+		if (error)
+			goto out_cancel;
+
+		error = xfs_itruncate_extents(&trans, dp, XFS_ATTR_FORK, 0);
+		if (error)
+			goto out_cancel;
 	}
-	error = xfs_attr3_root_inactive(&trans, dp);
-	if (error)
-		goto out;
 
-	error = xfs_itruncate_extents(&trans, dp, XFS_ATTR_FORK, 0);
-	if (error)
-		goto out;
+	/* Reset the attribute fork - this also destroys the in-core fork */
+	xfs_attr_fork_remove(dp, trans);
 
 	error = xfs_trans_commit(trans, XFS_TRANS_RELEASE_LOG_RES);
-	xfs_iunlock(dp, XFS_ILOCK_EXCL);
-
+	xfs_iunlock(dp, lock_mode);
 	return(error);
 
-out:
-	xfs_trans_cancel(trans, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_ABORT);
-	xfs_iunlock(dp, XFS_ILOCK_EXCL);
+out_cancel:
+	xfs_trans_cancel(trans, cancel_flags);
+out_destroy_fork:
+	/* kill the in-core attr fork before we drop the inode lock */
+	if (dp->i_afp)
+		xfs_idestroy_fork(dp, XFS_ATTR_FORK);
+	if (lock_mode)
+		xfs_iunlock(dp, lock_mode);
 	return(error);
 }
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c
index 28712d29e43c..26aa249529c2 100644
--- a/fs/xfs/xfs_attr_leaf.c
+++ b/fs/xfs/xfs_attr_leaf.c
@@ -500,8 +500,8 @@ xfs_attr_shortform_add(xfs_da_args_t *args, int forkoff)
  * After the last attribute is removed revert to original inode format,
  * making all literal area available to the data fork once more.
  */
-STATIC void
-xfs_attr_fork_reset(
+void
+xfs_attr_fork_remove(
 	struct xfs_inode	*ip,
 	struct xfs_trans	*tp)
 {
@@ -567,7 +567,7 @@ xfs_attr_shortform_remove(xfs_da_args_t *args)
 	    (mp->m_flags & XFS_MOUNT_ATTR2) &&
 	    (dp->i_d.di_format != XFS_DINODE_FMT_BTREE) &&
 	    !(args->op_flags & XFS_DA_OP_ADDNAME)) {
-		xfs_attr_fork_reset(dp, args->trans);
+		xfs_attr_fork_remove(dp, args->trans);
 	} else {
 		xfs_idata_realloc(dp, -size, XFS_ATTR_FORK);
 		dp->i_d.di_forkoff = xfs_attr_shortform_bytesfit(dp, totsize);
@@ -830,7 +830,7 @@ xfs_attr3_leaf_to_shortform(
 	if (forkoff == -1) {
 		ASSERT(dp->i_mount->m_flags & XFS_MOUNT_ATTR2);
 		ASSERT(dp->i_d.di_format != XFS_DINODE_FMT_BTREE);
-		xfs_attr_fork_reset(dp, args->trans);
+		xfs_attr_fork_remove(dp, args->trans);
 		goto out;
 	}
 
diff --git a/fs/xfs/xfs_attr_leaf.h b/fs/xfs/xfs_attr_leaf.h
index e2929da7c3ba..4f3a60aa93d4 100644
--- a/fs/xfs/xfs_attr_leaf.h
+++ b/fs/xfs/xfs_attr_leaf.h
@@ -53,7 +53,7 @@ int	xfs_attr_shortform_remove(struct xfs_da_args *args);
 int	xfs_attr_shortform_list(struct xfs_attr_list_context *context);
 int	xfs_attr_shortform_allfit(struct xfs_buf *bp, struct xfs_inode *dp);
 int	xfs_attr_shortform_bytesfit(xfs_inode_t *dp, int bytes);
-
+void	xfs_attr_fork_remove(struct xfs_inode *ip, struct xfs_trans *tp);
 
 /*
  * Internal routines when attribute fork size == XFS_LBSIZE(mp).
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index 162a4b688a0c..97f066419ee1 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -1890,21 +1890,17 @@ xfs_inactive(
 	/*
 	 * If there are attributes associated with the file then blow them away
 	 * now.  The code calls a routine that recursively deconstructs the
-	 * attribute fork.  We need to just commit the current transaction
-	 * because we can't use it for xfs_attr_inactive().
+	 * attribute fork. If also blows away the in-core attribute fork.
 	 */
-	if (ip->i_d.di_anextents > 0) {
-		ASSERT(ip->i_d.di_forkoff != 0);
-
+	if (XFS_IFORK_Q(ip)) {
 		error = xfs_attr_inactive(ip);
 		if (error)
 			return;
 	}
 
-	if (ip->i_afp)
-		xfs_idestroy_fork(ip, XFS_ATTR_FORK);
-
+	ASSERT(!ip->i_afp);
 	ASSERT(ip->i_d.di_anextents == 0);
+	ASSERT(ip->i_d.di_forkoff == 0);
 
 	/*
 	 * Free the inode.

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

* [PATCH 3.16.y-ckt 099/110] fs, omfs: add NULL terminator in the end up the token list
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (97 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 098/110] xfs: xfs_attr_inactive leaves inconsistent attr fork state behind Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 100/110] d_walk() might skip too much Luis Henriques
                   ` (10 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Sasha Levin, Bob Copeland, Andrew Morton, Linus Torvalds, Luis Henriques

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

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

From: Sasha Levin <sasha.levin@oracle.com>

commit dcbff39da3d815f08750552fdd04f96b51751129 upstream.

match_token() expects a NULL terminator at the end of the token list so
that it would know where to stop.  Not having one causes it to overrun
to invalid memory.

In practice, passing a mount option that omfs didn't recognize would
sometimes panic the system.

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/omfs/inode.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/omfs/inode.c b/fs/omfs/inode.c
index ec58c7659183..a6f4e60423a9 100644
--- a/fs/omfs/inode.c
+++ b/fs/omfs/inode.c
@@ -361,7 +361,7 @@ nomem:
 }
 
 enum {
-	Opt_uid, Opt_gid, Opt_umask, Opt_dmask, Opt_fmask
+	Opt_uid, Opt_gid, Opt_umask, Opt_dmask, Opt_fmask, Opt_err
 };
 
 static const match_table_t tokens = {
@@ -370,6 +370,7 @@ static const match_table_t tokens = {
 	{Opt_umask, "umask=%o"},
 	{Opt_dmask, "dmask=%o"},
 	{Opt_fmask, "fmask=%o"},
+	{Opt_err, NULL},
 };
 
 static int parse_options(char *options, struct omfs_sb_info *sbi)

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

* [PATCH 3.16.y-ckt 100/110] d_walk() might skip too much
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (98 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 099/110] fs, omfs: add NULL terminator in the end up the token list Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 101/110] hwmon: (nct6775) Add missing sysfs attribute initialization Luis Henriques
                   ` (9 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Al Viro, Luis Henriques

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

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

From: Al Viro <viro@zeniv.linux.org.uk>

commit 2159184ea01e4ae7d15f2017e296d4bc82d5aeb0 upstream.

when we find that a child has died while we'd been trying to ascend,
we should go into the first live sibling itself, rather than its sibling.

Off-by-one in question had been introduced in "deal with deadlock in
d_walk()" and the fix needs to be backported to all branches this one
has been backported to.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/dcache.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/dcache.c b/fs/dcache.c
index e2dc0874a1f0..05a041a134c4 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1132,13 +1132,13 @@ ascend:
 		/* might go back up the wrong parent if we have had a rename. */
 		if (need_seqretry(&rename_lock, seq))
 			goto rename_retry;
-		next = child->d_child.next;
-		while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)) {
+		/* go into the first sibling still alive */
+		do {
+			next = child->d_child.next;
 			if (next == &this_parent->d_subdirs)
 				goto ascend;
 			child = list_entry(next, struct dentry, d_child);
-			next = next->next;
-		}
+		} while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED));
 		rcu_read_unlock();
 		goto resume;
 	}

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

* [PATCH 3.16.y-ckt 101/110] hwmon: (nct6775) Add missing sysfs attribute initialization
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (99 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 100/110] d_walk() might skip too much Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 102/110] target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST Luis Henriques
                   ` (8 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Guenter Roeck, Luis Henriques

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

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

From: Guenter Roeck <linux@roeck-us.net>

commit 1b63bf617206ff35b93c57c67bbe067ac735a85a upstream.

The following error message is seen when loading the nct6775 driver
with DEBUG_LOCK_ALLOC enabled.

BUG: key ffff88040b2f0030 not in .data!
------------[ cut here ]------------
WARNING: CPU: 0 PID: 186 at kernel/locking/lockdep.c:2988
				lockdep_init_map+0x469/0x630()
DEBUG_LOCKS_WARN_ON(1)

Caused by a missing call to sysfs_attr_init() when initializing
sysfs attributes.

Reported-by: Alexey Orishko <alexey.orishko@gmail.com>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/hwmon/nct6775.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
index 59d9a3fc96b7..a2e63b309fe6 100644
--- a/drivers/hwmon/nct6775.c
+++ b/drivers/hwmon/nct6775.c
@@ -986,6 +986,7 @@ nct6775_create_attr_group(struct device *dev, struct sensor_template_group *tg,
 				 (*t)->dev_attr.attr.name, tg->base + i);
 			if ((*t)->s2) {
 				a2 = &su->u.a2;
+				sysfs_attr_init(&a2->dev_attr.attr);
 				a2->dev_attr.attr.name = su->name;
 				a2->nr = (*t)->u.s.nr + i;
 				a2->index = (*t)->u.s.index;
@@ -996,6 +997,7 @@ nct6775_create_attr_group(struct device *dev, struct sensor_template_group *tg,
 				*attrs = &a2->dev_attr.attr;
 			} else {
 				a = &su->u.a1;
+				sysfs_attr_init(&a->dev_attr.attr);
 				a->dev_attr.attr.name = su->name;
 				a->index = (*t)->u.index + i;
 				a->dev_attr.attr.mode =

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

* [PATCH 3.16.y-ckt 102/110] target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (100 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 101/110] hwmon: (nct6775) Add missing sysfs attribute initialization Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 103/110] x86: bpf_jit: fix compilation of large bpf programs Luis Henriques
                   ` (7 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Andy Grover, Nicholas Bellinger, Luis Henriques

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

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

From: Andy Grover <agrover@redhat.com>

commit 5a7125c64def3b21f8147eca8b54949a60963942 upstream.

See https://bugzilla.redhat.com/show_bug.cgi?id=1025672

We need to put() the reference to the scsi host that we got in
pscsi_configure_device(). In VIRTUAL_HOST mode it is associated with
the dev_virt, not the hba_virt.

Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/target/target_core_pscsi.c | 3 +++
 drivers/target/target_core_pscsi.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c
index 7a986d401d3f..fe88c1bcffbb 100644
--- a/drivers/target/target_core_pscsi.c
+++ b/drivers/target/target_core_pscsi.c
@@ -520,6 +520,7 @@ static int pscsi_configure_device(struct se_device *dev)
 					" pdv_host_id: %d\n", pdv->pdv_host_id);
 				return -EINVAL;
 			}
+			pdv->pdv_lld_host = sh;
 		}
 	} else {
 		if (phv->phv_mode == PHV_VIRTUAL_HOST_ID) {
@@ -602,6 +603,8 @@ static void pscsi_free_device(struct se_device *dev)
 		if ((phv->phv_mode == PHV_LLD_SCSI_HOST_NO) &&
 		    (phv->phv_lld_host != NULL))
 			scsi_host_put(phv->phv_lld_host);
+		else if (pdv->pdv_lld_host)
+			scsi_host_put(pdv->pdv_lld_host);
 
 		if ((sd->type == TYPE_DISK) || (sd->type == TYPE_ROM))
 			scsi_device_put(sd);
diff --git a/drivers/target/target_core_pscsi.h b/drivers/target/target_core_pscsi.h
index 1bd757dff8ee..820d3052b775 100644
--- a/drivers/target/target_core_pscsi.h
+++ b/drivers/target/target_core_pscsi.h
@@ -45,6 +45,7 @@ struct pscsi_dev_virt {
 	int	pdv_lun_id;
 	struct block_device *pdv_bd;
 	struct scsi_device *pdv_sd;
+	struct Scsi_Host *pdv_lld_host;
 } ____cacheline_aligned;
 
 typedef enum phv_modes {

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

* [PATCH 3.16.y-ckt 103/110] x86: bpf_jit: fix compilation of large bpf programs
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (101 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 102/110] target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 104/110] net_sched: invoke ->attach() after setting dev->qdisc Luis Henriques
                   ` (6 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Alexei Starovoitov, David S. Miller, Luis Henriques

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

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

From: Alexei Starovoitov <ast@plumgrid.com>

commit 3f7352bf21f8fd7ba3e2fcef9488756f188e12be upstream.

x86 has variable length encoding. x86 JIT compiler is trying
to pick the shortest encoding for given bpf instruction.
While doing so the jump targets are changing, so JIT is doing
multiple passes over the program. Typical program needs 3 passes.
Some very short programs converge with 2 passes. Large programs
may need 4 or 5. But specially crafted bpf programs may hit the
pass limit and if the program converges on the last iteration
the JIT compiler will be producing an image full of 'int 3' insns.
Fix this corner case by doing final iteration over bpf program.

Fixes: 0a14842f5a3c ("net: filter: Just In Time compiler for x86-64")
Reported-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Tested-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/net/bpf_jit_comp.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
index dcee40b5a330..cde88080969b 100644
--- a/arch/x86/net/bpf_jit_comp.c
+++ b/arch/x86/net/bpf_jit_comp.c
@@ -906,7 +906,12 @@ void bpf_int_jit_compile(struct sk_filter *prog)
 	}
 	ctx.cleanup_addr = proglen;
 
-	for (pass = 0; pass < 10; pass++) {
+	/* JITed image shrinks with every pass and the loop iterates
+	 * until the image stops shrinking. Very large bpf programs
+	 * may converge on the last pass. In such case do one more
+	 * pass to emit the final image
+	 */
+	for (pass = 0; pass < 10 || image; pass++) {
 		proglen = do_jit(prog, addrs, image, oldproglen, &ctx);
 		if (proglen <= 0) {
 			image = NULL;

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

* [PATCH 3.16.y-ckt 104/110] net_sched: invoke ->attach() after setting dev->qdisc
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (102 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 103/110] x86: bpf_jit: fix compilation of large bpf programs Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 105/110] fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings Luis Henriques
                   ` (5 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Jamal Hadi Salim, Cong Wang, David S. Miller, Luis Henriques

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

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

From: WANG Cong <xiyou.wangcong@gmail.com>

commit 86e363dc3b50bfd50a1f315934583fbda673ab8d upstream.

For mq qdisc, we add per tx queue qdisc to root qdisc
for display purpose, however, that happens too early,
before the new dev->qdisc is finally set, this causes
q->list points to an old root qdisc which is going to be
freed right before assigning with a new one.

Fix this by moving ->attach() after setting dev->qdisc.

For the record, this fixes the following crash:

 ------------[ cut here ]------------
 WARNING: CPU: 1 PID: 975 at lib/list_debug.c:59 __list_del_entry+0x5a/0x98()
 list_del corruption. prev->next should be ffff8800d1998ae8, but was 6b6b6b6b6b6b6b6b
 CPU: 1 PID: 975 Comm: tc Not tainted 4.1.0-rc4+ #1019
 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
  0000000000000009 ffff8800d73fb928 ffffffff81a44e7f 0000000047574756
  ffff8800d73fb978 ffff8800d73fb968 ffffffff810790da ffff8800cfc4cd20
  ffffffff814e725b ffff8800d1998ae8 ffffffff82381250 0000000000000000
 Call Trace:
  [<ffffffff81a44e7f>] dump_stack+0x4c/0x65
  [<ffffffff810790da>] warn_slowpath_common+0x9c/0xb6
  [<ffffffff814e725b>] ? __list_del_entry+0x5a/0x98
  [<ffffffff81079162>] warn_slowpath_fmt+0x46/0x48
  [<ffffffff81820eb0>] ? dev_graft_qdisc+0x5e/0x6a
  [<ffffffff814e725b>] __list_del_entry+0x5a/0x98
  [<ffffffff814e72a7>] list_del+0xe/0x2d
  [<ffffffff81822f05>] qdisc_list_del+0x1e/0x20
  [<ffffffff81820cd1>] qdisc_destroy+0x30/0xd6
  [<ffffffff81822676>] qdisc_graft+0x11d/0x243
  [<ffffffff818233c1>] tc_get_qdisc+0x1a6/0x1d4
  [<ffffffff810b5eaf>] ? mark_lock+0x2e/0x226
  [<ffffffff817ff8f5>] rtnetlink_rcv_msg+0x181/0x194
  [<ffffffff817ff72e>] ? rtnl_lock+0x17/0x19
  [<ffffffff817ff72e>] ? rtnl_lock+0x17/0x19
  [<ffffffff817ff774>] ? __rtnl_unlock+0x17/0x17
  [<ffffffff81855dc6>] netlink_rcv_skb+0x4d/0x93
  [<ffffffff817ff756>] rtnetlink_rcv+0x26/0x2d
  [<ffffffff818544b2>] netlink_unicast+0xcb/0x150
  [<ffffffff81161db9>] ? might_fault+0x59/0xa9
  [<ffffffff81854f78>] netlink_sendmsg+0x4fa/0x51c
  [<ffffffff817d6e09>] sock_sendmsg_nosec+0x12/0x1d
  [<ffffffff817d8967>] sock_sendmsg+0x29/0x2e
  [<ffffffff817d8cf3>] ___sys_sendmsg+0x1b4/0x23a
  [<ffffffff8100a1b8>] ? native_sched_clock+0x35/0x37
  [<ffffffff810a1d83>] ? sched_clock_local+0x12/0x72
  [<ffffffff810a1fd4>] ? sched_clock_cpu+0x9e/0xb7
  [<ffffffff810def2a>] ? current_kernel_time+0xe/0x32
  [<ffffffff810b4bc5>] ? lock_release_holdtime.part.29+0x71/0x7f
  [<ffffffff810ddebf>] ? read_seqcount_begin.constprop.27+0x5f/0x76
  [<ffffffff810b6292>] ? trace_hardirqs_on_caller+0x17d/0x199
  [<ffffffff811b14d5>] ? __fget_light+0x50/0x78
  [<ffffffff817d9808>] __sys_sendmsg+0x42/0x60
  [<ffffffff817d9838>] SyS_sendmsg+0x12/0x1c
  [<ffffffff81a50e97>] system_call_fastpath+0x12/0x6f
 ---[ end trace ef29d3fb28e97ae7 ]---

For long term, we probably need to clean up the qdisc_graft() code
in case it hides other bugs like this.

Fixes: 95dc19299f74 ("pkt_sched: give visibility to mq slave qdiscs")
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/sched/sch_api.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 58bed7599db7..04de05ae7c5e 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -812,10 +812,8 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent,
 		if (dev->flags & IFF_UP)
 			dev_deactivate(dev);
 
-		if (new && new->ops->attach) {
-			new->ops->attach(new);
-			num_q = 0;
-		}
+		if (new && new->ops->attach)
+			goto skip;
 
 		for (i = 0; i < num_q; i++) {
 			struct netdev_queue *dev_queue = dev_ingress_queue(dev);
@@ -831,12 +829,16 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent,
 				qdisc_destroy(old);
 		}
 
+skip:
 		if (!ingress) {
 			notify_and_destroy(net, skb, n, classid,
 					   dev->qdisc, new);
 			if (new && !new->ops->attach)
 				atomic_inc(&new->refcnt);
 			dev->qdisc = new ? : &noop_qdisc;
+
+			if (new && new->ops->attach)
+				new->ops->attach(new);
 		} else {
 			notify_and_destroy(net, skb, n, classid, old, new);
 		}

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

* [PATCH 3.16.y-ckt 105/110] fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (103 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 104/110] net_sched: invoke ->attach() after setting dev->qdisc Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 106/110] tools/vm: fix page-flags build Luis Henriques
                   ` (4 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Michael Davidson, Andrew Morton, Linus Torvalds, Luis Henriques

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

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

From: Andrew Morton <akpm@linux-foundation.org>

commit 2b1d3ae940acd11be44c6eced5873d47c2e00ffa upstream.

load_elf_binary() returns `retval', not `error'.

Fixes: a87938b2e246b81b4fb ("fs/binfmt_elf.c: fix bug in loading of PIE binaries")
Reported-by: James Hogan <james.hogan@imgtec.com>
Cc: Michael Davidson <md@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/binfmt_elf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 44bdf7b200c3..c13a138c1016 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -820,7 +820,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
 			total_size = total_mapping_size(elf_phdata,
 							loc->elf_ex.e_phnum);
 			if (!total_size) {
-				error = -EINVAL;
+				retval = -EINVAL;
 				goto out_free_dentry;
 			}
 		}

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

* [PATCH 3.16.y-ckt 106/110] tools/vm: fix page-flags build
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (104 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 105/110] fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 107/110] vfs: read file_handle only once in handle_to_path Luis Henriques
                   ` (3 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Andi Kleen, Naoya Horiguchi, Andrew Morton, Linus Torvalds,
	Luis Henriques

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

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

From: Andi Kleen <ak@linux.intel.com>

commit 4933f55fe72c86e57efc454dd6e673c7f17af5a3 upstream.

libabikfs.a doesn't exist anymore, so we now need to link with libapi.a.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 tools/vm/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/vm/Makefile b/tools/vm/Makefile
index 3d907dacf2ac..c604f3ec628a 100644
--- a/tools/vm/Makefile
+++ b/tools/vm/Makefile
@@ -3,7 +3,7 @@
 TARGETS=page-types slabinfo
 
 LIB_DIR = ../lib/api
-LIBS = $(LIB_DIR)/libapikfs.a
+LIBS = $(LIB_DIR)/libapi.a
 
 CC = $(CROSS_COMPILE)gcc
 CFLAGS = -Wall -Wextra -I../lib/

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

* [PATCH 3.16.y-ckt 107/110] vfs: read file_handle only once in handle_to_path
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (105 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 106/110] tools/vm: fix page-flags build Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 108/110] rt2x00: add new rt2800usb device DWA 130 Luis Henriques
                   ` (2 subsequent siblings)
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Sasha Levin, Al Viro, Linus Torvalds, Luis Henriques

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

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

From: Sasha Levin <sasha.levin@oracle.com>

commit 161f873b89136eb1e69477c847d5a5033239d9ba upstream.

We used to read file_handle twice.  Once to get the amount of extra
bytes, and once to fetch the entire structure.

This may be problematic since we do size verifications only after the
first read, so if the number of extra bytes changes in userspace between
the first and second calls, we'll have an incoherent view of
file_handle.

Instead, read the constant size once, and copy that over to the final
structure without having to re-read it again.

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/fhandle.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/fhandle.c b/fs/fhandle.c
index 999ff5c3cab0..d59712dfa3e7 100644
--- a/fs/fhandle.c
+++ b/fs/fhandle.c
@@ -195,8 +195,9 @@ static int handle_to_path(int mountdirfd, struct file_handle __user *ufh,
 		goto out_err;
 	}
 	/* copy the full handle */
-	if (copy_from_user(handle, ufh,
-			   sizeof(struct file_handle) +
+	*handle = f_handle;
+	if (copy_from_user(&handle->f_handle,
+			   &ufh->f_handle,
 			   f_handle.handle_bytes)) {
 		retval = -EFAULT;
 		goto out_handle;

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

* [PATCH 3.16.y-ckt 108/110] rt2x00: add new rt2800usb device DWA 130
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (106 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 107/110] vfs: read file_handle only once in handle_to_path Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 109/110] udf: Remove repeated loads blocksize Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 110/110] udf: Check length of extended attributes and allocation descriptors Luis Henriques
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team
  Cc: Scott Branden, Pieter Truter, Kalle Valo, Larry Finger, Luis Henriques

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

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

From: Scott Branden <sbranden@broadcom.com>

commit ea345c145ff23197eab34d0c4d0c8a93d7bea8c6 upstream.

Add the USB Id to link the D-Link DWA 130 USB Wifi adapter
to the rt2830 driver.

Signed-off-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Pieter Truter <ptruter@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/net/wireless/rt2x00/rt2800usb.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 8444313eabe2..8694dddcce9a 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -1040,6 +1040,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
 	{ USB_DEVICE(0x07d1, 0x3c17) },
 	{ USB_DEVICE(0x2001, 0x3317) },
 	{ USB_DEVICE(0x2001, 0x3c1b) },
+	{ USB_DEVICE(0x2001, 0x3c25) },
 	/* Draytek */
 	{ USB_DEVICE(0x07fa, 0x7712) },
 	/* DVICO */

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

* [PATCH 3.16.y-ckt 109/110] udf: Remove repeated loads blocksize
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (107 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 108/110] rt2x00: add new rt2800usb device DWA 130 Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 110/110] udf: Check length of extended attributes and allocation descriptors Luis Henriques
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Jan Kara, Ben Hutchings, Luis Henriques

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

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

From: Jan Kara <jack@suse.cz>

commit 79144954278d4bb5989f8b903adcac7a20ff2a5a upstream.

Store blocksize in a local variable in udf_fill_inode() since it is used
a lot of times.

Signed-off-by: Jan Kara <jack@suse.cz>
[bwh: Needed for the following fix. Backported to 3.16: adjust context.]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/udf/inode.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index bf08a9fbb97e..c7a5753dc4ec 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -1365,6 +1365,7 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
 	struct udf_sb_info *sbi = UDF_SB(inode->i_sb);
 	struct udf_inode_info *iinfo = UDF_I(inode);
 	unsigned int link_count;
+	int bs = inode->i_sb->s_blocksize;
 
 	fe = (struct fileEntry *)bh->b_data;
 	efe = (struct extendedFileEntry *)bh->b_data;
@@ -1385,41 +1386,38 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
 	if (fe->descTag.tagIdent == cpu_to_le16(TAG_IDENT_EFE)) {
 		iinfo->i_efe = 1;
 		iinfo->i_use = 0;
-		if (udf_alloc_i_data(inode, inode->i_sb->s_blocksize -
+		if (udf_alloc_i_data(inode, bs -
 					sizeof(struct extendedFileEntry))) {
 			make_bad_inode(inode);
 			return;
 		}
 		memcpy(iinfo->i_ext.i_data,
 		       bh->b_data + sizeof(struct extendedFileEntry),
-		       inode->i_sb->s_blocksize -
-					sizeof(struct extendedFileEntry));
+		       bs - sizeof(struct extendedFileEntry));
 	} else if (fe->descTag.tagIdent == cpu_to_le16(TAG_IDENT_FE)) {
 		iinfo->i_efe = 0;
 		iinfo->i_use = 0;
-		if (udf_alloc_i_data(inode, inode->i_sb->s_blocksize -
-						sizeof(struct fileEntry))) {
+		if (udf_alloc_i_data(inode, bs - sizeof(struct fileEntry))) {
 			make_bad_inode(inode);
 			return;
 		}
 		memcpy(iinfo->i_ext.i_data,
 		       bh->b_data + sizeof(struct fileEntry),
-		       inode->i_sb->s_blocksize - sizeof(struct fileEntry));
+		       bs - sizeof(struct fileEntry));
 	} else if (fe->descTag.tagIdent == cpu_to_le16(TAG_IDENT_USE)) {
 		iinfo->i_efe = 0;
 		iinfo->i_use = 1;
 		iinfo->i_lenAlloc = le32_to_cpu(
 				((struct unallocSpaceEntry *)bh->b_data)->
 				 lengthAllocDescs);
-		if (udf_alloc_i_data(inode, inode->i_sb->s_blocksize -
+		if (udf_alloc_i_data(inode, bs -
 					sizeof(struct unallocSpaceEntry))) {
 			make_bad_inode(inode);
 			return;
 		}
 		memcpy(iinfo->i_ext.i_data,
 		       bh->b_data + sizeof(struct unallocSpaceEntry),
-		       inode->i_sb->s_blocksize -
-					sizeof(struct unallocSpaceEntry));
+		       bs - sizeof(struct unallocSpaceEntry));
 		return;
 	}
 
@@ -1507,8 +1505,7 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
 			return;
 		}
 		/* File in ICB has to fit in there... */
-		if (inode->i_size > inode->i_sb->s_blocksize -
-					udf_file_entry_alloc_offset(inode)) {
+		if (inode->i_size > bs - udf_file_entry_alloc_offset(inode)) {
 			make_bad_inode(inode);
 			return;
 		}

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

* [PATCH 3.16.y-ckt 110/110] udf: Check length of extended attributes and allocation descriptors
  2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
                   ` (108 preceding siblings ...)
  2015-06-05 13:58 ` [PATCH 3.16.y-ckt 109/110] udf: Remove repeated loads blocksize Luis Henriques
@ 2015-06-05 13:58 ` Luis Henriques
  109 siblings, 0 replies; 111+ messages in thread
From: Luis Henriques @ 2015-06-05 13:58 UTC (permalink / raw)
  To: linux-kernel, stable, kernel-team; +Cc: Jan Kara, Ben Hutchings, Luis Henriques

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

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

From: Jan Kara <jack@suse.cz>

commit 23b133bdc452aa441fcb9b82cbf6dd05cfd342d0 upstream.

Check length of extended attributes and allocation descriptors when
loading inodes from disk. Otherwise corrupted filesystems could confuse
the code and make the kernel oops.

Reported-by: Carl Henrik Lunde <chlunde@ping.uio.no>
Signed-off-by: Jan Kara <jack@suse.cz>
[bwh: Backported to 3.16: use make_bad_inode() instead of returning error]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/udf/inode.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index c7a5753dc4ec..9a46e23cb769 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -1494,6 +1494,19 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
 		iinfo->i_checkpoint = le32_to_cpu(efe->checkpoint);
 	}
 
+	/*
+	 * Sanity check length of allocation descriptors and extended attrs to
+	 * avoid integer overflows
+	 */
+	if (iinfo->i_lenEAttr > bs || iinfo->i_lenAlloc > bs) {
+		make_bad_inode(inode);
+		return;
+	}
+	/* Now do exact checks */
+	if (udf_file_entry_alloc_offset(inode) + iinfo->i_lenAlloc > bs) {
+		make_bad_inode(inode);
+		return;
+	}
 	/* Sanity checks for files in ICB so that we don't get confused later */
 	if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
 		/*

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

end of thread, other threads:[~2015-06-05 14:47 UTC | newest]

Thread overview: 111+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-05 13:56 [3.16.y-ckt stable] Linux 3.16.7-ckt13 stable review Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 001/110] kprobes/x86: Return correct length in __copy_instruction() Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 002/110] iio: light: hid-sensor-prox: Fix modifier Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 003/110] iio: pressure: hid-sensor-press: " Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 004/110] iio: adc: xilinx: Fix register addresses Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 005/110] iio: adc: xilinx: Fix "vccaux" channel .address Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 006/110] iio: adc: xilinx: Fix VREFP scale Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 007/110] iio: adc: xilinx: Fix VREFN sign Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 008/110] libata: Add helper to determine when PHY events should be ignored Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 009/110] libata: Ignore spurious PHY event on LPM policy change Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 010/110] iio:st_sensors: Fix oops when probing SPI devices Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 011/110] usb: gadget: configfs: Fix interfaces array NULL-termination Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 012/110] rtlwifi: rtl8192cu: Fix kernel deadlock Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 013/110] USB: cp210x: add ID for KCF Technologies PRN device Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 014/110] USB: pl2303: Remove support for Samsung I330 Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 015/110] USB: visor: Match I330 phone more precisely Luis Henriques
2015-06-05 13:56 ` [PATCH 3.16.y-ckt 016/110] net: can: xilinx_can: fix extended frame handling Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 017/110] nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 018/110] svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 019/110] libata: Update Crucial/Micron blacklist Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 020/110] libata: Blacklist queued TRIM on Samsung SSD 850 Pro Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 021/110] libata: Blacklist queued TRIM on all Samsung 800-series Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 022/110] ACPI / init: Fix the ordering of acpi_reserve_resources() Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 023/110] md/raid5: don't record new size if resize_stripes fails Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 024/110] sched: Handle priority boosted tasks proper in setscheduler() Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 025/110] xhci: fix isoc endpoint dequeue from advancing too far on transaction error Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 026/110] xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 027/110] xhci: gracefully handle xhci_irq dead device Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 028/110] staging: gdm724x: Correction of variable usage after applying ALIGN() Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 029/110] usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 030/110] ahci: avoton port-disable reset-quirk Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 031/110] tty/n_gsm.c: fix a memory leak when gsmtty is removed Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 032/110] ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 033/110] x86/vdso: Fix the x86 vdso2c tool includes Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 034/110] x86/vdso: Fix 'make bzImage' on older distros Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 035/110] perf/x86/rapl: Enable Broadwell-U RAPL support Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 036/110] drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 037/110] RDMA/core: Fix for parsing netlink string attribute Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 038/110] drm/radeon: add new bonaire pci id Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 039/110] parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 040/110] firmware: dmi_scan: Fix ordering of product_uuid Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 041/110] ext4: fix NULL pointer dereference when journal restart fails Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 042/110] ext4: check for zero length extent explicitly Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 043/110] jbd2: fix r_count overflows leading to buffer overflow in journal recovery Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 044/110] mm, numa: really disable NUMA balancing by default on single node machines Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 045/110] spi: bitbang: Make setup_transfer() callback optional Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 046/110] igb: Fix oops on changing number of rings Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 047/110] igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 048/110] ARM: gemini: fix compiler warning due wrong data type Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 049/110] arm64: add missing PAGE_ALIGN() to __dma_free() Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 050/110] sound/oss: fix deadlock in sequencer_ioctl(SNDCTL_SEQ_OUTOFBAND) Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 051/110] ARM: 8307/1: psci: move psci firmware calls out of line Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 052/110] config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 053/110] staging, rtl8192e, LLVMLinux: Change extern inline to static inline Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 054/110] kernel: use the gnu89 standard explicitly Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 055/110] staging, rtl8192e, LLVMLinux: Remove unused inline prototype Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 056/110] staging: wlags49_h2: fix extern inline functions Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 057/110] staging: rtl8712, rtl8712: avoid lots of build warnings Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 058/110] qla2xxx: remove redundant declaration in 'qla_gbl.h' Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 059/110] ARM: mvebu: do not register custom DMA operations when coherency is disabled Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 060/110] net: socket: Fix the wrong returns for recvmsg and sendmsg Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 061/110] ALSA: hda - Add headphone quirk for Lifebook E752 Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 062/110] ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 063/110] thermal: armada: Update Armada 380 thermal sensor coefficients Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 064/110] mac80211: move WEP tailroom size check Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 065/110] KVM: MMU: fix smap permission check Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 066/110] KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 067/110] KVM: MMU: fix SMAP virtualization Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 068/110] storvsc: Set the SRB flags correctly when no data transfer is needed Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 069/110] ASoC: wm8960: fix "RINPUT3" audio route error Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 070/110] ASoC: wm8994: correct BCLK DIV 348 to 384 Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 071/110] Input: elantech - fix semi-mt protocol for v3 HW Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 072/110] powerpc: Align TOC to 256 bytes Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 073/110] ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 074/110] ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450 Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 075/110] mmc: atmel-mci: fix bad variable type for clkdiv Luis Henriques
2015-06-05 13:57 ` [PATCH 3.16.y-ckt 076/110] sd: Disable support for 256 byte/sector disks Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 077/110] xen/events: don't bind non-percpu VIRQs with percpu chip Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 078/110] libceph: request a new osdmap if lingering request maps to no osd Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 079/110] crypto: s390/ghash - Fix incorrect ghash icv buffer handling Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 080/110] ipvs: fix memory leak in ip_vs_ctl.c Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 081/110] tcp/ipv6: fix flow label setting in TIME_WAIT state Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 082/110] ipv6: do not delete previously existing ECMP routes if add fails Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 083/110] ipv6: fix ECMP route replacement Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 084/110] ipv4: Avoid crashing in ip_error Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 085/110] cdc_ncm: Fix tx_bytes statistics Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 086/110] bridge: fix parsing of MLDv2 reports Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 087/110] ARM: fix missing syscall trace exit Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 088/110] module: Call module notifier on failure after complete_formation() Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 089/110] gpio: gpio-kempld: Fix get_direction return value Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 090/110] ARM: dts: imx27: only map 4 Kbyte for fec registers Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 091/110] ARM: 8356/1: mm: handle non-pmd-aligned end of RAM Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 092/110] mac80211: don't use napi_gro_receive() outside NAPI context Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 093/110] ARM: dts: set display clock correctly for exynos4412-trats2 Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 094/110] Revert "ALSA: hda - Add mute-LED mode control to Thinkpad" Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 095/110] hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 096/110] lguest: fix out-by-one error in address checking Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 097/110] drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling" Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 098/110] xfs: xfs_attr_inactive leaves inconsistent attr fork state behind Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 099/110] fs, omfs: add NULL terminator in the end up the token list Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 100/110] d_walk() might skip too much Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 101/110] hwmon: (nct6775) Add missing sysfs attribute initialization Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 102/110] target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 103/110] x86: bpf_jit: fix compilation of large bpf programs Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 104/110] net_sched: invoke ->attach() after setting dev->qdisc Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 105/110] fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 106/110] tools/vm: fix page-flags build Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 107/110] vfs: read file_handle only once in handle_to_path Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 108/110] rt2x00: add new rt2800usb device DWA 130 Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 109/110] udf: Remove repeated loads blocksize Luis Henriques
2015-06-05 13:58 ` [PATCH 3.16.y-ckt 110/110] udf: Check length of extended attributes and allocation descriptors Luis Henriques

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).