linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 4.14 00/62] 4.14.84-stable review
@ 2018-11-26 10:50 Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 01/62] cifs: dont dereference smb_file_target before null check Greg Kroah-Hartman
                   ` (66 more replies)
  0 siblings, 67 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

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

Responses should be made by Wed Nov 28 10:50:20 UTC 2018.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.84-rc1.gz
or in the git tree and branch at:
	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
and the diffstat can be found below.

thanks,

greg k-h

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

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

Ilya Dryomov <idryomov@gmail.com>
    libceph: fall back to sendmsg for slab pages

Eric Biggers <ebiggers@google.com>
    HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges

Hans de Goede <hdegoede@redhat.com>
    ACPI / platform: Add SMB0001 HID to forbidden_id_list

Gustavo A. R. Silva <gustavo@embeddedor.com>
    drivers/misc/sgi-gru: fix Spectre v1 vulnerability

Johan Hovold <johan@kernel.org>
    mtd: rawnand: atmel: fix OF child-node lookup

Mattias Jacobsson <2pi@mok.nu>
    USB: misc: appledisplay: add 20" Apple Cinema Display

Nathan Chancellor <natechancellor@gmail.com>
    misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data

Emmanuel Pescosta <emmanuelpescosta099@gmail.com>
    usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB

Kai-Heng Feng <kai.heng.feng@canonical.com>
    USB: quirks: Add no-lpm quirk for Raydium touchscreens

Maarten Jacobs <maarten256@outlook.com>
    usb: cdc-acm: add entry for Hiro (Conexant) modem

Dan Carpenter <dan.carpenter@oracle.com>
    uio: Fix an Oops on load

Aaro Koskinen <aaro.koskinen@iki.fi>
    MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver

Sakari Ailus <sakari.ailus@linux.intel.com>
    media: v4l: event: Add subscription to list before calling "add" operation

Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    x86/ldt: Unmap PTEs for the slot before freeing LDT pages

Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    x86/mm: Move LDT remap out of KASLR region on 5-level paging

Adrian Hunter <adrian.hunter@intel.com>
    perf test code-reading: Fix perf_env setup for PTI entry trampolines

Adrian Hunter <adrian.hunter@intel.com>
    perf machine: Workaround missing maps for x86 PTI entry trampolines

Adrian Hunter <adrian.hunter@intel.com>
    perf machine: Add nr_cpus_avail()

Adrian Hunter <adrian.hunter@intel.com>
    perf tools: Fix kernel_start for PTI on x86

Adrian Hunter <adrian.hunter@intel.com>
    perf machine: Add machine__is() to identify machine arch

Mika Westerberg <mika.westerberg@linux.intel.com>
    ACPI / watchdog: Prefer iTCO_wdt always when WDAT table uses RTC SRAM

YueHaibing <yuehaibing@huawei.com>
    SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer()

Minchan Kim <minchan@kernel.org>
    zram: close udev startup race condition as default groups

Thor Thayer <thor.thayer@linux.intel.com>
    net: stmmac: Fix RX packet size > 8191

Sagiv Ozeri <sagiv.ozeri@cavium.com>
    qed: Fix potential memory corruption

Denis Bolotin <denis.bolotin@cavium.com>
    qed: Fix blocking/unlimited SPQ entries leak

Denis Bolotin <denis.bolotin@cavium.com>
    qed: Fix memory/entry leak in qed_init_sp_request()

Jacob Keller <jacob.e.keller@intel.com>
    i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features

Gustavo Romero <gromero@linux.vnet.ibm.com>
    perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so

Valentin Schneider <valentin.schneider@arm.com>
    sched/core: Take the hotplug lock in sched_init_smp()

Vignesh R <vigneshr@ti.com>
    i2c: omap: Enable for ARCH_K3

Thomas Richter <tmricht@linux.ibm.com>
    s390/perf: Change CPUM_CF return code in event init function

Jeremy Linton <jeremy.linton@arm.com>
    lib/raid6: Fix arm64 test build

Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    clk: fixed-factor: fix of_node_get-put imbalance

Inki Dae <inki.dae@samsung.com>
    Revert "drm/exynos/decon5433: implement frame counter"

Geert Uytterhoeven <geert@linux-m68k.org>
    hwmon: (ibmpowernv) Remove bogus __init annotations

Julian Wiedmann <jwi@linux.ibm.com>
    s390/qeth: fix HiperSockets sniffer

Taehee Yoo <ap420073@gmail.com>
    netfilter: xt_IDLETIMER: add sysfs filename checking routine

Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment()

Justin M. Forbes <jforbes@fedoraproject.org>
    s390/mm: Fix ERROR: "__node_distance" undefined!

Eric Westbrook <eric@westbrook.io>
    netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net

Stefano Brivio <sbrivio@redhat.com>
    netfilter: ipset: list:set: Decrease refcount synchronously on deletion and replace

Vasily Gorbik <gor@linux.ibm.com>
    s390/vdso: add missing FORCE to build targets

Nathan Chancellor <natechancellor@gmail.com>
    arm64: percpu: Initialize ret in the default case

Paul Gortmaker <paul.gortmaker@windriver.com>
    platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307

Feng Tang <feng.tang@intel.com>
    x86/earlyprintk: Add a force option for pciserial device

Zubin Mithra <zsm@chromium.org>
    apparmor: Fix uninitialized value in aa_split_fqname

Marek Szyprowski <m.szyprowski@samsung.com>
    clk: samsung: exynos5420: Enable PERIS clocks for suspend

Chengguang Xu <cgxu519@gmx.com>
    fs/exofs: fix potential memory leak in mount option parsing

David Miller <davem@davemloft.net>
    perf symbols: Set PLT entry/header sizes properly on Sparc

Alan Tull <atull@kernel.org>
    clk: fixed-rate: fix of_node_get-put imbalance

Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
    platform/x86: intel_telemetry: report debugfs failure

Lee, Shawn C <shawn.c.lee@intel.com>
    drm/edid: Add 6 bpc quirk for BOE panel.

Richard Weinberger <richard@nod.at>
    um: Give start_idle_thread() a return code

Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    hfsplus: prevent btree data loss on root split

Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    hfs: prevent btree data loss on root split

Jann Horn <jannh@google.com>
    reiserfs: propagate errors from fill_with_dentries() properly

Radoslaw Tyl <radoslawx.tyl@intel.com>
    ixgbe: fix MAC anti-spoofing filter after VFLR

Keith Busch <keith.busch@intel.com>
    nvme-pci: fix conflicting p2p resource adds

Anders Roxell <anders.roxell@linaro.org>
    arm64: kprobe: make page to RO mode when allocate it

Ronnie Sahlberg <lsahlber@redhat.com>
    cifs: fix return value for cifs_listxattr

Colin Ian King <colin.king@canonical.com>
    cifs: don't dereference smb_file_target before null check


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

Diffstat:

 Documentation/admin-guide/kernel-parameters.txt   |   6 +-
 Documentation/x86/x86_64/mm.txt                   |  10 +-
 Makefile                                          |   4 +-
 arch/arm64/include/asm/percpu.h                   |   3 +
 arch/arm64/kernel/probes/kprobes.c                |  27 +++--
 arch/mips/configs/cavium_octeon_defconfig         |   1 +
 arch/s390/kernel/perf_cpum_cf.c                   |   2 +-
 arch/s390/kernel/vdso32/Makefile                  |   6 +-
 arch/s390/kernel/vdso64/Makefile                  |   6 +-
 arch/s390/numa/numa.c                             |   1 +
 arch/um/os-Linux/skas/process.c                   |   5 +
 arch/x86/include/asm/page_64_types.h              |  12 ++-
 arch/x86/include/asm/pgtable_64_types.h           |   7 +-
 arch/x86/kernel/early_printk.c                    |  29 ++++--
 arch/x86/kernel/ldt.c                             |  49 ++++++---
 arch/x86/xen/mmu_pv.c                             |   6 +-
 drivers/acpi/acpi_platform.c                      |   1 +
 drivers/acpi/acpi_watchdog.c                      |  72 ++++++++-----
 drivers/block/zram/zram_drv.c                     |  26 ++---
 drivers/clk/clk-fixed-factor.c                    |   1 +
 drivers/clk/clk-fixed-rate.c                      |   1 +
 drivers/clk/samsung/clk-exynos5420.c              |   1 +
 drivers/gpu/drm/drm_edid.c                        |   3 +
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c     |   9 --
 drivers/gpu/drm/exynos/exynos_drm_crtc.c          |  11 --
 drivers/gpu/drm/exynos/exynos_drm_drv.h           |   1 -
 drivers/hid/uhid.c                                |  12 +++
 drivers/hwmon/ibmpowernv.c                        |   7 +-
 drivers/i2c/busses/Kconfig                        |   2 +-
 drivers/media/v4l2-core/v4l2-event.c              |  43 ++++----
 drivers/misc/atmel-ssc.c                          |   2 +-
 drivers/misc/sgi-gru/grukdump.c                   |   4 +
 drivers/mtd/nand/atmel/nand-controller.c          |  11 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c       |   2 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c    |   4 +-
 drivers/net/ethernet/qlogic/qed/qed_sp.h          |   3 +
 drivers/net/ethernet/qlogic/qed/qed_sp_commands.c |  16 ++-
 drivers/net/ethernet/qlogic/qed/qed_spq.c         |  69 ++++++-------
 drivers/net/ethernet/stmicro/stmmac/common.h      |   3 +-
 drivers/net/ethernet/stmicro/stmmac/descs_com.h   |   2 +-
 drivers/net/ethernet/stmicro/stmmac/enh_desc.c    |   2 +-
 drivers/net/ethernet/stmicro/stmmac/ring_mode.c   |   2 +-
 drivers/nvme/host/pci.c                           |   5 +-
 drivers/platform/x86/acerhdf.c                    |   1 +
 drivers/platform/x86/intel_telemetry_debugfs.c    |   8 +-
 drivers/s390/net/qeth_l3_main.c                   |   8 +-
 drivers/uio/uio.c                                 |   7 +-
 drivers/usb/class/cdc-acm.c                       |   3 +
 drivers/usb/core/quirks.c                         |   8 ++
 drivers/usb/misc/appledisplay.c                   |   1 +
 fs/cifs/cifsfs.c                                  |   7 +-
 fs/cifs/smb2ops.c                                 |  11 +-
 fs/exofs/super.c                                  |   5 +-
 fs/hfs/brec.c                                     |   4 +
 fs/hfsplus/brec.c                                 |   4 +
 fs/reiserfs/xattr.c                               |   7 ++
 include/linux/netfilter/ipset/ip_set.h            |   2 +-
 include/linux/netfilter/ipset/ip_set_comment.h    |   4 +-
 kernel/sched/core.c                               |   5 +-
 lib/raid6/test/Makefile                           |   4 +-
 net/ceph/messenger.c                              |  12 ++-
 net/netfilter/ipset/ip_set_core.c                 |  23 ++---
 net/netfilter/ipset/ip_set_hash_netportnet.c      |   8 +-
 net/netfilter/ipset/ip_set_list_set.c             |  17 ++--
 net/netfilter/xt_IDLETIMER.c                      |  20 ++++
 net/sunrpc/xdr.c                                  |   2 +-
 security/apparmor/lib.c                           |   6 +-
 tools/perf/jvmti/jvmti_agent.c                    |  49 +++++++--
 tools/perf/tests/code-reading.c                   |   1 +
 tools/perf/util/env.c                             |  32 ++++++
 tools/perf/util/env.h                             |   4 +
 tools/perf/util/machine.c                         | 117 +++++++++++++++++++++-
 tools/perf/util/machine.h                         |   6 ++
 tools/perf/util/symbol-elf.c                      |  12 ++-
 tools/perf/util/symbol.c                          |  12 ++-
 75 files changed, 637 insertions(+), 262 deletions(-)



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

* [PATCH 4.14 01/62] cifs: dont dereference smb_file_target before null check
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 02/62] cifs: fix return value for cifs_listxattr Greg Kroah-Hartman
                   ` (65 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Colin Ian King, Steve French, Sasha Levin

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

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

[ Upstream commit 8c6c9bed8773375b1d54ccca2911ec892c59db5d ]

There is a null check on dst_file->private data which suggests
it can be potentially null. However, before this check, pointer
smb_file_target is derived from dst_file->private and dereferenced
in the call to tlink_tcon, hence there is a potential null pointer
deference.

Fix this by assigning smb_file_target and target_tcon after the
null pointer sanity checks.

Detected by CoverityScan, CID#1475302 ("Dereference before null check")

Fixes: 04b38d601239 ("vfs: pull btrfs clone API to vfs layer")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/cifs/cifsfs.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 44a7b2dea688..c5fd5abf7206 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -933,8 +933,8 @@ static int cifs_clone_file_range(struct file *src_file, loff_t off,
 	struct inode *src_inode = file_inode(src_file);
 	struct inode *target_inode = file_inode(dst_file);
 	struct cifsFileInfo *smb_file_src = src_file->private_data;
-	struct cifsFileInfo *smb_file_target = dst_file->private_data;
-	struct cifs_tcon *target_tcon = tlink_tcon(smb_file_target->tlink);
+	struct cifsFileInfo *smb_file_target;
+	struct cifs_tcon *target_tcon;
 	unsigned int xid;
 	int rc;
 
@@ -948,6 +948,9 @@ static int cifs_clone_file_range(struct file *src_file, loff_t off,
 		goto out;
 	}
 
+	smb_file_target = dst_file->private_data;
+	target_tcon = tlink_tcon(smb_file_target->tlink);
+
 	/*
 	 * Note: cifs case is easier than btrfs since server responsible for
 	 * checks for proper open modes and file type and if it wants
-- 
2.17.1




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

* [PATCH 4.14 02/62] cifs: fix return value for cifs_listxattr
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 01/62] cifs: dont dereference smb_file_target before null check Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 03/62] arm64: kprobe: make page to RO mode when allocate it Greg Kroah-Hartman
                   ` (64 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ronnie Sahlberg, Steve French,
	Aurelien Aptel, Sasha Levin

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

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

[ Upstream commit 0c5d6cb6643f48ad3775322f3ebab6c7eb67484e ]

If the application buffer was too small to fit all the names
we would still count the number of bytes and return this for
listxattr. This would then trigger a BUG in usercopy.c

Fix the computation of the size so that we return -ERANGE
correctly when the buffer is too small.

This fixes the kernel BUG for xfstest generic/377

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/cifs/smb2ops.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index 4e5b05263e4a..3372eedaa94d 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -441,6 +441,7 @@ move_smb2_ea_to_cifs(char *dst, size_t dst_size,
 	int rc = 0;
 	unsigned int ea_name_len = ea_name ? strlen(ea_name) : 0;
 	char *name, *value;
+	size_t buf_size = dst_size;
 	size_t name_len, value_len, user_name_len;
 
 	while (src_size > 0) {
@@ -476,9 +477,10 @@ move_smb2_ea_to_cifs(char *dst, size_t dst_size,
 			/* 'user.' plus a terminating null */
 			user_name_len = 5 + 1 + name_len;
 
-			rc += user_name_len;
-
-			if (dst_size >= user_name_len) {
+			if (buf_size == 0) {
+				/* skip copy - calc size only */
+				rc += user_name_len;
+			} else if (dst_size >= user_name_len) {
 				dst_size -= user_name_len;
 				memcpy(dst, "user.", 5);
 				dst += 5;
@@ -486,8 +488,7 @@ move_smb2_ea_to_cifs(char *dst, size_t dst_size,
 				dst += name_len;
 				*dst = 0;
 				++dst;
-			} else if (dst_size == 0) {
-				/* skip copy - calc size only */
+				rc += user_name_len;
 			} else {
 				/* stop before overrun buffer */
 				rc = -ERANGE;
-- 
2.17.1




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

* [PATCH 4.14 03/62] arm64: kprobe: make page to RO mode when allocate it
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 01/62] cifs: dont dereference smb_file_target before null check Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 02/62] cifs: fix return value for cifs_listxattr Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 04/62] nvme-pci: fix conflicting p2p resource adds Greg Kroah-Hartman
                   ` (63 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, Ard Biesheuvel,
	Will Deacon, Masami Hiramatsu, Laura Abbott, Anders Roxell,
	Catalin Marinas, Sasha Levin

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

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

[ Upstream commit 966866892cf89d606544bca22d584ba2ef9ec208 ]

Commit 1404d6f13e47 ("arm64: dump: Add checking for writable and exectuable pages")
has successfully identified code that leaves a page with W+X
permissions.

[    3.245140] arm64/mm: Found insecure W+X mapping at address (____ptrval____)/0xffff000000d90000
[    3.245771] WARNING: CPU: 0 PID: 1 at ../arch/arm64/mm/dump.c:232 note_page+0x410/0x420
[    3.246141] Modules linked in:
[    3.246653] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.0-rc5-next-20180928-00001-ge70ae259b853-dirty #62
[    3.247008] Hardware name: linux,dummy-virt (DT)
[    3.247347] pstate: 80000005 (Nzcv daif -PAN -UAO)
[    3.247623] pc : note_page+0x410/0x420
[    3.247898] lr : note_page+0x410/0x420
[    3.248071] sp : ffff00000804bcd0
[    3.248254] x29: ffff00000804bcd0 x28: ffff000009274000
[    3.248578] x27: ffff00000921a000 x26: ffff80007dfff000
[    3.248845] x25: ffff0000093f5000 x24: ffff000009526f6a
[    3.249109] x23: 0000000000000004 x22: ffff000000d91000
[    3.249396] x21: ffff000000d90000 x20: 0000000000000000
[    3.249661] x19: ffff00000804bde8 x18: 0000000000000400
[    3.249924] x17: 0000000000000000 x16: 0000000000000000
[    3.250271] x15: ffffffffffffffff x14: 295f5f5f5f6c6176
[    3.250594] x13: 7274705f5f5f5f28 x12: 2073736572646461
[    3.250941] x11: 20746120676e6970 x10: 70616d20582b5720
[    3.251252] x9 : 6572756365736e69 x8 : 3039643030303030
[    3.251519] x7 : 306666666678302f x6 : ffff0000095467b2
[    3.251802] x5 : 0000000000000000 x4 : 0000000000000000
[    3.252060] x3 : 0000000000000000 x2 : ffffffffffffffff
[    3.252323] x1 : 4d151327adc50b00 x0 : 0000000000000000
[    3.252664] Call trace:
[    3.252953]  note_page+0x410/0x420
[    3.253186]  walk_pgd+0x12c/0x238
[    3.253417]  ptdump_check_wx+0x68/0xf8
[    3.253637]  mark_rodata_ro+0x68/0x98
[    3.253847]  kernel_init+0x38/0x160
[    3.254103]  ret_from_fork+0x10/0x18

kprobes allocates a writable executable page with module_alloc() in
order to store executable code.
Reworked to that when allocate a page it sets mode RO. Inspired by
commit 63fef14fc98a ("kprobes/x86: Make insn buffer always ROX and use text_poke()").

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Will Deacon <will.deacon@arm.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Reviewed-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
[catalin.marinas@arm.com: removed unnecessary casts]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/kernel/probes/kprobes.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/arch/arm64/kernel/probes/kprobes.c b/arch/arm64/kernel/probes/kprobes.c
index 22a5921562c7..0417c929d21a 100644
--- a/arch/arm64/kernel/probes/kprobes.c
+++ b/arch/arm64/kernel/probes/kprobes.c
@@ -23,7 +23,9 @@
 #include <linux/slab.h>
 #include <linux/stop_machine.h>
 #include <linux/sched/debug.h>
+#include <linux/set_memory.h>
 #include <linux/stringify.h>
+#include <linux/vmalloc.h>
 #include <asm/traps.h>
 #include <asm/ptrace.h>
 #include <asm/cacheflush.h>
@@ -42,10 +44,21 @@ DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
 static void __kprobes
 post_kprobe_handler(struct kprobe_ctlblk *, struct pt_regs *);
 
+static int __kprobes patch_text(kprobe_opcode_t *addr, u32 opcode)
+{
+	void *addrs[1];
+	u32 insns[1];
+
+	addrs[0] = addr;
+	insns[0] = opcode;
+
+	return aarch64_insn_patch_text(addrs, insns, 1);
+}
+
 static void __kprobes arch_prepare_ss_slot(struct kprobe *p)
 {
 	/* prepare insn slot */
-	p->ainsn.api.insn[0] = cpu_to_le32(p->opcode);
+	patch_text(p->ainsn.api.insn, p->opcode);
 
 	flush_icache_range((uintptr_t) (p->ainsn.api.insn),
 			   (uintptr_t) (p->ainsn.api.insn) +
@@ -118,15 +131,15 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
 	return 0;
 }
 
-static int __kprobes patch_text(kprobe_opcode_t *addr, u32 opcode)
+void *alloc_insn_page(void)
 {
-	void *addrs[1];
-	u32 insns[1];
+	void *page;
 
-	addrs[0] = (void *)addr;
-	insns[0] = (u32)opcode;
+	page = vmalloc_exec(PAGE_SIZE);
+	if (page)
+		set_memory_ro((unsigned long)page, 1);
 
-	return aarch64_insn_patch_text(addrs, insns, 1);
+	return page;
 }
 
 /* arm kprobe: install breakpoint in text */
-- 
2.17.1




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

* [PATCH 4.14 04/62] nvme-pci: fix conflicting p2p resource adds
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (2 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 03/62] arm64: kprobe: make page to RO mode when allocate it Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 05/62] ixgbe: fix MAC anti-spoofing filter after VFLR Greg Kroah-Hartman
                   ` (62 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Keith Busch, Logan Gunthorpe,
	Christoph Hellwig, Jens Axboe, Sasha Levin

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

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

[ Upstream commit 9fe5c59ff6a1e5e26a39b75489a1420e7eaaf0b1 ]

The nvme pci driver had been adding its CMB resource to the P2P DMA
subsystem everytime on on a controller reset. This results in the
following warning:

    ------------[ cut here ]------------
    nvme 0000:00:03.0: Conflicting mapping in same section
    WARNING: CPU: 7 PID: 81 at kernel/memremap.c:155 devm_memremap_pages+0xa6/0x380
    ...
    Call Trace:
     pci_p2pdma_add_resource+0x153/0x370
     nvme_reset_work+0x28c/0x17b1 [nvme]
     ? add_timer+0x107/0x1e0
     ? dequeue_entity+0x81/0x660
     ? dequeue_entity+0x3b0/0x660
     ? pick_next_task_fair+0xaf/0x610
     ? __switch_to+0xbc/0x410
     process_one_work+0x1cf/0x350
     worker_thread+0x215/0x3d0
     ? process_one_work+0x350/0x350
     kthread+0x107/0x120
     ? kthread_park+0x80/0x80
     ret_from_fork+0x1f/0x30
    ---[ end trace f7ea76ac6ee72727 ]---
    nvme nvme0: failed to register the CMB

This patch fixes this by registering the CMB with P2P only once.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvme/host/pci.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1546,6 +1546,9 @@ static void __iomem *nvme_map_cmb(struct
 	void __iomem *cmb;
 	int bar;
 
+	if (dev->cmb_size)
+		return NULL;
+
 	dev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ);
 	if (!(NVME_CMB_SZ(dev->cmbsz)))
 		return NULL;
@@ -2032,7 +2035,6 @@ static void nvme_pci_disable(struct nvme
 {
 	struct pci_dev *pdev = to_pci_dev(dev->dev);
 
-	nvme_release_cmb(dev);
 	pci_free_irq_vectors(pdev);
 
 	if (pci_is_enabled(pdev)) {
@@ -2432,6 +2434,7 @@ static void nvme_remove(struct pci_dev *
 	nvme_stop_ctrl(&dev->ctrl);
 	nvme_remove_namespaces(&dev->ctrl);
 	nvme_dev_disable(dev, true);
+	nvme_release_cmb(dev);
 	nvme_free_host_mem(dev);
 	nvme_dev_remove_admin(dev);
 	nvme_free_queues(dev, 0);



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

* [PATCH 4.14 05/62] ixgbe: fix MAC anti-spoofing filter after VFLR
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (3 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 04/62] nvme-pci: fix conflicting p2p resource adds Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 06/62] reiserfs: propagate errors from fill_with_dentries() properly Greg Kroah-Hartman
                   ` (61 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Radoslaw Tyl, Andrew Bowers,
	Piotr Skajewski, Jeff Kirsher, Sasha Levin

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

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

[ Upstream commit 6702185c1ffec3421181b5e24491e3fac920cb61 ]

This change resolves a driver bug where the driver is logging a
message that says "Spoofed packets detected". This can occur on the PF
(host) when a VF has VLAN+MACVLAN enabled and is re-started with a
different MAC address.

MAC and VLAN anti-spoofing filters are to be enabled together.

Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Acked-by: Piotr Skajewski <piotrx.skajewski@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
index 112d24c6c9ce..4904a63b83ef 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
@@ -760,8 +760,10 @@ static inline void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf)
 			ixgbe_set_vmvir(adapter, vfinfo->pf_vlan,
 					adapter->default_up, vf);
 
-		if (vfinfo->spoofchk_enabled)
+		if (vfinfo->spoofchk_enabled) {
 			hw->mac.ops.set_vlan_anti_spoofing(hw, true, vf);
+			hw->mac.ops.set_mac_anti_spoofing(hw, true, vf);
+		}
 	}
 
 	/* reset multicast table array for vf */
-- 
2.17.1




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

* [PATCH 4.14 06/62] reiserfs: propagate errors from fill_with_dentries() properly
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (4 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 05/62] ixgbe: fix MAC anti-spoofing filter after VFLR Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 07/62] hfs: prevent btree data loss on root split Greg Kroah-Hartman
                   ` (60 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jann Horn, Andrew Morton,
	Jeff Mahoney, Eric Biggers, Al Viro, Linus Torvalds, Sasha Levin

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

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

[ Upstream commit b10298d56c9623f9b173f19959732d3184b35f4f ]

fill_with_dentries() failed to propagate errors up to
reiserfs_for_each_xattr() properly.  Plumb them through.

Note that reiserfs_for_each_xattr() is only used by
reiserfs_delete_xattrs() and reiserfs_chown_xattrs().  The result of
reiserfs_delete_xattrs() is discarded anyway, the only difference there is
whether a warning is printed to dmesg.  The result of
reiserfs_chown_xattrs() does matter because it can block chowning of the
file to which the xattrs belong; but either way, the resulting state can
have misaligned ownership, so my patch doesn't improve things greatly.

Credit for making me look at this code goes to Al Viro, who pointed out
that the ->actor calling convention is suboptimal and should be changed.

Link: http://lkml.kernel.org/r/20180802163335.83312-1-jannh@google.com
Signed-off-by: Jann Horn <jannh@google.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Jeff Mahoney <jeffm@suse.com>
Cc: Eric Biggers <ebiggers@google.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/reiserfs/xattr.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index 505f87a8c724..83423192588c 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -185,6 +185,7 @@ struct reiserfs_dentry_buf {
 	struct dir_context ctx;
 	struct dentry *xadir;
 	int count;
+	int err;
 	struct dentry *dentries[8];
 };
 
@@ -207,6 +208,7 @@ fill_with_dentries(struct dir_context *ctx, const char *name, int namelen,
 
 	dentry = lookup_one_len(name, dbuf->xadir, namelen);
 	if (IS_ERR(dentry)) {
+		dbuf->err = PTR_ERR(dentry);
 		return PTR_ERR(dentry);
 	} else if (d_really_is_negative(dentry)) {
 		/* A directory entry exists, but no file? */
@@ -215,6 +217,7 @@ fill_with_dentries(struct dir_context *ctx, const char *name, int namelen,
 			       "not found for file %pd.\n",
 			       dentry, dbuf->xadir);
 		dput(dentry);
+		dbuf->err = -EIO;
 		return -EIO;
 	}
 
@@ -262,6 +265,10 @@ static int reiserfs_for_each_xattr(struct inode *inode,
 		err = reiserfs_readdir_inode(d_inode(dir), &buf.ctx);
 		if (err)
 			break;
+		if (buf.err) {
+			err = buf.err;
+			break;
+		}
 		if (!buf.count)
 			break;
 		for (i = 0; !err && i < buf.count && buf.dentries[i]; i++) {
-- 
2.17.1




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

* [PATCH 4.14 07/62] hfs: prevent btree data loss on root split
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (5 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 06/62] reiserfs: propagate errors from fill_with_dentries() properly Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 08/62] hfsplus: " Greg Kroah-Hartman
                   ` (59 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ernesto A .  Fernández,
	Christoph Hellwig, Andrew Morton, Linus Torvalds, Sasha Levin

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

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

[ Upstream commit d057c036672f33d43a5f7344acbb08cf3a8a0c09 ]

This bug is triggered whenever hfs_brec_update_parent() needs to split
the root node.  The height of the btree is not increased, which leaves
the new node orphaned and its records lost.  It is not possible for this
to happen on a valid hfs filesystem because the index nodes have fixed
length keys.

For reasons I ignore, the hfs module does have support for a number of
hfsplus features.  A corrupt btree header may report variable length
keys and trigger this bug, so it's better to fix it.

Link: http://lkml.kernel.org/r/9750b1415685c4adca10766895f6d5ef12babdb0.1535682463.git.ernesto.mnd.fernandez@gmail.com
Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/hfs/brec.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/fs/hfs/brec.c b/fs/hfs/brec.c
index 9a8772465a90..da25c49203cc 100644
--- a/fs/hfs/brec.c
+++ b/fs/hfs/brec.c
@@ -425,6 +425,10 @@ skip:
 	if (new_node) {
 		__be32 cnid;
 
+		if (!new_node->parent) {
+			hfs_btree_inc_height(tree);
+			new_node->parent = tree->root;
+		}
 		fd->bnode = hfs_bnode_find(tree, new_node->parent);
 		/* create index key and entry */
 		hfs_bnode_read_key(new_node, fd->search_key, 14);
-- 
2.17.1




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

* [PATCH 4.14 08/62] hfsplus: prevent btree data loss on root split
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (6 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 07/62] hfs: prevent btree data loss on root split Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 09/62] um: Give start_idle_thread() a return code Greg Kroah-Hartman
                   ` (58 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ernesto A .  Fernández,
	Christoph Hellwig, Andrew Morton, Linus Torvalds, Sasha Levin

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

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

[ Upstream commit 0a3021d4f5295aa073c7bf5c5e4de60a2e292578 ]

Creating, renaming or deleting a file may cause catalog corruption and
data loss.  This bug is randomly triggered by xfstests generic/027, but
here is a faster reproducer:

  truncate -s 50M fs.iso
  mkfs.hfsplus fs.iso
  mount fs.iso /mnt
  i=100
  while [ $i -le 150 ]; do
    touch /mnt/$i &>/dev/null
    ((++i))
  done
  i=100
  while [ $i -le 150 ]; do
    mv /mnt/$i /mnt/$(perl -e "print $i x82") &>/dev/null
    ((++i))
  done
  umount /mnt
  fsck.hfsplus -n fs.iso

The bug is triggered whenever hfs_brec_update_parent() needs to split the
root node.  The height of the btree is not increased, which leaves the new
node orphaned and its records lost.

Link: http://lkml.kernel.org/r/26d882184fc43043a810114258f45277752186c7.1535682461.git.ernesto.mnd.fernandez@gmail.com
Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/hfsplus/brec.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/fs/hfsplus/brec.c b/fs/hfsplus/brec.c
index 808f4d8c859c..d3f36982f685 100644
--- a/fs/hfsplus/brec.c
+++ b/fs/hfsplus/brec.c
@@ -428,6 +428,10 @@ skip:
 	if (new_node) {
 		__be32 cnid;
 
+		if (!new_node->parent) {
+			hfs_btree_inc_height(tree);
+			new_node->parent = tree->root;
+		}
 		fd->bnode = hfs_bnode_find(tree, new_node->parent);
 		/* create index key and entry */
 		hfs_bnode_read_key(new_node, fd->search_key, 14);
-- 
2.17.1




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

* [PATCH 4.14 09/62] um: Give start_idle_thread() a return code
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (7 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 08/62] hfsplus: " Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 10/62] drm/edid: Add 6 bpc quirk for BOE panel Greg Kroah-Hartman
                   ` (57 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Richard Weinberger, Sasha Levin

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

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

[ Upstream commit 7ff1e34bbdc15acab823b1ee4240e94623d50ee8 ]

Fixes:
arch/um/os-Linux/skas/process.c:613:1: warning: control reaches end of
non-void function [-Wreturn-type]

longjmp() never returns but gcc still warns that the end of the function
can be reached.
Add a return code and debug aid to detect this impossible case.

Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/um/os-Linux/skas/process.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c
index c94c3bd70ccd..df4a985716eb 100644
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -610,6 +610,11 @@ int start_idle_thread(void *stack, jmp_buf *switch_buf)
 		fatal_sigsegv();
 	}
 	longjmp(*switch_buf, 1);
+
+	/* unreachable */
+	printk(UM_KERN_ERR "impossible long jump!");
+	fatal_sigsegv();
+	return 0;
 }
 
 void initial_thread_cb_skas(void (*proc)(void *), void *arg)
-- 
2.17.1




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

* [PATCH 4.14 10/62] drm/edid: Add 6 bpc quirk for BOE panel.
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (8 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 09/62] um: Give start_idle_thread() a return code Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 11/62] platform/x86: intel_telemetry: report debugfs failure Greg Kroah-Hartman
                   ` (56 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jani Nikula, Maarten Lankhorst,
	Gustavo Padovan, Cooper Chiou, Daniel Vetter, Sasha Levin, Lee,
	Shawn C

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

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

[ Upstream commit 922dceff8dc1fb4dafc9af78139ba65671408103 ]

BOE panel (ID: 0x0771) that reports "DFP 1.x compliant TMDS".
But it's 6bpc panel only instead of 8 bpc.

Add panel ID to edid quirk list and set 6 bpc as default to
work around this issue.

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Gustavo Padovan <gustavo@padovan.org>
Cc: Cooper Chiou <cooper.chiou@intel.com>
Signed-off-by: Lee, Shawn C <shawn.c.lee@intel.com>>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/1540792173-7288-1-git-send-email-shawn.c.lee@intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/drm_edid.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index d1191ebed072..ed01e3aae0e8 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -120,6 +120,9 @@ static const struct edid_quirk {
 	/* SDC panel of Lenovo B50-80 reports 8 bpc, but is a 6 bpc panel */
 	{ "SDC", 0x3652, EDID_QUIRK_FORCE_6BPC },
 
+	/* BOE model 0x0771 reports 8 bpc, but is a 6 bpc panel */
+	{ "BOE", 0x0771, EDID_QUIRK_FORCE_6BPC },
+
 	/* Belinea 10 15 55 */
 	{ "MAX", 1516, EDID_QUIRK_PREFER_LARGE_60 },
 	{ "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 },
-- 
2.17.1




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

* [PATCH 4.14 11/62] platform/x86: intel_telemetry: report debugfs failure
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (9 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 10/62] drm/edid: Add 6 bpc quirk for BOE panel Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 12/62] clk: fixed-rate: fix of_node_get-put imbalance Greg Kroah-Hartman
                   ` (55 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Matt Turner, Len Brown,
	Souvik Kumar Chakravarty, Kuppuswamy Sathyanarayanan,
	Rajneesh Bhardwaj, Andy Shevchenko, Sasha Levin

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

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

[ Upstream commit 8d98b1ef368feeb7720b8b9b6f3bd93f2ad892bc ]

On some Goldmont based systems such as ASRock J3455M the BIOS may not
enable the IPC1 device that provides access to the PMC and PUNIT. In
such scenarios, the IOSS and PSS resources from the platform device can
not be obtained and result in a invalid telemetry_plt_config which is an
internal data structure that holds platform config and is maintained by
the telemetry platform driver.

This is also applicable to the platforms where the BIOS supports IPC1
device under debug configurations but IPC1 is disabled by user or the
policy.

This change allows user to know the reason for not seeing entries under
/sys/kernel/debug/telemetry/* when there is no apparent failure at boot.

Cc: Matt Turner <matt.turner@intel.com>
Cc: Len Brown <len.brown@intel.com>
Cc: Souvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>
Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@intel.com>

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198779
Acked-by: Matt Turner <matt.turner@intel.com>
Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/platform/x86/intel_telemetry_debugfs.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/intel_telemetry_debugfs.c b/drivers/platform/x86/intel_telemetry_debugfs.c
index d4fc42b4cbeb..401bdc7a9d94 100644
--- a/drivers/platform/x86/intel_telemetry_debugfs.c
+++ b/drivers/platform/x86/intel_telemetry_debugfs.c
@@ -968,12 +968,16 @@ static int __init telemetry_debugfs_init(void)
 	debugfs_conf = (struct telemetry_debugfs_conf *)id->driver_data;
 
 	err = telemetry_pltconfig_valid();
-	if (err < 0)
+	if (err < 0) {
+		pr_info("Invalid pltconfig, ensure IPC1 device is enabled in BIOS\n");
 		return -ENODEV;
+	}
 
 	err = telemetry_debugfs_check_evts();
-	if (err < 0)
+	if (err < 0) {
+		pr_info("telemetry_debugfs_check_evts failed\n");
 		return -EINVAL;
+	}
 
 	register_pm_notifier(&pm_notifier);
 
-- 
2.17.1




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

* [PATCH 4.14 12/62] clk: fixed-rate: fix of_node_get-put imbalance
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (10 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 11/62] platform/x86: intel_telemetry: report debugfs failure Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 13/62] perf symbols: Set PLT entry/header sizes properly on Sparc Greg Kroah-Hartman
                   ` (54 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alan Tull, Stephen Boyd, Sasha Levin

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

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

[ Upstream commit 52091c256bdcad0d01e2852a63f19cd2cce6af96 ]

When the fixed rate clock is created by devicetree,
of_clk_add_provider is called.  Add a call to
of_clk_del_provider in the remove function to balance
it out.

Signed-off-by: Alan Tull <atull@kernel.org>
Fixes: 435779fe1336 ("clk: fixed-rate: Convert into a module platform driver")
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/clk/clk-fixed-rate.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
index b5c46b3f8764..6d6475c32ee5 100644
--- a/drivers/clk/clk-fixed-rate.c
+++ b/drivers/clk/clk-fixed-rate.c
@@ -200,6 +200,7 @@ static int of_fixed_clk_remove(struct platform_device *pdev)
 {
 	struct clk *clk = platform_get_drvdata(pdev);
 
+	of_clk_del_provider(pdev->dev.of_node);
 	clk_unregister_fixed_rate(clk);
 
 	return 0;
-- 
2.17.1




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

* [PATCH 4.14 13/62] perf symbols: Set PLT entry/header sizes properly on Sparc
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (11 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 12/62] clk: fixed-rate: fix of_node_get-put imbalance Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 14/62] fs/exofs: fix potential memory leak in mount option parsing Greg Kroah-Hartman
                   ` (53 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, David S. Miller, Alexander Shishkin,
	Alexis Berlemont, David Tolnay, Hanjun Guo, Hemant Kumar, Li Bin,
	Masami Hiramatsu, Milian Wolff, Namhyung Kim, Peter Zijlstra,
	Wang Nan, zhangmengting, Arnaldo Carvalho de Melo, Sasha Levin

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

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

[ Upstream commit d6afa561e1471ccfdaf7191230c0c59a37e45a5b ]

Using the sh_entsize for both values isn't correct.  It happens to be
correct on x86...

For both 32-bit and 64-bit sparc, there are four PLT entries in the PLT
section.

Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexis Berlemont <alexis.berlemont@gmail.com>
Cc: David Tolnay <dtolnay@gmail.com>
Cc: Hanjun Guo <guohanjun@huawei.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Li Bin <huawei.libin@huawei.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: zhangmengting@huawei.com
Fixes: b2f7605076d6 ("perf symbols: Fix plt entry calculation for ARM and AARCH64")
Link: http://lkml.kernel.org/r/20181017.120859.2268840244308635255.davem@davemloft.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/symbol-elf.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 2de770511e70..8ad4296de98b 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -338,7 +338,17 @@ int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss, struct map *
 			plt_entry_size = 16;
 			break;
 
-		default: /* FIXME: s390/alpha/mips/parisc/poperpc/sh/sparc/xtensa need to be checked */
+		case EM_SPARC:
+			plt_header_size = 48;
+			plt_entry_size = 12;
+			break;
+
+		case EM_SPARCV9:
+			plt_header_size = 128;
+			plt_entry_size = 32;
+			break;
+
+		default: /* FIXME: s390/alpha/mips/parisc/poperpc/sh/xtensa need to be checked */
 			plt_header_size = shdr_plt.sh_entsize;
 			plt_entry_size = shdr_plt.sh_entsize;
 			break;
-- 
2.17.1




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

* [PATCH 4.14 14/62] fs/exofs: fix potential memory leak in mount option parsing
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (12 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 13/62] perf symbols: Set PLT entry/header sizes properly on Sparc Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 15/62] clk: samsung: exynos5420: Enable PERIS clocks for suspend Greg Kroah-Hartman
                   ` (52 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chengguang Xu, Al Viro, Sasha Levin

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

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

[ Upstream commit 515f1867addaba49c1c6ac73abfaffbc192c1db4 ]

There are some cases can cause memory leak when parsing
option 'osdname'.

Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/exofs/super.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/exofs/super.c b/fs/exofs/super.c
index 819624cfc8da..c9ec652e2fcd 100644
--- a/fs/exofs/super.c
+++ b/fs/exofs/super.c
@@ -100,6 +100,7 @@ static int parse_options(char *options, struct exofs_mountopt *opts)
 		token = match_token(p, tokens, args);
 		switch (token) {
 		case Opt_name:
+			kfree(opts->dev_name);
 			opts->dev_name = match_strdup(&args[0]);
 			if (unlikely(!opts->dev_name)) {
 				EXOFS_ERR("Error allocating dev_name");
@@ -863,8 +864,10 @@ static struct dentry *exofs_mount(struct file_system_type *type,
 	int ret;
 
 	ret = parse_options(data, &opts);
-	if (ret)
+	if (ret) {
+		kfree(opts.dev_name);
 		return ERR_PTR(ret);
+	}
 
 	if (!opts.dev_name)
 		opts.dev_name = dev_name;
-- 
2.17.1




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

* [PATCH 4.14 15/62] clk: samsung: exynos5420: Enable PERIS clocks for suspend
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (13 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 14/62] fs/exofs: fix potential memory leak in mount option parsing Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 16/62] apparmor: Fix uninitialized value in aa_split_fqname Greg Kroah-Hartman
                   ` (51 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Joonyoung Shim, Marek Szyprowski,
	Sylwester Nawrocki, Sasha Levin

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

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

[ Upstream commit b33228029d842269e17bba591609e83ed422005d ]

Ensure that clocks for core SoC modules (including TZPC0..9 modules)
are enabled for suspend/resume cycle. This fixes suspend/resume
support on Exynos5422-based Odroid XU3/XU4 boards.

Suggested-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Sylwester Nawrocki <snawrocki@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/clk/samsung/clk-exynos5420.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
index 25601967d1cd..500a55415e90 100644
--- a/drivers/clk/samsung/clk-exynos5420.c
+++ b/drivers/clk/samsung/clk-exynos5420.c
@@ -280,6 +280,7 @@ static const struct samsung_clk_reg_dump exynos5420_set_clksrc[] = {
 	{ .offset = GATE_BUS_TOP,		.value = 0xffffffff, },
 	{ .offset = GATE_BUS_DISP1,		.value = 0xffffffff, },
 	{ .offset = GATE_IP_PERIC,		.value = 0xffffffff, },
+	{ .offset = GATE_IP_PERIS,		.value = 0xffffffff, },
 };
 
 static int exynos5420_clk_suspend(void)
-- 
2.17.1




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

* [PATCH 4.14 16/62] apparmor: Fix uninitialized value in aa_split_fqname
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (14 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 15/62] clk: samsung: exynos5420: Enable PERIS clocks for suspend Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 17/62] x86/earlyprintk: Add a force option for pciserial device Greg Kroah-Hartman
                   ` (50 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, syzbot+61e4b490d9d2da591b50,
	Zubin Mithra, Kees Cook, John Johansen, Sasha Levin

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

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

[ Upstream commit 250f2da49cb8e582215a65c03f50e8ddf5cd119c ]

Syzkaller reported a OOB-read with the stacktrace below. This occurs
inside __aa_lookupn_ns as `n` is not initialized. `n` is obtained from
aa_splitn_fqname. In cases where `name` is invalid, aa_splitn_fqname
returns without initializing `ns_name` and `ns_len`.

Fix this by always initializing `ns_name` and `ns_len`.

	__dump_stack lib/dump_stack.c:77 [inline]
	dump_stack+0x1c4/0x2b4 lib/dump_stack.c:113
	print_address_description.cold.8+0x9/0x1ff mm/kasan/report.c:256
	kasan_report_error mm/kasan/report.c:354 [inline]
	kasan_report.cold.9+0x242/0x309 mm/kasan/report.c:412
	__asan_report_load1_noabort+0x14/0x20 mm/kasan/report.c:430
	memcmp+0xe3/0x160 lib/string.c:861
	strnstr+0x4b/0x70 lib/string.c:934
	__aa_lookupn_ns+0xc1/0x570 security/apparmor/policy_ns.c:209
	aa_lookupn_ns+0x88/0x1e0 security/apparmor/policy_ns.c:240
	aa_fqlookupn_profile+0x1b9/0x1010 security/apparmor/policy.c:468
	fqlookupn_profile+0x80/0xc0 security/apparmor/label.c:1844
	aa_label_strn_parse+0xa3a/0x1230 security/apparmor/label.c:1908
	aa_label_parse+0x42/0x50 security/apparmor/label.c:1943
	aa_change_profile+0x513/0x3510 security/apparmor/domain.c:1362
	apparmor_setprocattr+0xaa4/0x1150 security/apparmor/lsm.c:658
	security_setprocattr+0x66/0xc0 security/security.c:1298
	proc_pid_attr_write+0x301/0x540 fs/proc/base.c:2555
	__vfs_write+0x119/0x9f0 fs/read_write.c:485
	vfs_write+0x1fc/0x560 fs/read_write.c:549
	ksys_write+0x101/0x260 fs/read_write.c:598
	__do_sys_write fs/read_write.c:610 [inline]
	__se_sys_write fs/read_write.c:607 [inline]
	__x64_sys_write+0x73/0xb0 fs/read_write.c:607
	do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
	entry_SYSCALL_64_after_hwframe+0x49/0xbe

Fixes: 3b0aaf5866bf ("apparmor: add lib fn to find the "split" for fqnames")
Reported-by: syzbot+61e4b490d9d2da591b50@syzkaller.appspotmail.com
Signed-off-by: Zubin Mithra <zsm@chromium.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: John Johansen <john.johansen@canonical.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 security/apparmor/lib.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/security/apparmor/lib.c b/security/apparmor/lib.c
index 08ca26bcca77..451654372a76 100644
--- a/security/apparmor/lib.c
+++ b/security/apparmor/lib.c
@@ -90,10 +90,12 @@ const char *aa_splitn_fqname(const char *fqname, size_t n, const char **ns_name,
 	const char *end = fqname + n;
 	const char *name = skipn_spaces(fqname, n);
 
-	if (!name)
-		return NULL;
 	*ns_name = NULL;
 	*ns_len = 0;
+
+	if (!name)
+		return NULL;
+
 	if (name[0] == ':') {
 		char *split = strnchr(&name[1], end - &name[1], ':');
 		*ns_name = skipn_spaces(&name[1], end - &name[1]);
-- 
2.17.1




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

* [PATCH 4.14 17/62] x86/earlyprintk: Add a force option for pciserial device
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (15 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 16/62] apparmor: Fix uninitialized value in aa_split_fqname Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:50 ` [PATCH 4.14 18/62] platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 Greg Kroah-Hartman
                   ` (49 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Borislav Petkov, Feng Tang,
	Borislav Petkov, H. Peter Anvin, Stuart R . Anderson,
	Bjorn Helgaas, David Rientjes, Frederic Weisbecker,
	H Peter Anvin, Ingo Molnar, Jiri Kosina, Jonathan Corbet,
	Kai-Heng Feng, Kate Stewart, Konrad Rzeszutek Wilk,
	Peter Zijlstra, Philippe Ombredanne, Thomas Gleixner,
	Thymo van Beers, alan, linux-doc, Sasha Levin

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

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

[ Upstream commit d2266bbfa9e3e32e3b642965088ca461bd24a94f ]

The "pciserial" earlyprintk variant helps much on many modern x86
platforms, but unfortunately there are still some platforms with PCI
UART devices which have the wrong PCI class code. In that case, the
current class code check does not allow for them to be used for logging.

Add a sub-option "force" which overrides the class code check and thus
the use of such device can be enforced.

 [ bp: massage formulations. ]

Suggested-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: "Stuart R . Anderson" <stuart.r.anderson@intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Feng Tang <feng.tang@intel.com>
Cc: Frederic Weisbecker <frederic@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: H Peter Anvin <hpa@linux.intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Thymo van Beers <thymovanbeers@gmail.com>
Cc: alan@linux.intel.com
Cc: linux-doc@vger.kernel.org
Link: http://lkml.kernel.org/r/20181002164921.25833-1-feng.tang@intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../admin-guide/kernel-parameters.txt         |  6 +++-
 arch/x86/kernel/early_printk.c                | 29 ++++++++++++-------
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 9841bad6f271..99a08722124d 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -1011,7 +1011,7 @@
 			earlyprintk=serial[,0x...[,baudrate]]
 			earlyprintk=ttySn[,baudrate]
 			earlyprintk=dbgp[debugController#]
-			earlyprintk=pciserial,bus:device.function[,baudrate]
+			earlyprintk=pciserial[,force],bus:device.function[,baudrate]
 			earlyprintk=xdbc[xhciController#]
 
 			earlyprintk is useful when the kernel crashes before
@@ -1043,6 +1043,10 @@
 
 			The sclp output can only be used on s390.
 
+			The optional "force" to "pciserial" enables use of a
+			PCI device even when its classcode is not of the
+			UART class.
+
 	edac_report=	[HW,EDAC] Control how to report EDAC event
 			Format: {"on" | "off" | "force"}
 			on: enable EDAC to report H/W event. May be overridden
diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
index 5e801c8c8ce7..374a52fa5296 100644
--- a/arch/x86/kernel/early_printk.c
+++ b/arch/x86/kernel/early_printk.c
@@ -213,8 +213,9 @@ static unsigned int mem32_serial_in(unsigned long addr, int offset)
  * early_pci_serial_init()
  *
  * This function is invoked when the early_printk param starts with "pciserial"
- * The rest of the param should be ",B:D.F,baud" where B, D & F describe the
- * location of a PCI device that must be a UART device.
+ * The rest of the param should be "[force],B:D.F,baud", where B, D & F describe
+ * the location of a PCI device that must be a UART device. "force" is optional
+ * and overrides the use of an UART device with a wrong PCI class code.
  */
 static __init void early_pci_serial_init(char *s)
 {
@@ -224,17 +225,23 @@ static __init void early_pci_serial_init(char *s)
 	u32 classcode, bar0;
 	u16 cmdreg;
 	char *e;
+	int force = 0;
 
-
-	/*
-	 * First, part the param to get the BDF values
-	 */
 	if (*s == ',')
 		++s;
 
 	if (*s == 0)
 		return;
 
+	/* Force the use of an UART device with wrong class code */
+	if (!strncmp(s, "force,", 6)) {
+		force = 1;
+		s += 6;
+	}
+
+	/*
+	 * Part the param to get the BDF values
+	 */
 	bus = (u8)simple_strtoul(s, &e, 16);
 	s = e;
 	if (*s != ':')
@@ -253,7 +260,7 @@ static __init void early_pci_serial_init(char *s)
 		s++;
 
 	/*
-	 * Second, find the device from the BDF
+	 * Find the device from the BDF
 	 */
 	cmdreg = read_pci_config(bus, slot, func, PCI_COMMAND);
 	classcode = read_pci_config(bus, slot, func, PCI_CLASS_REVISION);
@@ -264,8 +271,10 @@ static __init void early_pci_serial_init(char *s)
 	 */
 	if (((classcode >> 16 != PCI_CLASS_COMMUNICATION_MODEM) &&
 	     (classcode >> 16 != PCI_CLASS_COMMUNICATION_SERIAL)) ||
-	   (((classcode >> 8) & 0xff) != 0x02)) /* 16550 I/F at BAR0 */
-		return;
+	   (((classcode >> 8) & 0xff) != 0x02)) /* 16550 I/F at BAR0 */ {
+		if (!force)
+			return;
+	}
 
 	/*
 	 * Determine if it is IO or memory mapped
@@ -289,7 +298,7 @@ static __init void early_pci_serial_init(char *s)
 	}
 
 	/*
-	 * Lastly, initialize the hardware
+	 * Initialize the hardware
 	 */
 	if (*s) {
 		if (strcmp(s, "nocfg") == 0)
-- 
2.17.1




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

* [PATCH 4.14 18/62] platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (16 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 17/62] x86/earlyprintk: Add a force option for pciserial device Greg Kroah-Hartman
@ 2018-11-26 10:50 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 19/62] arm64: percpu: Initialize ret in the default case Greg Kroah-Hartman
                   ` (48 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Peter Feuerer, Darren Hart,
	Andy Shevchenko, Paul Gortmaker, Andy Shevchenko, Sasha Levin

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

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

[ Upstream commit 684238d79ad85c5e19a71bb5818e77e329912fbc ]

To fix:

  acerhdf: unknown (unsupported) BIOS version Gateway  /LT31   /v1.3307 , please report, aborting!

As can be seen in the context, the BIOS registers haven't changed in
the previous versions, so the assumption is they won't have changed
in this last update for this somewhat older platform either.

Cc: Peter Feuerer <peter@piie.net>
Cc: Darren Hart <dvhart@infradead.org>
Cc: Andy Shevchenko <andy@infradead.org>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Peter Feuerer <peter@piie.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/platform/x86/acerhdf.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
index ea22591ee66f..53dfe67807e3 100644
--- a/drivers/platform/x86/acerhdf.c
+++ b/drivers/platform/x86/acerhdf.c
@@ -233,6 +233,7 @@ static const struct bios_settings bios_tbl[] = {
 	{"Gateway", "LT31",   "v1.3201",  0x55, 0x58, {0x9e, 0x00}, 0},
 	{"Gateway", "LT31",   "v1.3302",  0x55, 0x58, {0x9e, 0x00}, 0},
 	{"Gateway", "LT31",   "v1.3303t", 0x55, 0x58, {0x9e, 0x00}, 0},
+	{"Gateway", "LT31",   "v1.3307",  0x55, 0x58, {0x9e, 0x00}, 0},
 	/* Packard Bell */
 	{"Packard Bell", "DOA150",  "v0.3104",  0x55, 0x58, {0x21, 0x00}, 0},
 	{"Packard Bell", "DOA150",  "v0.3105",  0x55, 0x58, {0x20, 0x00}, 0},
-- 
2.17.1




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

* [PATCH 4.14 19/62] arm64: percpu: Initialize ret in the default case
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (17 preceding siblings ...)
  2018-11-26 10:50 ` [PATCH 4.14 18/62] platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 20/62] s390/vdso: add missing FORCE to build targets Greg Kroah-Hartman
                   ` (47 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Prasad Sodagudi, Nathan Chancellor,
	Nick Desaulniers, Dennis Zhou, Sasha Levin

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

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

[ Upstream commit b5bb425871186303e6936fa2581521bdd1964a58 ]

Clang warns that if the default case is taken, ret will be
uninitialized.

./arch/arm64/include/asm/percpu.h:196:2: warning: variable 'ret' is used
uninitialized whenever switch default is taken
[-Wsometimes-uninitialized]
        default:
        ^~~~~~~
./arch/arm64/include/asm/percpu.h:200:9: note: uninitialized use occurs
here
        return ret;
               ^~~
./arch/arm64/include/asm/percpu.h:157:19: note: initialize the variable
'ret' to silence this warning
        unsigned long ret, loop;
                         ^
                          = 0

This warning appears several times while building the erofs filesystem.
While it's not strictly wrong, the BUILD_BUG will prevent this from
becoming a true problem. Initialize ret to 0 in the default case right
before the BUILD_BUG to silence all of these warnings.

Reported-by: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Dennis Zhou <dennis@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/include/asm/percpu.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm64/include/asm/percpu.h b/arch/arm64/include/asm/percpu.h
index 43393208229e..d79eaa816f29 100644
--- a/arch/arm64/include/asm/percpu.h
+++ b/arch/arm64/include/asm/percpu.h
@@ -93,6 +93,7 @@ static inline unsigned long __percpu_##op(void *ptr,			\
 		: [val] "Ir" (val));					\
 		break;							\
 	default:							\
+		ret = 0;						\
 		BUILD_BUG();						\
 	}								\
 									\
@@ -122,6 +123,7 @@ static inline unsigned long __percpu_read(void *ptr, int size)
 		ret = READ_ONCE(*(u64 *)ptr);
 		break;
 	default:
+		ret = 0;
 		BUILD_BUG();
 	}
 
@@ -191,6 +193,7 @@ static inline unsigned long __percpu_xchg(void *ptr, unsigned long val,
 		: [val] "r" (val));
 		break;
 	default:
+		ret = 0;
 		BUILD_BUG();
 	}
 
-- 
2.17.1




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

* [PATCH 4.14 20/62] s390/vdso: add missing FORCE to build targets
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (18 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 19/62] arm64: percpu: Initialize ret in the default case Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 21/62] netfilter: ipset: list:set: Decrease refcount synchronously on deletion and replace Greg Kroah-Hartman
                   ` (46 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Philipp Rudo, Vasily Gorbik,
	Martin Schwidefsky, Sasha Levin

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

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

[ Upstream commit b44b136a3773d8a9c7853f8df716bd1483613cbb ]

According to Documentation/kbuild/makefiles.txt all build targets using
if_changed should use FORCE as well. Add missing FORCE to make sure
vdso targets are rebuild properly when not just immediate prerequisites
have changed but also when build command differs.

Reviewed-by: Philipp Rudo <prudo@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/s390/kernel/vdso32/Makefile | 6 +++---
 arch/s390/kernel/vdso64/Makefile | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/s390/kernel/vdso32/Makefile b/arch/s390/kernel/vdso32/Makefile
index 308564b9bf68..101cadabfc89 100644
--- a/arch/s390/kernel/vdso32/Makefile
+++ b/arch/s390/kernel/vdso32/Makefile
@@ -33,7 +33,7 @@ UBSAN_SANITIZE := n
 $(obj)/vdso32_wrapper.o : $(obj)/vdso32.so
 
 # link rule for the .so file, .lds has to be first
-$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32)
+$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) FORCE
 	$(call if_changed,vdso32ld)
 
 # strip rule for the .so file
@@ -42,12 +42,12 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
 	$(call if_changed,objcopy)
 
 # assembly rules for the .S files
-$(obj-vdso32): %.o: %.S
+$(obj-vdso32): %.o: %.S FORCE
 	$(call if_changed_dep,vdso32as)
 
 # actual build commands
 quiet_cmd_vdso32ld = VDSO32L $@
-      cmd_vdso32ld = $(CC) $(c_flags) -Wl,-T $^ -o $@
+      cmd_vdso32ld = $(CC) $(c_flags) -Wl,-T $(filter %.lds %.o,$^) -o $@
 quiet_cmd_vdso32as = VDSO32A $@
       cmd_vdso32as = $(CC) $(a_flags) -c -o $@ $<
 
diff --git a/arch/s390/kernel/vdso64/Makefile b/arch/s390/kernel/vdso64/Makefile
index f81ae7998883..36bbafcf4a77 100644
--- a/arch/s390/kernel/vdso64/Makefile
+++ b/arch/s390/kernel/vdso64/Makefile
@@ -33,7 +33,7 @@ UBSAN_SANITIZE := n
 $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so
 
 # link rule for the .so file, .lds has to be first
-$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64)
+$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) FORCE
 	$(call if_changed,vdso64ld)
 
 # strip rule for the .so file
@@ -42,12 +42,12 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
 	$(call if_changed,objcopy)
 
 # assembly rules for the .S files
-$(obj-vdso64): %.o: %.S
+$(obj-vdso64): %.o: %.S FORCE
 	$(call if_changed_dep,vdso64as)
 
 # actual build commands
 quiet_cmd_vdso64ld = VDSO64L $@
-      cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $^ -o $@
+      cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $(filter %.lds %.o,$^) -o $@
 quiet_cmd_vdso64as = VDSO64A $@
       cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $<
 
-- 
2.17.1




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

* [PATCH 4.14 21/62] netfilter: ipset: list:set: Decrease refcount synchronously on deletion and replace
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (19 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 20/62] s390/vdso: add missing FORCE to build targets Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 22/62] netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net Greg Kroah-Hartman
                   ` (45 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Li Shuang, Stefano Brivio,
	Jozsef Kadlecsik, Pablo Neira Ayuso, Sasha Levin

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

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

[ Upstream commit 439cd39ea136d2c026805264d58a91f36b6b64ca ]

Commit 45040978c899 ("netfilter: ipset: Fix set:list type crash
when flush/dump set in parallel") postponed decreasing set
reference counters to the RCU callback.

An 'ipset del' command can terminate before the RCU grace period
is elapsed, and if sets are listed before then, the reference
counter shown in userspace will be wrong:

 # ipset create h hash:ip; ipset create l list:set; ipset add l
 # ipset del l h; ipset list h
 Name: h
 Type: hash:ip
 Revision: 4
 Header: family inet hashsize 1024 maxelem 65536
 Size in memory: 88
 References: 1
 Number of entries: 0
 Members:
 # sleep 1; ipset list h
 Name: h
 Type: hash:ip
 Revision: 4
 Header: family inet hashsize 1024 maxelem 65536
 Size in memory: 88
 References: 0
 Number of entries: 0
 Members:

Fix this by making the reference count update synchronous again.

As a result, when sets are listed, ip_set_name_byindex() might
now fetch a set whose reference count is already zero. Instead
of relying on the reference count to protect against concurrent
set renaming, grab ip_set_ref_lock as reader and copy the name,
while holding the same lock in ip_set_rename() as writer
instead.

Reported-by: Li Shuang <shuali@redhat.com>
Fixes: 45040978c899 ("netfilter: ipset: Fix set:list type crash when flush/dump set in parallel")
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/netfilter/ipset/ip_set.h |  2 +-
 net/netfilter/ipset/ip_set_core.c      | 23 +++++++++++------------
 net/netfilter/ipset/ip_set_list_set.c  | 17 +++++++++++------
 3 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h
index 8e42253e5d4d..91a533bd3eb1 100644
--- a/include/linux/netfilter/ipset/ip_set.h
+++ b/include/linux/netfilter/ipset/ip_set.h
@@ -312,7 +312,7 @@ enum {
 extern ip_set_id_t ip_set_get_byname(struct net *net,
 				     const char *name, struct ip_set **set);
 extern void ip_set_put_byindex(struct net *net, ip_set_id_t index);
-extern const char *ip_set_name_byindex(struct net *net, ip_set_id_t index);
+extern void ip_set_name_byindex(struct net *net, ip_set_id_t index, char *name);
 extern ip_set_id_t ip_set_nfnl_get_byindex(struct net *net, ip_set_id_t index);
 extern void ip_set_nfnl_put(struct net *net, ip_set_id_t index);
 
diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
index 9d2ce1459cec..a3f1dc7cf538 100644
--- a/net/netfilter/ipset/ip_set_core.c
+++ b/net/netfilter/ipset/ip_set_core.c
@@ -668,21 +668,20 @@ ip_set_put_byindex(struct net *net, ip_set_id_t index)
 EXPORT_SYMBOL_GPL(ip_set_put_byindex);
 
 /* Get the name of a set behind a set index.
- * We assume the set is referenced, so it does exist and
- * can't be destroyed. The set cannot be renamed due to
- * the referencing either.
- *
+ * Set itself is protected by RCU, but its name isn't: to protect against
+ * renaming, grab ip_set_ref_lock as reader (see ip_set_rename()) and copy the
+ * name.
  */
-const char *
-ip_set_name_byindex(struct net *net, ip_set_id_t index)
+void
+ip_set_name_byindex(struct net *net, ip_set_id_t index, char *name)
 {
-	const struct ip_set *set = ip_set_rcu_get(net, index);
+	struct ip_set *set = ip_set_rcu_get(net, index);
 
 	BUG_ON(!set);
-	BUG_ON(set->ref == 0);
 
-	/* Referenced, so it's safe */
-	return set->name;
+	read_lock_bh(&ip_set_ref_lock);
+	strncpy(name, set->name, IPSET_MAXNAMELEN);
+	read_unlock_bh(&ip_set_ref_lock);
 }
 EXPORT_SYMBOL_GPL(ip_set_name_byindex);
 
@@ -1128,7 +1127,7 @@ static int ip_set_rename(struct net *net, struct sock *ctnl,
 	if (!set)
 		return -ENOENT;
 
-	read_lock_bh(&ip_set_ref_lock);
+	write_lock_bh(&ip_set_ref_lock);
 	if (set->ref != 0) {
 		ret = -IPSET_ERR_REFERENCED;
 		goto out;
@@ -1145,7 +1144,7 @@ static int ip_set_rename(struct net *net, struct sock *ctnl,
 	strncpy(set->name, name2, IPSET_MAXNAMELEN);
 
 out:
-	read_unlock_bh(&ip_set_ref_lock);
+	write_unlock_bh(&ip_set_ref_lock);
 	return ret;
 }
 
diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c
index 178d4eba013b..75d52aed6fdb 100644
--- a/net/netfilter/ipset/ip_set_list_set.c
+++ b/net/netfilter/ipset/ip_set_list_set.c
@@ -156,9 +156,7 @@ __list_set_del_rcu(struct rcu_head * rcu)
 {
 	struct set_elem *e = container_of(rcu, struct set_elem, rcu);
 	struct ip_set *set = e->set;
-	struct list_set *map = set->data;
 
-	ip_set_put_byindex(map->net, e->id);
 	ip_set_ext_destroy(set, e);
 	kfree(e);
 }
@@ -166,15 +164,21 @@ __list_set_del_rcu(struct rcu_head * rcu)
 static inline void
 list_set_del(struct ip_set *set, struct set_elem *e)
 {
+	struct list_set *map = set->data;
+
 	set->elements--;
 	list_del_rcu(&e->list);
+	ip_set_put_byindex(map->net, e->id);
 	call_rcu(&e->rcu, __list_set_del_rcu);
 }
 
 static inline void
-list_set_replace(struct set_elem *e, struct set_elem *old)
+list_set_replace(struct ip_set *set, struct set_elem *e, struct set_elem *old)
 {
+	struct list_set *map = set->data;
+
 	list_replace_rcu(&old->list, &e->list);
+	ip_set_put_byindex(map->net, old->id);
 	call_rcu(&old->rcu, __list_set_del_rcu);
 }
 
@@ -306,7 +310,7 @@ list_set_uadd(struct ip_set *set, void *value, const struct ip_set_ext *ext,
 	INIT_LIST_HEAD(&e->list);
 	list_set_init_extensions(set, ext, e);
 	if (n)
-		list_set_replace(e, n);
+		list_set_replace(set, e, n);
 	else if (next)
 		list_add_tail_rcu(&e->list, &next->list);
 	else if (prev)
@@ -497,6 +501,7 @@ list_set_list(const struct ip_set *set,
 	const struct list_set *map = set->data;
 	struct nlattr *atd, *nested;
 	u32 i = 0, first = cb->args[IPSET_CB_ARG0];
+	char name[IPSET_MAXNAMELEN];
 	struct set_elem *e;
 	int ret = 0;
 
@@ -515,8 +520,8 @@ list_set_list(const struct ip_set *set,
 		nested = ipset_nest_start(skb, IPSET_ATTR_DATA);
 		if (!nested)
 			goto nla_put_failure;
-		if (nla_put_string(skb, IPSET_ATTR_NAME,
-				   ip_set_name_byindex(map->net, e->id)))
+		ip_set_name_byindex(map->net, e->id, name);
+		if (nla_put_string(skb, IPSET_ATTR_NAME, name))
 			goto nla_put_failure;
 		if (ip_set_put_extensions(skb, set, e, true))
 			goto nla_put_failure;
-- 
2.17.1




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

* [PATCH 4.14 22/62] netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (20 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 21/62] netfilter: ipset: list:set: Decrease refcount synchronously on deletion and replace Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 23/62] s390/mm: Fix ERROR: "__node_distance" undefined! Greg Kroah-Hartman
                   ` (44 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eric Westbrook, Jozsef Kadlecsik,
	Pablo Neira Ayuso, Sasha Levin

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

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

[ Upstream commit 886503f34d63e681662057448819edb5b1057a97 ]

Allow /0 as advertised for hash:net,port,net sets.

For "hash:net,port,net", ipset(8) says that "either subnet
is permitted to be a /0 should you wish to match port
between all destinations."

Make that statement true.

Before:

    # ipset create cidrzero hash:net,port,net
    # ipset add cidrzero 0.0.0.0/0,12345,0.0.0.0/0
    ipset v6.34: The value of the CIDR parameter of the IP address is invalid

    # ipset create cidrzero6 hash:net,port,net family inet6
    # ipset add cidrzero6 ::/0,12345,::/0
    ipset v6.34: The value of the CIDR parameter of the IP address is invalid

After:

    # ipset create cidrzero hash:net,port,net
    # ipset add cidrzero 0.0.0.0/0,12345,0.0.0.0/0
    # ipset test cidrzero 192.168.205.129,12345,172.16.205.129
    192.168.205.129,tcp:12345,172.16.205.129 is in set cidrzero.

    # ipset create cidrzero6 hash:net,port,net family inet6
    # ipset add cidrzero6 ::/0,12345,::/0
    # ipset test cidrzero6 fe80::1,12345,ff00::1
    fe80::1,tcp:12345,ff00::1 is in set cidrzero6.

See also:

  https://bugzilla.kernel.org/show_bug.cgi?id=200897
  https://github.com/ewestbrook/linux/commit/df7ff6efb0934ab6acc11f003ff1a7580d6c1d9c

Signed-off-by: Eric Westbrook <linux@westbrook.io>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netfilter/ipset/ip_set_hash_netportnet.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/netfilter/ipset/ip_set_hash_netportnet.c b/net/netfilter/ipset/ip_set_hash_netportnet.c
index 8602f2595a1a..0e6e40c6f652 100644
--- a/net/netfilter/ipset/ip_set_hash_netportnet.c
+++ b/net/netfilter/ipset/ip_set_hash_netportnet.c
@@ -213,13 +213,13 @@ hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
 
 	if (tb[IPSET_ATTR_CIDR]) {
 		e.cidr[0] = nla_get_u8(tb[IPSET_ATTR_CIDR]);
-		if (!e.cidr[0] || e.cidr[0] > HOST_MASK)
+		if (e.cidr[0] > HOST_MASK)
 			return -IPSET_ERR_INVALID_CIDR;
 	}
 
 	if (tb[IPSET_ATTR_CIDR2]) {
 		e.cidr[1] = nla_get_u8(tb[IPSET_ATTR_CIDR2]);
-		if (!e.cidr[1] || e.cidr[1] > HOST_MASK)
+		if (e.cidr[1] > HOST_MASK)
 			return -IPSET_ERR_INVALID_CIDR;
 	}
 
@@ -492,13 +492,13 @@ hash_netportnet6_uadt(struct ip_set *set, struct nlattr *tb[],
 
 	if (tb[IPSET_ATTR_CIDR]) {
 		e.cidr[0] = nla_get_u8(tb[IPSET_ATTR_CIDR]);
-		if (!e.cidr[0] || e.cidr[0] > HOST_MASK)
+		if (e.cidr[0] > HOST_MASK)
 			return -IPSET_ERR_INVALID_CIDR;
 	}
 
 	if (tb[IPSET_ATTR_CIDR2]) {
 		e.cidr[1] = nla_get_u8(tb[IPSET_ATTR_CIDR2]);
-		if (!e.cidr[1] || e.cidr[1] > HOST_MASK)
+		if (e.cidr[1] > HOST_MASK)
 			return -IPSET_ERR_INVALID_CIDR;
 	}
 
-- 
2.17.1




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

* [PATCH 4.14 23/62] s390/mm: Fix ERROR: "__node_distance" undefined!
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (21 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 22/62] netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 24/62] netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() Greg Kroah-Hartman
                   ` (43 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Justin M. Forbes, Heiko Carstens,
	Martin Schwidefsky, Sasha Levin

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

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

[ Upstream commit a541f0ebcc08ed8bc0cc492eec9a86cb280a9f24 ]

Fixes:
ERROR: "__node_distance" [drivers/nvme/host/nvme-core.ko] undefined!
make[1]: *** [scripts/Makefile.modpost:92: __modpost] Error 1
make: *** [Makefile:1275: modules] Error 2
+ exit 1

Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/s390/numa/numa.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/s390/numa/numa.c b/arch/s390/numa/numa.c
index 5bd374491f94..6c151b42e65d 100644
--- a/arch/s390/numa/numa.c
+++ b/arch/s390/numa/numa.c
@@ -54,6 +54,7 @@ int __node_distance(int a, int b)
 {
 	return mode->distance ? mode->distance(a, b) : 0;
 }
+EXPORT_SYMBOL(__node_distance);
 
 int numa_debug_enabled;
 
-- 
2.17.1




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

* [PATCH 4.14 24/62] netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment()
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (22 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 23/62] s390/mm: Fix ERROR: "__node_distance" undefined! Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 25/62] netfilter: xt_IDLETIMER: add sysfs filename checking routine Greg Kroah-Hartman
                   ` (42 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jozsef Kadlecsik, Pablo Neira Ayuso,
	Sasha Levin

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

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

[ Upstream commit 17b8b74c0f8dbf9b9e3301f9ca5b65dd1c079951 ]

The function is called when rcu_read_lock() is held and not
when rcu_read_lock_bh() is held.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/netfilter/ipset/ip_set_comment.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/netfilter/ipset/ip_set_comment.h b/include/linux/netfilter/ipset/ip_set_comment.h
index 8e2bab1e8e90..70877f8de7e9 100644
--- a/include/linux/netfilter/ipset/ip_set_comment.h
+++ b/include/linux/netfilter/ipset/ip_set_comment.h
@@ -43,11 +43,11 @@ ip_set_init_comment(struct ip_set *set, struct ip_set_comment *comment,
 	rcu_assign_pointer(comment->c, c);
 }
 
-/* Used only when dumping a set, protected by rcu_read_lock_bh() */
+/* Used only when dumping a set, protected by rcu_read_lock() */
 static inline int
 ip_set_put_comment(struct sk_buff *skb, const struct ip_set_comment *comment)
 {
-	struct ip_set_comment_rcu *c = rcu_dereference_bh(comment->c);
+	struct ip_set_comment_rcu *c = rcu_dereference(comment->c);
 
 	if (!c)
 		return 0;
-- 
2.17.1




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

* [PATCH 4.14 25/62] netfilter: xt_IDLETIMER: add sysfs filename checking routine
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (23 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 24/62] netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 26/62] s390/qeth: fix HiperSockets sniffer Greg Kroah-Hartman
                   ` (41 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Taehee Yoo, Pablo Neira Ayuso, Sasha Levin

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

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

[ Upstream commit 54451f60c8fa061af9051a53be9786393947367c ]

When IDLETIMER rule is added, sysfs file is created under
/sys/class/xt_idletimer/timers/
But some label name shouldn't be used.
".", "..", "power", "uevent", "subsystem", etc...
So that sysfs filename checking routine is needed.

test commands:
   %iptables -I INPUT -j IDLETIMER --timeout 1 --label "power"

splat looks like:
[95765.423132] sysfs: cannot create duplicate filename '/devices/virtual/xt_idletimer/timers/power'
[95765.433418] CPU: 0 PID: 8446 Comm: iptables Not tainted 4.19.0-rc6+ #20
[95765.449755] Call Trace:
[95765.449755]  dump_stack+0xc9/0x16b
[95765.449755]  ? show_regs_print_info+0x5/0x5
[95765.449755]  sysfs_warn_dup+0x74/0x90
[95765.449755]  sysfs_add_file_mode_ns+0x352/0x500
[95765.449755]  sysfs_create_file_ns+0x179/0x270
[95765.449755]  ? sysfs_add_file_mode_ns+0x500/0x500
[95765.449755]  ? idletimer_tg_checkentry+0x3e5/0xb1b [xt_IDLETIMER]
[95765.449755]  ? rcu_read_lock_sched_held+0x114/0x130
[95765.449755]  ? __kmalloc_track_caller+0x211/0x2b0
[95765.449755]  ? memcpy+0x34/0x50
[95765.449755]  idletimer_tg_checkentry+0x4e2/0xb1b [xt_IDLETIMER]
[ ... ]

Fixes: 0902b469bd25 ("netfilter: xtables: idletimer target implementation")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netfilter/xt_IDLETIMER.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/net/netfilter/xt_IDLETIMER.c b/net/netfilter/xt_IDLETIMER.c
index 1141f08810b6..3fef8c2e545d 100644
--- a/net/netfilter/xt_IDLETIMER.c
+++ b/net/netfilter/xt_IDLETIMER.c
@@ -116,6 +116,22 @@ static void idletimer_tg_expired(unsigned long data)
 	schedule_work(&timer->work);
 }
 
+static int idletimer_check_sysfs_name(const char *name, unsigned int size)
+{
+	int ret;
+
+	ret = xt_check_proc_name(name, size);
+	if (ret < 0)
+		return ret;
+
+	if (!strcmp(name, "power") ||
+	    !strcmp(name, "subsystem") ||
+	    !strcmp(name, "uevent"))
+		return -EINVAL;
+
+	return 0;
+}
+
 static int idletimer_tg_create(struct idletimer_tg_info *info)
 {
 	int ret;
@@ -126,6 +142,10 @@ static int idletimer_tg_create(struct idletimer_tg_info *info)
 		goto out;
 	}
 
+	ret = idletimer_check_sysfs_name(info->label, sizeof(info->label));
+	if (ret < 0)
+		goto out_free_timer;
+
 	sysfs_attr_init(&info->timer->attr.attr);
 	info->timer->attr.attr.name = kstrdup(info->label, GFP_KERNEL);
 	if (!info->timer->attr.attr.name) {
-- 
2.17.1




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

* [PATCH 4.14 26/62] s390/qeth: fix HiperSockets sniffer
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (24 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 25/62] netfilter: xt_IDLETIMER: add sysfs filename checking routine Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 27/62] hwmon: (ibmpowernv) Remove bogus __init annotations Greg Kroah-Hartman
                   ` (40 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Julian Wiedmann, David S. Miller,
	Sasha Levin

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

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

[ Upstream commit bd74a7f9cc033cf4d405788f80292268987dc0c5 ]

Sniffing mode for L3 HiperSockets requires that no IP addresses are
registered with the HW. The preferred way to achieve this is for
userspace to delete all the IPs on the interface. But qeth is expected
to also tolerate a configuration where that is not the case, by skipping
the IP registration when in sniffer mode.
Since commit 5f78e29ceebf ("qeth: optimize IP handling in rx_mode callback")
reworked the IP registration logic in the L3 subdriver, this no longer
works. When the qeth device is set online, qeth_l3_recover_ip() now
unconditionally registers all unicast addresses from our internal
IP table.

While we could fix this particular problem by skipping
qeth_l3_recover_ip() on a sniffer device, the more future-proof change
is to skip the IP address registration at the lowest level. This way we
a) catch any future code path that attempts to register an IP address
   without considering the sniffer scenario, and
b) continue to build up our internal IP table, so that if sniffer mode
   is switched off later we can operate just like normal.

Fixes: 5f78e29ceebf ("qeth: optimize IP handling in rx_mode callback")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/s390/net/qeth_l3_main.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index cd73172bff47..a19f2dc69e8a 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -358,9 +358,6 @@ static void qeth_l3_clear_ip_htable(struct qeth_card *card, int recover)
 
 	QETH_CARD_TEXT(card, 4, "clearip");
 
-	if (recover && card->options.sniffer)
-		return;
-
 	spin_lock_bh(&card->ip_lock);
 
 	hash_for_each_safe(card->ip_htable, i, tmp, addr, hnode) {
@@ -818,6 +815,8 @@ static int qeth_l3_register_addr_entry(struct qeth_card *card,
 	int rc = 0;
 	int cnt = 3;
 
+	if (card->options.sniffer)
+		return 0;
 
 	if (addr->proto == QETH_PROT_IPV4) {
 		QETH_CARD_TEXT(card, 2, "setaddr4");
@@ -853,6 +852,9 @@ static int qeth_l3_deregister_addr_entry(struct qeth_card *card,
 {
 	int rc = 0;
 
+	if (card->options.sniffer)
+		return 0;
+
 	if (addr->proto == QETH_PROT_IPV4) {
 		QETH_CARD_TEXT(card, 2, "deladdr4");
 		QETH_CARD_HEX(card, 3, &addr->u.a4.addr, sizeof(int));
-- 
2.17.1




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

* [PATCH 4.14 27/62] hwmon: (ibmpowernv) Remove bogus __init annotations
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (25 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 26/62] s390/qeth: fix HiperSockets sniffer Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 28/62] Revert "drm/exynos/decon5433: implement frame counter" Greg Kroah-Hartman
                   ` (39 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Geert Uytterhoeven, Guenter Roeck,
	Sasha Levin

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

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

[ Upstream commit e3e61f01d755188cb6c2dcf5a244b9c0937c258e ]

If gcc decides not to inline make_sensor_label():

    WARNING: vmlinux.o(.text+0x4df549c): Section mismatch in reference from the function .create_device_attrs() to the function .init.text:.make_sensor_label()
    The function .create_device_attrs() references
    the function __init .make_sensor_label().
    This is often because .create_device_attrs lacks a __init
    annotation or the annotation of .make_sensor_label is wrong.

As .probe() can be called after freeing of __init memory, all __init
annotiations in the driver are bogus, and should be removed.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hwmon/ibmpowernv.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index 5ccdd0b52650..b38f4951c94e 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -126,7 +126,7 @@ static ssize_t show_label(struct device *dev, struct device_attribute *devattr,
 	return sprintf(buf, "%s\n", sdata->label);
 }
 
-static int __init get_logical_cpu(int hwcpu)
+static int get_logical_cpu(int hwcpu)
 {
 	int cpu;
 
@@ -137,9 +137,8 @@ static int __init get_logical_cpu(int hwcpu)
 	return -ENOENT;
 }
 
-static void __init make_sensor_label(struct device_node *np,
-				     struct sensor_data *sdata,
-				     const char *label)
+static void make_sensor_label(struct device_node *np,
+			      struct sensor_data *sdata, const char *label)
 {
 	u32 id;
 	size_t n;
-- 
2.17.1




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

* [PATCH 4.14 28/62] Revert "drm/exynos/decon5433: implement frame counter"
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (26 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 27/62] hwmon: (ibmpowernv) Remove bogus __init annotations Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 29/62] clk: fixed-factor: fix of_node_get-put imbalance Greg Kroah-Hartman
                   ` (38 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Inki Dae, Sasha Levin

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

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

[ Upstream commit 6ca469e22a30992b4478d2ab88737c70667c1e00 ]

This reverts commit 0586feba322e1de05075700eb4b835c8b683e62b

This patch makes it to need get_vblank_counter callback in crtc
to get frame counter from decon driver.

However, drm_dev->max_vblank_count is a member unique to
vendor's DRM driver but in case of ARM DRM, some CRTC devices
don't provide the frame counter value. As a result, this patch
made extension and clone mode not working.

Instead of this patch, we may need separated max_vblank_count
which belongs to each CRTC device, or need to implement frame
counter emulation for them who don't support HW frame counter.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c |  9 ---------
 drivers/gpu/drm/exynos/exynos_drm_crtc.c      | 11 -----------
 drivers/gpu/drm/exynos/exynos_drm_drv.h       |  1 -
 3 files changed, 21 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
index f905c214fdd0..5a5b3535411f 100644
--- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
@@ -160,13 +160,6 @@ static u32 decon_get_frame_count(struct decon_context *ctx, bool end)
 	return frm;
 }
 
-static u32 decon_get_vblank_counter(struct exynos_drm_crtc *crtc)
-{
-	struct decon_context *ctx = crtc->ctx;
-
-	return decon_get_frame_count(ctx, false);
-}
-
 static void decon_setup_trigger(struct decon_context *ctx)
 {
 	if (!ctx->crtc->i80_mode && !(ctx->out_type & I80_HW_TRG))
@@ -532,7 +525,6 @@ static const struct exynos_drm_crtc_ops decon_crtc_ops = {
 	.disable		= decon_disable,
 	.enable_vblank		= decon_enable_vblank,
 	.disable_vblank		= decon_disable_vblank,
-	.get_vblank_counter	= decon_get_vblank_counter,
 	.atomic_begin		= decon_atomic_begin,
 	.update_plane		= decon_update_plane,
 	.disable_plane		= decon_disable_plane,
@@ -550,7 +542,6 @@ static int decon_bind(struct device *dev, struct device *master, void *data)
 	int ret;
 
 	ctx->drm_dev = drm_dev;
-	drm_dev->max_vblank_count = 0xffffffff;
 
 	for (win = ctx->first_win; win < WINDOWS_NR; win++) {
 		int tmp = (win == ctx->first_win) ? 0 : win;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
index 6ce0821590df..4787560bf93e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
@@ -147,16 +147,6 @@ static void exynos_drm_crtc_disable_vblank(struct drm_crtc *crtc)
 		exynos_crtc->ops->disable_vblank(exynos_crtc);
 }
 
-static u32 exynos_drm_crtc_get_vblank_counter(struct drm_crtc *crtc)
-{
-	struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
-
-	if (exynos_crtc->ops->get_vblank_counter)
-		return exynos_crtc->ops->get_vblank_counter(exynos_crtc);
-
-	return 0;
-}
-
 static const struct drm_crtc_funcs exynos_crtc_funcs = {
 	.set_config	= drm_atomic_helper_set_config,
 	.page_flip	= drm_atomic_helper_page_flip,
@@ -166,7 +156,6 @@ static const struct drm_crtc_funcs exynos_crtc_funcs = {
 	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
 	.enable_vblank = exynos_drm_crtc_enable_vblank,
 	.disable_vblank = exynos_drm_crtc_disable_vblank,
-	.get_vblank_counter = exynos_drm_crtc_get_vblank_counter,
 };
 
 struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index f8bae4cb4823..d228b5148dbc 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -133,7 +133,6 @@ struct exynos_drm_crtc_ops {
 	void (*disable)(struct exynos_drm_crtc *crtc);
 	int (*enable_vblank)(struct exynos_drm_crtc *crtc);
 	void (*disable_vblank)(struct exynos_drm_crtc *crtc);
-	u32 (*get_vblank_counter)(struct exynos_drm_crtc *crtc);
 	enum drm_mode_status (*mode_valid)(struct exynos_drm_crtc *crtc,
 		const struct drm_display_mode *mode);
 	int (*atomic_check)(struct exynos_drm_crtc *crtc,
-- 
2.17.1




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

* [PATCH 4.14 29/62] clk: fixed-factor: fix of_node_get-put imbalance
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (27 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 28/62] Revert "drm/exynos/decon5433: implement frame counter" Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 30/62] lib/raid6: Fix arm64 test build Greg Kroah-Hartman
                   ` (37 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alan Tull, Ricardo Ribalda Delgado,
	Stephen Boyd, Sasha Levin

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

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

[ Upstream commit f98e8a572bddbf27032114127d2fcc78fa5e6a9d ]

When the fixed factor clock is created by devicetree,
of_clk_add_provider is called.  Add a call to
of_clk_del_provider in the remove function to balance
it out.

Reported-by: Alan Tull <atull@kernel.org>
Fixes: 971451b3b15d ("clk: fixed-factor: Convert into a module platform driver")
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/clk/clk-fixed-factor.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c
index 20724abd38bd..7df6b5b1e7ee 100644
--- a/drivers/clk/clk-fixed-factor.c
+++ b/drivers/clk/clk-fixed-factor.c
@@ -210,6 +210,7 @@ static int of_fixed_factor_clk_remove(struct platform_device *pdev)
 {
 	struct clk *clk = platform_get_drvdata(pdev);
 
+	of_clk_del_provider(pdev->dev.of_node);
 	clk_unregister_fixed_factor(clk);
 
 	return 0;
-- 
2.17.1




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

* [PATCH 4.14 30/62] lib/raid6: Fix arm64 test build
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (28 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 29/62] clk: fixed-factor: fix of_node_get-put imbalance Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 31/62] s390/perf: Change CPUM_CF return code in event init function Greg Kroah-Hartman
                   ` (36 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ard Biesheuvel, Jeremy Linton,
	Catalin Marinas, Sasha Levin

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

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

[ Upstream commit 313a06e636808387822af24c507cba92703568b1 ]

The lib/raid6/test fails to build the neon objects
on arm64 because the correct machine type is 'aarch64'.

Once this is correctly enabled, the neon recovery objects
need to be added to the build.

Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 lib/raid6/test/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/raid6/test/Makefile b/lib/raid6/test/Makefile
index be1010bdc435..565a77220fae 100644
--- a/lib/raid6/test/Makefile
+++ b/lib/raid6/test/Makefile
@@ -27,7 +27,7 @@ ifeq ($(ARCH),arm)
         CFLAGS += -I../../../arch/arm/include -mfpu=neon
         HAS_NEON = yes
 endif
-ifeq ($(ARCH),arm64)
+ifeq ($(ARCH),aarch64)
         CFLAGS += -I../../../arch/arm64/include
         HAS_NEON = yes
 endif
@@ -41,7 +41,7 @@ ifeq ($(IS_X86),yes)
 		    gcc -c -x assembler - >&/dev/null &&        \
 		    rm ./-.o && echo -DCONFIG_AS_AVX512=1)
 else ifeq ($(HAS_NEON),yes)
-        OBJS   += neon.o neon1.o neon2.o neon4.o neon8.o
+        OBJS   += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o
         CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
 else
         HAS_ALTIVEC := $(shell printf '\#include <altivec.h>\nvector int a;\n' |\
-- 
2.17.1




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

* [PATCH 4.14 31/62] s390/perf: Change CPUM_CF return code in event init function
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (29 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 30/62] lib/raid6: Fix arm64 test build Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3 Greg Kroah-Hartman
                   ` (35 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Thomas Richter, Hendrik Brueckner,
	Martin Schwidefsky, Sasha Levin

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

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

[ Upstream commit 0bb2ae1b26e1fb7543ec7474cdd374ac4b88c4da ]

The function perf_init_event() creates a new event and
assignes it to a PMU. This a done in a loop over all existing
PMUs. For each listed PMU the event init function is called
and if this function does return any other error than -ENOENT,
the loop is terminated the creation of the event fails.

If the event is invalid, return -ENOENT to try other PMUs.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/s390/kernel/perf_cpum_cf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/s390/kernel/perf_cpum_cf.c b/arch/s390/kernel/perf_cpum_cf.c
index 746d03423333..61e91fee8467 100644
--- a/arch/s390/kernel/perf_cpum_cf.c
+++ b/arch/s390/kernel/perf_cpum_cf.c
@@ -376,7 +376,7 @@ static int __hw_perf_event_init(struct perf_event *event)
 		return -ENOENT;
 
 	if (ev > PERF_CPUM_CF_MAX_CTR)
-		return -EINVAL;
+		return -ENOENT;
 
 	/* Obtain the counter set to which the specified counter belongs */
 	set = get_counter_set(ev);
-- 
2.17.1




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

* [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (30 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 31/62] s390/perf: Change CPUM_CF return code in event init function Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 13:24   ` Vignesh R
  2018-11-26 10:51 ` [PATCH 4.14 33/62] sched/core: Take the hotplug lock in sched_init_smp() Greg Kroah-Hartman
                   ` (34 subsequent siblings)
  66 siblings, 1 reply; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vignesh R, Grygorii Strashko,
	Wolfram Sang, Sasha Levin

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

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

[ Upstream commit 5b277402deac0691226a947df71c581686bd4020 ]

Allow I2C_OMAP to be built for K3 platforms.

Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/i2c/busses/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 45a3f3ca29b3..75ea367ffd83 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -759,7 +759,7 @@ config I2C_OCORES
 
 config I2C_OMAP
 	tristate "OMAP I2C adapter"
-	depends on ARCH_OMAP
+	depends on ARCH_OMAP || ARCH_K3
 	default y if MACH_OMAP_H3 || MACH_OMAP_OSK
 	help
 	  If you say yes to this option, support will be included for the
-- 
2.17.1




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

* [PATCH 4.14 33/62] sched/core: Take the hotplug lock in sched_init_smp()
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (31 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3 Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 34/62] perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so Greg Kroah-Hartman
                   ` (33 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sudeep Holla, Valentin Schneider,
	Peter Zijlstra (Intel),
	Dietmar.Eggemann, Linus Torvalds, Thomas Gleixner,
	morten.rasmussen, quentin.perret, Ingo Molnar, Sasha Levin

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

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

[ Upstream commit 40fa3780bac2b654edf23f6b13f4e2dd550aea10 ]

When running on linux-next (8c60c36d0b8c ("Add linux-next specific files
for 20181019")) + CONFIG_PROVE_LOCKING=y on a big.LITTLE system (e.g.
Juno or HiKey960), we get the following report:

 [    0.748225] Call trace:
 [    0.750685]  lockdep_assert_cpus_held+0x30/0x40
 [    0.755236]  static_key_enable_cpuslocked+0x20/0xc8
 [    0.760137]  build_sched_domains+0x1034/0x1108
 [    0.764601]  sched_init_domains+0x68/0x90
 [    0.768628]  sched_init_smp+0x30/0x80
 [    0.772309]  kernel_init_freeable+0x278/0x51c
 [    0.776685]  kernel_init+0x10/0x108
 [    0.780190]  ret_from_fork+0x10/0x18

The static_key in question is 'sched_asym_cpucapacity' introduced by
commit:

  df054e8445a4 ("sched/topology: Add static_key for asymmetric CPU capacity optimizations")

In this particular case, we enable it because smp_prepare_cpus() will
end up fetching the capacity-dmips-mhz entry from the devicetree,
so we already have some asymmetry detected when entering sched_init_smp().

This didn't get detected in tip/sched/core because we were missing:

  commit cb538267ea1e ("jump_label/lockdep: Assert we hold the hotplug lock for _cpuslocked() operations")

Calls to build_sched_domains() post sched_init_smp() will hold the
hotplug lock, it just so happens that this very first call is a
special case. As stated by a comment in sched_init_smp(), "There's no
userspace yet to cause hotplug operations" so this is a harmless
warning.

However, to both respect the semantics of underlying
callees and make lockdep happy, take the hotplug lock in
sched_init_smp(). This also satisfies the comment atop
sched_init_domains() that says "Callers must hold the hotplug lock".

Reported-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Dietmar.Eggemann@arm.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: morten.rasmussen@arm.com
Cc: quentin.perret@arm.com
Link: http://lkml.kernel.org/r/1540301851-3048-1-git-send-email-valentin.schneider@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/sched/core.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 4e89ed8a0fb2..3bc664662081 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5733,14 +5733,17 @@ void __init sched_init_smp(void)
 	/*
 	 * There's no userspace yet to cause hotplug operations; hence all the
 	 * CPU masks are stable and all blatant races in the below code cannot
-	 * happen.
+	 * happen. The hotplug lock is nevertheless taken to satisfy lockdep,
+	 * but there won't be any contention on it.
 	 */
+	cpus_read_lock();
 	mutex_lock(&sched_domains_mutex);
 	sched_init_domains(cpu_active_mask);
 	cpumask_andnot(non_isolated_cpus, cpu_possible_mask, cpu_isolated_map);
 	if (cpumask_empty(non_isolated_cpus))
 		cpumask_set_cpu(smp_processor_id(), non_isolated_cpus);
 	mutex_unlock(&sched_domains_mutex);
+	cpus_read_unlock();
 
 	/* Move init over to a non-isolated CPU */
 	if (set_cpus_allowed_ptr(current, non_isolated_cpus) < 0)
-- 
2.17.1




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

* [PATCH 4.14 34/62] perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (32 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 33/62] sched/core: Take the hotplug lock in sched_init_smp() Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 35/62] i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features Greg Kroah-Hartman
                   ` (32 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Gustavo Romero, Jiri Olsa,
	Arnaldo Carvalho de Melo, Sasha Levin

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

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

[ Upstream commit 6ac2226229d931153331a93d90655a3de05b9290 ]

Currently jvmti agent can not be used because function scnprintf is not
present in the agent libperf-jvmti.so. As a result the JVM when using
such agent to record JITed code profiling information will fail on
looking up scnprintf:

  java: symbol lookup error: lib/libperf-jvmti.so: undefined symbol: scnprintf

This commit fixes that by reverting to the use of snprintf, that can be
looked up, instead of scnprintf, adding a proper check for the returned
value in order to print a better error message when the jitdump file
pathname is too long. Checking the returned value also helps to comply
with some recent gcc versions, like gcc8, which will fail due to
truncated writing checks related to the -Werror=format-truncation= flag.

Signed-off-by: Gustavo Romero <gromero@linux.vnet.ibm.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
LPU-Reference: 1541117601-18937-2-git-send-email-gromero@linux.vnet.ibm.com
Link: https://lkml.kernel.org/n/tip-mvpxxxy7wnzaj74cq75muw3f@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/jvmti/jvmti_agent.c | 49 ++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 11 deletions(-)

diff --git a/tools/perf/jvmti/jvmti_agent.c b/tools/perf/jvmti/jvmti_agent.c
index c1d20d951434..4ad9948fe594 100644
--- a/tools/perf/jvmti/jvmti_agent.c
+++ b/tools/perf/jvmti/jvmti_agent.c
@@ -125,7 +125,7 @@ perf_get_timestamp(void)
 }
 
 static int
-debug_cache_init(void)
+create_jit_cache_dir(void)
 {
 	char str[32];
 	char *base, *p;
@@ -144,8 +144,13 @@ debug_cache_init(void)
 
 	strftime(str, sizeof(str), JIT_LANG"-jit-%Y%m%d", &tm);
 
-	snprintf(jit_path, PATH_MAX - 1, "%s/.debug/", base);
-
+	ret = snprintf(jit_path, PATH_MAX, "%s/.debug/", base);
+	if (ret >= PATH_MAX) {
+		warnx("jvmti: cannot generate jit cache dir because %s/.debug/"
+			" is too long, please check the cwd, JITDUMPDIR, and"
+			" HOME variables", base);
+		return -1;
+	}
 	ret = mkdir(jit_path, 0755);
 	if (ret == -1) {
 		if (errno != EEXIST) {
@@ -154,20 +159,32 @@ debug_cache_init(void)
 		}
 	}
 
-	snprintf(jit_path, PATH_MAX - 1, "%s/.debug/jit", base);
+	ret = snprintf(jit_path, PATH_MAX, "%s/.debug/jit", base);
+	if (ret >= PATH_MAX) {
+		warnx("jvmti: cannot generate jit cache dir because"
+			" %s/.debug/jit is too long, please check the cwd,"
+			" JITDUMPDIR, and HOME variables", base);
+		return -1;
+	}
 	ret = mkdir(jit_path, 0755);
 	if (ret == -1) {
 		if (errno != EEXIST) {
-			warn("cannot create jit cache dir %s", jit_path);
+			warn("jvmti: cannot create jit cache dir %s", jit_path);
 			return -1;
 		}
 	}
 
-	snprintf(jit_path, PATH_MAX - 1, "%s/.debug/jit/%s.XXXXXXXX", base, str);
-
+	ret = snprintf(jit_path, PATH_MAX, "%s/.debug/jit/%s.XXXXXXXX", base, str);
+	if (ret >= PATH_MAX) {
+		warnx("jvmti: cannot generate jit cache dir because"
+			" %s/.debug/jit/%s.XXXXXXXX is too long, please check"
+			" the cwd, JITDUMPDIR, and HOME variables",
+			base, str);
+		return -1;
+	}
 	p = mkdtemp(jit_path);
 	if (p != jit_path) {
-		warn("cannot create jit cache dir %s", jit_path);
+		warn("jvmti: cannot create jit cache dir %s", jit_path);
 		return -1;
 	}
 
@@ -228,7 +245,7 @@ void *jvmti_open(void)
 {
 	char dump_path[PATH_MAX];
 	struct jitheader header;
-	int fd;
+	int fd, ret;
 	FILE *fp;
 
 	init_arch_timestamp();
@@ -245,12 +262,22 @@ void *jvmti_open(void)
 
 	memset(&header, 0, sizeof(header));
 
-	debug_cache_init();
+	/*
+	 * jitdump file dir
+	 */
+	if (create_jit_cache_dir() < 0)
+		return NULL;
 
 	/*
 	 * jitdump file name
 	 */
-	scnprintf(dump_path, PATH_MAX, "%s/jit-%i.dump", jit_path, getpid());
+	ret = snprintf(dump_path, PATH_MAX, "%s/jit-%i.dump", jit_path, getpid());
+	if (ret >= PATH_MAX) {
+		warnx("jvmti: cannot generate jitdump file full path because"
+			" %s/jit-%i.dump is too long, please check the cwd,"
+			" JITDUMPDIR, and HOME variables", jit_path, getpid());
+		return NULL;
+	}
 
 	fd = open(dump_path, O_CREAT|O_TRUNC|O_RDWR, 0666);
 	if (fd == -1)
-- 
2.17.1




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

* [PATCH 4.14 35/62] i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (33 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 34/62] perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 36/62] qed: Fix memory/entry leak in qed_init_sp_request() Greg Kroah-Hartman
                   ` (31 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jacob Keller, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

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

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

[ Upstream commit ba766b8b99c30ad3c55ed8cf224d1185ecff1476 ]

Since commit bacd75cfac8a ("i40e/i40evf: Add capability exchange for
outer checksum", 2017-04-06) the i40e driver has not reported support
for IP-in-IP offloads. This likely occurred due to a bad rebase, as the
commit extracts hw_enc_features into its own variable. As part of this
change, it dropped the NETIF_F_FSO_IPXIP flags from the
netdev->hw_enc_features. This was unfortunately not caught during code
review.

Fix this by adding back the missing feature flags.

For reference, NETIF_F_GSO_IPXIP4 was added in commit 7e13318daa4a
("net: define gso types for IPx over IPv4 and IPv6", 2016-05-20),
replacing NETIF_F_GSO_IPIP and NETIF_F_GSO_SIT.

NETIF_F_GSO_IPXIP6 was added in commit bf2d1df39502 ("intel: Add support
for IPv6 IP-in-IP offload", 2016-05-20).

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 04dbf64fb1cb..176c99b8251d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -9688,6 +9688,8 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
 			  NETIF_F_GSO_GRE		|
 			  NETIF_F_GSO_GRE_CSUM		|
 			  NETIF_F_GSO_PARTIAL		|
+			  NETIF_F_GSO_IPXIP4		|
+			  NETIF_F_GSO_IPXIP6		|
 			  NETIF_F_GSO_UDP_TUNNEL	|
 			  NETIF_F_GSO_UDP_TUNNEL_CSUM	|
 			  NETIF_F_SCTP_CRC		|
-- 
2.17.1




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

* [PATCH 4.14 36/62] qed: Fix memory/entry leak in qed_init_sp_request()
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (34 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 35/62] i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 37/62] qed: Fix blocking/unlimited SPQ entries leak Greg Kroah-Hartman
                   ` (30 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Denis Bolotin, Michal Kalderon,
	David S. Miller, Sasha Levin

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

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

[ Upstream commit 39477551df940ddb1339203817de04f5caaacf7a ]

Free the allocated SPQ entry or return the acquired SPQ entry to the free
list in error flows.

Signed-off-by: Denis Bolotin <denis.bolotin@cavium.com>
Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../net/ethernet/qlogic/qed/qed_sp_commands.c    | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_sp_commands.c b/drivers/net/ethernet/qlogic/qed/qed_sp_commands.c
index d7c5965328be..b26578464469 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sp_commands.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_sp_commands.c
@@ -80,7 +80,7 @@ int qed_sp_init_request(struct qed_hwfn *p_hwfn,
 
 	case QED_SPQ_MODE_BLOCK:
 		if (!p_data->p_comp_data)
-			return -EINVAL;
+			goto err;
 
 		p_ent->comp_cb.cookie = p_data->p_comp_data->cookie;
 		break;
@@ -95,7 +95,7 @@ int qed_sp_init_request(struct qed_hwfn *p_hwfn,
 	default:
 		DP_NOTICE(p_hwfn, "Unknown SPQE completion mode %d\n",
 			  p_ent->comp_mode);
-		return -EINVAL;
+		goto err;
 	}
 
 	DP_VERBOSE(p_hwfn, QED_MSG_SPQ,
@@ -109,6 +109,18 @@ int qed_sp_init_request(struct qed_hwfn *p_hwfn,
 	memset(&p_ent->ramrod, 0, sizeof(p_ent->ramrod));
 
 	return 0;
+
+err:
+	/* qed_spq_get_entry() can either get an entry from the free_pool,
+	 * or, if no entries are left, allocate a new entry and add it to
+	 * the unlimited_pending list.
+	 */
+	if (p_ent->queue == &p_hwfn->p_spq->unlimited_pending)
+		kfree(p_ent);
+	else
+		qed_spq_return_entry(p_hwfn, p_ent);
+
+	return -EINVAL;
 }
 
 static enum tunnel_clss qed_tunn_clss_to_fw_clss(u8 type)
-- 
2.17.1




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

* [PATCH 4.14 37/62] qed: Fix blocking/unlimited SPQ entries leak
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (35 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 36/62] qed: Fix memory/entry leak in qed_init_sp_request() Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 38/62] qed: Fix potential memory corruption Greg Kroah-Hartman
                   ` (29 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Denis Bolotin, Michal Kalderon,
	David S. Miller, Sasha Levin

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

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

[ Upstream commit 2632f22ebd08da249c2017962a199a0cfb2324bf ]

When there are no SPQ entries left in the free_pool, new entries are
allocated and are added to the unlimited list. When an entry in the pool
is available, the content is copied from the original entry, and the new
entry is sent to the device. qed_spq_post() is not aware of that, so the
additional entry is stored in the original entry as p_post_ent, which can
later be returned to the pool.

Signed-off-by: Denis Bolotin <denis.bolotin@cavium.com>
Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/qlogic/qed/qed_sp.h  |  3 ++
 drivers/net/ethernet/qlogic/qed/qed_spq.c | 57 ++++++++++++-----------
 2 files changed, 33 insertions(+), 27 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_sp.h b/drivers/net/ethernet/qlogic/qed/qed_sp.h
index ab4ad8a1e2a5..01a213d4ee9c 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sp.h
+++ b/drivers/net/ethernet/qlogic/qed/qed_sp.h
@@ -167,6 +167,9 @@ struct qed_spq_entry {
 	enum spq_mode			comp_mode;
 	struct qed_spq_comp_cb		comp_cb;
 	struct qed_spq_comp_done	comp_done; /* SPQ_MODE_EBLOCK */
+
+	/* Posted entry for unlimited list entry in EBLOCK mode */
+	struct qed_spq_entry		*post_ent;
 };
 
 struct qed_eq {
diff --git a/drivers/net/ethernet/qlogic/qed/qed_spq.c b/drivers/net/ethernet/qlogic/qed/qed_spq.c
index be48d9abd001..0313e9c46979 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_spq.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_spq.c
@@ -687,6 +687,8 @@ static int qed_spq_add_entry(struct qed_hwfn *p_hwfn,
 			/* EBLOCK responsible to free the allocated p_ent */
 			if (p_ent->comp_mode != QED_SPQ_MODE_EBLOCK)
 				kfree(p_ent);
+			else
+				p_ent->post_ent = p_en2;
 
 			p_ent = p_en2;
 		}
@@ -770,6 +772,25 @@ static int qed_spq_pend_post(struct qed_hwfn *p_hwfn)
 				 SPQ_HIGH_PRI_RESERVE_DEFAULT);
 }
 
+/* Avoid overriding of SPQ entries when getting out-of-order completions, by
+ * marking the completions in a bitmap and increasing the chain consumer only
+ * for the first successive completed entries.
+ */
+static void qed_spq_comp_bmap_update(struct qed_hwfn *p_hwfn, __le16 echo)
+{
+	u16 pos = le16_to_cpu(echo) % SPQ_RING_SIZE;
+	struct qed_spq *p_spq = p_hwfn->p_spq;
+
+	__set_bit(pos, p_spq->p_comp_bitmap);
+	while (test_bit(p_spq->comp_bitmap_idx,
+			p_spq->p_comp_bitmap)) {
+		__clear_bit(p_spq->comp_bitmap_idx,
+			    p_spq->p_comp_bitmap);
+		p_spq->comp_bitmap_idx++;
+		qed_chain_return_produced(&p_spq->chain);
+	}
+}
+
 int qed_spq_post(struct qed_hwfn *p_hwfn,
 		 struct qed_spq_entry *p_ent, u8 *fw_return_code)
 {
@@ -821,11 +842,12 @@ int qed_spq_post(struct qed_hwfn *p_hwfn,
 				   p_ent->queue == &p_spq->unlimited_pending);
 
 		if (p_ent->queue == &p_spq->unlimited_pending) {
-			/* This is an allocated p_ent which does not need to
-			 * return to pool.
-			 */
+			struct qed_spq_entry *p_post_ent = p_ent->post_ent;
+
 			kfree(p_ent);
-			return rc;
+
+			/* Return the entry which was actually posted */
+			p_ent = p_post_ent;
 		}
 
 		if (rc)
@@ -839,7 +861,7 @@ int qed_spq_post(struct qed_hwfn *p_hwfn,
 spq_post_fail2:
 	spin_lock_bh(&p_spq->lock);
 	list_del(&p_ent->list);
-	qed_chain_return_produced(&p_spq->chain);
+	qed_spq_comp_bmap_update(p_hwfn, p_ent->elem.hdr.echo);
 
 spq_post_fail:
 	/* return to the free pool */
@@ -871,25 +893,8 @@ int qed_spq_completion(struct qed_hwfn *p_hwfn,
 	spin_lock_bh(&p_spq->lock);
 	list_for_each_entry_safe(p_ent, tmp, &p_spq->completion_pending, list) {
 		if (p_ent->elem.hdr.echo == echo) {
-			u16 pos = le16_to_cpu(echo) % SPQ_RING_SIZE;
-
 			list_del(&p_ent->list);
-
-			/* Avoid overriding of SPQ entries when getting
-			 * out-of-order completions, by marking the completions
-			 * in a bitmap and increasing the chain consumer only
-			 * for the first successive completed entries.
-			 */
-			__set_bit(pos, p_spq->p_comp_bitmap);
-
-			while (test_bit(p_spq->comp_bitmap_idx,
-					p_spq->p_comp_bitmap)) {
-				__clear_bit(p_spq->comp_bitmap_idx,
-					    p_spq->p_comp_bitmap);
-				p_spq->comp_bitmap_idx++;
-				qed_chain_return_produced(&p_spq->chain);
-			}
-
+			qed_spq_comp_bmap_update(p_hwfn, echo);
 			p_spq->comp_count++;
 			found = p_ent;
 			break;
@@ -928,11 +933,9 @@ int qed_spq_completion(struct qed_hwfn *p_hwfn,
 			   QED_MSG_SPQ,
 			   "Got a completion without a callback function\n");
 
-	if ((found->comp_mode != QED_SPQ_MODE_EBLOCK) ||
-	    (found->queue == &p_spq->unlimited_pending))
+	if (found->comp_mode != QED_SPQ_MODE_EBLOCK)
 		/* EBLOCK  is responsible for returning its own entry into the
-		 * free list, unless it originally added the entry into the
-		 * unlimited pending list.
+		 * free list.
 		 */
 		qed_spq_return_entry(p_hwfn, found);
 
-- 
2.17.1




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

* [PATCH 4.14 38/62] qed: Fix potential memory corruption
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (36 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 37/62] qed: Fix blocking/unlimited SPQ entries leak Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 39/62] net: stmmac: Fix RX packet size > 8191 Greg Kroah-Hartman
                   ` (28 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sagiv Ozeri, Denis Bolotin,
	David S. Miller, Sasha Levin

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

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

[ Upstream commit fa5c448d98f0df660bfcad3dd5facc027ef84cd3 ]

A stuck ramrod should be deleted from the completion_pending list,
otherwise it will be added again in the future and corrupt the list.

Return error value to inform that ramrod is stuck and should be deleted.

Signed-off-by: Sagiv Ozeri <sagiv.ozeri@cavium.com>
Signed-off-by: Denis Bolotin <denis.bolotin@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/qlogic/qed/qed_spq.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_spq.c b/drivers/net/ethernet/qlogic/qed/qed_spq.c
index 0313e9c46979..467755b6dd0b 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_spq.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_spq.c
@@ -144,6 +144,7 @@ static int qed_spq_block(struct qed_hwfn *p_hwfn,
 
 	DP_INFO(p_hwfn, "Ramrod is stuck, requesting MCP drain\n");
 	rc = qed_mcp_drain(p_hwfn, p_ptt);
+	qed_ptt_release(p_hwfn, p_ptt);
 	if (rc) {
 		DP_NOTICE(p_hwfn, "MCP drain failed\n");
 		goto err;
@@ -152,18 +153,15 @@ static int qed_spq_block(struct qed_hwfn *p_hwfn,
 	/* Retry after drain */
 	rc = __qed_spq_block(p_hwfn, p_ent, p_fw_ret, true);
 	if (!rc)
-		goto out;
+		return 0;
 
 	comp_done = (struct qed_spq_comp_done *)p_ent->comp_cb.cookie;
-	if (comp_done->done == 1)
+	if (comp_done->done == 1) {
 		if (p_fw_ret)
 			*p_fw_ret = comp_done->fw_return_code;
-out:
-	qed_ptt_release(p_hwfn, p_ptt);
-	return 0;
-
+		return 0;
+	}
 err:
-	qed_ptt_release(p_hwfn, p_ptt);
 	DP_NOTICE(p_hwfn,
 		  "Ramrod is stuck [CID %08x cmd %02x protocol %02x echo %04x]\n",
 		  le32_to_cpu(p_ent->elem.hdr.cid),
-- 
2.17.1




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

* [PATCH 4.14 39/62] net: stmmac: Fix RX packet size > 8191
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (37 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 38/62] qed: Fix potential memory corruption Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 40/62] zram: close udev startup race condition as default groups Greg Kroah-Hartman
                   ` (27 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jose Abreu, Thor Thayer,
	David S. Miller, Sasha Levin

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

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

[ Upstream commit 8137b6ef0ce469154e5cf19f8e7fe04d9a72ac5e ]

Ping problems with packets > 8191 as shown:

PING 192.168.1.99 (192.168.1.99) 8150(8178) bytes of data.
8158 bytes from 192.168.1.99: icmp_seq=1 ttl=64 time=0.669 ms
wrong data byte 8144 should be 0xd0 but was 0x0
16    10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
      20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
%< ---------------snip--------------------------------------
8112  b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf
      c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf
8144  0 0 0 0 d0 d1
      ^^^^^^^
Notice the 4 bytes of 0 before the expected byte of d0.

Databook notes that the RX buffer must be a multiple of 4/8/16
bytes [1].

Update the DMA Buffer size define to 8188 instead of 8192. Remove
the -1 from the RX buffer size allocations and use the new
DMA Buffer size directly.

[1] Synopsys DesignWare Cores Ethernet MAC Universal v3.70a
    [section 8.4.2 - Table 8-24]

Tested on SoCFPGA Stratix10 with ping sweep from 100 to 8300 byte packets.

Fixes: 286a83721720 ("stmmac: add CHAINED descriptor mode support (V4)")
Suggested-by: Jose Abreu <jose.abreu@synopsys.com>
Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/stmicro/stmmac/common.h    | 3 ++-
 drivers/net/ethernet/stmicro/stmmac/descs_com.h | 2 +-
 drivers/net/ethernet/stmicro/stmmac/enh_desc.c  | 2 +-
 drivers/net/ethernet/stmicro/stmmac/ring_mode.c | 2 +-
 4 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h
index 627fec210e2f..8e2a19616bc9 100644
--- a/drivers/net/ethernet/stmicro/stmmac/common.h
+++ b/drivers/net/ethernet/stmicro/stmmac/common.h
@@ -340,7 +340,8 @@ struct dma_features {
 
 /* GMAC TX FIFO is 8K, Rx FIFO is 16K */
 #define BUF_SIZE_16KiB 16384
-#define BUF_SIZE_8KiB 8192
+/* RX Buffer size must be < 8191 and multiple of 4/8/16 bytes */
+#define BUF_SIZE_8KiB 8188
 #define BUF_SIZE_4KiB 4096
 #define BUF_SIZE_2KiB 2048
 
diff --git a/drivers/net/ethernet/stmicro/stmmac/descs_com.h b/drivers/net/ethernet/stmicro/stmmac/descs_com.h
index ca9d7e48034c..40d6356a7e73 100644
--- a/drivers/net/ethernet/stmicro/stmmac/descs_com.h
+++ b/drivers/net/ethernet/stmicro/stmmac/descs_com.h
@@ -31,7 +31,7 @@
 /* Enhanced descriptors */
 static inline void ehn_desc_rx_set_on_ring(struct dma_desc *p, int end)
 {
-	p->des1 |= cpu_to_le32(((BUF_SIZE_8KiB - 1)
+	p->des1 |= cpu_to_le32((BUF_SIZE_8KiB
 			<< ERDES1_BUFFER2_SIZE_SHIFT)
 		   & ERDES1_BUFFER2_SIZE_MASK);
 
diff --git a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c
index 2a828a312814..acd65a4f94d4 100644
--- a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c
+++ b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c
@@ -262,7 +262,7 @@ static void enh_desc_init_rx_desc(struct dma_desc *p, int disable_rx_ic,
 				  int mode, int end)
 {
 	p->des0 |= cpu_to_le32(RDES0_OWN);
-	p->des1 |= cpu_to_le32((BUF_SIZE_8KiB - 1) & ERDES1_BUFFER1_SIZE_MASK);
+	p->des1 |= cpu_to_le32(BUF_SIZE_8KiB & ERDES1_BUFFER1_SIZE_MASK);
 
 	if (mode == STMMAC_CHAIN_MODE)
 		ehn_desc_rx_set_on_chain(p);
diff --git a/drivers/net/ethernet/stmicro/stmmac/ring_mode.c b/drivers/net/ethernet/stmicro/stmmac/ring_mode.c
index 28e4b5d50ce6..1af7b078b94d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/ring_mode.c
+++ b/drivers/net/ethernet/stmicro/stmmac/ring_mode.c
@@ -143,7 +143,7 @@ static void stmmac_clean_desc3(void *priv_ptr, struct dma_desc *p)
 static int stmmac_set_16kib_bfsize(int mtu)
 {
 	int ret = 0;
-	if (unlikely(mtu >= BUF_SIZE_8KiB))
+	if (unlikely(mtu > BUF_SIZE_8KiB))
 		ret = BUF_SIZE_16KiB;
 	return ret;
 }
-- 
2.17.1




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

* [PATCH 4.14 40/62] zram: close udev startup race condition as default groups
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (38 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 39/62] net: stmmac: Fix RX packet size > 8191 Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 41/62] SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() Greg Kroah-Hartman
                   ` (26 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sergey Senozhatsky, Hannes Reinecke,
	Howard Chen, Minchan Kim, Sasha Levin

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

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

commit fef912bf860e upstream.
commit 98af4d4df889 upstream.

I got a report from Howard Chen that he saw zram and sysfs race(ie,
zram block device file is created but sysfs for it isn't yet)
when he tried to create new zram devices via hotadd knob.

v4.20 kernel fixes it by [1, 2] but it's too large size to merge
into -stable so this patch fixes the problem by registering defualt
group by Greg KH's approach[3].

This patch should be applied to every stable tree [3.16+] currently
existing from kernel.org because the problem was introduced at 2.6.37
by [4].

[1] fef912bf860e, block: genhd: add 'groups' argument to device_add_disk
[2] 98af4d4df889, zram: register default groups with device_add_disk()
[3] http://kroah.com/log/blog/2013/06/26/how-to-create-a-sysfs-file-correctly/
[4] 33863c21e69e9, Staging: zram: Replace ioctls with sysfs interface

Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Hannes Reinecke <hare@suse.com>
Tested-by: Howard Chen <howardsoc@google.com>
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/block/zram/zram_drv.c | 26 ++++++--------------------
 1 file changed, 6 insertions(+), 20 deletions(-)

diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 1e2648e4c286..27b202c64c84 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -1491,6 +1491,11 @@ static const struct attribute_group zram_disk_attr_group = {
 	.attrs = zram_disk_attrs,
 };
 
+static const struct attribute_group *zram_disk_attr_groups[] = {
+	&zram_disk_attr_group,
+	NULL,
+};
+
 /*
  * Allocate and initialize new zram device. the function returns
  * '>= 0' device_id upon success, and negative value otherwise.
@@ -1568,23 +1573,14 @@ static int zram_add(void)
 	if (ZRAM_LOGICAL_BLOCK_SIZE == PAGE_SIZE)
 		blk_queue_max_write_zeroes_sectors(zram->disk->queue, UINT_MAX);
 
+	disk_to_dev(zram->disk)->groups = zram_disk_attr_groups;
 	add_disk(zram->disk);
 
-	ret = sysfs_create_group(&disk_to_dev(zram->disk)->kobj,
-				&zram_disk_attr_group);
-	if (ret < 0) {
-		pr_err("Error creating sysfs group for device %d\n",
-				device_id);
-		goto out_free_disk;
-	}
 	strlcpy(zram->compressor, default_compressor, sizeof(zram->compressor));
 
 	pr_info("Added device: %s\n", zram->disk->disk_name);
 	return device_id;
 
-out_free_disk:
-	del_gendisk(zram->disk);
-	put_disk(zram->disk);
 out_free_queue:
 	blk_cleanup_queue(queue);
 out_free_idr:
@@ -1612,16 +1608,6 @@ static int zram_remove(struct zram *zram)
 	zram->claim = true;
 	mutex_unlock(&bdev->bd_mutex);
 
-	/*
-	 * Remove sysfs first, so no one will perform a disksize
-	 * store while we destroy the devices. This also helps during
-	 * hot_remove -- zram_reset_device() is the last holder of
-	 * ->init_lock, no later/concurrent disksize_store() or any
-	 * other sysfs handlers are possible.
-	 */
-	sysfs_remove_group(&disk_to_dev(zram->disk)->kobj,
-			&zram_disk_attr_group);
-
 	/* Make sure all the pending I/O are finished */
 	fsync_bdev(bdev);
 	zram_reset_device(zram);
-- 
2.17.1




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

* [PATCH 4.14 41/62] SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer()
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (39 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 40/62] zram: close udev startup race condition as default groups Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 42/62] ACPI / watchdog: Prefer iTCO_wdt always when WDAT table uses RTC SRAM Greg Kroah-Hartman
                   ` (25 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, J. Bruce Fields, Sasha Levin

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

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

[ Upstream commit 025911a5f4e36955498ed50806ad1b02f0f76288 ]

There is no need to have the '__be32 *p' variable static since new value
always be assigned before use it.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Cc: stable@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/sunrpc/xdr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c
index 13695ba8fc54..4f382805eb9c 100644
--- a/net/sunrpc/xdr.c
+++ b/net/sunrpc/xdr.c
@@ -512,7 +512,7 @@ EXPORT_SYMBOL_GPL(xdr_commit_encode);
 static __be32 *xdr_get_next_encode_buffer(struct xdr_stream *xdr,
 		size_t nbytes)
 {
-	static __be32 *p;
+	__be32 *p;
 	int space_left;
 	int frag1bytes, frag2bytes;
 
-- 
2.17.1




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

* [PATCH 4.14 42/62] ACPI / watchdog: Prefer iTCO_wdt always when WDAT table uses RTC SRAM
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (40 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 41/62] SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 43/62] perf machine: Add machine__is() to identify machine arch Greg Kroah-Hartman
                   ` (24 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnold Guy, Alois Nespor, Yury Pakin,
	Ihor Chyhin, Mika Westerberg, Guenter Roeck, Rafael J. Wysocki,
	Sasha Levin

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

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

[ Upstream commit 5a802a7a285c8877ca872e44eeb0f06afcb5212f ]

After we added quirk for Lenovo Z50-70 it turns out there are at least
two more systems where WDAT table includes instructions accessing RTC
SRAM. Instead of quirking each system separately, look for such
instructions in the table and automatically prefer iTCO_wdt if found.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=199033
Reported-by: Arnold Guy <aurnoldg@gmail.com>
Reported-by: Alois Nespor <nespor@fssp.cz>
Reported-by: Yury Pakin <zxwarior@gmail.com>
Reported-by: Ihor Chyhin <ihorchyhin@ukr.net>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/acpi/acpi_watchdog.c | 72 ++++++++++++++++++++++--------------
 1 file changed, 45 insertions(+), 27 deletions(-)

diff --git a/drivers/acpi/acpi_watchdog.c b/drivers/acpi/acpi_watchdog.c
index 4bde16fb97d8..95600309ce42 100644
--- a/drivers/acpi/acpi_watchdog.c
+++ b/drivers/acpi/acpi_watchdog.c
@@ -12,35 +12,51 @@
 #define pr_fmt(fmt) "ACPI: watchdog: " fmt
 
 #include <linux/acpi.h>
-#include <linux/dmi.h>
 #include <linux/ioport.h>
 #include <linux/platform_device.h>
 
 #include "internal.h"
 
-static const struct dmi_system_id acpi_watchdog_skip[] = {
-	{
-		/*
-		 * On Lenovo Z50-70 there are two issues with the WDAT
-		 * table. First some of the instructions use RTC SRAM
-		 * to store persistent information. This does not work well
-		 * with Linux RTC driver. Second, more important thing is
-		 * that the instructions do not actually reset the system.
-		 *
-		 * On this particular system iTCO_wdt seems to work just
-		 * fine so we prefer that over WDAT for now.
-		 *
-		 * See also https://bugzilla.kernel.org/show_bug.cgi?id=199033.
-		 */
-		.ident = "Lenovo Z50-70",
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "20354"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Z50-70"),
-		},
-	},
-	{}
-};
+#ifdef CONFIG_RTC_MC146818_LIB
+#include <linux/mc146818rtc.h>
+
+/*
+ * There are several systems where the WDAT table is accessing RTC SRAM to
+ * store persistent information. This does not work well with the Linux RTC
+ * driver so on those systems we skip WDAT driver and prefer iTCO_wdt
+ * instead.
+ *
+ * See also https://bugzilla.kernel.org/show_bug.cgi?id=199033.
+ */
+static bool acpi_watchdog_uses_rtc(const struct acpi_table_wdat *wdat)
+{
+	const struct acpi_wdat_entry *entries;
+	int i;
+
+	entries = (struct acpi_wdat_entry *)(wdat + 1);
+	for (i = 0; i < wdat->entries; i++) {
+		const struct acpi_generic_address *gas;
+
+		gas = &entries[i].register_region;
+		if (gas->space_id == ACPI_ADR_SPACE_SYSTEM_IO) {
+			switch (gas->address) {
+			case RTC_PORT(0):
+			case RTC_PORT(1):
+			case RTC_PORT(2):
+			case RTC_PORT(3):
+				return true;
+			}
+		}
+	}
+
+	return false;
+}
+#else
+static bool acpi_watchdog_uses_rtc(const struct acpi_table_wdat *wdat)
+{
+	return false;
+}
+#endif
 
 static const struct acpi_table_wdat *acpi_watchdog_get_wdat(void)
 {
@@ -50,9 +66,6 @@ static const struct acpi_table_wdat *acpi_watchdog_get_wdat(void)
 	if (acpi_disabled)
 		return NULL;
 
-	if (dmi_check_system(acpi_watchdog_skip))
-		return NULL;
-
 	status = acpi_get_table(ACPI_SIG_WDAT, 0,
 				(struct acpi_table_header **)&wdat);
 	if (ACPI_FAILURE(status)) {
@@ -60,6 +73,11 @@ static const struct acpi_table_wdat *acpi_watchdog_get_wdat(void)
 		return NULL;
 	}
 
+	if (acpi_watchdog_uses_rtc(wdat)) {
+		pr_info("Skipping WDAT on this system because it uses RTC SRAM\n");
+		return NULL;
+	}
+
 	return wdat;
 }
 
-- 
2.17.1




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

* [PATCH 4.14 43/62] perf machine: Add machine__is() to identify machine arch
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (41 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 42/62] ACPI / watchdog: Prefer iTCO_wdt always when WDAT table uses RTC SRAM Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 44/62] perf tools: Fix kernel_start for PTI on x86 Greg Kroah-Hartman
                   ` (23 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Adrian Hunter, Jiri Olsa,
	Alexander Shishkin, Andi Kleen, Andy Lutomirski, Dave Hansen,
	H. Peter Anvin, Joerg Roedel, Peter Zijlstra, Thomas Gleixner,
	x86, Arnaldo Carvalho de Melo, Sasha Levin

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

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

commit dbbd34a666ee117d0e39e71a47f38f02c4a5c698 upstream.

Add a function to identify the machine architecture.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Tested-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/1526548928-20790-6-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/env.c     | 19 +++++++++++++++++++
 tools/perf/util/env.h     |  3 +++
 tools/perf/util/machine.c |  9 +++++++++
 tools/perf/util/machine.h |  2 ++
 4 files changed, 33 insertions(+)

diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c
index 6276b340f893..49f58921a968 100644
--- a/tools/perf/util/env.c
+++ b/tools/perf/util/env.c
@@ -3,6 +3,7 @@
 #include "env.h"
 #include "util.h"
 #include <errno.h>
+#include <sys/utsname.h>
 
 struct perf_env perf_env;
 
@@ -87,6 +88,24 @@ int perf_env__read_cpu_topology_map(struct perf_env *env)
 	return 0;
 }
 
+static int perf_env__read_arch(struct perf_env *env)
+{
+	struct utsname uts;
+
+	if (env->arch)
+		return 0;
+
+	if (!uname(&uts))
+		env->arch = strdup(uts.machine);
+
+	return env->arch ? 0 : -ENOMEM;
+}
+
+const char *perf_env__raw_arch(struct perf_env *env)
+{
+	return env && !perf_env__read_arch(env) ? env->arch : "unknown";
+}
+
 void cpu_cache_level__free(struct cpu_cache_level *cache)
 {
 	free(cache->type);
diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h
index 1eb35b190b34..bd3869913907 100644
--- a/tools/perf/util/env.h
+++ b/tools/perf/util/env.h
@@ -65,4 +65,7 @@ int perf_env__set_cmdline(struct perf_env *env, int argc, const char *argv[]);
 int perf_env__read_cpu_topology_map(struct perf_env *env);
 
 void cpu_cache_level__free(struct cpu_cache_level *cache);
+
+const char *perf_env__raw_arch(struct perf_env *env);
+
 #endif /* __PERF_ENV_H */
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index bd5d5b5e2218..2af879693fbe 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -2238,6 +2238,15 @@ int machine__set_current_tid(struct machine *machine, int cpu, pid_t pid,
 	return 0;
 }
 
+/*
+ * Compares the raw arch string. N.B. see instead perf_env__arch() if a
+ * normalized arch is needed.
+ */
+bool machine__is(struct machine *machine, const char *arch)
+{
+	return machine && !strcmp(perf_env__raw_arch(machine->env), arch);
+}
+
 int machine__get_kernel_start(struct machine *machine)
 {
 	struct map *map = machine__kernel_map(machine);
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index d551aa80a59b..fbc5133fb27c 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -169,6 +169,8 @@ static inline bool machine__is_host(struct machine *machine)
 	return machine ? machine->pid == HOST_KERNEL_ID : false;
 }
 
+bool machine__is(struct machine *machine, const char *arch);
+
 struct thread *__machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
 struct thread *machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
 
-- 
2.17.1




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

* [PATCH 4.14 44/62] perf tools: Fix kernel_start for PTI on x86
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (42 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 43/62] perf machine: Add machine__is() to identify machine arch Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 45/62] perf machine: Add nr_cpus_avail() Greg Kroah-Hartman
                   ` (22 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Adrian Hunter, Jiri Olsa,
	Alexander Shishkin, Andi Kleen, Andy Lutomirski, Dave Hansen,
	H. Peter Anvin, Joerg Roedel, Peter Zijlstra, Thomas Gleixner,
	x86, Arnaldo Carvalho de Melo, Sasha Levin

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

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

commit 19422a9f2a3be7f3a046285ffae4cbb571aa853a upstream.

On x86_64, PTI entry trampolines are less than the start of kernel text,
but still above 2^63. So leave kernel_start = 1ULL << 63 for x86_64.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Tested-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/1526548928-20790-7-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/machine.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 2af879693fbe..af18c3d55642 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -2263,7 +2263,12 @@ int machine__get_kernel_start(struct machine *machine)
 	machine->kernel_start = 1ULL << 63;
 	if (map) {
 		err = map__load(map);
-		if (!err)
+		/*
+		 * On x86_64, PTI entry trampolines are less than the
+		 * start of kernel text, but still above 2^63. So leave
+		 * kernel_start = 1ULL << 63 for x86_64.
+		 */
+		if (!err && !machine__is(machine, "x86_64"))
 			machine->kernel_start = map->start;
 	}
 	return err;
-- 
2.17.1




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

* [PATCH 4.14 45/62] perf machine: Add nr_cpus_avail()
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (43 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 44/62] perf tools: Fix kernel_start for PTI on x86 Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 46/62] perf machine: Workaround missing maps for x86 PTI entry trampolines Greg Kroah-Hartman
                   ` (21 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Adrian Hunter, Alexander Shishkin,
	Andi Kleen, Andy Lutomirski, Dave Hansen, H. Peter Anvin,
	Jiri Olsa, Joerg Roedel, Peter Zijlstra, Thomas Gleixner, x86,
	Arnaldo Carvalho de Melo, Sasha Levin

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

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

commit 9cecca325ea879c84fcd31a5e609a514c1a1dbd1 upstream.

Add a function to return the number of the machine's available CPUs.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/1526986485-6562-5-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/env.c     | 13 +++++++++++++
 tools/perf/util/env.h     |  1 +
 tools/perf/util/machine.c |  5 +++++
 tools/perf/util/machine.h |  1 +
 4 files changed, 20 insertions(+)

diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c
index 49f58921a968..b492cb974aa0 100644
--- a/tools/perf/util/env.c
+++ b/tools/perf/util/env.c
@@ -101,11 +101,24 @@ static int perf_env__read_arch(struct perf_env *env)
 	return env->arch ? 0 : -ENOMEM;
 }
 
+static int perf_env__read_nr_cpus_avail(struct perf_env *env)
+{
+	if (env->nr_cpus_avail == 0)
+		env->nr_cpus_avail = cpu__max_present_cpu();
+
+	return env->nr_cpus_avail ? 0 : -ENOENT;
+}
+
 const char *perf_env__raw_arch(struct perf_env *env)
 {
 	return env && !perf_env__read_arch(env) ? env->arch : "unknown";
 }
 
+int perf_env__nr_cpus_avail(struct perf_env *env)
+{
+	return env && !perf_env__read_nr_cpus_avail(env) ? env->nr_cpus_avail : 0;
+}
+
 void cpu_cache_level__free(struct cpu_cache_level *cache)
 {
 	free(cache->type);
diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h
index bd3869913907..9aace8452751 100644
--- a/tools/perf/util/env.h
+++ b/tools/perf/util/env.h
@@ -67,5 +67,6 @@ int perf_env__read_cpu_topology_map(struct perf_env *env);
 void cpu_cache_level__free(struct cpu_cache_level *cache);
 
 const char *perf_env__raw_arch(struct perf_env *env);
+int perf_env__nr_cpus_avail(struct perf_env *env);
 
 #endif /* __PERF_ENV_H */
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index af18c3d55642..78aa1c5f19ca 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -2247,6 +2247,11 @@ bool machine__is(struct machine *machine, const char *arch)
 	return machine && !strcmp(perf_env__raw_arch(machine->env), arch);
 }
 
+int machine__nr_cpus_avail(struct machine *machine)
+{
+	return machine ? perf_env__nr_cpus_avail(machine->env) : 0;
+}
+
 int machine__get_kernel_start(struct machine *machine)
 {
 	struct map *map = machine__kernel_map(machine);
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index fbc5133fb27c..245743d9ce63 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -170,6 +170,7 @@ static inline bool machine__is_host(struct machine *machine)
 }
 
 bool machine__is(struct machine *machine, const char *arch);
+int machine__nr_cpus_avail(struct machine *machine);
 
 struct thread *__machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
 struct thread *machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
-- 
2.17.1




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

* [PATCH 4.14 46/62] perf machine: Workaround missing maps for x86 PTI entry trampolines
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (44 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 45/62] perf machine: Add nr_cpus_avail() Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 47/62] perf test code-reading: Fix perf_env setup for " Greg Kroah-Hartman
                   ` (20 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Adrian Hunter, Alexander Shishkin,
	Andi Kleen, Andy Lutomirski, Dave Hansen, H. Peter Anvin,
	Jiri Olsa, Joerg Roedel, Peter Zijlstra, Thomas Gleixner, x86,
	Arnaldo Carvalho de Melo, Sasha Levin

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

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

commit 4d99e4136580d178e3523281a820be17bf814bf8 upstream.

On x86_64 the PTI entry trampolines are not in the kernel map created by
perf tools. That results in the addresses having no symbols and prevents
annotation.  It also causes Intel PT to have decoding errors at the
trampoline addresses.

Workaround that by creating maps for the trampolines.

At present the kernel does not export information revealing where the
trampolines are.  Until that happens, the addresses are hardcoded.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/1526986485-6562-6-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/util/machine.c | 96 +++++++++++++++++++++++++++++++++++++++
 tools/perf/util/machine.h |  3 ++
 tools/perf/util/symbol.c  | 12 +++--
 3 files changed, 106 insertions(+), 5 deletions(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 78aa1c5f19ca..968fd0454e6b 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -818,6 +818,102 @@ static int machine__get_running_kernel_start(struct machine *machine,
 	return 0;
 }
 
+/* Kernel-space maps for symbols that are outside the main kernel map and module maps */
+struct extra_kernel_map {
+	u64 start;
+	u64 end;
+	u64 pgoff;
+};
+
+static int machine__create_extra_kernel_map(struct machine *machine,
+					    struct dso *kernel,
+					    struct extra_kernel_map *xm)
+{
+	struct kmap *kmap;
+	struct map *map;
+
+	map = map__new2(xm->start, kernel, MAP__FUNCTION);
+	if (!map)
+		return -1;
+
+	map->end   = xm->end;
+	map->pgoff = xm->pgoff;
+
+	kmap = map__kmap(map);
+
+	kmap->kmaps = &machine->kmaps;
+
+	map_groups__insert(&machine->kmaps, map);
+
+	pr_debug2("Added extra kernel map %" PRIx64 "-%" PRIx64 "\n",
+		  map->start, map->end);
+
+	map__put(map);
+
+	return 0;
+}
+
+static u64 find_entry_trampoline(struct dso *dso)
+{
+	/* Duplicates are removed so lookup all aliases */
+	const char *syms[] = {
+		"_entry_trampoline",
+		"__entry_trampoline_start",
+		"entry_SYSCALL_64_trampoline",
+	};
+	struct symbol *sym = dso__first_symbol(dso, MAP__FUNCTION);
+	unsigned int i;
+
+	for (; sym; sym = dso__next_symbol(sym)) {
+		if (sym->binding != STB_GLOBAL)
+			continue;
+		for (i = 0; i < ARRAY_SIZE(syms); i++) {
+			if (!strcmp(sym->name, syms[i]))
+				return sym->start;
+		}
+	}
+
+	return 0;
+}
+
+/*
+ * These values can be used for kernels that do not have symbols for the entry
+ * trampolines in kallsyms.
+ */
+#define X86_64_CPU_ENTRY_AREA_PER_CPU	0xfffffe0000000000ULL
+#define X86_64_CPU_ENTRY_AREA_SIZE	0x2c000
+#define X86_64_ENTRY_TRAMPOLINE		0x6000
+
+/* Map x86_64 PTI entry trampolines */
+int machine__map_x86_64_entry_trampolines(struct machine *machine,
+					  struct dso *kernel)
+{
+	u64 pgoff = find_entry_trampoline(kernel);
+	int nr_cpus_avail, cpu;
+
+	if (!pgoff)
+		return 0;
+
+	nr_cpus_avail = machine__nr_cpus_avail(machine);
+
+	/* Add a 1 page map for each CPU's entry trampoline */
+	for (cpu = 0; cpu < nr_cpus_avail; cpu++) {
+		u64 va = X86_64_CPU_ENTRY_AREA_PER_CPU +
+			 cpu * X86_64_CPU_ENTRY_AREA_SIZE +
+			 X86_64_ENTRY_TRAMPOLINE;
+		struct extra_kernel_map xm = {
+			.start = va,
+			.end   = va + page_size,
+			.pgoff = pgoff,
+		};
+
+		if (machine__create_extra_kernel_map(machine, kernel, &xm) < 0)
+			return -1;
+	}
+
+	return 0;
+}
+
 int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)
 {
 	int type;
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index 245743d9ce63..13041b036a5b 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -266,4 +266,7 @@ int machine__set_current_tid(struct machine *machine, int cpu, pid_t pid,
  */
 char *machine__resolve_kernel_addr(void *vmachine, unsigned long long *addrp, char **modp);
 
+int machine__map_x86_64_entry_trampolines(struct machine *machine,
+					  struct dso *kernel);
+
 #endif /* __PERF_MACHINE_H */
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index ec40e47aa198..3936f69f385c 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1513,20 +1513,22 @@ int dso__load(struct dso *dso, struct map *map)
 		goto out;
 	}
 
+	if (map->groups && map->groups->machine)
+		machine = map->groups->machine;
+	else
+		machine = NULL;
+
 	if (dso->kernel) {
 		if (dso->kernel == DSO_TYPE_KERNEL)
 			ret = dso__load_kernel_sym(dso, map);
 		else if (dso->kernel == DSO_TYPE_GUEST_KERNEL)
 			ret = dso__load_guest_kernel_sym(dso, map);
 
+		if (machine__is(machine, "x86_64"))
+			machine__map_x86_64_entry_trampolines(machine, dso);
 		goto out;
 	}
 
-	if (map->groups && map->groups->machine)
-		machine = map->groups->machine;
-	else
-		machine = NULL;
-
 	dso->adjust_symbols = 0;
 
 	if (perfmap) {
-- 
2.17.1




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

* [PATCH 4.14 47/62] perf test code-reading: Fix perf_env setup for PTI entry trampolines
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (45 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 46/62] perf machine: Workaround missing maps for x86 PTI entry trampolines Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 48/62] x86/mm: Move LDT remap out of KASLR region on 5-level paging Greg Kroah-Hartman
                   ` (19 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Adrian Hunter,
	Arnaldo Carvalho de Melo, Jiri Olsa, Sasha Levin

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

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

commit f6c66d73bb8192d357bb5fb8cd5826920f811d8c upstream.

The "Object code reading" test will not create maps for the PTI entry
trampolines unless the machine environment exists to show that the arch is
x86_64.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1528183800-21577-1-git-send-email-adrian.hunter@intel.com
[ split from a larger patch ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/perf/tests/code-reading.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-reading.c
index fcc8984bc329..acad8ba06d77 100644
--- a/tools/perf/tests/code-reading.c
+++ b/tools/perf/tests/code-reading.c
@@ -527,6 +527,7 @@ static int do_test_code_reading(bool try_kcore)
 	pid = getpid();
 
 	machine = machine__new_host();
+	machine->env = &perf_env;
 
 	ret = machine__create_kernel_maps(machine);
 	if (ret < 0) {
-- 
2.17.1




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

* [PATCH 4.14 48/62] x86/mm: Move LDT remap out of KASLR region on 5-level paging
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (46 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 47/62] perf test code-reading: Fix perf_env setup for " Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 49/62] x86/ldt: Unmap PTEs for the slot before freeing LDT pages Greg Kroah-Hartman
                   ` (18 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kirill A. Shutemov, Thomas Gleixner,
	Andy Lutomirski, bp, hpa, dave.hansen, peterz, boris.ostrovsky,
	jgross, bhe, willy, linux-mm, Sasha Levin

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

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

commit d52888aa2753e3063a9d3a0c9f72f94aa9809c15 upstream

On 5-level paging the LDT remap area is placed in the middle of the KASLR
randomization region and it can overlap with the direct mapping, the
vmalloc or the vmap area.

The LDT mapping is per mm, so it cannot be moved into the P4D page table
next to the CPU_ENTRY_AREA without complicating PGD table allocation for
5-level paging.

The 4 PGD slot gap just before the direct mapping is reserved for
hypervisors, so it cannot be used.

Move the direct mapping one slot deeper and use the resulting gap for the
LDT remap area. The resulting layout is the same for 4 and 5 level paging.

[ tglx: Massaged changelog ]

Fixes: f55f0501cbf6 ("x86/pti: Put the LDT in its own PGD if PTI is on")
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Cc: bp@alien8.de
Cc: hpa@zytor.com
Cc: dave.hansen@linux.intel.com
Cc: peterz@infradead.org
Cc: boris.ostrovsky@oracle.com
Cc: jgross@suse.com
Cc: bhe@redhat.com
Cc: willy@infradead.org
Cc: linux-mm@kvack.org
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20181026122856.66224-2-kirill.shutemov@linux.intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 Documentation/x86/x86_64/mm.txt         | 10 ++++++----
 arch/x86/include/asm/page_64_types.h    | 12 +++++++-----
 arch/x86/include/asm/pgtable_64_types.h |  7 +++----
 arch/x86/xen/mmu_pv.c                   |  6 +++---
 4 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt
index ea91cb61a602..43f066cde67d 100644
--- a/Documentation/x86/x86_64/mm.txt
+++ b/Documentation/x86/x86_64/mm.txt
@@ -4,8 +4,9 @@ Virtual memory map with 4 level page tables:
 0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
 hole caused by [47:63] sign extension
 ffff800000000000 - ffff87ffffffffff (=43 bits) guard hole, reserved for hypervisor
-ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory
-ffffc80000000000 - ffffc8ffffffffff (=40 bits) hole
+ffff880000000000 - ffff887fffffffff (=39 bits) LDT remap for PTI
+ffff888000000000 - ffffc87fffffffff (=64 TB) direct mapping of all phys. memory
+ffffc88000000000 - ffffc8ffffffffff (=39 bits) hole
 ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space
 ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole
 ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB)
@@ -30,8 +31,9 @@ Virtual memory map with 5 level page tables:
 0000000000000000 - 00ffffffffffffff (=56 bits) user space, different per mm
 hole caused by [56:63] sign extension
 ff00000000000000 - ff0fffffffffffff (=52 bits) guard hole, reserved for hypervisor
-ff10000000000000 - ff8fffffffffffff (=55 bits) direct mapping of all phys. memory
-ff90000000000000 - ff9fffffffffffff (=52 bits) LDT remap for PTI
+ff10000000000000 - ff10ffffffffffff (=48 bits) LDT remap for PTI
+ff11000000000000 - ff90ffffffffffff (=55 bits) direct mapping of all phys. memory
+ff91000000000000 - ff9fffffffffffff (=3840 TB) hole
 ffa0000000000000 - ffd1ffffffffffff (=54 bits) vmalloc/ioremap space (12800 TB)
 ffd2000000000000 - ffd3ffffffffffff (=49 bits) hole
 ffd4000000000000 - ffd5ffffffffffff (=49 bits) virtual memory map (512TB)
diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h
index e1407312c412..74d531f6d518 100644
--- a/arch/x86/include/asm/page_64_types.h
+++ b/arch/x86/include/asm/page_64_types.h
@@ -33,14 +33,16 @@
 
 /*
  * Set __PAGE_OFFSET to the most negative possible address +
- * PGDIR_SIZE*16 (pgd slot 272).  The gap is to allow a space for a
- * hypervisor to fit.  Choosing 16 slots here is arbitrary, but it's
- * what Xen requires.
+ * PGDIR_SIZE*17 (pgd slot 273).
+ *
+ * The gap is to allow a space for LDT remap for PTI (1 pgd slot) and space for
+ * a hypervisor (16 slots). Choosing 16 slots for a hypervisor is arbitrary,
+ * but it's what Xen requires.
  */
 #ifdef CONFIG_X86_5LEVEL
-#define __PAGE_OFFSET_BASE      _AC(0xff10000000000000, UL)
+#define __PAGE_OFFSET_BASE	_AC(0xff11000000000000, UL)
 #else
-#define __PAGE_OFFSET_BASE      _AC(0xffff880000000000, UL)
+#define __PAGE_OFFSET_BASE	_AC(0xffff888000000000, UL)
 #endif
 
 #ifdef CONFIG_RANDOMIZE_MEMORY
diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h
index 6b8f73dcbc2c..7764617b8f9c 100644
--- a/arch/x86/include/asm/pgtable_64_types.h
+++ b/arch/x86/include/asm/pgtable_64_types.h
@@ -88,16 +88,15 @@ typedef struct { pteval_t pte; } pte_t;
 # define VMALLOC_SIZE_TB	_AC(12800, UL)
 # define __VMALLOC_BASE		_AC(0xffa0000000000000, UL)
 # define __VMEMMAP_BASE		_AC(0xffd4000000000000, UL)
-# define LDT_PGD_ENTRY		_AC(-112, UL)
-# define LDT_BASE_ADDR		(LDT_PGD_ENTRY << PGDIR_SHIFT)
 #else
 # define VMALLOC_SIZE_TB	_AC(32, UL)
 # define __VMALLOC_BASE		_AC(0xffffc90000000000, UL)
 # define __VMEMMAP_BASE		_AC(0xffffea0000000000, UL)
-# define LDT_PGD_ENTRY		_AC(-3, UL)
-# define LDT_BASE_ADDR		(LDT_PGD_ENTRY << PGDIR_SHIFT)
 #endif
 
+#define LDT_PGD_ENTRY		-240UL
+#define LDT_BASE_ADDR		(LDT_PGD_ENTRY << PGDIR_SHIFT)
+
 #ifdef CONFIG_RANDOMIZE_MEMORY
 # define VMALLOC_START		vmalloc_base
 # define VMEMMAP_START		vmemmap_base
diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c
index 8ed11a5b1a9d..b33fa127a613 100644
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -1869,7 +1869,7 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
 	init_top_pgt[0] = __pgd(0);
 
 	/* Pre-constructed entries are in pfn, so convert to mfn */
-	/* L4[272] -> level3_ident_pgt  */
+	/* L4[273] -> level3_ident_pgt  */
 	/* L4[511] -> level3_kernel_pgt */
 	convert_pfn_mfn(init_top_pgt);
 
@@ -1889,8 +1889,8 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
 	addr[0] = (unsigned long)pgd;
 	addr[1] = (unsigned long)l3;
 	addr[2] = (unsigned long)l2;
-	/* Graft it onto L4[272][0]. Note that we creating an aliasing problem:
-	 * Both L4[272][0] and L4[511][510] have entries that point to the same
+	/* Graft it onto L4[273][0]. Note that we creating an aliasing problem:
+	 * Both L4[273][0] and L4[511][510] have entries that point to the same
 	 * L2 (PMD) tables. Meaning that if you modify it in __va space
 	 * it will be also modified in the __ka space! (But if you just
 	 * modify the PMD table to point to other PTE's or none, then you
-- 
2.17.1




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

* [PATCH 4.14 49/62] x86/ldt: Unmap PTEs for the slot before freeing LDT pages
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (47 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 48/62] x86/mm: Move LDT remap out of KASLR region on 5-level paging Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 50/62] media: v4l: event: Add subscription to list before calling "add" operation Greg Kroah-Hartman
                   ` (17 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kirill A. Shutemov, Thomas Gleixner,
	bp, hpa, dave.hansen, luto, peterz, boris.ostrovsky, jgross, bhe,
	willy, linux-mm, Sasha Levin

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

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

commit a0e6e0831c516860fc7f9be1db6c081fe902ebcf upstream

modify_ldt(2) leaves the old LDT mapped after switching over to the new
one. The old LDT gets freed and the pages can be re-used.

Leaving the mapping in place can have security implications. The mapping is
present in the userspace page tables and Meltdown-like attacks can read
these freed and possibly reused pages.

It's relatively simple to fix: unmap the old LDT and flush TLB before
freeing the old LDT memory.

This further allows to avoid flushing the TLB in map_ldt_struct() as the
slot is unmapped and flushed by unmap_ldt_struct() or has never been mapped
at all.

[ tglx: Massaged changelog and removed the needless line breaks ]

Fixes: f55f0501cbf6 ("x86/pti: Put the LDT in its own PGD if PTI is on")
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: bp@alien8.de
Cc: hpa@zytor.com
Cc: dave.hansen@linux.intel.com
Cc: luto@kernel.org
Cc: peterz@infradead.org
Cc: boris.ostrovsky@oracle.com
Cc: jgross@suse.com
Cc: bhe@redhat.com
Cc: willy@infradead.org
Cc: linux-mm@kvack.org
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20181026122856.66224-3-kirill.shutemov@linux.intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kernel/ldt.c | 49 +++++++++++++++++++++++++++++++------------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
index 26d713ecad34..65df298d4e9e 100644
--- a/arch/x86/kernel/ldt.c
+++ b/arch/x86/kernel/ldt.c
@@ -103,14 +103,6 @@ static struct ldt_struct *alloc_ldt_struct(unsigned int num_entries)
 /*
  * If PTI is enabled, this maps the LDT into the kernelmode and
  * usermode tables for the given mm.
- *
- * There is no corresponding unmap function.  Even if the LDT is freed, we
- * leave the PTEs around until the slot is reused or the mm is destroyed.
- * This is harmless: the LDT is always in ordinary memory, and no one will
- * access the freed slot.
- *
- * If we wanted to unmap freed LDTs, we'd also need to do a flush to make
- * it useful, and the flush would slow down modify_ldt().
  */
 static int
 map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot)
@@ -119,8 +111,8 @@ map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot)
 	bool is_vmalloc, had_top_level_entry;
 	unsigned long va;
 	spinlock_t *ptl;
+	int i, nr_pages;
 	pgd_t *pgd;
-	int i;
 
 	if (!static_cpu_has(X86_FEATURE_PTI))
 		return 0;
@@ -141,7 +133,9 @@ map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot)
 
 	is_vmalloc = is_vmalloc_addr(ldt->entries);
 
-	for (i = 0; i * PAGE_SIZE < ldt->nr_entries * LDT_ENTRY_SIZE; i++) {
+	nr_pages = DIV_ROUND_UP(ldt->nr_entries * LDT_ENTRY_SIZE, PAGE_SIZE);
+
+	for (i = 0; i < nr_pages; i++) {
 		unsigned long offset = i << PAGE_SHIFT;
 		const void *src = (char *)ldt->entries + offset;
 		unsigned long pfn;
@@ -189,14 +183,42 @@ map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot)
 		}
 	}
 
-	va = (unsigned long)ldt_slot_va(slot);
-	flush_tlb_mm_range(mm, va, va + LDT_SLOT_STRIDE, 0);
-
 	ldt->slot = slot;
 #endif
 	return 0;
 }
 
+static void unmap_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt)
+{
+#ifdef CONFIG_PAGE_TABLE_ISOLATION
+	unsigned long va;
+	int i, nr_pages;
+
+	if (!ldt)
+		return;
+
+	/* LDT map/unmap is only required for PTI */
+	if (!static_cpu_has(X86_FEATURE_PTI))
+		return;
+
+	nr_pages = DIV_ROUND_UP(ldt->nr_entries * LDT_ENTRY_SIZE, PAGE_SIZE);
+
+	for (i = 0; i < nr_pages; i++) {
+		unsigned long offset = i << PAGE_SHIFT;
+		spinlock_t *ptl;
+		pte_t *ptep;
+
+		va = (unsigned long)ldt_slot_va(ldt->slot) + offset;
+		ptep = get_locked_pte(mm, va, &ptl);
+		pte_clear(mm, va, ptep);
+		pte_unmap_unlock(ptep, ptl);
+	}
+
+	va = (unsigned long)ldt_slot_va(ldt->slot);
+	flush_tlb_mm_range(mm, va, va + nr_pages * PAGE_SIZE, 0);
+#endif /* CONFIG_PAGE_TABLE_ISOLATION */
+}
+
 static void free_ldt_pgtables(struct mm_struct *mm)
 {
 #ifdef CONFIG_PAGE_TABLE_ISOLATION
@@ -433,6 +455,7 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
 	}
 
 	install_ldt(mm, new_ldt);
+	unmap_ldt_struct(mm, old_ldt);
 	free_ldt_struct(old_ldt);
 	error = 0;
 
-- 
2.17.1




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

* [PATCH 4.14 50/62] media: v4l: event: Add subscription to list before calling "add" operation
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (48 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 49/62] x86/ldt: Unmap PTEs for the slot before freeing LDT pages Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 51/62] MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver Greg Kroah-Hartman
                   ` (16 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dave Stevenson, Sakari Ailus,
	Hans Verkuil, Mauro Carvalho Chehab

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

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

From: Sakari Ailus <sakari.ailus@linux.intel.com>

commit 92539d3eda2c090b382699bbb896d4b54e9bdece upstream.

Patch ad608fbcf166 changed how events were subscribed to address an issue
elsewhere. As a side effect of that change, the "add" callback was called
before the event subscription was added to the list of subscribed events,
causing the first event queued by the add callback (and possibly other
events arriving soon afterwards) to be lost.

Fix this by adding the subscription to the list before calling the "add"
callback, and clean up afterwards if that fails.

Fixes: ad608fbcf166 ("media: v4l: event: Prevent freeing event subscriptions while accessed")

Reported-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Tested-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com>
Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: stable@vger.kernel.org (for 4.14 and up)
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/media/v4l2-core/v4l2-event.c |   43 +++++++++++++++++++----------------
 1 file changed, 24 insertions(+), 19 deletions(-)

--- a/drivers/media/v4l2-core/v4l2-event.c
+++ b/drivers/media/v4l2-core/v4l2-event.c
@@ -193,6 +193,22 @@ int v4l2_event_pending(struct v4l2_fh *f
 }
 EXPORT_SYMBOL_GPL(v4l2_event_pending);
 
+static void __v4l2_event_unsubscribe(struct v4l2_subscribed_event *sev)
+{
+	struct v4l2_fh *fh = sev->fh;
+	unsigned int i;
+
+	lockdep_assert_held(&fh->subscribe_lock);
+	assert_spin_locked(&fh->vdev->fh_lock);
+
+	/* Remove any pending events for this subscription */
+	for (i = 0; i < sev->in_use; i++) {
+		list_del(&sev->events[sev_pos(sev, i)].list);
+		fh->navailable--;
+	}
+	list_del(&sev->list);
+}
+
 int v4l2_event_subscribe(struct v4l2_fh *fh,
 			 const struct v4l2_event_subscription *sub, unsigned elems,
 			 const struct v4l2_subscribed_event_ops *ops)
@@ -225,27 +241,23 @@ int v4l2_event_subscribe(struct v4l2_fh
 
 	spin_lock_irqsave(&fh->vdev->fh_lock, flags);
 	found_ev = v4l2_event_subscribed(fh, sub->type, sub->id);
+	if (!found_ev)
+		list_add(&sev->list, &fh->subscribed);
 	spin_unlock_irqrestore(&fh->vdev->fh_lock, flags);
 
 	if (found_ev) {
 		/* Already listening */
 		kvfree(sev);
-		goto out_unlock;
-	}
-
-	if (sev->ops && sev->ops->add) {
+	} else if (sev->ops && sev->ops->add) {
 		ret = sev->ops->add(sev, elems);
 		if (ret) {
+			spin_lock_irqsave(&fh->vdev->fh_lock, flags);
+			__v4l2_event_unsubscribe(sev);
+			spin_unlock_irqrestore(&fh->vdev->fh_lock, flags);
 			kvfree(sev);
-			goto out_unlock;
 		}
 	}
 
-	spin_lock_irqsave(&fh->vdev->fh_lock, flags);
-	list_add(&sev->list, &fh->subscribed);
-	spin_unlock_irqrestore(&fh->vdev->fh_lock, flags);
-
-out_unlock:
 	mutex_unlock(&fh->subscribe_lock);
 
 	return ret;
@@ -280,7 +292,6 @@ int v4l2_event_unsubscribe(struct v4l2_f
 {
 	struct v4l2_subscribed_event *sev;
 	unsigned long flags;
-	int i;
 
 	if (sub->type == V4L2_EVENT_ALL) {
 		v4l2_event_unsubscribe_all(fh);
@@ -292,14 +303,8 @@ int v4l2_event_unsubscribe(struct v4l2_f
 	spin_lock_irqsave(&fh->vdev->fh_lock, flags);
 
 	sev = v4l2_event_subscribed(fh, sub->type, sub->id);
-	if (sev != NULL) {
-		/* Remove any pending events for this subscription */
-		for (i = 0; i < sev->in_use; i++) {
-			list_del(&sev->events[sev_pos(sev, i)].list);
-			fh->navailable--;
-		}
-		list_del(&sev->list);
-	}
+	if (sev != NULL)
+		__v4l2_event_unsubscribe(sev);
 
 	spin_unlock_irqrestore(&fh->vdev->fh_lock, flags);
 



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

* [PATCH 4.14 51/62] MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (49 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 50/62] media: v4l: event: Add subscription to list before calling "add" operation Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 52/62] uio: Fix an Oops on load Greg Kroah-Hartman
                   ` (15 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Aaro Koskinen, Paul Burton,
	Ralf Baechle, James Hogan, linux-mips

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

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

From: Aaro Koskinen <aaro.koskinen@iki.fi>

commit 82fba2df7f7c019627f24c5036dc99f41731d770 upstream.

Re-enable OCTEON USB driver which is needed on older hardware
(e.g. EdgeRouter Lite) for mass storage etc. This got accidentally
deleted when config options were changed for OCTEON2/3 USB.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Fixes: f922bc0ad08b ("MIPS: Octeon: cavium_octeon_defconfig: Enable more drivers")
Patchwork: https://patchwork.linux-mips.org/patch/21077/
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org # 4.14+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/configs/cavium_octeon_defconfig |    1 +
 1 file changed, 1 insertion(+)

--- a/arch/mips/configs/cavium_octeon_defconfig
+++ b/arch/mips/configs/cavium_octeon_defconfig
@@ -140,6 +140,7 @@ CONFIG_RTC_CLASS=y
 CONFIG_RTC_DRV_DS1307=y
 CONFIG_STAGING=y
 CONFIG_OCTEON_ETHERNET=y
+CONFIG_OCTEON_USB=y
 # CONFIG_IOMMU_SUPPORT is not set
 CONFIG_RAS=y
 CONFIG_EXT4_FS=y



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

* [PATCH 4.14 52/62] uio: Fix an Oops on load
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (50 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 51/62] MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 53/62] usb: cdc-acm: add entry for Hiro (Conexant) modem Greg Kroah-Hartman
                   ` (14 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Mathias Thore, Dan Carpenter

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

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

From: Dan Carpenter <dan.carpenter@oracle.com>

commit 432798195bbce1f8cd33d1c0284d0538835e25fb upstream.

I was trying to solve a double free but I introduced a more serious
NULL dereference bug.  The problem is that if there is an IRQ which
triggers immediately, then we need "info->uio_dev" but it's not set yet.

This patch puts the original initialization back to how it was and just
sets info->uio_dev to NULL on the error path so it should solve both
the Oops and the double free.

Fixes: f019f07ecf6a ("uio: potential double frees if __uio_register_device() fails")
Reported-by: Mathias Thore <Mathias.Thore@infinera.com>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Cc: stable <stable@vger.kernel.org>
Tested-by: Mathias Thore <Mathias.Thore@infinera.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -850,6 +850,8 @@ int __uio_register_device(struct module
 	if (ret)
 		goto err_uio_dev_add_attributes;
 
+	info->uio_dev = idev;
+
 	if (info->irq && (info->irq != UIO_IRQ_CUSTOM)) {
 		/*
 		 * Note that we deliberately don't use devm_request_irq
@@ -861,11 +863,12 @@ int __uio_register_device(struct module
 		 */
 		ret = request_irq(info->irq, uio_interrupt,
 				  info->irq_flags, info->name, idev);
-		if (ret)
+		if (ret) {
+			info->uio_dev = NULL;
 			goto err_request_irq;
+		}
 	}
 
-	info->uio_dev = idev;
 	return 0;
 
 err_request_irq:



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

* [PATCH 4.14 53/62] usb: cdc-acm: add entry for Hiro (Conexant) modem
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (51 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 52/62] uio: Fix an Oops on load Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 54/62] USB: quirks: Add no-lpm quirk for Raydium touchscreens Greg Kroah-Hartman
                   ` (13 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Maarten Jacobs, Oliver Neukum

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

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

From: Maarten Jacobs <maarten256@outlook.com>

commit 63529eaa6164ef7ab4b907b25ac3648177e5e78f upstream.

The cdc-acm kernel module currently does not support the Hiro (Conexant)
H05228 USB modem. The patch below adds the device specific information:
	idVendor	0x0572
	idProduct	0x1349

Signed-off-by: Maarten Jacobs <maarten256@outlook.com>
Acked-by: Oliver Neukum <oneukum@suse.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/class/cdc-acm.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -1724,6 +1724,9 @@ static const struct usb_device_id acm_id
 	{ USB_DEVICE(0x0572, 0x1328), /* Shiro / Aztech USB MODEM UM-3100 */
 	.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
 	},
+	{ USB_DEVICE(0x0572, 0x1349), /* Hiro (Conexant) USB MODEM H50228 */
+	.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
+	},
 	{ USB_DEVICE(0x20df, 0x0001), /* Simtec Electronics Entropy Key */
 	.driver_info = QUIRK_CONTROL_LINE_STATE, },
 	{ USB_DEVICE(0x2184, 0x001c) },	/* GW Instek AFG-2225 */



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

* [PATCH 4.14 54/62] USB: quirks: Add no-lpm quirk for Raydium touchscreens
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (52 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 53/62] usb: cdc-acm: add entry for Hiro (Conexant) modem Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 55/62] usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB Greg Kroah-Hartman
                   ` (12 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Kai-Heng Feng

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

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

From: Kai-Heng Feng <kai.heng.feng@canonical.com>

commit deefd24228a172d1b27d4a9adbfd2cdacd60ae64 upstream.

Raydium USB touchscreen fails to set config if LPM is enabled:
[    2.030658] usb 1-8: New USB device found, idVendor=2386, idProduct=3119
[    2.030659] usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    2.030660] usb 1-8: Product: Raydium Touch System
[    2.030661] usb 1-8: Manufacturer: Raydium Corporation
[    7.132209] usb 1-8: can't set config #1, error -110

Same behavior can be observed on 2386:3114.

Raydium claims the touchscreen supports LPM under Windows, so I used
Microsoft USB Test Tools (MUTT) [1] to check its LPM status. MUTT shows
that the LPM doesn't work under Windows, either. So let's just disable LPM
for Raydium touchscreens.

[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/usb-test-tools

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/core/quirks.c |    5 +++++
 1 file changed, 5 insertions(+)

--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -263,6 +263,11 @@ static const struct usb_device_id usb_qu
 	{ USB_DEVICE(0x2040, 0x7200), .driver_info =
 			USB_QUIRK_CONFIG_INTF_STRINGS },
 
+	/* Raydium Touchscreen */
+	{ USB_DEVICE(0x2386, 0x3114), .driver_info = USB_QUIRK_NO_LPM },
+
+	{ USB_DEVICE(0x2386, 0x3119), .driver_info = USB_QUIRK_NO_LPM },
+
 	/* DJI CineSSD */
 	{ USB_DEVICE(0x2ca3, 0x0031), .driver_info = USB_QUIRK_NO_LPM },
 



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

* [PATCH 4.14 55/62] usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (53 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 54/62] USB: quirks: Add no-lpm quirk for Raydium touchscreens Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 56/62] misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data Greg Kroah-Hartman
                   ` (11 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Emmanuel Pescosta

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

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

From: Emmanuel Pescosta <emmanuelpescosta099@gmail.com>

commit a77112577667cbda7c6292c52d909636aef31fd9 upstream.

Following on from this patch: https://lkml.org/lkml/2017/11/3/516,
Corsair K70 LUX RGB keyboards also require the DELAY_INIT quirk to
start correctly at boot.

Dmesg output:
usb 1-6: string descriptor 0 read error: -110
usb 1-6: New USB device found, idVendor=1b1c, idProduct=1b33
usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-6: can't set config #1, error -110

Signed-off-by: Emmanuel Pescosta <emmanuelpescosta099@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/core/quirks.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -243,6 +243,9 @@ static const struct usb_device_id usb_qu
 	{ USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT |
 	  USB_QUIRK_DELAY_CTRL_MSG },
 
+	/* Corsair K70 LUX RGB */
+	{ USB_DEVICE(0x1b1c, 0x1b33), .driver_info = USB_QUIRK_DELAY_INIT },
+
 	/* Corsair K70 LUX */
 	{ USB_DEVICE(0x1b1c, 0x1b36), .driver_info = USB_QUIRK_DELAY_INIT },
 



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

* [PATCH 4.14 56/62] misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (54 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 55/62] usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 57/62] USB: misc: appledisplay: add 20" Apple Cinema Display Greg Kroah-Hartman
                   ` (10 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Nathan Chancellor

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

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

From: Nathan Chancellor <natechancellor@gmail.com>

commit 7c97301285b62a41d6bceded7d964085fc8cc50f upstream.

After building the kernel with Clang, the following section mismatch
warning appears:

WARNING: vmlinux.o(.text+0x3bf19a6): Section mismatch in reference from
the function ssc_probe() to the function
.init.text:atmel_ssc_get_driver_data()
The function ssc_probe() references
the function __init atmel_ssc_get_driver_data().
This is often because ssc_probe lacks a __init
annotation or the annotation of atmel_ssc_get_driver_data is wrong.

Remove __init from atmel_ssc_get_driver_data to get rid of the mismatch.

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/misc/atmel-ssc.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/misc/atmel-ssc.c
+++ b/drivers/misc/atmel-ssc.c
@@ -132,7 +132,7 @@ static const struct of_device_id atmel_s
 MODULE_DEVICE_TABLE(of, atmel_ssc_dt_ids);
 #endif
 
-static inline const struct atmel_ssc_platform_data * __init
+static inline const struct atmel_ssc_platform_data *
 	atmel_ssc_get_driver_data(struct platform_device *pdev)
 {
 	if (pdev->dev.of_node) {



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

* [PATCH 4.14 57/62] USB: misc: appledisplay: add 20" Apple Cinema Display
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (55 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 56/62] misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup Greg Kroah-Hartman
                   ` (9 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Mattias Jacobsson

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

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

From: Mattias Jacobsson <2pi@mok.nu>

commit f6501f49199097b99e4e263644d88c90d1ec1060 upstream.

Add another Apple Cinema Display to the list of supported displays

Signed-off-by: Mattias Jacobsson <2pi@mok.nu>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/misc/appledisplay.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/usb/misc/appledisplay.c
+++ b/drivers/usb/misc/appledisplay.c
@@ -63,6 +63,7 @@ static const struct usb_device_id appled
 	{ APPLEDISPLAY_DEVICE(0x9219) },
 	{ APPLEDISPLAY_DEVICE(0x921c) },
 	{ APPLEDISPLAY_DEVICE(0x921d) },
+	{ APPLEDISPLAY_DEVICE(0x9222) },
 	{ APPLEDISPLAY_DEVICE(0x9236) },
 
 	/* Terminating entry */



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

* [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (56 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 57/62] USB: misc: appledisplay: add 20" Apple Cinema Display Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 14:16   ` Naresh Kamboju
  2018-11-26 10:51 ` [PATCH 4.14 59/62] drivers/misc/sgi-gru: fix Spectre v1 vulnerability Greg Kroah-Hartman
                   ` (8 subsequent siblings)
  66 siblings, 1 reply; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nicolas Ferre, Josh Wu,
	Boris Brezillon, Johan Hovold

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

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

From: Johan Hovold <johan@kernel.org>

commit 5d1e9c2212ea6b4dd735e4fc3dd6279a365d5d10 upstream.

Use the new of_get_compatible_child() helper to lookup the nfc child
node instead of using of_find_compatible_node(), which searches the
entire tree from a given start node and thus can return an unrelated
(i.e. non-child) node.

This also addresses a potential use-after-free (e.g. after probe
deferral) as the tree-wide helper drops a reference to its first
argument (i.e. the node of the device being probed).

While at it, also fix a related nfc-node reference leak.

Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
Cc: stable <stable@vger.kernel.org>     # 4.11
Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
Cc: Josh Wu <rainyfeeling@outlook.com>
Cc: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mtd/nand/atmel/nand-controller.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

--- a/drivers/mtd/nand/atmel/nand-controller.c
+++ b/drivers/mtd/nand/atmel/nand-controller.c
@@ -2077,8 +2077,7 @@ atmel_hsmc_nand_controller_legacy_init(s
 	int ret;
 
 	nand_np = dev->of_node;
-	nfc_np = of_find_compatible_node(dev->of_node, NULL,
-					 "atmel,sama5d3-nfc");
+	nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
 	if (!nfc_np) {
 		dev_err(dev, "Could not find device node for sama5d3-nfc\n");
 		return -ENODEV;
@@ -2492,15 +2491,19 @@ static int atmel_nand_controller_probe(s
 	}
 
 	if (caps->legacy_of_bindings) {
+		struct device_node *nfc_node;
 		u32 ale_offs = 21;
 
 		/*
 		 * If we are parsing legacy DT props and the DT contains a
 		 * valid NFC node, forward the request to the sama5 logic.
 		 */
-		if (of_find_compatible_node(pdev->dev.of_node, NULL,
-					    "atmel,sama5d3-nfc"))
+		nfc_node = of_get_compatible_child(pdev->dev.of_node,
+						   "atmel,sama5d3-nfc");
+		if (nfc_node) {
 			caps = &atmel_sama5_nand_caps;
+			of_node_put(nfc_node);
+		}
 
 		/*
 		 * Even if the compatible says we are dealing with an



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

* [PATCH 4.14 59/62] drivers/misc/sgi-gru: fix Spectre v1 vulnerability
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (57 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 60/62] ACPI / platform: Add SMB0001 HID to forbidden_id_list Greg Kroah-Hartman
                   ` (7 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Gustavo A. R. Silva

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

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

From: Gustavo A. R. Silva <gustavo@embeddedor.com>

commit fee05f455ceb5c670cbe48e2f9454ebc4a388554 upstream.

req.gid can be indirectly controlled by user-space, hence leading to
a potential exploitation of the Spectre variant 1 vulnerability.

This issue was detected with the help of Smatch:

vers/misc/sgi-gru/grukdump.c:200 gru_dump_chiplet_request() warn:
potential spectre issue 'gru_base' [w]

Fix this by sanitizing req.gid before calling macro GID_TO_GRU, which
uses it to index gru_base.

Notice that given that speculation windows are large, the policy is
to kill the speculation on the first load and not worry if it can be
completed with a dependent load/store [1].

[1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2

Cc: stable@vger.kernel.org
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/misc/sgi-gru/grukdump.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/drivers/misc/sgi-gru/grukdump.c
+++ b/drivers/misc/sgi-gru/grukdump.c
@@ -27,6 +27,9 @@
 #include <linux/delay.h>
 #include <linux/bitops.h>
 #include <asm/uv/uv_hub.h>
+
+#include <linux/nospec.h>
+
 #include "gru.h"
 #include "grutables.h"
 #include "gruhandles.h"
@@ -196,6 +199,7 @@ int gru_dump_chiplet_request(unsigned lo
 	/* Currently, only dump by gid is implemented */
 	if (req.gid >= gru_max_gids)
 		return -EINVAL;
+	req.gid = array_index_nospec(req.gid, gru_max_gids);
 
 	gru = GID_TO_GRU(req.gid);
 	ubuf = req.buf;



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

* [PATCH 4.14 60/62] ACPI / platform: Add SMB0001 HID to forbidden_id_list
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (58 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 59/62] drivers/misc/sgi-gru: fix Spectre v1 vulnerability Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 61/62] HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges Greg Kroah-Hartman
                   ` (6 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Lukas Kahnert, Marc, Hans de Goede,
	Rafael J. Wysocki

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

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

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

commit 2bbb5fa37475d7aa5fa62f34db1623f3da2dfdfa upstream.

Many HP AMD based laptops contain an SMB0001 device like this:

Device (SMBD)
{
    Name (_HID, "SMB0001")  // _HID: Hardware ID
    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
    {
        IO (Decode16,
            0x0B20,             // Range Minimum
            0x0B20,             // Range Maximum
            0x20,               // Alignment
            0x20,               // Length
            )
        IRQ (Level, ActiveLow, Shared, )
            {7}
    })
}

The legacy style IRQ resource here causes acpi_dev_get_irqresource() to
be called with legacy=true and this message to show in dmesg:
ACPI: IRQ 7 override to edge, high

This causes issues when later on the AMD0030 GPIO device gets enumerated:

Device (GPIO)
{
    Name (_HID, "AMDI0030")  // _HID: Hardware ID
    Name (_CID, "AMDI0030")  // _CID: Compatible ID
    Name (_UID, Zero)  // _UID: Unique ID
    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
    {
	Name (RBUF, ResourceTemplate ()
	{
	    Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
	    {
		0x00000007,
	    }
	    Memory32Fixed (ReadWrite,
		0xFED81500,         // Address Base
		0x00000400,         // Address Length
		)
	})
	Return (RBUF) /* \_SB_.GPIO._CRS.RBUF */
    }
}

Now acpi_dev_get_irqresource() gets called with legacy=false, but because
of the earlier override of the trigger-type acpi_register_gsi() returns
-EBUSY (because we try to register the same interrupt with a different
trigger-type) and we end up setting IORESOURCE_DISABLED in the flags.

The setting of IORESOURCE_DISABLED causes platform_get_irq() to call
acpi_irq_get() which is not implemented on x86 and returns -EINVAL.
resulting in the following in dmesg:

amd_gpio AMDI0030:00: Failed to get gpio IRQ: -22
amd_gpio: probe of AMDI0030:00 failed with error -22

The SMB0001 is a "virtual" device in the sense that the only way the OS
interacts with it is through calling a couple of methods to do SMBus
transfers. As such it is weird that it has IO and IRQ resources at all,
because the driver for it is not expected to ever access the hardware
directly.

The Linux driver for the SMB0001 device directly binds to the acpi_device
through the acpi_bus, so we do not need to instantiate a platform_device
for this ACPI device. This commit adds the SMB0001 HID to the
forbidden_id_list, avoiding the instantiating of a platform_device for it.
Not instantiating a platform_device means we will no longer call
acpi_dev_get_irqresource() for the legacy IRQ resource fixing the probe of
the AMDI0030 device failing.

BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1644013
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=198715
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=199523
Reported-by: Lukas Kahnert <openproggerfreak@gmail.com>
Tested-by: Marc <suaefar@googlemail.com>
Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/acpi/acpi_platform.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/acpi/acpi_platform.c
+++ b/drivers/acpi/acpi_platform.c
@@ -30,6 +30,7 @@ static const struct acpi_device_id forbi
 	{"PNP0200",  0},	/* AT DMA Controller */
 	{"ACPI0009", 0},	/* IOxAPIC */
 	{"ACPI000A", 0},	/* IOAPIC */
+	{"SMB0001",  0},	/* ACPI SMBUS virtual device */
 	{"", 0},
 };
 



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

* [PATCH 4.14 61/62] HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (59 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 60/62] ACPI / platform: Add SMB0001 HID to forbidden_id_list Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 10:51 ` [PATCH 4.14 62/62] libceph: fall back to sendmsg for slab pages Greg Kroah-Hartman
                   ` (5 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, syzbot+72473edc9bf4eb1c6556,
	Jann Horn, Andy Lutomirski, Eric Biggers, Jiri Kosina

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

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

From: Eric Biggers <ebiggers@google.com>

commit 8c01db7619f07c85c5cd81ec5eb83608b56c88f5 upstream.

When a UHID_CREATE command is written to the uhid char device, a
copy_from_user() is done from a user pointer embedded in the command.
When the address limit is KERNEL_DS, e.g. as is the case during
sys_sendfile(), this can read from kernel memory.  Alternatively,
information can be leaked from a setuid binary that is tricked to write
to the file descriptor.  Therefore, forbid UHID_CREATE in these cases.

No other commands in uhid_char_write() are affected by this bug and
UHID_CREATE is marked as "obsolete", so apply the restriction to
UHID_CREATE only rather than to uhid_char_write() entirely.

Thanks to Dmitry Vyukov for adding uhid definitions to syzkaller and to
Jann Horn for commit 9da3f2b740544 ("x86/fault: BUG() when uaccess
helpers fault on kernel addresses"), allowing this bug to be found.

Reported-by: syzbot+72473edc9bf4eb1c6556@syzkaller.appspotmail.com
Fixes: d365c6cfd337 ("HID: uhid: add UHID_CREATE and UHID_DESTROY events")
Cc: <stable@vger.kernel.org> # v3.6+
Cc: Jann Horn <jannh@google.com>
Cc: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Jann Horn <jannh@google.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/hid/uhid.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

--- a/drivers/hid/uhid.c
+++ b/drivers/hid/uhid.c
@@ -12,6 +12,7 @@
 
 #include <linux/atomic.h>
 #include <linux/compat.h>
+#include <linux/cred.h>
 #include <linux/device.h>
 #include <linux/fs.h>
 #include <linux/hid.h>
@@ -722,6 +723,17 @@ static ssize_t uhid_char_write(struct fi
 
 	switch (uhid->input_buf.type) {
 	case UHID_CREATE:
+		/*
+		 * 'struct uhid_create_req' contains a __user pointer which is
+		 * copied from, so it's unsafe to allow this with elevated
+		 * privileges (e.g. from a setuid binary) or via kernel_write().
+		 */
+		if (file->f_cred != current_cred() || uaccess_kernel()) {
+			pr_err_once("UHID_CREATE from different security context by process %d (%s), this is not allowed.\n",
+				    task_tgid_vnr(current), current->comm);
+			ret = -EACCES;
+			goto unlock;
+		}
 		ret = uhid_dev_create(uhid, &uhid->input_buf);
 		break;
 	case UHID_CREATE2:



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

* [PATCH 4.14 62/62] libceph: fall back to sendmsg for slab pages
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (60 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 61/62] HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges Greg Kroah-Hartman
@ 2018-11-26 10:51 ` Greg Kroah-Hartman
  2018-11-26 17:11 ` [PATCH 4.14 00/62] 4.14.84-stable review kernelci.org bot
                   ` (4 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 10:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ilya Dryomov

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

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

From: Ilya Dryomov <idryomov@gmail.com>

commit 7e241f647dc7087a0401418a187f3f5b527cc690 upstream.

skb_can_coalesce() allows coalescing neighboring slab objects into
a single frag:

  return page == skb_frag_page(frag) &&
         off == frag->page_offset + skb_frag_size(frag);

ceph_tcp_sendpage() can be handed slab pages.  One example of this is
XFS: it passes down sector sized slab objects for its metadata I/O.  If
the kernel client is co-located on the OSD node, the skb may go through
loopback and pop on the receive side with the exact same set of frags.
When tcp_recvmsg() attempts to copy out such a frag, hardened usercopy
complains because the size exceeds the object's allocated size:

  usercopy: kernel memory exposure attempt detected from ffff9ba917f20a00 (kmalloc-512) (1024 bytes)

Although skb_can_coalesce() could be taught to return false if the
resulting frag would cross a slab object boundary, we already have
a fallback for non-refcounted pages.  Utilize it for slab pages too.

Cc: stable@vger.kernel.org # 4.8+
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/ceph/messenger.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -594,9 +594,15 @@ static int ceph_tcp_sendpage(struct sock
 	struct bio_vec bvec;
 	int ret;
 
-	/* sendpage cannot properly handle pages with page_count == 0,
-	 * we need to fallback to sendmsg if that's the case */
-	if (page_count(page) >= 1)
+	/*
+	 * sendpage cannot properly handle pages with page_count == 0,
+	 * we need to fall back to sendmsg if that's the case.
+	 *
+	 * Same goes for slab pages: skb_can_coalesce() allows
+	 * coalescing neighboring slab objects into a single frag which
+	 * triggers one of hardened usercopy checks.
+	 */
+	if (page_count(page) >= 1 && !PageSlab(page))
 		return __ceph_tcp_sendpage(sock, page, offset, size, more);
 
 	bvec.bv_page = page;



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

* Re: [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3
  2018-11-26 10:51 ` [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3 Greg Kroah-Hartman
@ 2018-11-26 13:24   ` Vignesh R
  2018-11-26 15:01     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 80+ messages in thread
From: Vignesh R @ 2018-11-26 13:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: stable, Grygorii Strashko, Wolfram Sang, Sasha Levin

Hi Greg,

On 26/11/18 4:21 PM, Greg Kroah-Hartman wrote:
> 4.14-stable review patch.  If anyone has any objections, please let me know.


This patch depends on c77245722fb4 ("arm64: Add support for TI's K3
Multicore SoC architecture") which adds ARCH_K3 Kconfig symbol and
merged to mainline in v4.19. Since I don't see c77245722fb4 in
stable tree, could you please drop this patch from _all prior versions_
i.e 4.14, 4.9, 4.4 and 3.18. Thanks!


> 
> ------------------
> 
> [ Upstream commit 5b277402deac0691226a947df71c581686bd4020 ]
> 
> Allow I2C_OMAP to be built for K3 platforms.
> 
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
>  drivers/i2c/busses/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
> index 45a3f3ca29b3..75ea367ffd83 100644
> --- a/drivers/i2c/busses/Kconfig
> +++ b/drivers/i2c/busses/Kconfig
> @@ -759,7 +759,7 @@ config I2C_OCORES
>  
>  config I2C_OMAP
>  	tristate "OMAP I2C adapter"
> -	depends on ARCH_OMAP
> +	depends on ARCH_OMAP || ARCH_K3
>  	default y if MACH_OMAP_H3 || MACH_OMAP_OSK
>  	help
>  	  If you say yes to this option, support will be included for the
> 

-- 
Regards
Vignesh

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 10:51 ` [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup Greg Kroah-Hartman
@ 2018-11-26 14:16   ` Naresh Kamboju
  2018-11-26 14:59     ` Greg Kroah-Hartman
  2018-11-26 15:08     ` Boris Brezillon
  0 siblings, 2 replies; 80+ messages in thread
From: Naresh Kamboju @ 2018-11-26 14:16 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: open list, linux- stable, nicolas.ferre, rainyfeeling,
	boris.brezillon, johan

Do you see build failure arm x15 beagleboard on 4.14 due to this patch ?

On Mon, 26 Nov 2018 at 16:31, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> 4.14-stable review patch.  If anyone has any objections, please let me know.
>
> ------------------
>
> From: Johan Hovold <johan@kernel.org>
>
> commit 5d1e9c2212ea6b4dd735e4fc3dd6279a365d5d10 upstream.
>
> Use the new of_get_compatible_child() helper to lookup the nfc child
> node instead of using of_find_compatible_node(), which searches the
> entire tree from a given start node and thus can return an unrelated
> (i.e. non-child) node.
>
> This also addresses a potential use-after-free (e.g. after probe
> deferral) as the tree-wide helper drops a reference to its first
> argument (i.e. the node of the device being probed).
>
> While at it, also fix a related nfc-node reference leak.
>
> Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
> Cc: stable <stable@vger.kernel.org>     # 4.11
> Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> Cc: Josh Wu <rainyfeeling@outlook.com>
> Cc: Boris Brezillon <boris.brezillon@bootlin.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>
> Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> ---
>  drivers/mtd/nand/atmel/nand-controller.c |   11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> --- a/drivers/mtd/nand/atmel/nand-controller.c
> +++ b/drivers/mtd/nand/atmel/nand-controller.c
> @@ -2077,8 +2077,7 @@ atmel_hsmc_nand_controller_legacy_init(s
>         int ret;
>
>         nand_np = dev->of_node;
> -       nfc_np = of_find_compatible_node(dev->of_node, NULL,
> -                                        "atmel,sama5d3-nfc");
> +       nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
>         if (!nfc_np) {
>                 dev_err(dev, "Could not find device node for sama5d3-nfc\n");
>                 return -ENODEV;
> @@ -2492,15 +2491,19 @@ static int atmel_nand_controller_probe(s
>         }
>
>         if (caps->legacy_of_bindings) {
> +               struct device_node *nfc_node;
>                 u32 ale_offs = 21;
>
>                 /*
>                  * If we are parsing legacy DT props and the DT contains a
>                  * valid NFC node, forward the request to the sama5 logic.
>                  */
> -               if (of_find_compatible_node(pdev->dev.of_node, NULL,
> -                                           "atmel,sama5d3-nfc"))
> +               nfc_node = of_get_compatible_child(pdev->dev.of_node,
> +                                                  "atmel,sama5d3-nfc");
> +               if (nfc_node) {
>                         caps = &atmel_sama5_nand_caps;
> +                       of_node_put(nfc_node);
> +               }
>
>                 /*
>                  * Even if the compatible says we are dealing with an
>
>

/drivers/mtd/nand/atmel/nand-controller.c: In function
'atmel_hsmc_nand_controller_legacy_init':
/drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
declaration of function 'of_get_compatible_child'; did you mean
'of_get_next_available_child'? [-Werror=implicit-function-declaration]
   nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
            ^~~~~~~~~~~~~~~~~~~~~~~
            of_get_next_available_child
 /drivers/mtd/nand/atmel/nand-controller.c:2080:9: warning: assignment
makes pointer from integer without a cast [-Wint-conversion]
   nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
          ^
 /drivers/mtd/nand/atmel/nand-controller.c: In function
'atmel_nand_controller_probe':
 /drivers/mtd/nand/atmel/nand-controller.c:2501:12: warning:
assignment makes pointer from integer without a cast
[-Wint-conversion]
    nfc_node = of_get_compatible_child(pdev->dev.of_node,
             ^

Full build log link,
https://ci.linaro.org/job/openembedded-lkft-linux-stable-rc-4.14/DISTRO=rpb,MACHINE=am57xx-evm,label=docker-lkft/336/consoleFull

Best regards
Naresh Kamboju

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 14:16   ` Naresh Kamboju
@ 2018-11-26 14:59     ` Greg Kroah-Hartman
  2018-11-26 15:08     ` Boris Brezillon
  1 sibling, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 14:59 UTC (permalink / raw)
  To: Naresh Kamboju
  Cc: open list, linux- stable, nicolas.ferre, rainyfeeling,
	boris.brezillon, johan

On Mon, Nov 26, 2018 at 07:46:15PM +0530, Naresh Kamboju wrote:
> Do you see build failure arm x15 beagleboard on 4.14 due to this patch ?

I don't have such a device to test on, don't you?  :)


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

* Re: [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3
  2018-11-26 13:24   ` Vignesh R
@ 2018-11-26 15:01     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 15:01 UTC (permalink / raw)
  To: Vignesh R
  Cc: linux-kernel, stable, Grygorii Strashko, Wolfram Sang, Sasha Levin

On Mon, Nov 26, 2018 at 06:54:45PM +0530, Vignesh R wrote:
> Hi Greg,
> 
> On 26/11/18 4:21 PM, Greg Kroah-Hartman wrote:
> > 4.14-stable review patch.  If anyone has any objections, please let me know.
> 
> 
> This patch depends on c77245722fb4 ("arm64: Add support for TI's K3
> Multicore SoC architecture") which adds ARCH_K3 Kconfig symbol and
> merged to mainline in v4.19. Since I don't see c77245722fb4 in
> stable tree, could you please drop this patch from _all prior versions_
> i.e 4.14, 4.9, 4.4 and 3.18. Thanks!

Now dropped, thanks for letting us know.

greg k-h

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 14:16   ` Naresh Kamboju
  2018-11-26 14:59     ` Greg Kroah-Hartman
@ 2018-11-26 15:08     ` Boris Brezillon
  2018-11-26 15:14       ` Greg Kroah-Hartman
  2018-11-26 15:16       ` Sasha Levin
  1 sibling, 2 replies; 80+ messages in thread
From: Boris Brezillon @ 2018-11-26 15:08 UTC (permalink / raw)
  To: Naresh Kamboju
  Cc: Greg Kroah-Hartman, open list, linux- stable, nicolas.ferre,
	rainyfeeling, johan

On Mon, 26 Nov 2018 19:46:15 +0530
Naresh Kamboju <naresh.kamboju@linaro.org> wrote:

> Do you see build failure arm x15 beagleboard on 4.14 due to this patch ?
> 
> On Mon, 26 Nov 2018 at 16:31, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > 4.14-stable review patch.  If anyone has any objections, please let me know.
> >
> > ------------------
> >
> > From: Johan Hovold <johan@kernel.org>
> >
> > commit 5d1e9c2212ea6b4dd735e4fc3dd6279a365d5d10 upstream.
> >
> > Use the new of_get_compatible_child() helper to lookup the nfc child
> > node instead of using of_find_compatible_node(), which searches the
> > entire tree from a given start node and thus can return an unrelated
> > (i.e. non-child) node.
> >
> > This also addresses a potential use-after-free (e.g. after probe
> > deferral) as the tree-wide helper drops a reference to its first
> > argument (i.e. the node of the device being probed).
> >
> > While at it, also fix a related nfc-node reference leak.
> >
> > Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
> > Cc: stable <stable@vger.kernel.org>     # 4.11
> > Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> > Cc: Josh Wu <rainyfeeling@outlook.com>
> > Cc: Boris Brezillon <boris.brezillon@bootlin.com>
> > Signed-off-by: Johan Hovold <johan@kernel.org>
> > Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >
> > ---
> >  drivers/mtd/nand/atmel/nand-controller.c |   11 +++++++----
> >  1 file changed, 7 insertions(+), 4 deletions(-)
> >
> > --- a/drivers/mtd/nand/atmel/nand-controller.c
> > +++ b/drivers/mtd/nand/atmel/nand-controller.c
> > @@ -2077,8 +2077,7 @@ atmel_hsmc_nand_controller_legacy_init(s
> >         int ret;
> >
> >         nand_np = dev->of_node;
> > -       nfc_np = of_find_compatible_node(dev->of_node, NULL,
> > -                                        "atmel,sama5d3-nfc");
> > +       nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> >         if (!nfc_np) {
> >                 dev_err(dev, "Could not find device node for sama5d3-nfc\n");
> >                 return -ENODEV;
> > @@ -2492,15 +2491,19 @@ static int atmel_nand_controller_probe(s
> >         }
> >
> >         if (caps->legacy_of_bindings) {
> > +               struct device_node *nfc_node;
> >                 u32 ale_offs = 21;
> >
> >                 /*
> >                  * If we are parsing legacy DT props and the DT contains a
> >                  * valid NFC node, forward the request to the sama5 logic.
> >                  */
> > -               if (of_find_compatible_node(pdev->dev.of_node, NULL,
> > -                                           "atmel,sama5d3-nfc"))
> > +               nfc_node = of_get_compatible_child(pdev->dev.of_node,
> > +                                                  "atmel,sama5d3-nfc");
> > +               if (nfc_node) {
> >                         caps = &atmel_sama5_nand_caps;
> > +                       of_node_put(nfc_node);
> > +               }
> >
> >                 /*
> >                  * Even if the compatible says we are dealing with an
> >
> >  
> 
> /drivers/mtd/nand/atmel/nand-controller.c: In function
> 'atmel_hsmc_nand_controller_legacy_init':
> /drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
> declaration of function 'of_get_compatible_child'; did you mean
> 'of_get_next_available_child'? [-Werror=implicit-function-declaration]
>    nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");

Looks like of_get_compatible_child() has been introduced in 4.18, hence
this error.

Greg, can you drop this patch from 4.14.y?

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 15:08     ` Boris Brezillon
@ 2018-11-26 15:14       ` Greg Kroah-Hartman
  2018-11-26 15:48         ` Johan Hovold
  2018-11-26 15:16       ` Sasha Levin
  1 sibling, 1 reply; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-26 15:14 UTC (permalink / raw)
  To: Boris Brezillon
  Cc: Naresh Kamboju, open list, linux- stable, nicolas.ferre,
	rainyfeeling, johan

On Mon, Nov 26, 2018 at 04:08:40PM +0100, Boris Brezillon wrote:
> On Mon, 26 Nov 2018 19:46:15 +0530
> Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> 
> > Do you see build failure arm x15 beagleboard on 4.14 due to this patch ?
> > 
> > On Mon, 26 Nov 2018 at 16:31, Greg Kroah-Hartman
> > <gregkh@linuxfoundation.org> wrote:
> > >
> > > 4.14-stable review patch.  If anyone has any objections, please let me know.
> > >
> > > ------------------
> > >
> > > From: Johan Hovold <johan@kernel.org>
> > >
> > > commit 5d1e9c2212ea6b4dd735e4fc3dd6279a365d5d10 upstream.
> > >
> > > Use the new of_get_compatible_child() helper to lookup the nfc child
> > > node instead of using of_find_compatible_node(), which searches the
> > > entire tree from a given start node and thus can return an unrelated
> > > (i.e. non-child) node.
> > >
> > > This also addresses a potential use-after-free (e.g. after probe
> > > deferral) as the tree-wide helper drops a reference to its first
> > > argument (i.e. the node of the device being probed).
> > >
> > > While at it, also fix a related nfc-node reference leak.
> > >
> > > Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
> > > Cc: stable <stable@vger.kernel.org>     # 4.11
> > > Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> > > Cc: Josh Wu <rainyfeeling@outlook.com>
> > > Cc: Boris Brezillon <boris.brezillon@bootlin.com>
> > > Signed-off-by: Johan Hovold <johan@kernel.org>
> > > Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > >
> > > ---
> > >  drivers/mtd/nand/atmel/nand-controller.c |   11 +++++++----
> > >  1 file changed, 7 insertions(+), 4 deletions(-)
> > >
> > > --- a/drivers/mtd/nand/atmel/nand-controller.c
> > > +++ b/drivers/mtd/nand/atmel/nand-controller.c
> > > @@ -2077,8 +2077,7 @@ atmel_hsmc_nand_controller_legacy_init(s
> > >         int ret;
> > >
> > >         nand_np = dev->of_node;
> > > -       nfc_np = of_find_compatible_node(dev->of_node, NULL,
> > > -                                        "atmel,sama5d3-nfc");
> > > +       nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> > >         if (!nfc_np) {
> > >                 dev_err(dev, "Could not find device node for sama5d3-nfc\n");
> > >                 return -ENODEV;
> > > @@ -2492,15 +2491,19 @@ static int atmel_nand_controller_probe(s
> > >         }
> > >
> > >         if (caps->legacy_of_bindings) {
> > > +               struct device_node *nfc_node;
> > >                 u32 ale_offs = 21;
> > >
> > >                 /*
> > >                  * If we are parsing legacy DT props and the DT contains a
> > >                  * valid NFC node, forward the request to the sama5 logic.
> > >                  */
> > > -               if (of_find_compatible_node(pdev->dev.of_node, NULL,
> > > -                                           "atmel,sama5d3-nfc"))
> > > +               nfc_node = of_get_compatible_child(pdev->dev.of_node,
> > > +                                                  "atmel,sama5d3-nfc");
> > > +               if (nfc_node) {
> > >                         caps = &atmel_sama5_nand_caps;
> > > +                       of_node_put(nfc_node);
> > > +               }
> > >
> > >                 /*
> > >                  * Even if the compatible says we are dealing with an
> > >
> > >  
> > 
> > /drivers/mtd/nand/atmel/nand-controller.c: In function
> > 'atmel_hsmc_nand_controller_legacy_init':
> > /drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
> > declaration of function 'of_get_compatible_child'; did you mean
> > 'of_get_next_available_child'? [-Werror=implicit-function-declaration]
> >    nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> 
> Looks like of_get_compatible_child() has been introduced in 4.18, hence
> this error.
> 
> Greg, can you drop this patch from 4.14.y?

Yes, my fault, I fixed a number of these in the past, missed this one :(

Now dropped.

greg k-h

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 15:08     ` Boris Brezillon
  2018-11-26 15:14       ` Greg Kroah-Hartman
@ 2018-11-26 15:16       ` Sasha Levin
  2018-11-26 16:39         ` Matt Hart
  1 sibling, 1 reply; 80+ messages in thread
From: Sasha Levin @ 2018-11-26 15:16 UTC (permalink / raw)
  To: Boris Brezillon
  Cc: Naresh Kamboju, Greg Kroah-Hartman, open list, linux- stable,
	nicolas.ferre, rainyfeeling, johan

On Mon, Nov 26, 2018 at 04:08:40PM +0100, Boris Brezillon wrote:
>On Mon, 26 Nov 2018 19:46:15 +0530
>Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
>
>> Do you see build failure arm x15 beagleboard on 4.14 due to this patch ?
>>
>> On Mon, 26 Nov 2018 at 16:31, Greg Kroah-Hartman
>> <gregkh@linuxfoundation.org> wrote:
>> >
>> > 4.14-stable review patch.  If anyone has any objections, please let me know.
>> >
>> > ------------------
>> >
>> > From: Johan Hovold <johan@kernel.org>
>> >
>> > commit 5d1e9c2212ea6b4dd735e4fc3dd6279a365d5d10 upstream.
>> >
>> > Use the new of_get_compatible_child() helper to lookup the nfc child
>> > node instead of using of_find_compatible_node(), which searches the
>> > entire tree from a given start node and thus can return an unrelated
>> > (i.e. non-child) node.
>> >
>> > This also addresses a potential use-after-free (e.g. after probe
>> > deferral) as the tree-wide helper drops a reference to its first
>> > argument (i.e. the node of the device being probed).
>> >
>> > While at it, also fix a related nfc-node reference leak.
>> >
>> > Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
>> > Cc: stable <stable@vger.kernel.org>     # 4.11
>> > Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
>> > Cc: Josh Wu <rainyfeeling@outlook.com>
>> > Cc: Boris Brezillon <boris.brezillon@bootlin.com>
>> > Signed-off-by: Johan Hovold <johan@kernel.org>
>> > Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
>> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> >
>> > ---
>> >  drivers/mtd/nand/atmel/nand-controller.c |   11 +++++++----
>> >  1 file changed, 7 insertions(+), 4 deletions(-)
>> >
>> > --- a/drivers/mtd/nand/atmel/nand-controller.c
>> > +++ b/drivers/mtd/nand/atmel/nand-controller.c
>> > @@ -2077,8 +2077,7 @@ atmel_hsmc_nand_controller_legacy_init(s
>> >         int ret;
>> >
>> >         nand_np = dev->of_node;
>> > -       nfc_np = of_find_compatible_node(dev->of_node, NULL,
>> > -                                        "atmel,sama5d3-nfc");
>> > +       nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
>> >         if (!nfc_np) {
>> >                 dev_err(dev, "Could not find device node for sama5d3-nfc\n");
>> >                 return -ENODEV;
>> > @@ -2492,15 +2491,19 @@ static int atmel_nand_controller_probe(s
>> >         }
>> >
>> >         if (caps->legacy_of_bindings) {
>> > +               struct device_node *nfc_node;
>> >                 u32 ale_offs = 21;
>> >
>> >                 /*
>> >                  * If we are parsing legacy DT props and the DT contains a
>> >                  * valid NFC node, forward the request to the sama5 logic.
>> >                  */
>> > -               if (of_find_compatible_node(pdev->dev.of_node, NULL,
>> > -                                           "atmel,sama5d3-nfc"))
>> > +               nfc_node = of_get_compatible_child(pdev->dev.of_node,
>> > +                                                  "atmel,sama5d3-nfc");
>> > +               if (nfc_node) {
>> >                         caps = &atmel_sama5_nand_caps;
>> > +                       of_node_put(nfc_node);
>> > +               }
>> >
>> >                 /*
>> >                  * Even if the compatible says we are dealing with an
>> >
>> >
>>
>> /drivers/mtd/nand/atmel/nand-controller.c: In function
>> 'atmel_hsmc_nand_controller_legacy_init':
>> /drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
>> declaration of function 'of_get_compatible_child'; did you mean
>> 'of_get_next_available_child'? [-Werror=implicit-function-declaration]
>>    nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
>
>Looks like of_get_compatible_child() has been introduced in 4.18, hence
>this error.
>
>Greg, can you drop this patch from 4.14.y?

Interesting, none of the kernelci builds caught this? hmm

--
Thanks,
Sasha

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 15:14       ` Greg Kroah-Hartman
@ 2018-11-26 15:48         ` Johan Hovold
  2018-11-29  8:08           ` Greg Kroah-Hartman
  0 siblings, 1 reply; 80+ messages in thread
From: Johan Hovold @ 2018-11-26 15:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Boris Brezillon, Naresh Kamboju, open list, linux- stable,
	nicolas.ferre, rainyfeeling, johan

On Mon, Nov 26, 2018 at 04:14:18PM +0100, Greg Kroah-Hartman wrote:
> On Mon, Nov 26, 2018 at 04:08:40PM +0100, Boris Brezillon wrote:
> > On Mon, 26 Nov 2018 19:46:15 +0530
> > Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> > 
> > > Do you see build failure arm x15 beagleboard on 4.14 due to this patch ?
> > > 
> > > On Mon, 26 Nov 2018 at 16:31, Greg Kroah-Hartman
> > > <gregkh@linuxfoundation.org> wrote:
> > > >
> > > > 4.14-stable review patch.  If anyone has any objections, please let me know.
> > > >
> > > > ------------------
> > > >
> > > > From: Johan Hovold <johan@kernel.org>
> > > >
> > > > commit 5d1e9c2212ea6b4dd735e4fc3dd6279a365d5d10 upstream.
> > > >
> > > > Use the new of_get_compatible_child() helper to lookup the nfc child
> > > > node instead of using of_find_compatible_node(), which searches the
> > > > entire tree from a given start node and thus can return an unrelated
> > > > (i.e. non-child) node.
> > > >
> > > > This also addresses a potential use-after-free (e.g. after probe
> > > > deferral) as the tree-wide helper drops a reference to its first
> > > > argument (i.e. the node of the device being probed).
> > > >
> > > > While at it, also fix a related nfc-node reference leak.
> > > >
> > > > Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
> > > > Cc: stable <stable@vger.kernel.org>     # 4.11
> > > > Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> > > > Cc: Josh Wu <rainyfeeling@outlook.com>
> > > > Cc: Boris Brezillon <boris.brezillon@bootlin.com>
> > > > Signed-off-by: Johan Hovold <johan@kernel.org>
> > > > Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
> > > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > >
> > > > ---
> > > >  drivers/mtd/nand/atmel/nand-controller.c |   11 +++++++----
> > > >  1 file changed, 7 insertions(+), 4 deletions(-)
> > > >
> > > > --- a/drivers/mtd/nand/atmel/nand-controller.c
> > > > +++ b/drivers/mtd/nand/atmel/nand-controller.c
> > > > @@ -2077,8 +2077,7 @@ atmel_hsmc_nand_controller_legacy_init(s
> > > >         int ret;
> > > >
> > > >         nand_np = dev->of_node;
> > > > -       nfc_np = of_find_compatible_node(dev->of_node, NULL,
> > > > -                                        "atmel,sama5d3-nfc");
> > > > +       nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> > > >         if (!nfc_np) {
> > > >                 dev_err(dev, "Could not find device node for sama5d3-nfc\n");
> > > >                 return -ENODEV;
> > > > @@ -2492,15 +2491,19 @@ static int atmel_nand_controller_probe(s
> > > >         }
> > > >
> > > >         if (caps->legacy_of_bindings) {
> > > > +               struct device_node *nfc_node;
> > > >                 u32 ale_offs = 21;
> > > >
> > > >                 /*
> > > >                  * If we are parsing legacy DT props and the DT contains a
> > > >                  * valid NFC node, forward the request to the sama5 logic.
> > > >                  */
> > > > -               if (of_find_compatible_node(pdev->dev.of_node, NULL,
> > > > -                                           "atmel,sama5d3-nfc"))
> > > > +               nfc_node = of_get_compatible_child(pdev->dev.of_node,
> > > > +                                                  "atmel,sama5d3-nfc");
> > > > +               if (nfc_node) {
> > > >                         caps = &atmel_sama5_nand_caps;
> > > > +                       of_node_put(nfc_node);
> > > > +               }
> > > >
> > > >                 /*
> > > >                  * Even if the compatible says we are dealing with an
> > > >
> > > >  
> > > 
> > > /drivers/mtd/nand/atmel/nand-controller.c: In function
> > > 'atmel_hsmc_nand_controller_legacy_init':
> > > /drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
> > > declaration of function 'of_get_compatible_child'; did you mean
> > > 'of_get_next_available_child'? [-Werror=implicit-function-declaration]
> > >    nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> > 
> > Looks like of_get_compatible_child() has been introduced in 4.18, hence
> > this error.
> > 
> > Greg, can you drop this patch from 4.14.y?
> 
> Yes, my fault, I fixed a number of these in the past, missed this one :(
> 
> Now dropped.

The intention here was that the helper should be backported along with
the fixes. I mentioned this in the cover letter to the series
introducing the helper and the fixes. As they were submitted together I
could not use the usual

	Cc: stable <stable@vger.kernel.org>	# 4.xx: 36156f9241cb

notation for this. I realise I should still have mentioned this in each
individual commit messages as well, sorry about that.

The dependency for all of these fixes is:

	36156f9241cb ("of: add helper to lookup compatible child node")

and the original thread can be found here:

	https://lkml.kernel.org/r/20180827082153.22537-1-johan@kernel.org
	
Johan

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 15:16       ` Sasha Levin
@ 2018-11-26 16:39         ` Matt Hart
  2018-11-26 17:18           ` Sasha Levin
  0 siblings, 1 reply; 80+ messages in thread
From: Matt Hart @ 2018-11-26 16:39 UTC (permalink / raw)
  To: sashal
  Cc: boris.brezillon, Naresh Kamboju, gregkh,
	Linux Kernel Mailing List, stable, nicolas.ferre, rainyfeeling,
	johan

On Mon, 26 Nov 2018 at 15:16, Sasha Levin <sashal@kernel.org> wrote:
>
<snip>

> >>
> >> /drivers/mtd/nand/atmel/nand-controller.c: In function
> >> 'atmel_hsmc_nand_controller_legacy_init':
> >> /drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
> >> declaration of function 'of_get_compatible_child'; did you mean
> >> 'of_get_next_available_child'? [-Werror=implicit-function-declaration]
> >>    nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> >
> >Looks like of_get_compatible_child() has been introduced in 4.18, hence
> >this error.
> >
> >Greg, can you drop this patch from 4.14.y?
>
> Interesting, none of the kernelci builds caught this? hmm

They did, a few arm defconfigs failed to build because of this error.
https://kernelci.org/build/stable-rc/branch/linux-4.14.y/kernel/v4.14.83-64-gd81d0be7d560/

>
> --
> Thanks,
> Sasha

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

* Re: [PATCH 4.14 00/62] 4.14.84-stable review
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (61 preceding siblings ...)
  2018-11-26 10:51 ` [PATCH 4.14 62/62] libceph: fall back to sendmsg for slab pages Greg Kroah-Hartman
@ 2018-11-26 17:11 ` kernelci.org bot
  2018-11-26 23:50 ` Guenter Roeck
                   ` (3 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: kernelci.org bot @ 2018-11-26 17:11 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: Greg Kroah-Hartman, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

stable-rc/linux-4.14.y boot: 60 boots: 0 failed, 57 passed with 2 offline, 1 untried/unknown (v4.14.83-63-g0ece78cdc128)

Full Boot Summary: https://kernelci.org/boot/all/job/stable-rc/branch/linux-4.14.y/kernel/v4.14.83-63-g0ece78cdc128/
Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-4.14.y/kernel/v4.14.83-63-g0ece78cdc128/

Tree: stable-rc
Branch: linux-4.14.y
Git Describe: v4.14.83-63-g0ece78cdc128
Git Commit: 0ece78cdc1285e114e5cec4c7517c90121ee32f5
Git URL: http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Tested: 48 unique boards, 15 SoC families, 13 builds out of 197

Offline Platforms:

arm64:

    defconfig:
        meson-gxl-s905d-p230: 1 offline lab
        meson-gxl-s905x-p212: 1 offline lab

---
For more info write to <info@kernelci.org>

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 16:39         ` Matt Hart
@ 2018-11-26 17:18           ` Sasha Levin
  0 siblings, 0 replies; 80+ messages in thread
From: Sasha Levin @ 2018-11-26 17:18 UTC (permalink / raw)
  To: Matt Hart
  Cc: boris.brezillon, Naresh Kamboju, gregkh,
	Linux Kernel Mailing List, stable, nicolas.ferre, rainyfeeling,
	johan

On Mon, Nov 26, 2018 at 04:39:03PM +0000, Matt Hart wrote:
>On Mon, 26 Nov 2018 at 15:16, Sasha Levin <sashal@kernel.org> wrote:
>>
><snip>
>
>> >>
>> >> /drivers/mtd/nand/atmel/nand-controller.c: In function
>> >> 'atmel_hsmc_nand_controller_legacy_init':
>> >> /drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
>> >> declaration of function 'of_get_compatible_child'; did you mean
>> >> 'of_get_next_available_child'? [-Werror=implicit-function-declaration]
>> >>    nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
>> >
>> >Looks like of_get_compatible_child() has been introduced in 4.18, hence
>> >this error.
>> >
>> >Greg, can you drop this patch from 4.14.y?
>>
>> Interesting, none of the kernelci builds caught this? hmm
>
>They did, a few arm defconfigs failed to build because of this error.
>https://kernelci.org/build/stable-rc/branch/linux-4.14.y/kernel/v4.14.83-64-gd81d0be7d560/

Indeed, and it was even removed from a few (but not all) of the branches
it failed on. I retract my kernelci comments :)

--
Thanks,
Sasha

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

* Re: [PATCH 4.14 00/62] 4.14.84-stable review
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (62 preceding siblings ...)
  2018-11-26 17:11 ` [PATCH 4.14 00/62] 4.14.84-stable review kernelci.org bot
@ 2018-11-26 23:50 ` Guenter Roeck
  2018-11-27  0:04 ` shuah
                   ` (2 subsequent siblings)
  66 siblings, 0 replies; 80+ messages in thread
From: Guenter Roeck @ 2018-11-26 23:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, shuah, patches, ben.hutchings, lkft-triage, stable

On 11/26/18 2:50 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.14.84 release.
> There are 62 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Wed Nov 28 10:50:20 UTC 2018.
> Anything received after that time might be too late.
> 

For v4.14.83-61-gc203efd3a8fd:

Build results:
	total: 150 pass: 150 fail: 0
Qemu test results:
	total: 295 pass: 295 fail: 0

Details are available at https://kerneltests.org/builders/.

Guenter

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

* Re: [PATCH 4.14 00/62] 4.14.84-stable review
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (63 preceding siblings ...)
  2018-11-26 23:50 ` Guenter Roeck
@ 2018-11-27  0:04 ` shuah
  2018-11-27  9:14 ` Jon Hunter
  2018-11-27 13:01 ` Naresh Kamboju
  66 siblings, 0 replies; 80+ messages in thread
From: shuah @ 2018-11-27  0:04 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, linux, patches, ben.hutchings, lkft-triage,
	stable, shuah

On 11/26/18 3:50 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.14.84 release.
> There are 62 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Wed Nov 28 10:50:20 UTC 2018.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.84-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
> 

Compiled and booted on my test system. No dmesg regressions.

thanks,
-- Shuah


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

* Re: [PATCH 4.14 00/62] 4.14.84-stable review
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (64 preceding siblings ...)
  2018-11-27  0:04 ` shuah
@ 2018-11-27  9:14 ` Jon Hunter
  2018-11-27 14:38   ` Greg Kroah-Hartman
  2018-11-27 13:01 ` Naresh Kamboju
  66 siblings, 1 reply; 80+ messages in thread
From: Jon Hunter @ 2018-11-27  9:14 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, linux, shuah, patches, ben.hutchings,
	lkft-triage, stable, linux-tegra


On 26/11/2018 10:50, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.14.84 release.
> There are 62 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Wed Nov 28 10:50:20 UTC 2018.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.84-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
All tests are passing for Tegra ...

Test results for stable-v4.14:
    8 builds:	8 pass, 0 fail
    16 boots:	16 pass, 0 fail
    14 tests:	14 pass, 0 fail

Linux version:	4.14.84-rc1-gc203efd
Boards tested:	tegra124-jetson-tk1, tegra20-ventana,
                tegra210-p2371-2180, tegra30-cardhu-a04

Cheers
Jon

-- 
nvpublic

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

* Re: [PATCH 4.14 00/62] 4.14.84-stable review
  2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
                   ` (65 preceding siblings ...)
  2018-11-27  9:14 ` Jon Hunter
@ 2018-11-27 13:01 ` Naresh Kamboju
  66 siblings, 0 replies; 80+ messages in thread
From: Naresh Kamboju @ 2018-11-27 13:01 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: open list, Linus Torvalds, Andrew Morton, Guenter Roeck,
	Shuah Khan, patches, Ben Hutchings, lkft-triage, linux- stable

On Mon, 26 Nov 2018 at 16:30, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 4.14.84 release.
> There are 62 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed Nov 28 10:50:20 UTC 2018.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
>         https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.84-rc1.gz
> or in the git tree and branch at:
>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h

Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.

Summary
------------------------------------------------------------------------

kernel: 4.14.84-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.14.y
git commit: c203efd3a8fd7ddeec1ea4bb6f7c6e36c95dfd40
git describe: v4.14.83-61-gc203efd3a8fd
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.14-oe/build/v4.14.83-61-gc203efd3a8fd

No regressions (compared to build v4.14.83)

No fixes (compared to build v4.14.83)

Ran 21442 total tests in the following environments and test suites.

Environments
--------------
- dragonboard-410c - arm64
- hi6220-hikey - arm64
- i386
- juno-r2 - arm64
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15 - arm
- x86_64

Test Suites
-----------
* boot
* install-android-platform-tools-r2600
* kselftest
* libhugetlbfs
* ltp-cap_bounds-tests
* ltp-containers-tests
* ltp-cve-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* ltp-timers-tests
* ltp-open-posix-tests
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-none

-- 
Linaro LKFT
https://lkft.linaro.org

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

* Re: [PATCH 4.14 00/62] 4.14.84-stable review
  2018-11-27  9:14 ` Jon Hunter
@ 2018-11-27 14:38   ` Greg Kroah-Hartman
  0 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-27 14:38 UTC (permalink / raw)
  To: Jon Hunter
  Cc: linux-kernel, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable, linux-tegra

On Tue, Nov 27, 2018 at 09:14:19AM +0000, Jon Hunter wrote:
> 
> On 26/11/2018 10:50, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 4.14.84 release.
> > There are 62 patches in this series, all will be posted as a response
> > to this one.  If anyone has any issues with these being applied, please
> > let me know.
> > 
> > Responses should be made by Wed Nov 28 10:50:20 UTC 2018.
> > Anything received after that time might be too late.
> > 
> > The whole patch series can be found in one patch at:
> > 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.84-rc1.gz
> > or in the git tree and branch at:
> > 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
> > and the diffstat can be found below.
> > 
> > thanks,
> > 
> > greg k-h
> All tests are passing for Tegra ...
> 
> Test results for stable-v4.14:
>     8 builds:	8 pass, 0 fail
>     16 boots:	16 pass, 0 fail
>     14 tests:	14 pass, 0 fail
> 
> Linux version:	4.14.84-rc1-gc203efd
> Boards tested:	tegra124-jetson-tk1, tegra20-ventana,
>                 tegra210-p2371-2180, tegra30-cardhu-a04
> 

Thanks for testing these and letting me know.

greg k-h

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

* Re: [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup
  2018-11-26 15:48         ` Johan Hovold
@ 2018-11-29  8:08           ` Greg Kroah-Hartman
  0 siblings, 0 replies; 80+ messages in thread
From: Greg Kroah-Hartman @ 2018-11-29  8:08 UTC (permalink / raw)
  To: Johan Hovold
  Cc: Boris Brezillon, Naresh Kamboju, open list, linux- stable,
	nicolas.ferre, rainyfeeling

On Mon, Nov 26, 2018 at 07:48:24AM -0800, Johan Hovold wrote:
> On Mon, Nov 26, 2018 at 04:14:18PM +0100, Greg Kroah-Hartman wrote:
> > On Mon, Nov 26, 2018 at 04:08:40PM +0100, Boris Brezillon wrote:
> > > On Mon, 26 Nov 2018 19:46:15 +0530
> > > Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> > > 
> > > > Do you see build failure arm x15 beagleboard on 4.14 due to this patch ?
> > > > 
> > > > On Mon, 26 Nov 2018 at 16:31, Greg Kroah-Hartman
> > > > <gregkh@linuxfoundation.org> wrote:
> > > > >
> > > > > 4.14-stable review patch.  If anyone has any objections, please let me know.
> > > > >
> > > > > ------------------
> > > > >
> > > > > From: Johan Hovold <johan@kernel.org>
> > > > >
> > > > > commit 5d1e9c2212ea6b4dd735e4fc3dd6279a365d5d10 upstream.
> > > > >
> > > > > Use the new of_get_compatible_child() helper to lookup the nfc child
> > > > > node instead of using of_find_compatible_node(), which searches the
> > > > > entire tree from a given start node and thus can return an unrelated
> > > > > (i.e. non-child) node.
> > > > >
> > > > > This also addresses a potential use-after-free (e.g. after probe
> > > > > deferral) as the tree-wide helper drops a reference to its first
> > > > > argument (i.e. the node of the device being probed).
> > > > >
> > > > > While at it, also fix a related nfc-node reference leak.
> > > > >
> > > > > Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
> > > > > Cc: stable <stable@vger.kernel.org>     # 4.11
> > > > > Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> > > > > Cc: Josh Wu <rainyfeeling@outlook.com>
> > > > > Cc: Boris Brezillon <boris.brezillon@bootlin.com>
> > > > > Signed-off-by: Johan Hovold <johan@kernel.org>
> > > > > Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
> > > > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > >
> > > > > ---
> > > > >  drivers/mtd/nand/atmel/nand-controller.c |   11 +++++++----
> > > > >  1 file changed, 7 insertions(+), 4 deletions(-)
> > > > >
> > > > > --- a/drivers/mtd/nand/atmel/nand-controller.c
> > > > > +++ b/drivers/mtd/nand/atmel/nand-controller.c
> > > > > @@ -2077,8 +2077,7 @@ atmel_hsmc_nand_controller_legacy_init(s
> > > > >         int ret;
> > > > >
> > > > >         nand_np = dev->of_node;
> > > > > -       nfc_np = of_find_compatible_node(dev->of_node, NULL,
> > > > > -                                        "atmel,sama5d3-nfc");
> > > > > +       nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> > > > >         if (!nfc_np) {
> > > > >                 dev_err(dev, "Could not find device node for sama5d3-nfc\n");
> > > > >                 return -ENODEV;
> > > > > @@ -2492,15 +2491,19 @@ static int atmel_nand_controller_probe(s
> > > > >         }
> > > > >
> > > > >         if (caps->legacy_of_bindings) {
> > > > > +               struct device_node *nfc_node;
> > > > >                 u32 ale_offs = 21;
> > > > >
> > > > >                 /*
> > > > >                  * If we are parsing legacy DT props and the DT contains a
> > > > >                  * valid NFC node, forward the request to the sama5 logic.
> > > > >                  */
> > > > > -               if (of_find_compatible_node(pdev->dev.of_node, NULL,
> > > > > -                                           "atmel,sama5d3-nfc"))
> > > > > +               nfc_node = of_get_compatible_child(pdev->dev.of_node,
> > > > > +                                                  "atmel,sama5d3-nfc");
> > > > > +               if (nfc_node) {
> > > > >                         caps = &atmel_sama5_nand_caps;
> > > > > +                       of_node_put(nfc_node);
> > > > > +               }
> > > > >
> > > > >                 /*
> > > > >                  * Even if the compatible says we are dealing with an
> > > > >
> > > > >  
> > > > 
> > > > /drivers/mtd/nand/atmel/nand-controller.c: In function
> > > > 'atmel_hsmc_nand_controller_legacy_init':
> > > > /drivers/mtd/nand/atmel/nand-controller.c:2080:11: error: implicit
> > > > declaration of function 'of_get_compatible_child'; did you mean
> > > > 'of_get_next_available_child'? [-Werror=implicit-function-declaration]
> > > >    nfc_np = of_get_compatible_child(dev->of_node, "atmel,sama5d3-nfc");
> > > 
> > > Looks like of_get_compatible_child() has been introduced in 4.18, hence
> > > this error.
> > > 
> > > Greg, can you drop this patch from 4.14.y?
> > 
> > Yes, my fault, I fixed a number of these in the past, missed this one :(
> > 
> > Now dropped.
> 
> The intention here was that the helper should be backported along with
> the fixes. I mentioned this in the cover letter to the series
> introducing the helper and the fixes. As they were submitted together I
> could not use the usual
> 
> 	Cc: stable <stable@vger.kernel.org>	# 4.xx: 36156f9241cb
> 
> notation for this. I realise I should still have mentioned this in each
> individual commit messages as well, sorry about that.
> 
> The dependency for all of these fixes is:
> 
> 	36156f9241cb ("of: add helper to lookup compatible child node")
> 
> and the original thread can be found here:
> 
> 	https://lkml.kernel.org/r/20180827082153.22537-1-johan@kernel.org

Now fixed up and applied, thanks.

greg k-h

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

end of thread, other threads:[~2018-11-29  8:08 UTC | newest]

Thread overview: 80+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 01/62] cifs: dont dereference smb_file_target before null check Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 02/62] cifs: fix return value for cifs_listxattr Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 03/62] arm64: kprobe: make page to RO mode when allocate it Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 04/62] nvme-pci: fix conflicting p2p resource adds Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 05/62] ixgbe: fix MAC anti-spoofing filter after VFLR Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 06/62] reiserfs: propagate errors from fill_with_dentries() properly Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 07/62] hfs: prevent btree data loss on root split Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 08/62] hfsplus: " Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 09/62] um: Give start_idle_thread() a return code Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 10/62] drm/edid: Add 6 bpc quirk for BOE panel Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 11/62] platform/x86: intel_telemetry: report debugfs failure Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 12/62] clk: fixed-rate: fix of_node_get-put imbalance Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 13/62] perf symbols: Set PLT entry/header sizes properly on Sparc Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 14/62] fs/exofs: fix potential memory leak in mount option parsing Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 15/62] clk: samsung: exynos5420: Enable PERIS clocks for suspend Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 16/62] apparmor: Fix uninitialized value in aa_split_fqname Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 17/62] x86/earlyprintk: Add a force option for pciserial device Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 18/62] platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 19/62] arm64: percpu: Initialize ret in the default case Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 20/62] s390/vdso: add missing FORCE to build targets Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 21/62] netfilter: ipset: list:set: Decrease refcount synchronously on deletion and replace Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 22/62] netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 23/62] s390/mm: Fix ERROR: "__node_distance" undefined! Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 24/62] netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 25/62] netfilter: xt_IDLETIMER: add sysfs filename checking routine Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 26/62] s390/qeth: fix HiperSockets sniffer Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 27/62] hwmon: (ibmpowernv) Remove bogus __init annotations Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 28/62] Revert "drm/exynos/decon5433: implement frame counter" Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 29/62] clk: fixed-factor: fix of_node_get-put imbalance Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 30/62] lib/raid6: Fix arm64 test build Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 31/62] s390/perf: Change CPUM_CF return code in event init function Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3 Greg Kroah-Hartman
2018-11-26 13:24   ` Vignesh R
2018-11-26 15:01     ` Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 33/62] sched/core: Take the hotplug lock in sched_init_smp() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 34/62] perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 35/62] i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 36/62] qed: Fix memory/entry leak in qed_init_sp_request() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 37/62] qed: Fix blocking/unlimited SPQ entries leak Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 38/62] qed: Fix potential memory corruption Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 39/62] net: stmmac: Fix RX packet size > 8191 Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 40/62] zram: close udev startup race condition as default groups Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 41/62] SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 42/62] ACPI / watchdog: Prefer iTCO_wdt always when WDAT table uses RTC SRAM Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 43/62] perf machine: Add machine__is() to identify machine arch Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 44/62] perf tools: Fix kernel_start for PTI on x86 Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 45/62] perf machine: Add nr_cpus_avail() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 46/62] perf machine: Workaround missing maps for x86 PTI entry trampolines Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 47/62] perf test code-reading: Fix perf_env setup for " Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 48/62] x86/mm: Move LDT remap out of KASLR region on 5-level paging Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 49/62] x86/ldt: Unmap PTEs for the slot before freeing LDT pages Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 50/62] media: v4l: event: Add subscription to list before calling "add" operation Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 51/62] MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 52/62] uio: Fix an Oops on load Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 53/62] usb: cdc-acm: add entry for Hiro (Conexant) modem Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 54/62] USB: quirks: Add no-lpm quirk for Raydium touchscreens Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 55/62] usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 56/62] misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 57/62] USB: misc: appledisplay: add 20" Apple Cinema Display Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup Greg Kroah-Hartman
2018-11-26 14:16   ` Naresh Kamboju
2018-11-26 14:59     ` Greg Kroah-Hartman
2018-11-26 15:08     ` Boris Brezillon
2018-11-26 15:14       ` Greg Kroah-Hartman
2018-11-26 15:48         ` Johan Hovold
2018-11-29  8:08           ` Greg Kroah-Hartman
2018-11-26 15:16       ` Sasha Levin
2018-11-26 16:39         ` Matt Hart
2018-11-26 17:18           ` Sasha Levin
2018-11-26 10:51 ` [PATCH 4.14 59/62] drivers/misc/sgi-gru: fix Spectre v1 vulnerability Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 60/62] ACPI / platform: Add SMB0001 HID to forbidden_id_list Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 61/62] HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 62/62] libceph: fall back to sendmsg for slab pages Greg Kroah-Hartman
2018-11-26 17:11 ` [PATCH 4.14 00/62] 4.14.84-stable review kernelci.org bot
2018-11-26 23:50 ` Guenter Roeck
2018-11-27  0:04 ` shuah
2018-11-27  9:14 ` Jon Hunter
2018-11-27 14:38   ` Greg Kroah-Hartman
2018-11-27 13:01 ` Naresh Kamboju

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).