All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3.18 00/50] 3.18.64-stable review
@ 2017-08-04 23:15 Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 01/50] af_key: Add lock to key dump Greg Kroah-Hartman
                   ` (50 more replies)
  0 siblings, 51 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, torvalds, akpm, linux, shuahkh, patches,
	ben.hutchings, stable

This is the start of the stable review cycle for the 3.18.64 release.
There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	kernel.org/pub/linux/kernel/v3.x/stable-review/patch-3.18.64-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-3.18.y
and the diffstat can be found below.

thanks,

greg k-h

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

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

Steffen Klassert <steffen.klassert@secunet.com>
    xfrm: Don't use sk_family for socket policy lookups

Mike Manning <mmanning@brocade.com>
    vlan: Propagate MAC address to VLANs

Phil Reid <preid@electromag.com.au>
    spi: dw: Make debugfs name unique between instances

Peter Ujfalusi <peter.ujfalusi@ti.com>
    ASoC: tlv320aic3x: Mark the RESET register as volatile

Arnd Bergmann <arnd@arndb.de>
    vfio-pci: use 32-bit comparisons for register address for gcc-4.5

Jordan Crouse <jcrouse@codeaurora.org>
    drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set

Jordan Crouse <jcrouse@codeaurora.org>
    drm/msm: Ensure that the hardware write pointer is valid

Leon Romanovsky <leonro@mellanox.com>
    net/mlx4: Remove BUG_ON from ICM allocation routine

Zheng Li <james.z.li@ericsson.com>
    ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output

Pali Rohár <pali.rohar@gmail.com>
    ARM: dts: n900: Mark eMMC slot with no-sdio and no-sd flags

Chun-Hao Lin <hau@realtek.com>
    r8169: add support for RTL8168 series add-on card.

Thomas Gleixner <tglx@linutronix.de>
    x86/mce/AMD: Make the init code more robust

Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    tpm: fix a kernel memory leak in tpm-sysfs.c

Eric Dumazet <edumazet@google.com>
    net: skb_needs_check() accepts CHECKSUM_NONE for tx

Kees Cook <keescook@chromium.org>
    pstore: Use dynamic spinlock initializer

Kees Cook <keescook@chromium.org>
    pstore: Correctly initialize spinlock and flags

Joel Fernandes <joelaf@google.com>
    pstore: Allow prz to control need for locking

Andrzej Hajda <a.hajda@samsung.com>
    v4l: s5c73m3: fix negation operator

Al Viro <viro@zeniv.linux.org.uk>
    dentry name snapshots

Valentin Vidic <Valentin.Vidic@CARNet.hr>
    ipmi/watchdog: fix watchdog timeout set on reboot

Daniel Borkmann <daniel@iogearbox.net>
    net, sched: fix soft lockup in tc_classify

Ben Hutchings <ben.hutchings@codethink.co.uk>
    sh_eth: Fix ethtool operation crash when net device is down

Daniel Borkmann <dborkman@redhat.com>
    net: sctp: fix race for one-to-many sockets in sendmsg's auto associate

Jan Stancek <jstancek@redhat.com>
    ipv6: fix possible deadlock in ip6_fl_purge / ip6_fl_gc

Oliver Neukum <oneukum@suse.com>
    kaweth: fix oops upon failed memory allocation

Oliver Neukum <oneukum@suse.com>
    kaweth: fix firmware download

Calvin Owens <calvinowens@fb.com>
    mpt3sas: Don't overreach ioc->reply_post[] during initialization

Sudeep Holla <sudeep.holla@arm.com>
    mailbox: handle empty message in tx_tick

Sudeep Holla <sudeep.holla@arm.com>
    mailbox: skip complete wait event if timer expired

Sudeep Holla <sudeep.holla@arm.com>
    mailbox: always wait in mbox_send_message for blocking Tx mode

Lior David <qca_liord@qca.qualcomm.com>
    wil6210: fix deadlock when using fw_no_recovery option

Annie Cherkaev <annie.cherk@gmail.com>
    isdn/i4l: fix buffer overflow

Chris Metcalf <cmetcalf@ezchip.com>
    strscpy: zero any trailing garbage bytes in the destination

Chris Metcalf <cmetcalf@ezchip.com>
    string: provide strscpy()

Jia-Ju Bai <baijiaju1990@163.com>
    isdn: Fix a sleep-in-atomic bug

Florian Fainelli <f.fainelli@gmail.com>
    net: phy: Do not perform software reset for Generic PHY

Al Viro <viro@zeniv.linux.org.uk>
    Bluetooth: cmtp: cmtp_add_connection() should verify that it's dealing with l2cap socket

Johan Hedberg <johan.hedberg@intel.com>
    Bluetooth: Fix potential NULL dereference

Al Viro <viro@zeniv.linux.org.uk>
    Bluetooth: bnep: bnep_add_connection() should verify that it's dealing with l2cap socket

Cheah Kok Cheong <thrust73@gmail.com>
    Staging: comedi: comedi_fops: Avoid orphaned proc entry

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Revert "powerpc/numa: Fix percpu allocations to be NUMA aware"

Paul Mackerras <paulus@ozlabs.org>
    KVM: PPC: Book3S HV: Save/restore host values of debug registers

Paul Mackerras <paulus@ozlabs.org>
    KVM: PPC: Book3S HV: Reload HTM registers explicitly

Paul Mackerras <paulus@ozlabs.org>
    KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit

Sinclair Yeh <syeh@vmware.com>
    drm/vmwgfx: Fix gcc-7.1.1 warning

Ofer Heifetz <oferh@marvell.com>
    md/raid5: add thread_group worker async_tx_issue_pending_all

Laurent Vivier <lvivier@redhat.com>
    powerpc/pseries: Fix of_node_put() underflow during reconfig remove

Eric Dumazet <edumazet@google.com>
    net: reduce skb_warn_bad_offload() noise

Joel Fernandes <joelaf@google.com>
    pstore: Make spinlock per zone instead of global

Yuejie Shi <syjcnss@gmail.com>
    af_key: Add lock to key dump


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

Diffstat:

 Makefile                                  |  4 +-
 arch/arm/boot/dts/omap3-n900.dts          |  2 +
 arch/powerpc/include/asm/topology.h       | 14 -----
 arch/powerpc/kernel/setup_64.c            |  4 +-
 arch/powerpc/kvm/book3s_hv.c              | 29 ++++++++--
 arch/powerpc/kvm/book3s_hv_rmhandlers.S   | 37 +++++++++++--
 arch/powerpc/platforms/pseries/reconfig.c |  1 -
 arch/x86/kernel/cpu/mcheck/mce_amd.c      |  3 ++
 drivers/char/ipmi/ipmi_watchdog.c         |  7 +--
 drivers/char/tpm/tpm-sysfs.c              |  2 +
 drivers/gpu/drm/msm/adreno/adreno_gpu.c   |  9 +++-
 drivers/gpu/drm/msm/msm_gem_submit.c      |  3 +-
 drivers/gpu/drm/msm/msm_ringbuffer.c      |  3 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c   |  2 +-
 drivers/isdn/i4l/isdn_common.c            |  1 +
 drivers/isdn/i4l/isdn_net.c               |  5 +-
 drivers/isdn/i4l/isdn_ppp.c               |  2 +-
 drivers/mailbox/mailbox.c                 | 13 +++--
 drivers/md/raid5.c                        |  2 +
 drivers/media/i2c/s5c73m3/s5c73m3-ctrls.c |  2 +-
 drivers/net/ethernet/mellanox/mlx4/icm.c  |  7 ++-
 drivers/net/ethernet/realtek/r8169.c      |  1 +
 drivers/net/ethernet/renesas/sh_eth.c     | 10 ++++
 drivers/net/phy/phy_device.c              |  2 +-
 drivers/net/usb/kaweth.c                  | 10 ++--
 drivers/net/wireless/ath/wil6210/main.c   | 15 +++---
 drivers/scsi/mpt3sas/mpt3sas_base.c       | 33 ++++++------
 drivers/spi/spi-dw.c                      |  5 +-
 drivers/staging/comedi/comedi_fops.c      |  6 +--
 drivers/vfio/pci/vfio_pci_rdwr.c          |  5 +-
 fs/dcache.c                               | 27 ++++++++++
 fs/debugfs/inode.c                        | 10 ++--
 fs/namei.c                                |  8 +--
 fs/notify/fsnotify.c                      |  8 ++-
 fs/pstore/ram.c                           |  5 +-
 fs/pstore/ram_core.c                      | 25 +++++----
 include/linux/dcache.h                    |  7 +++
 include/linux/fsnotify.h                  | 31 -----------
 include/linux/phy.h                       |  4 ++
 include/linux/pstore_ram.h                | 11 +++-
 include/linux/string.h                    |  3 ++
 lib/string.c                              | 89 +++++++++++++++++++++++++++++++
 net/8021q/vlan.c                          |  5 ++
 net/8021q/vlan.h                          |  2 +
 net/8021q/vlan_dev.c                      | 20 +++++--
 net/bluetooth/bnep/core.c                 | 10 ++--
 net/bluetooth/cmtp/core.c                 |  3 ++
 net/core/dev.c                            | 19 ++++---
 net/ipv6/ip6_flowlabel.c                  |  4 +-
 net/ipv6/ip6_output.c                     |  2 +-
 net/key/af_key.c                          | 46 +++++++++++++---
 net/sched/cls_api.c                       |  4 +-
 net/sctp/socket.c                         |  8 ++-
 net/xfrm/xfrm_policy.c                    |  9 ++--
 sound/soc/codecs/tlv320aic3x.c            | 13 +++++
 55 files changed, 449 insertions(+), 163 deletions(-)

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

* [PATCH 3.18 01/50] af_key: Add lock to key dump
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 02/50] pstore: Make spinlock per zone instead of global Greg Kroah-Hartman
                   ` (49 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yuejie Shi, Steffen Klassert, Mark Salyzyn

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

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

From: Yuejie Shi <syjcnss@gmail.com>

commit 89e357d83c06b6fac581c3ca7f0ee3ae7e67109e upstream.

A dump may come in the middle of another dump, modifying its dump
structure members. This race condition will result in NULL pointer
dereference in kernel. So add a lock to prevent that race.

Fixes: 83321d6b9872 ("[AF_KEY]: Dump SA/SP entries non-atomically")
Signed-off-by: Yuejie Shi <syjcnss@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/key/af_key.c |   46 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 8 deletions(-)

--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -63,6 +63,7 @@ struct pfkey_sock {
 		} u;
 		struct sk_buff	*skb;
 	} dump;
+	struct mutex dump_lock;
 };
 
 static int parse_sockaddr_pair(struct sockaddr *sa, int ext_len,
@@ -143,6 +144,7 @@ static int pfkey_create(struct net *net,
 {
 	struct netns_pfkey *net_pfkey = net_generic(net, pfkey_net_id);
 	struct sock *sk;
+	struct pfkey_sock *pfk;
 	int err;
 
 	if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
@@ -157,6 +159,9 @@ static int pfkey_create(struct net *net,
 	if (sk == NULL)
 		goto out;
 
+	pfk = pfkey_sk(sk);
+	mutex_init(&pfk->dump_lock);
+
 	sock->ops = &pfkey_ops;
 	sock_init_data(sock, sk);
 
@@ -285,13 +290,23 @@ static int pfkey_do_dump(struct pfkey_so
 	struct sadb_msg *hdr;
 	int rc;
 
+	mutex_lock(&pfk->dump_lock);
+	if (!pfk->dump.dump) {
+		rc = 0;
+		goto out;
+	}
+
 	rc = pfk->dump.dump(pfk);
-	if (rc == -ENOBUFS)
-		return 0;
+	if (rc == -ENOBUFS) {
+		rc = 0;
+		goto out;
+	}
 
 	if (pfk->dump.skb) {
-		if (!pfkey_can_dump(&pfk->sk))
-			return 0;
+		if (!pfkey_can_dump(&pfk->sk)) {
+			rc = 0;
+			goto out;
+		}
 
 		hdr = (struct sadb_msg *) pfk->dump.skb->data;
 		hdr->sadb_msg_seq = 0;
@@ -302,6 +317,9 @@ static int pfkey_do_dump(struct pfkey_so
 	}
 
 	pfkey_terminate_dump(pfk);
+
+out:
+	mutex_unlock(&pfk->dump_lock);
 	return rc;
 }
 
@@ -1805,19 +1823,26 @@ static int pfkey_dump(struct sock *sk, s
 	struct xfrm_address_filter *filter = NULL;
 	struct pfkey_sock *pfk = pfkey_sk(sk);
 
-	if (pfk->dump.dump != NULL)
+	mutex_lock(&pfk->dump_lock);
+	if (pfk->dump.dump != NULL) {
+		mutex_unlock(&pfk->dump_lock);
 		return -EBUSY;
+	}
 
 	proto = pfkey_satype2proto(hdr->sadb_msg_satype);
-	if (proto == 0)
+	if (proto == 0) {
+		mutex_unlock(&pfk->dump_lock);
 		return -EINVAL;
+	}
 
 	if (ext_hdrs[SADB_X_EXT_FILTER - 1]) {
 		struct sadb_x_filter *xfilter = ext_hdrs[SADB_X_EXT_FILTER - 1];
 
 		filter = kmalloc(sizeof(*filter), GFP_KERNEL);
-		if (filter == NULL)
+		if (filter == NULL) {
+			mutex_unlock(&pfk->dump_lock);
 			return -ENOMEM;
+		}
 
 		memcpy(&filter->saddr, &xfilter->sadb_x_filter_saddr,
 		       sizeof(xfrm_address_t));
@@ -1833,6 +1858,7 @@ static int pfkey_dump(struct sock *sk, s
 	pfk->dump.dump = pfkey_dump_sa;
 	pfk->dump.done = pfkey_dump_sa_done;
 	xfrm_state_walk_init(&pfk->dump.u.state, proto, filter);
+	mutex_unlock(&pfk->dump_lock);
 
 	return pfkey_do_dump(pfk);
 }
@@ -2692,14 +2718,18 @@ static int pfkey_spddump(struct sock *sk
 {
 	struct pfkey_sock *pfk = pfkey_sk(sk);
 
-	if (pfk->dump.dump != NULL)
+	mutex_lock(&pfk->dump_lock);
+	if (pfk->dump.dump != NULL) {
+		mutex_unlock(&pfk->dump_lock);
 		return -EBUSY;
+	}
 
 	pfk->dump.msg_version = hdr->sadb_msg_version;
 	pfk->dump.msg_portid = hdr->sadb_msg_pid;
 	pfk->dump.dump = pfkey_dump_sp;
 	pfk->dump.done = pfkey_dump_sp_done;
 	xfrm_policy_walk_init(&pfk->dump.u.policy, XFRM_POLICY_TYPE_MAIN);
+	mutex_unlock(&pfk->dump_lock);
 
 	return pfkey_do_dump(pfk);
 }

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

* [PATCH 3.18 02/50] pstore: Make spinlock per zone instead of global
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 01/50] af_key: Add lock to key dump Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 03/50] net: reduce skb_warn_bad_offload() noise Greg Kroah-Hartman
                   ` (48 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Joel Fernandes, Kees Cook, Leo Yan

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

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

From: Joel Fernandes <joelaf@google.com>

commit 109704492ef637956265ec2eb72ae7b3b39eb6f4 upstream.

Currently pstore has a global spinlock for all zones. Since the zones
are independent and modify different areas of memory, there's no need
to have a global lock, so we should use a per-zone lock as introduced
here. Also, when ramoops's ftrace use-case has a FTRACE_PER_CPU flag
introduced later, which splits the ftrace memory area into a single zone
per CPU, it will eliminate the need for locking. In preparation for this,
make the locking optional.

Signed-off-by: Joel Fernandes <joelaf@google.com>
[kees: updated commit message]
Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/pstore/ram_core.c       |   11 +++++------
 include/linux/pstore_ram.h |    1 +
 2 files changed, 6 insertions(+), 6 deletions(-)

--- a/fs/pstore/ram_core.c
+++ b/fs/pstore/ram_core.c
@@ -80,8 +80,6 @@ static void buffer_size_add_atomic(struc
 	} while (atomic_cmpxchg(&prz->buffer->size, old, new) != old);
 }
 
-static DEFINE_RAW_SPINLOCK(buffer_lock);
-
 /* increase and wrap the start pointer, returning the old value */
 static size_t buffer_start_add_locked(struct persistent_ram_zone *prz, size_t a)
 {
@@ -89,7 +87,7 @@ static size_t buffer_start_add_locked(st
 	int new;
 	unsigned long flags;
 
-	raw_spin_lock_irqsave(&buffer_lock, flags);
+	raw_spin_lock_irqsave(&prz->buffer_lock, flags);
 
 	old = atomic_read(&prz->buffer->start);
 	new = old + a;
@@ -97,7 +95,7 @@ static size_t buffer_start_add_locked(st
 		new -= prz->buffer_size;
 	atomic_set(&prz->buffer->start, new);
 
-	raw_spin_unlock_irqrestore(&buffer_lock, flags);
+	raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
 
 	return old;
 }
@@ -109,7 +107,7 @@ static void buffer_size_add_locked(struc
 	size_t new;
 	unsigned long flags;
 
-	raw_spin_lock_irqsave(&buffer_lock, flags);
+	raw_spin_lock_irqsave(&prz->buffer_lock, flags);
 
 	old = atomic_read(&prz->buffer->size);
 	if (old == prz->buffer_size)
@@ -121,7 +119,7 @@ static void buffer_size_add_locked(struc
 	atomic_set(&prz->buffer->size, new);
 
 exit:
-	raw_spin_unlock_irqrestore(&buffer_lock, flags);
+	raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
 }
 
 static size_t (*buffer_start_add)(struct persistent_ram_zone *, size_t) = buffer_start_add_atomic;
@@ -489,6 +487,7 @@ static int persistent_ram_post_init(stru
 
 	prz->buffer->sig = sig;
 	persistent_ram_zap(prz);
+	prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
 
 	return 0;
 }
--- a/include/linux/pstore_ram.h
+++ b/include/linux/pstore_ram.h
@@ -39,6 +39,7 @@ struct persistent_ram_zone {
 	void *vaddr;
 	struct persistent_ram_buffer *buffer;
 	size_t buffer_size;
+	raw_spinlock_t buffer_lock;
 
 	/* ECC correction */
 	char *par_buffer;

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

* [PATCH 3.18 03/50] net: reduce skb_warn_bad_offload() noise
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 01/50] af_key: Add lock to key dump Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 02/50] pstore: Make spinlock per zone instead of global Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 04/50] powerpc/pseries: Fix of_node_put() underflow during reconfig remove Greg Kroah-Hartman
                   ` (47 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eric Dumazet, Dmitry Vyukov,
	Willem de Bruijn, David S. Miller, Mark Salyzyn

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

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

From: Eric Dumazet <edumazet@google.com>

commit b2504a5dbef3305ef41988ad270b0e8ec289331c upstream.

Dmitry reported warnings occurring in __skb_gso_segment() [1]

All SKB_GSO_DODGY producers can allow user space to feed
packets that trigger the current check.

We could prevent them from doing so, rejecting packets, but
this might add regressions to existing programs.

It turns out our SKB_GSO_DODGY handlers properly set up checksum
information that is needed anyway when packets needs to be segmented.

By checking again skb_needs_check() after skb_mac_gso_segment(),
we should remove these pesky warnings, at a very minor cost.

With help from Willem de Bruijn

[1]
WARNING: CPU: 1 PID: 6768 at net/core/dev.c:2439 skb_warn_bad_offload+0x2af/0x390 net/core/dev.c:2434
lo: caps=(0x000000a2803b7c69, 0x0000000000000000) len=138 data_len=0 gso_size=15883 gso_type=4 ip_summed=0
Kernel panic - not syncing: panic_on_warn set ...

CPU: 1 PID: 6768 Comm: syz-executor1 Not tainted 4.9.0 #5
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
 ffff8801c063ecd8 ffffffff82346bdf ffffffff00000001 1ffff100380c7d2e
 ffffed00380c7d26 0000000041b58ab3 ffffffff84b37e38 ffffffff823468f1
 ffffffff84820740 ffffffff84f289c0 dffffc0000000000 ffff8801c063ee20
Call Trace:
 [<ffffffff82346bdf>] __dump_stack lib/dump_stack.c:15 [inline]
 [<ffffffff82346bdf>] dump_stack+0x2ee/0x3ef lib/dump_stack.c:51
 [<ffffffff81827e34>] panic+0x1fb/0x412 kernel/panic.c:179
 [<ffffffff8141f704>] __warn+0x1c4/0x1e0 kernel/panic.c:542
 [<ffffffff8141f7e5>] warn_slowpath_fmt+0xc5/0x100 kernel/panic.c:565
 [<ffffffff8356cbaf>] skb_warn_bad_offload+0x2af/0x390 net/core/dev.c:2434
 [<ffffffff83585cd2>] __skb_gso_segment+0x482/0x780 net/core/dev.c:2706
 [<ffffffff83586f19>] skb_gso_segment include/linux/netdevice.h:3985 [inline]
 [<ffffffff83586f19>] validate_xmit_skb+0x5c9/0xc20 net/core/dev.c:2969
 [<ffffffff835892bb>] __dev_queue_xmit+0xe6b/0x1e70 net/core/dev.c:3383
 [<ffffffff8358a2d7>] dev_queue_xmit+0x17/0x20 net/core/dev.c:3424
 [<ffffffff83ad161d>] packet_snd net/packet/af_packet.c:2930 [inline]
 [<ffffffff83ad161d>] packet_sendmsg+0x32ed/0x4d30 net/packet/af_packet.c:2955
 [<ffffffff834f0aaa>] sock_sendmsg_nosec net/socket.c:621 [inline]
 [<ffffffff834f0aaa>] sock_sendmsg+0xca/0x110 net/socket.c:631
 [<ffffffff834f329a>] ___sys_sendmsg+0x8fa/0x9f0 net/socket.c:1954
 [<ffffffff834f5e58>] __sys_sendmsg+0x138/0x300 net/socket.c:1988
 [<ffffffff834f604d>] SYSC_sendmsg net/socket.c:1999 [inline]
 [<ffffffff834f604d>] SyS_sendmsg+0x2d/0x50 net/socket.c:1995
 [<ffffffff84371941>] entry_SYSCALL_64_fastpath+0x1f/0xc2

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Dmitry Vyukov  <dvyukov@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Mark Salyzyn <salyzyn@android.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2454,11 +2454,12 @@ static inline bool skb_needs_check(struc
 struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
 				  netdev_features_t features, bool tx_path)
 {
+	struct sk_buff *segs;
+
 	if (unlikely(skb_needs_check(skb, tx_path))) {
 		int err;
 
-		skb_warn_bad_offload(skb);
-
+		/* We're going to init ->check field in TCP or UDP header */
 		err = skb_cow_head(skb, 0);
 		if (err < 0)
 			return ERR_PTR(err);
@@ -2470,7 +2471,12 @@ struct sk_buff *__skb_gso_segment(struct
 	skb_reset_mac_header(skb);
 	skb_reset_mac_len(skb);
 
-	return skb_mac_gso_segment(skb, features);
+	segs = skb_mac_gso_segment(skb, features);
+
+	if (unlikely(skb_needs_check(skb, tx_path)))
+		skb_warn_bad_offload(skb);
+
+	return segs;
 }
 EXPORT_SYMBOL(__skb_gso_segment);
 

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

* [PATCH 3.18 04/50] powerpc/pseries: Fix of_node_put() underflow during reconfig remove
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (2 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 03/50] net: reduce skb_warn_bad_offload() noise Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 05/50] md/raid5: add thread_group worker async_tx_issue_pending_all Greg Kroah-Hartman
                   ` (46 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Laurent Vivier, David Gibson,
	Michael Ellerman

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

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

From: Laurent Vivier <lvivier@redhat.com>

commit 4fd1bd443e80b12f0a01a45fb9a793206b41cb72 upstream.

As for commit 68baf692c435 ("powerpc/pseries: Fix of_node_put()
underflow during DLPAR remove"), the call to of_node_put() must be
removed from pSeries_reconfig_remove_node().

dlpar_detach_node() and pSeries_reconfig_remove_node() both call
of_detach_node(), and thus the node should not be released in both
cases.

Fixes: 0829f6d1f69e ("of: device_node kobject lifecycle fixes")
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/platforms/pseries/reconfig.c |    1 -
 1 file changed, 1 deletion(-)

--- a/arch/powerpc/platforms/pseries/reconfig.c
+++ b/arch/powerpc/platforms/pseries/reconfig.c
@@ -112,7 +112,6 @@ static int pSeries_reconfig_remove_node(
 
 	of_detach_node(np);
 	of_node_put(parent);
-	of_node_put(np); /* Must decrement the refcount */
 	return 0;
 }
 

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

* [PATCH 3.18 05/50] md/raid5: add thread_group worker async_tx_issue_pending_all
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (3 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 04/50] powerpc/pseries: Fix of_node_put() underflow during reconfig remove Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 06/50] drm/vmwgfx: Fix gcc-7.1.1 warning Greg Kroah-Hartman
                   ` (45 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ofer Heifetz, Shaohua Li

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

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

From: Ofer Heifetz <oferh@marvell.com>

commit 7e96d559634b73a8158ee99a7abece2eacec2668 upstream.

Since thread_group worker and raid5d kthread are not in sync, if
worker writes stripe before raid5d then requests will be waiting
for issue_pendig.

Issue observed when building raid5 with ext4, in some build runs
jbd2 would get hung and requests were waiting in the HW engine
waiting to be issued.

Fix this by adding a call to async_tx_issue_pending_all in the
raid5_do_work.

Signed-off-by: Ofer Heifetz <oferh@marvell.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5224,6 +5224,8 @@ static void raid5_do_work(struct work_st
 	pr_debug("%d stripes handled\n", handled);
 
 	spin_unlock_irq(&conf->device_lock);
+
+	async_tx_issue_pending_all();
 	blk_finish_plug(&plug);
 
 	pr_debug("--- raid5worker inactive\n");

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

* [PATCH 3.18 06/50] drm/vmwgfx: Fix gcc-7.1.1 warning
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (4 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 05/50] md/raid5: add thread_group worker async_tx_issue_pending_all Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 07/50] KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit Greg Kroah-Hartman
                   ` (44 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, Linus Torvalds,
	Sinclair Yeh, Brian Paul

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

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

From: Sinclair Yeh <syeh@vmware.com>

commit fcfffdd8f98ac305285dca568b5065ef86be6458 upstream.

The current code does not look correct, and the reason for it is
probably lost.  Since this now generates a compiler warning,
fix it to what makes sense.

Reported-by: Arnd Bergmann <arnd@arndb.de>
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sinclair Yeh <syeh@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
@@ -285,7 +285,7 @@ static int vmw_cmd_invalid(struct vmw_pr
 			   struct vmw_sw_context *sw_context,
 			   SVGA3dCmdHeader *header)
 {
-	return capable(CAP_SYS_ADMIN) ? : -EINVAL;
+	return -EINVAL;
 }
 
 static int vmw_cmd_ok(struct vmw_private *dev_priv,

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

* [PATCH 3.18 07/50] KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (5 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 06/50] drm/vmwgfx: Fix gcc-7.1.1 warning Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 08/50] KVM: PPC: Book3S HV: Reload HTM registers explicitly Greg Kroah-Hartman
                   ` (43 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Paul Mackerras

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

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

From: Paul Mackerras <paulus@ozlabs.org>

commit 4c3bb4ccd074e1a0552078c0bf94c662367a1658 upstream.

This restores several special-purpose registers (SPRs) to sane values
on guest exit that were missed before.

TAR and VRSAVE are readable and writable by userspace, and we need to
save and restore them to prevent the guest from potentially affecting
userspace execution (not that TAR or VRSAVE are used by any known
program that run uses the KVM_RUN ioctl).  We save/restore these
in kvmppc_vcpu_run_hv() rather than on every guest entry/exit.

FSCR affects userspace execution in that it can prohibit access to
certain facilities by userspace.  We restore it to the normal value
for the task on exit from the KVM_RUN ioctl.

IAMR is normally 0, and is restored to 0 on guest exit.  However,
with a radix host on POWER9, it is set to a value that prevents the
kernel from executing user-accessible memory.  On POWER9, we save
IAMR on guest entry and restore it on guest exit to the saved value
rather than 0.  On POWER8 we continue to set it to 0 on guest exit.

PSPB is normally 0.  We restore it to 0 on guest exit to prevent
userspace taking advantage of the guest having set it non-zero
(which would allow userspace to set its SMT priority to high).

UAMOR is normally 0.  We restore it to 0 on guest exit to prevent
the AMR from being used as a covert channel between userspace
processes, since the AMR is not context-switched at present.

[paulus@ozlabs.org - removed IAMR bits that are only needed on POWER9;
 adjusted FSCR save/restore for lack of fscr field in thread_struct.]

Fixes: b005255e12a3 ("KVM: PPC: Book3S HV: Context-switch new POWER8 SPRs", 2014-01-08)
Cc: stable@vger.kernel.org # v3.14+
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/kvm/book3s_hv.c            |   13 +++++++++++--
 arch/powerpc/kvm/book3s_hv_rmhandlers.S |    2 ++
 2 files changed, 13 insertions(+), 2 deletions(-)

--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -1951,6 +1951,9 @@ static int kvmppc_vcpu_run_hv(struct kvm
 	int r;
 	int srcu_idx;
 	unsigned long ebb_regs[3] = {};	/* shut up GCC */
+	unsigned long user_tar = 0;
+	unsigned long proc_fscr = 0;
+	unsigned int user_vrsave;
 
 	if (!vcpu->arch.sane) {
 		run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
@@ -2001,12 +2004,15 @@ static int kvmppc_vcpu_run_hv(struct kvm
 	flush_altivec_to_thread(current);
 	flush_vsx_to_thread(current);
 
-	/* Save userspace EBB register values */
+	/* Save userspace EBB and other register values */
 	if (cpu_has_feature(CPU_FTR_ARCH_207S)) {
 		ebb_regs[0] = mfspr(SPRN_EBBHR);
 		ebb_regs[1] = mfspr(SPRN_EBBRR);
 		ebb_regs[2] = mfspr(SPRN_BESCR);
+		user_tar = mfspr(SPRN_TAR);
+		proc_fscr = mfspr(SPRN_FSCR);
 	}
+	user_vrsave = mfspr(SPRN_VRSAVE);
 
 	vcpu->arch.wqp = &vcpu->arch.vcore->wq;
 	vcpu->arch.pgdir = current->mm->pgd;
@@ -2027,12 +2033,15 @@ static int kvmppc_vcpu_run_hv(struct kvm
 		}
 	} while (is_kvmppc_resume_guest(r));
 
-	/* Restore userspace EBB register values */
+	/* Restore userspace EBB and other register values */
 	if (cpu_has_feature(CPU_FTR_ARCH_207S)) {
 		mtspr(SPRN_EBBHR, ebb_regs[0]);
 		mtspr(SPRN_EBBRR, ebb_regs[1]);
 		mtspr(SPRN_BESCR, ebb_regs[2]);
+		mtspr(SPRN_TAR, user_tar);
+		mtspr(SPRN_FSCR, proc_fscr);
 	}
+	mtspr(SPRN_VRSAVE, user_vrsave);
 
  out:
 	vcpu->arch.state = KVMPPC_VCPU_NOTREADY;
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -1182,6 +1182,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
 	mtspr	SPRN_IAMR, r0
 	mtspr	SPRN_CIABR, r0
 	mtspr	SPRN_DAWRX, r0
+	mtspr	SPRN_PSPB, r0
 	mtspr	SPRN_TCSCR, r0
 	mtspr	SPRN_WORT, r0
 	/* Set MMCRS to 1<<31 to freeze and disable the SPMC counters */
@@ -1198,6 +1199,7 @@ BEGIN_FTR_SECTION
 	std	r6,VCPU_UAMOR(r9)
 	li	r6,0
 	mtspr	SPRN_AMR,r6
+	mtspr	SPRN_UAMOR, r6
 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206)
 
 	/* Switch DSCR back to host value */

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

* [PATCH 3.18 08/50] KVM: PPC: Book3S HV: Reload HTM registers explicitly
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (6 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 07/50] KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 09/50] KVM: PPC: Book3S HV: Save/restore host values of debug registers Greg Kroah-Hartman
                   ` (42 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel, stable; +Cc: Greg Kroah-Hartman, Paul Mackerras

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

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

From: Paul Mackerras <paulus@ozlabs.org>

Commit 46a704f8409f ("KVM: PPC: Book3S HV: Preserve userspace HTM
state properly", 2017-06-15) added code which assumes that the kernel
is able to handle a TM (transactional memory) unavailable interrupt
from userspace by reloading the TM-related registers and enabling TM
for the process.  That ability was added in the 4.9 kernel; earlier
kernel versions simply panic on getting the TM unavailable interrupt.

Since commit 46a704f8409f has been backported to the 3.18 stable tree
as commit 0b423daba180, 3.18.59 and subsequent versions are vulnerable
to a userspace-triggerable panic.

This patch fixes the problem by explicitly reloading the TM-related
registers before returning to userspace, rather than disabling TM
for the process.

Commit 46a704f8409f also failed to enable TM for the kernel, leading
to a TM unavailable interrupt in the kernel, causing an oops.  This
fixes that problem too, by enabling TM before accessing the TM
registers.  That problem is fixed upstream by the patch "KVM: PPC:
Book3S HV: Enable TM before accessing TM registers".

Fixes: 0b423daba180 ("KVM: PPC: Book3S HV: Preserve userspace HTM state properly")
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/powerpc/kvm/book3s_hv.c |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -1974,10 +1974,11 @@ static int kvmppc_vcpu_run_hv(struct kvm
 			run->fail_entry.hardware_entry_failure_reason = 0;
 			return -EINVAL;
 		}
+		/* Enable TM so we can read the TM SPRs */
+		mtmsr(mfmsr() | MSR_TM);
 		current->thread.tm_tfhar = mfspr(SPRN_TFHAR);
 		current->thread.tm_tfiar = mfspr(SPRN_TFIAR);
 		current->thread.tm_texasr = mfspr(SPRN_TEXASR);
-		current->thread.regs->msr &= ~MSR_TM;
 	}
 #endif
 
@@ -2043,6 +2044,19 @@ static int kvmppc_vcpu_run_hv(struct kvm
 	}
 	mtspr(SPRN_VRSAVE, user_vrsave);
 
+	/*
+	 * Since we don't do lazy TM reload, we need to reload
+	 * the TM registers here.
+	 */
+#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
+	if (cpu_has_feature(CPU_FTR_TM) && current->thread.regs &&
+	    (current->thread.regs->msr & MSR_TM)) {
+		mtspr(SPRN_TFHAR, current->thread.tm_tfhar);
+		mtspr(SPRN_TFIAR, current->thread.tm_tfiar);
+		mtspr(SPRN_TEXASR, current->thread.tm_texasr);
+	}
+#endif
+
  out:
 	vcpu->arch.state = KVMPPC_VCPU_NOTREADY;
 	atomic_dec(&vcpu->kvm->arch.vcpus_running);

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

* [PATCH 3.18 09/50] KVM: PPC: Book3S HV: Save/restore host values of debug registers
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (7 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 08/50] KVM: PPC: Book3S HV: Reload HTM registers explicitly Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 10/50] Revert "powerpc/numa: Fix percpu allocations to be NUMA aware" Greg Kroah-Hartman
                   ` (41 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Paul Mackerras

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

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

From: Paul Mackerras <paulus@ozlabs.org>

commit 7ceaa6dcd8c6f59588428cec37f3c8093dd1011f upstream.

At present, HV KVM on POWER8 and POWER9 machines loses any instruction
or data breakpoint set in the host whenever a guest is run.
Instruction breakpoints are currently only used by xmon, but ptrace
and the perf_event subsystem can set data breakpoints as well as xmon.

To fix this, we save the host values of the debug registers (CIABR,
DAWR and DAWRX) before entering the guest and restore them on exit.
To provide space to save them in the stack frame, we expand the stack
frame allocated by kvmppc_hv_entry() from 112 to 144 bytes.

[paulus@ozlabs.org - Adjusted stack offsets since we aren't saving
 POWER9-specific registers.]

Fixes: b005255e12a3 ("KVM: PPC: Book3S HV: Context-switch new POWER8 SPRs", 2014-01-08)
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/kvm/book3s_hv_rmhandlers.S |   35 +++++++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 5 deletions(-)

--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -36,6 +36,12 @@
 #define NAPPING_CEDE	1
 #define NAPPING_NOVCPU	2
 
+/* Stack frame offsets for kvmppc_hv_entry */
+#define SFS			112
+#define STACK_SLOT_CIABR	(SFS-16)
+#define STACK_SLOT_DAWR		(SFS-24)
+#define STACK_SLOT_DAWRX	(SFS-32)
+
 /*
  * Call kvmppc_hv_entry in real mode.
  * Must be called with interrupts hard-disabled.
@@ -360,7 +366,7 @@ kvmppc_hv_entry:
 	 */
 	mflr	r0
 	std	r0, PPC_LR_STKOFF(r1)
-	stdu	r1, -112(r1)
+	stdu	r1, -SFS(r1)
 
 	/* Save R1 in the PACA */
 	std	r1, HSTATE_HOST_R1(r13)
@@ -618,6 +624,16 @@ BEGIN_FTR_SECTION
 	mtspr	SPRN_SPURR,r8
 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206)
 
+	/* Save host values of some registers */
+BEGIN_FTR_SECTION
+	mfspr	r5, SPRN_CIABR
+	mfspr	r6, SPRN_DAWR
+	mfspr	r7, SPRN_DAWRX
+	std	r5, STACK_SLOT_CIABR(r1)
+	std	r6, STACK_SLOT_DAWR(r1)
+	std	r7, STACK_SLOT_DAWRX(r1)
+END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
+
 BEGIN_FTR_SECTION
 	/* Set partition DABR */
 	/* Do this before re-enabling PMU to avoid P7 DABR corruption bug */
@@ -1180,8 +1196,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
 	 */
 	li	r0, 0
 	mtspr	SPRN_IAMR, r0
-	mtspr	SPRN_CIABR, r0
-	mtspr	SPRN_DAWRX, r0
 	mtspr	SPRN_PSPB, r0
 	mtspr	SPRN_TCSCR, r0
 	mtspr	SPRN_WORT, r0
@@ -1358,6 +1372,17 @@ hdec_soon:			/* r12 = trap, r13 = paca *
 BEGIN_FTR_SECTION
 	b	32f
 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_201)
+
+	/* Restore host values of some registers */
+BEGIN_FTR_SECTION
+	ld	r5, STACK_SLOT_CIABR(r1)
+	ld	r6, STACK_SLOT_DAWR(r1)
+	ld	r7, STACK_SLOT_DAWRX(r1)
+	mtspr	SPRN_CIABR, r5
+	mtspr	SPRN_DAWR, r6
+	mtspr	SPRN_DAWRX, r7
+END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
+
 	/*
 	 * POWER7 guest -> host partition switch code.
 	 * We don't have to lock against tlbies but we do
@@ -1584,8 +1609,8 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
 	li	r0, KVM_GUEST_MODE_NONE
 	stb	r0, HSTATE_IN_GUEST(r13)
 
-	ld	r0, 112+PPC_LR_STKOFF(r1)
-	addi	r1, r1, 112
+	ld	r0, SFS+PPC_LR_STKOFF(r1)
+	addi	r1, r1, SFS
 	mtlr	r0
 	blr
 

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

* [PATCH 3.18 10/50] Revert "powerpc/numa: Fix percpu allocations to be NUMA aware"
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (8 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 09/50] KVM: PPC: Book3S HV: Save/restore host values of debug registers Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 11/50] Staging: comedi: comedi_fops: Avoid orphaned proc entry Greg Kroah-Hartman
                   ` (40 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michal Hocko, Michael Ellerman,
	Nicholas Piggin

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

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

From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

This reverts commit 138bb14846a5856747694ae9ef565c9eb4533a1e which is
commit ba4a648f12f4cd0a8003dd229b6ca8a53348ee4b upstream.

Michal Hocko writes:

JFYI. We have encountered a regression after applying this patch on a
large ppc machine. While the patch is the right thing to do it doesn't
work well with the current vmalloc area size on ppc and large machines
where NUMA nodes are very far from each other. Just for the reference
the boot fails on such a machine with bunch of warning preceeding it.
See http://lkml.kernel.org/r/20170724134240.GL25221@dhcp22.suse.cz

It seems the right thing to do is to enlarge the vmalloc space on ppc
but this is not the case in the upstream kernel yet AFAIK. It is also
questionable whether that is a stable material but I will decision on
you here.

We have reverted this patch from our 4.4 based kernel.

Newer kernels do not have enlarged vmalloc space yet AFAIK so they won't
work properly eiter. This bug is quite rare though because you need a
specific HW configuration to trigger the issue - namely NUMA nodes have
to be far away from each other in the physical memory space.

Cc: Michal Hocko <mhocko@kernel.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/powerpc/include/asm/topology.h |   14 --------------
 arch/powerpc/kernel/setup_64.c      |    4 ++--
 2 files changed, 2 insertions(+), 16 deletions(-)

--- a/arch/powerpc/include/asm/topology.h
+++ b/arch/powerpc/include/asm/topology.h
@@ -44,22 +44,8 @@ extern void __init dump_numa_cpu_topolog
 extern int sysfs_add_device_to_node(struct device *dev, int nid);
 extern void sysfs_remove_device_from_node(struct device *dev, int nid);
 
-static inline int early_cpu_to_node(int cpu)
-{
-	int nid;
-
-	nid = numa_cpu_lookup_table[cpu];
-
-	/*
-	 * Fall back to node 0 if nid is unset (it should be, except bugs).
-	 * This allows callers to safely do NODE_DATA(early_cpu_to_node(cpu)).
-	 */
-	return (nid < 0) ? 0 : nid;
-}
 #else
 
-static inline int early_cpu_to_node(int cpu) { return 0; }
-
 static inline void dump_numa_cpu_topology(void) {}
 
 static inline int sysfs_add_device_to_node(struct device *dev, int nid)
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -754,7 +754,7 @@ void ppc64_boot_msg(unsigned int src, co
 
 static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, size_t align)
 {
-	return __alloc_bootmem_node(NODE_DATA(early_cpu_to_node(cpu)), size, align,
+	return __alloc_bootmem_node(NODE_DATA(cpu_to_node(cpu)), size, align,
 				    __pa(MAX_DMA_ADDRESS));
 }
 
@@ -765,7 +765,7 @@ static void __init pcpu_fc_free(void *pt
 
 static int pcpu_cpu_distance(unsigned int from, unsigned int to)
 {
-	if (early_cpu_to_node(from) == early_cpu_to_node(to))
+	if (cpu_to_node(from) == cpu_to_node(to))
 		return LOCAL_DISTANCE;
 	else
 		return REMOTE_DISTANCE;

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

* [PATCH 3.18 11/50] Staging: comedi: comedi_fops: Avoid orphaned proc entry
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (9 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 10/50] Revert "powerpc/numa: Fix percpu allocations to be NUMA aware" Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 12/50] Bluetooth: bnep: bnep_add_connection() should verify that its dealing with l2cap socket Greg Kroah-Hartman
                   ` (39 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Cheah Kok Cheong, Ian Abbott

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

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

From: Cheah Kok Cheong <thrust73@gmail.com>

commit bf279ece37d2a3eaaa9813fcd7a1d8a81eb29c20 upstream.

Move comedi_proc_init to the end to avoid orphaned proc entry
if module loading failed.

Signed-off-by: Cheah Kok Cheong <thrust73@gmail.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/staging/comedi/comedi_fops.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/staging/comedi/comedi_fops.c
+++ b/drivers/staging/comedi/comedi_fops.c
@@ -2590,9 +2590,6 @@ static int __init comedi_init(void)
 
 	comedi_class->dev_groups = comedi_dev_groups;
 
-	/* XXX requires /proc interface */
-	comedi_proc_init();
-
 	/* create devices files for legacy/manual use */
 	for (i = 0; i < comedi_num_legacy_minors; i++) {
 		struct comedi_device *dev;
@@ -2610,6 +2607,9 @@ static int __init comedi_init(void)
 		mutex_unlock(&dev->mutex);
 	}
 
+	/* XXX requires /proc interface */
+	comedi_proc_init();
+
 	return 0;
 }
 module_init(comedi_init);

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

* [PATCH 3.18 12/50] Bluetooth: bnep: bnep_add_connection() should verify that its dealing with l2cap socket
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (10 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 11/50] Staging: comedi: comedi_fops: Avoid orphaned proc entry Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:15 ` [PATCH 3.18 13/50] Bluetooth: Fix potential NULL dereference Greg Kroah-Hartman
                   ` (38 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Al Viro, Marcel Holtmann

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

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

From: Al Viro <viro@zeniv.linux.org.uk>

commit 71bb99a02b32b4cc4265118e85f6035ca72923f0 upstream.

same story as cmtp

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/bluetooth/bnep/core.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -533,6 +533,9 @@ int bnep_add_connection(struct bnep_conn
 
 	BT_DBG("");
 
+	if (!l2cap_is_socket(sock))
+		return -EBADFD;
+
 	baswap((void *) dst, &l2cap_pi(sock->sk)->chan->dst);
 	baswap((void *) src, &l2cap_pi(sock->sk)->chan->src);
 

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

* [PATCH 3.18 13/50] Bluetooth: Fix potential NULL dereference
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (11 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 12/50] Bluetooth: bnep: bnep_add_connection() should verify that its dealing with l2cap socket Greg Kroah-Hartman
@ 2017-08-04 23:15 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 14/50] Bluetooth: cmtp: cmtp_add_connection() should verify that its dealing with l2cap socket Greg Kroah-Hartman
                   ` (37 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Patrik Flykt, Johan Hedberg, Marcel Holtmann

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

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

From: Johan Hedberg <johan.hedberg@intel.com>

commit 88d9077c27d0c1a7c022d9dc987640beecf23560 upstream.

The bnep_get_device function may be triggered by an ioctl just after a
connection has gone down. In such a case the respective L2CAP chan->conn
pointer will get set to NULL (by l2cap_chan_del). This patch adds a
missing NULL check for this case in the bnep_get_device() function.

Reported-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/bluetooth/bnep/core.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -511,13 +511,12 @@ static int bnep_session(void *arg)
 
 static struct device *bnep_get_device(struct bnep_session *session)
 {
-	struct hci_conn *conn;
+	struct l2cap_conn *conn = l2cap_pi(session->sock->sk)->chan->conn;
 
-	conn = l2cap_pi(session->sock->sk)->chan->conn->hcon;
-	if (!conn)
+	if (!conn || !conn->hcon)
 		return NULL;
 
-	return &conn->dev;
+	return &conn->hcon->dev;
 }
 
 static struct device_type bnep_type = {

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

* [PATCH 3.18 14/50] Bluetooth: cmtp: cmtp_add_connection() should verify that its dealing with l2cap socket
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (12 preceding siblings ...)
  2017-08-04 23:15 ` [PATCH 3.18 13/50] Bluetooth: Fix potential NULL dereference Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 15/50] net: phy: Do not perform software reset for Generic PHY Greg Kroah-Hartman
                   ` (36 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Al Viro, Marcel Holtmann

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

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

From: Al Viro <viro@zeniv.linux.org.uk>

commit 96c26653ce65bf84f3212f8b00d4316c1efcbf4c upstream.

... rather than relying on ciptool(8) never passing it anything else.  Give
it e.g. an AF_UNIX connected socket (from socketpair(2)) and it'll oops,
trying to evaluate &l2cap_pi(sock->sk)->chan->dst...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/bluetooth/cmtp/core.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -334,6 +334,9 @@ int cmtp_add_connection(struct cmtp_conn
 
 	BT_DBG("");
 
+	if (!l2cap_is_socket(sock))
+		return -EBADFD;
+
 	session = kzalloc(sizeof(struct cmtp_session), GFP_KERNEL);
 	if (!session)
 		return -ENOMEM;

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

* [PATCH 3.18 15/50] net: phy: Do not perform software reset for Generic PHY
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (13 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 14/50] Bluetooth: cmtp: cmtp_add_connection() should verify that its dealing with l2cap socket Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 16/50] isdn: Fix a sleep-in-atomic bug Greg Kroah-Hartman
                   ` (35 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Felix Fietkau, Florian Fainelli,
	David S. Miller, Amit Pundir

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

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

From: Florian Fainelli <f.fainelli@gmail.com>

commit 0878fff1f42c18e448ab5b8b4f6a3eb32365b5b6 upstream.

The Generic PHY driver is a catch-all PHY driver and it should preserve
whatever prior initialization has been done by boot loader or firmware
agents. For specific PHY device configuration it is expected that a
specialized PHY driver would take over that role.

Resetting the generic PHY was a bad idea that has lead to several
complaints and downstream workarounds e.g: in OpenWrt/LEDE so restore
the behavior prior to 87aa9f9c61ad ("net: phy: consolidate PHY
reset in phy_init_hw()").

Reported-by: Felix Fietkau <nbd@nbd.name>
Fixes: 87aa9f9c61ad ("net: phy: consolidate PHY reset in phy_init_hw()")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/phy/phy_device.c |    2 +-
 include/linux/phy.h          |    4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1341,7 +1341,7 @@ static struct phy_driver genphy_driver[]
 	.phy_id		= 0xffffffff,
 	.phy_id_mask	= 0xffffffff,
 	.name		= "Generic PHY",
-	.soft_reset	= genphy_soft_reset,
+	.soft_reset	= genphy_no_soft_reset,
 	.config_init	= genphy_config_init,
 	.features	= PHY_GBIT_FEATURES | SUPPORTED_MII |
 			  SUPPORTED_AUI | SUPPORTED_FIBRE |
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -737,6 +737,10 @@ int genphy_read_status(struct phy_device
 int genphy_suspend(struct phy_device *phydev);
 int genphy_resume(struct phy_device *phydev);
 int genphy_soft_reset(struct phy_device *phydev);
+static inline int genphy_no_soft_reset(struct phy_device *phydev)
+{
+	return 0;
+}
 void phy_driver_unregister(struct phy_driver *drv);
 void phy_drivers_unregister(struct phy_driver *drv, int n);
 int phy_driver_register(struct phy_driver *new_driver);

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

* [PATCH 3.18 16/50] isdn: Fix a sleep-in-atomic bug
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (14 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 15/50] net: phy: Do not perform software reset for Generic PHY Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 17/50] string: provide strscpy() Greg Kroah-Hartman
                   ` (34 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jia-Ju Bai, David S. Miller, Amit Pundir

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

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

From: Jia-Ju Bai <baijiaju1990@163.com>

commit e8f4ae85439f34bec3b0ab69223a41809dab28c9 upstream.

The driver may sleep under a spin lock, the function call path is:
isdn_ppp_mp_receive (acquire the lock)
  isdn_ppp_mp_reassembly
    isdn_ppp_push_higher
      isdn_ppp_decompress
        isdn_ppp_ccp_reset_trans
          isdn_ppp_ccp_reset_alloc_state
            kzalloc(GFP_KERNEL) --> may sleep

To fixed it, the "GFP_KERNEL" is replaced with "GFP_ATOMIC".

Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/isdn/i4l/isdn_ppp.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/isdn/i4l/isdn_ppp.c
+++ b/drivers/isdn/i4l/isdn_ppp.c
@@ -2364,7 +2364,7 @@ static struct ippp_ccp_reset_state *isdn
 		       id);
 		return NULL;
 	} else {
-		rs = kzalloc(sizeof(struct ippp_ccp_reset_state), GFP_KERNEL);
+		rs = kzalloc(sizeof(struct ippp_ccp_reset_state), GFP_ATOMIC);
 		if (!rs)
 			return NULL;
 		rs->state = CCPResetIdle;

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

* [PATCH 3.18 17/50] string: provide strscpy()
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (15 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 16/50] isdn: Fix a sleep-in-atomic bug Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 18/50] strscpy: zero any trailing garbage bytes in the destination Greg Kroah-Hartman
                   ` (33 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Chris Metcalf

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

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

From: Chris Metcalf <cmetcalf@ezchip.com>

commit 30035e45753b708e7d47a98398500ca005e02b86 upstream.

The strscpy() API is intended to be used instead of strlcpy(),
and instead of most uses of strncpy().

- Unlike strlcpy(), it doesn't read from memory beyond (src + size).

- Unlike strlcpy() or strncpy(), the API provides an easy way to check
  for destination buffer overflow: an -E2BIG error return value.

- The provided implementation is robust in the face of the source
  buffer being asynchronously changed during the copy, unlike the
  current implementation of strlcpy().

- Unlike strncpy(), the destination buffer will be NUL-terminated
  if the string in the source buffer is too long.

- Also unlike strncpy(), the destination buffer will not be updated
  beyond the NUL termination, avoiding strncpy's behavior of zeroing
  the entire tail end of the destination buffer.  (A memset() after
  the strscpy() can be used if this behavior is desired.)

- The implementation should be reasonably performant on all
  platforms since it uses the asm/word-at-a-time.h API rather than
  simple byte copy.  Kernel-to-kernel string copy is not considered
  to be performance critical in any case.

Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/string.h |    3 +
 lib/string.c           |   88 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+)

--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -25,6 +25,9 @@ extern char * strncpy(char *,const char
 #ifndef __HAVE_ARCH_STRLCPY
 size_t strlcpy(char *, const char *, size_t);
 #endif
+#ifndef __HAVE_ARCH_STRSCPY
+ssize_t __must_check strscpy(char *, const char *, size_t);
+#endif
 #ifndef __HAVE_ARCH_STRCAT
 extern char * strcat(char *, const char *);
 #endif
--- a/lib/string.c
+++ b/lib/string.c
@@ -27,6 +27,10 @@
 #include <linux/bug.h>
 #include <linux/errno.h>
 
+#include <asm/byteorder.h>
+#include <asm/word-at-a-time.h>
+#include <asm/page.h>
+
 #ifndef __HAVE_ARCH_STRNCASECMP
 /**
  * strncasecmp - Case insensitive, length-limited string comparison
@@ -154,6 +158,90 @@ size_t strlcpy(char *dest, const char *s
 EXPORT_SYMBOL(strlcpy);
 #endif
 
+#ifndef __HAVE_ARCH_STRSCPY
+/**
+ * strscpy - Copy a C-string into a sized buffer
+ * @dest: Where to copy the string to
+ * @src: Where to copy the string from
+ * @count: Size of destination buffer
+ *
+ * Copy the string, or as much of it as fits, into the dest buffer.
+ * The routine returns the number of characters copied (not including
+ * the trailing NUL) or -E2BIG if the destination buffer wasn't big enough.
+ * The behavior is undefined if the string buffers overlap.
+ * The destination buffer is always NUL terminated, unless it's zero-sized.
+ *
+ * Preferred to strlcpy() since the API doesn't require reading memory
+ * from the src string beyond the specified "count" bytes, and since
+ * the return value is easier to error-check than strlcpy()'s.
+ * In addition, the implementation is robust to the string changing out
+ * from underneath it, unlike the current strlcpy() implementation.
+ *
+ * Preferred to strncpy() since it always returns a valid string, and
+ * doesn't unnecessarily force the tail of the destination buffer to be
+ * zeroed.  If the zeroing is desired, it's likely cleaner to use strscpy()
+ * with an overflow test, then just memset() the tail of the dest buffer.
+ */
+ssize_t strscpy(char *dest, const char *src, size_t count)
+{
+	const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
+	size_t max = count;
+	long res = 0;
+
+	if (count == 0)
+		return -E2BIG;
+
+#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
+	/*
+	 * If src is unaligned, don't cross a page boundary,
+	 * since we don't know if the next page is mapped.
+	 */
+	if ((long)src & (sizeof(long) - 1)) {
+		size_t limit = PAGE_SIZE - ((long)src & (PAGE_SIZE - 1));
+		if (limit < max)
+			max = limit;
+	}
+#else
+	/* If src or dest is unaligned, don't do word-at-a-time. */
+	if (((long) dest | (long) src) & (sizeof(long) - 1))
+		max = 0;
+#endif
+
+	while (max >= sizeof(unsigned long)) {
+		unsigned long c, data;
+
+		c = *(unsigned long *)(src+res);
+		*(unsigned long *)(dest+res) = c;
+		if (has_zero(c, &data, &constants)) {
+			data = prep_zero_mask(c, data, &constants);
+			data = create_zero_mask(data);
+			return res + find_zero(data);
+		}
+		res += sizeof(unsigned long);
+		count -= sizeof(unsigned long);
+		max -= sizeof(unsigned long);
+	}
+
+	while (count) {
+		char c;
+
+		c = src[res];
+		dest[res] = c;
+		if (!c)
+			return res;
+		res++;
+		count--;
+	}
+
+	/* Hit buffer length without finding a NUL; force NUL-termination. */
+	if (res)
+		dest[res-1] = '\0';
+
+	return -E2BIG;
+}
+EXPORT_SYMBOL(strscpy);
+#endif
+
 #ifndef __HAVE_ARCH_STRCAT
 /**
  * strcat - Append one %NUL-terminated string to another

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

* [PATCH 3.18 18/50] strscpy: zero any trailing garbage bytes in the destination
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (16 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 17/50] string: provide strscpy() Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 19/50] isdn/i4l: fix buffer overflow Greg Kroah-Hartman
                   ` (32 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Chris Metcalf

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

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

From: Chris Metcalf <cmetcalf@ezchip.com>

commit 990486c8af044f89bddfbde1d1cf9fde449bedbf upstream.

It's possible that the destination can be shadowed in userspace
(as, for example, the perf buffers are now).  So we should take
care not to leak data that could be inspected by userspace.

Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 lib/string.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/lib/string.c
+++ b/lib/string.c
@@ -211,12 +211,13 @@ ssize_t strscpy(char *dest, const char *
 		unsigned long c, data;
 
 		c = *(unsigned long *)(src+res);
-		*(unsigned long *)(dest+res) = c;
 		if (has_zero(c, &data, &constants)) {
 			data = prep_zero_mask(c, data, &constants);
 			data = create_zero_mask(data);
+			*(unsigned long *)(dest+res) = c & zero_bytemask(data);
 			return res + find_zero(data);
 		}
+		*(unsigned long *)(dest+res) = c;
 		res += sizeof(unsigned long);
 		count -= sizeof(unsigned long);
 		max -= sizeof(unsigned long);

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

* [PATCH 3.18 19/50] isdn/i4l: fix buffer overflow
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (17 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 18/50] strscpy: zero any trailing garbage bytes in the destination Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 20/50] wil6210: fix deadlock when using fw_no_recovery option Greg Kroah-Hartman
                   ` (31 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jiten Thakkar, Annie Cherkaev,
	Karsten Keil, Kees Cook, Linus Torvalds

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

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

From: Annie Cherkaev <annie.cherk@gmail.com>

commit 9f5af546e6acc30f075828cb58c7f09665033967 upstream.

This fixes a potential buffer overflow in isdn_net.c caused by an
unbounded strcpy.

[ ISDN seems to be effectively unmaintained, and the I4L driver in
  particular is long deprecated, but in case somebody uses this..
    - Linus ]

Signed-off-by: Jiten Thakkar <jitenmt@gmail.com>
Signed-off-by: Annie Cherkaev <annie.cherk@gmail.com>
Cc: Karsten Keil <isdn@linux-pingi.de>
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/isdn/i4l/isdn_common.c |    1 +
 drivers/isdn/i4l/isdn_net.c    |    5 ++---
 2 files changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -1379,6 +1379,7 @@ isdn_ioctl(struct file *file, uint cmd,
 			if (arg) {
 				if (copy_from_user(bname, argp, sizeof(bname) - 1))
 					return -EFAULT;
+				bname[sizeof(bname)-1] = 0;
 			} else
 				return -EINVAL;
 			ret = mutex_lock_interruptible(&dev->mtx);
--- a/drivers/isdn/i4l/isdn_net.c
+++ b/drivers/isdn/i4l/isdn_net.c
@@ -2644,10 +2644,9 @@ isdn_net_newslave(char *parm)
 	char newname[10];
 
 	if (p) {
-		/* Slave-Name MUST not be empty */
-		if (!strlen(p + 1))
+		/* Slave-Name MUST not be empty or overflow 'newname' */
+		if (strscpy(newname, p + 1, sizeof(newname)) <= 0)
 			return NULL;
-		strcpy(newname, p + 1);
 		*p = 0;
 		/* Master must already exist */
 		if (!(n = isdn_net_findif(parm)))

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

* [PATCH 3.18 20/50] wil6210: fix deadlock when using fw_no_recovery option
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (18 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 19/50] isdn/i4l: fix buffer overflow Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 21/50] mailbox: always wait in mbox_send_message for blocking Tx mode Greg Kroah-Hartman
                   ` (30 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Lior David, Maya Erez, Kalle Valo,
	Amit Pundir

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

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

From: Lior David <qca_liord@qca.qualcomm.com>

commit dfb5b098e0f40b68aa07f2ec55f4dd762efefbfa upstream.

When FW crashes with no_fw_recovery option, driver
waits for manual recovery with wil->mutex held, this
can easily create deadlocks.
Fix the problem by moving the wait outside the lock.

Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/wireless/ath/wil6210/main.c |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

--- a/drivers/net/wireless/ath/wil6210/main.c
+++ b/drivers/net/wireless/ath/wil6210/main.c
@@ -240,18 +240,19 @@ static void wil_fw_error_worker(struct w
 
 	wil->last_fw_recovery = jiffies;
 
+	wil_info(wil, "fw error recovery requested (try %d)...\n",
+		 wil->recovery_count);
+	if (!no_fw_recovery)
+		wil->recovery_state = fw_recovery_running;
+	if (wil_wait_for_recovery(wil) != 0)
+		return;
+
 	mutex_lock(&wil->mutex);
 	switch (wdev->iftype) {
 	case NL80211_IFTYPE_STATION:
 	case NL80211_IFTYPE_P2P_CLIENT:
 	case NL80211_IFTYPE_MONITOR:
-		wil_info(wil, "fw error recovery requested (try %d)...\n",
-			 wil->recovery_count);
-		if (!no_fw_recovery)
-			wil->recovery_state = fw_recovery_running;
-		if (0 != wil_wait_for_recovery(wil))
-			break;
-
+		/* silent recovery, upper layers will see disconnect */
 		__wil_down(wil);
 		__wil_up(wil);
 		break;

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

* [PATCH 3.18 21/50] mailbox: always wait in mbox_send_message for blocking Tx mode
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (19 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 20/50] wil6210: fix deadlock when using fw_no_recovery option Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 22/50] mailbox: skip complete wait event if timer expired Greg Kroah-Hartman
                   ` (29 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alexey Klimov, Sudeep Holla,
	Jassi Brar, Amit Pundir

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

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

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

commit c61b781ee084e69855477d23dd33e7e6caad652c upstream.

There exists a race when msg_submit return immediately as there was an
active request being processed which may have completed just before it's
checked again in mbox_send_message. This will result in return to the
caller without waiting in mbox_send_message even when it's blocking Tx.

This patch fixes the issue by waiting for the completion always if Tx
is in blocking mode.

Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox")
Reported-by: Alexey Klimov <alexey.klimov@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Alexey Klimov <alexey.klimov@arm.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

--- a/drivers/mailbox/mailbox.c
+++ b/drivers/mailbox/mailbox.c
@@ -255,7 +255,7 @@ int mbox_send_message(struct mbox_chan *
 	if (chan->txdone_method	== TXDONE_BY_POLL)
 		poll_txdone((unsigned long)chan->mbox);
 
-	if (chan->cl->tx_block && chan->active_req) {
+	if (chan->cl->tx_block) {
 		unsigned long wait;
 		int ret;
 

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

* [PATCH 3.18 22/50] mailbox: skip complete wait event if timer expired
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (20 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 21/50] mailbox: always wait in mbox_send_message for blocking Tx mode Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 23/50] mailbox: handle empty message in tx_tick Greg Kroah-Hartman
                   ` (28 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alexey Klimov, Sudeep Holla,
	Jassi Brar, Amit Pundir

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

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

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

commit cc6eeaa3029a6dbcb4ad41b1f92876483bd88965 upstream.

If a wait_for_completion_timeout() call returns due to a timeout,
complete() can get called after returning from the wait which is
incorrect and can cause subsequent transmissions on a channel to fail.
Since the wait_for_completion_timeout() sees the completion variable
is non-zero caused by the erroneous/spurious complete() call, and
it immediately returns without waiting for the time as expected by the
client.

This patch fixes the issue by skipping complete() call for the timer
expiry.

Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox")
Reported-by: Alexey Klimov <alexey.klimov@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mailbox/mailbox.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/mailbox/mailbox.c
+++ b/drivers/mailbox/mailbox.c
@@ -103,7 +103,7 @@ static void tx_tick(struct mbox_chan *ch
 	if (mssg && chan->cl->tx_done)
 		chan->cl->tx_done(chan->cl, mssg, r);
 
-	if (chan->cl->tx_block)
+	if (r != -ETIME && chan->cl->tx_block)
 		complete(&chan->tx_complete);
 }
 
@@ -266,8 +266,8 @@ int mbox_send_message(struct mbox_chan *
 
 		ret = wait_for_completion_timeout(&chan->tx_complete, wait);
 		if (ret == 0) {
-			t = -EIO;
-			tx_tick(chan, -EIO);
+			t = -ETIME;
+			tx_tick(chan, t);
 		}
 	}
 

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

* [PATCH 3.18 23/50] mailbox: handle empty message in tx_tick
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (21 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 22/50] mailbox: skip complete wait event if timer expired Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 24/50] mpt3sas: Dont overreach ioc->reply_post[] during initialization Greg Kroah-Hartman
                   ` (27 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sudeep Holla, Jassi Brar, Amit Pundir

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

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

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

commit cb710ab1d8a23f68ff8f45aedf3e552bb90e70de upstream.

We already check if the message is empty before calling the client
tx_done callback. Calling completion on a wait event is also invalid
if the message is empty.

This patch moves the existing empty message check earlier.

Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

--- a/drivers/mailbox/mailbox.c
+++ b/drivers/mailbox/mailbox.c
@@ -99,8 +99,11 @@ static void tx_tick(struct mbox_chan *ch
 	/* Submit next message */
 	msg_submit(chan);
 
+	if (!mssg)
+		return;
+
 	/* Notify the client */
-	if (mssg && chan->cl->tx_done)
+	if (chan->cl->tx_done)
 		chan->cl->tx_done(chan->cl, mssg, r);
 
 	if (r != -ETIME && chan->cl->tx_block)

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

* [PATCH 3.18 24/50] mpt3sas: Dont overreach ioc->reply_post[] during initialization
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (22 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 23/50] mailbox: handle empty message in tx_tick Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 25/50] kaweth: fix firmware download Greg Kroah-Hartman
                   ` (26 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Calvin Owens, Johannes Thumshirn,
	Jens Axboe, Chaitra Basappa, Martin K. Petersen, Amit Pundir

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

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

From: Calvin Owens <calvinowens@fb.com>

commit 5ec8a1753bc29efa7e4b1391d691c9c719b30257 upstream.

In _base_make_ioc_operational(), we walk ioc->reply_queue_list and pull
a pointer out of successive elements of ioc->reply_post[] for each entry
in that list if RDPQ is enabled.

Since the code pulls the pointer for the next iteration at the bottom of
the loop, it triggers the a KASAN dump on the final iteration:

    BUG: KASAN: slab-out-of-bounds in _base_make_ioc_operational+0x47b7/0x47e0 [mpt3sas] at addr ffff880754816ab0
    Read of size 8 by task modprobe/305
    <snip>
    Call Trace:
     [<ffffffff81dfc591>] dump_stack+0x4d/0x6c
     [<ffffffff814c9689>] print_trailer+0xf9/0x150
     [<ffffffff814ceda4>] object_err+0x34/0x40
     [<ffffffff814d1231>] kasan_report_error+0x221/0x530
     [<ffffffff814d1673>] __asan_report_load8_noabort+0x43/0x50
     [<ffffffffa0043637>] _base_make_ioc_operational+0x47b7/0x47e0 [mpt3sas]
     [<ffffffffa0049a51>] mpt3sas_base_attach+0x1991/0x2120 [mpt3sas]
     [<ffffffffa0053c93>] _scsih_probe+0xeb3/0x16b0 [mpt3sas]
     [<ffffffff81ebd047>] local_pci_probe+0xc7/0x170
     [<ffffffff81ebf2cf>] pci_device_probe+0x20f/0x290
     [<ffffffff820d50cd>] really_probe+0x17d/0x600
     [<ffffffff820d56a3>] __driver_attach+0x153/0x190
     [<ffffffff820cffac>] bus_for_each_dev+0x11c/0x1a0
     [<ffffffff820d421d>] driver_attach+0x3d/0x50
     [<ffffffff820d378a>] bus_add_driver+0x44a/0x5f0
     [<ffffffff820d666c>] driver_register+0x18c/0x3b0
     [<ffffffff81ebcb76>] __pci_register_driver+0x156/0x200
     [<ffffffffa00c8135>] _mpt3sas_init+0x135/0x1000 [mpt3sas]
     [<ffffffff81000423>] do_one_initcall+0x113/0x2b0
     [<ffffffff813caa5a>] do_init_module+0x1d0/0x4d8
     [<ffffffff81273909>] load_module+0x6729/0x8dc0
     [<ffffffff81276123>] SYSC_init_module+0x183/0x1a0
     [<ffffffff8127625e>] SyS_init_module+0xe/0x10
     [<ffffffff828fe7d7>] entry_SYSCALL_64_fastpath+0x12/0x6a

Fix this by pulling the value at the beginning of the loop.

Signed-off-by: Calvin Owens <calvinowens@fb.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Jens Axboe <axboe@fb.com>
Acked-by: Chaitra Basappa <chaitra.basappa@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/scsi/mpt3sas/mpt3sas_base.c |   33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)

--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -4378,14 +4378,13 @@ _base_make_ioc_ready(struct MPT3SAS_ADAP
 static int
 _base_make_ioc_operational(struct MPT3SAS_ADAPTER *ioc, int sleep_flag)
 {
-	int r, i;
+	int r, i, index;
 	unsigned long	flags;
 	u32 reply_address;
 	u16 smid;
 	struct _tr_list *delayed_tr, *delayed_tr_next;
 	struct adapter_reply_queue *reply_q;
-	long reply_post_free;
-	u32 reply_post_free_sz, index = 0;
+	Mpi2ReplyDescriptorsUnion_t *reply_post_free_contig;
 
 	dinitprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name,
 	    __func__));
@@ -4456,27 +4455,27 @@ _base_make_ioc_operational(struct MPT3SA
 		_base_assign_reply_queues(ioc);
 
 	/* initialize Reply Post Free Queue */
-	reply_post_free_sz = ioc->reply_post_queue_depth *
-	    sizeof(Mpi2DefaultReplyDescriptor_t);
-	reply_post_free = (long)ioc->reply_post[index].reply_post_free;
+	index = 0;
+	reply_post_free_contig = ioc->reply_post[0].reply_post_free;
 	list_for_each_entry(reply_q, &ioc->reply_queue_list, list) {
+		/*
+		 * If RDPQ is enabled, switch to the next allocation.
+		 * Otherwise advance within the contiguous region.
+		 */
+		if (ioc->rdpq_array_enable) {
+			reply_q->reply_post_free =
+				ioc->reply_post[index++].reply_post_free;
+		} else {
+			reply_q->reply_post_free = reply_post_free_contig;
+			reply_post_free_contig += ioc->reply_post_queue_depth;
+		}
+
 		reply_q->reply_post_host_index = 0;
-		reply_q->reply_post_free = (Mpi2ReplyDescriptorsUnion_t *)
-		    reply_post_free;
 		for (i = 0; i < ioc->reply_post_queue_depth; i++)
 			reply_q->reply_post_free[i].Words =
 			    cpu_to_le64(ULLONG_MAX);
 		if (!_base_is_controller_msix_enabled(ioc))
 			goto skip_init_reply_post_free_queue;
-		/*
-		 * If RDPQ is enabled, switch to the next allocation.
-		 * Otherwise advance within the contiguous region.
-		 */
-		if (ioc->rdpq_array_enable)
-			reply_post_free = (long)
-			    ioc->reply_post[++index].reply_post_free;
-		else
-			reply_post_free += reply_post_free_sz;
 	}
  skip_init_reply_post_free_queue:
 

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

* [PATCH 3.18 25/50] kaweth: fix firmware download
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (23 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 24/50] mpt3sas: Dont overreach ioc->reply_post[] during initialization Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 26/50] kaweth: fix oops upon failed memory allocation Greg Kroah-Hartman
                   ` (25 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Oliver Neukum, David S. Miller, Amit Pundir

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

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

From: Oliver Neukum <oneukum@suse.com>

commit 60bcabd080f53561efa9288be45c128feda1a8bb upstream.

This fixes the oops discovered by the Umap2 project and Alan Stern.
The intf member needs to be set before the firmware is downloaded.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/usb/kaweth.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- a/drivers/net/usb/kaweth.c
+++ b/drivers/net/usb/kaweth.c
@@ -1029,6 +1029,7 @@ static int kaweth_probe(
 	kaweth = netdev_priv(netdev);
 	kaweth->dev = udev;
 	kaweth->net = netdev;
+	kaweth->intf = intf;
 
 	spin_lock_init(&kaweth->device_lock);
 	init_waitqueue_head(&kaweth->term_wait);
@@ -1139,8 +1140,6 @@ err_fw:
 
 	dev_dbg(dev, "Initializing net device.\n");
 
-	kaweth->intf = intf;
-
 	kaweth->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
 	if (!kaweth->tx_urb)
 		goto err_free_netdev;

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

* [PATCH 3.18 26/50] kaweth: fix oops upon failed memory allocation
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (24 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 25/50] kaweth: fix firmware download Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 27/50] ipv6: fix possible deadlock in ip6_fl_purge / ip6_fl_gc Greg Kroah-Hartman
                   ` (24 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Oliver Neukum, David S. Miller, Amit Pundir

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

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

From: Oliver Neukum <oneukum@suse.com>

commit 575ced7f8090c1a4e91e2daf8da9352a6a1fc7a7 upstream.

Just return an error upon failure.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/usb/kaweth.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

--- a/drivers/net/usb/kaweth.c
+++ b/drivers/net/usb/kaweth.c
@@ -1009,6 +1009,7 @@ static int kaweth_probe(
 	struct net_device *netdev;
 	const eth_addr_t bcast_addr = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
 	int result = 0;
+	int rv = -EIO;
 
 	dev_dbg(dev,
 		"Kawasaki Device Probe (Device number:%d): 0x%4.4x:0x%4.4x:0x%4.4x\n",
@@ -1049,6 +1050,10 @@ static int kaweth_probe(
 		/* Download the firmware */
 		dev_info(dev, "Downloading firmware...\n");
 		kaweth->firmware_buf = (__u8 *)__get_free_page(GFP_KERNEL);
+		if (!kaweth->firmware_buf) {
+			rv = -ENOMEM;
+			goto err_free_netdev;
+		}
 		if ((result = kaweth_download_firmware(kaweth,
 						      "kaweth/new_code.bin",
 						      100,
@@ -1209,7 +1214,7 @@ err_only_tx:
 err_free_netdev:
 	free_netdev(netdev);
 
-	return -EIO;
+	return rv;
 }
 
 /****************************************************************

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

* [PATCH 3.18 27/50] ipv6: fix possible deadlock in ip6_fl_purge / ip6_fl_gc
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (25 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 26/50] kaweth: fix oops upon failed memory allocation Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 28/50] net: sctp: fix race for one-to-many sockets in sendmsgs auto associate Greg Kroah-Hartman
                   ` (23 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jan Stancek, David S. Miller, Amit Pundir

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

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

From: Jan Stancek <jstancek@redhat.com>

commit 4762fb980465463734f02c67c67f40beb8903f73 upstream.

Use spin_lock_bh in ip6_fl_purge() to prevent following potentially
deadlock scenario between ip6_fl_purge() and ip6_fl_gc() timer.

  =================================
  [ INFO: inconsistent lock state ]
  3.19.0 #1 Not tainted
  ---------------------------------
  inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
  swapper/5/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
   (ip6_fl_lock){+.?...}, at: [<ffffffff8171155d>] ip6_fl_gc+0x2d/0x180
  {SOFTIRQ-ON-W} state was registered at:
    [<ffffffff810ee9a0>] __lock_acquire+0x4a0/0x10b0
    [<ffffffff810efd54>] lock_acquire+0xc4/0x2b0
    [<ffffffff81751d2d>] _raw_spin_lock+0x3d/0x80
    [<ffffffff81711798>] ip6_flowlabel_net_exit+0x28/0x110
    [<ffffffff815f9759>] ops_exit_list.isra.1+0x39/0x60
    [<ffffffff815fa320>] cleanup_net+0x100/0x1e0
    [<ffffffff810ad80a>] process_one_work+0x20a/0x830
    [<ffffffff810adf4b>] worker_thread+0x11b/0x460
    [<ffffffff810b42f4>] kthread+0x104/0x120
    [<ffffffff81752bfc>] ret_from_fork+0x7c/0xb0
  irq event stamp: 84640
  hardirqs last  enabled at (84640): [<ffffffff81752080>] _raw_spin_unlock_irq+0x30/0x50
  hardirqs last disabled at (84639): [<ffffffff81751eff>] _raw_spin_lock_irq+0x1f/0x80
  softirqs last  enabled at (84628): [<ffffffff81091ad1>] _local_bh_enable+0x21/0x50
  softirqs last disabled at (84629): [<ffffffff81093b7d>] irq_exit+0x12d/0x150

  other info that might help us debug this:
   Possible unsafe locking scenario:

         CPU0
         ----
    lock(ip6_fl_lock);
    <Interrupt>
      lock(ip6_fl_lock);

   *** DEADLOCK ***

Signed-off-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/ipv6/ip6_flowlabel.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/net/ipv6/ip6_flowlabel.c
+++ b/net/ipv6/ip6_flowlabel.c
@@ -172,7 +172,7 @@ static void __net_exit ip6_fl_purge(stru
 {
 	int i;
 
-	spin_lock(&ip6_fl_lock);
+	spin_lock_bh(&ip6_fl_lock);
 	for (i = 0; i <= FL_HASH_MASK; i++) {
 		struct ip6_flowlabel *fl;
 		struct ip6_flowlabel __rcu **flp;
@@ -190,7 +190,7 @@ static void __net_exit ip6_fl_purge(stru
 			flp = &fl->next;
 		}
 	}
-	spin_unlock(&ip6_fl_lock);
+	spin_unlock_bh(&ip6_fl_lock);
 }
 
 static struct ip6_flowlabel *fl_intern(struct net *net,

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

* [PATCH 3.18 28/50] net: sctp: fix race for one-to-many sockets in sendmsgs auto associate
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (26 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 27/50] ipv6: fix possible deadlock in ip6_fl_purge / ip6_fl_gc Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 29/50] sh_eth: Fix ethtool operation crash when net device is down Greg Kroah-Hartman
                   ` (22 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Daniel Borkmann, Vlad Yasevich,
	David S. Miller, Amit Pundir

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

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

From: Daniel Borkmann <dborkman@redhat.com>

commit 2061dcd6bff8b774b4fac8b0739b6be3f87bc9f2 upstream.

I.e. one-to-many sockets in SCTP are not required to explicitly
call into connect(2) or sctp_connectx(2) prior to data exchange.
Instead, they can directly invoke sendmsg(2) and the SCTP stack
will automatically trigger connection establishment through 4WHS
via sctp_primitive_ASSOCIATE(). However, this in its current
implementation is racy: INIT is being sent out immediately (as
it cannot be bundled anyway) and the rest of the DATA chunks are
queued up for later xmit when connection is established, meaning
sendmsg(2) will return successfully. This behaviour can result
in an undesired side-effect that the kernel made the application
think the data has already been transmitted, although none of it
has actually left the machine, worst case even after close(2)'ing
the socket.

Instead, when the association from client side has been shut down
e.g. first gracefully through SCTP_EOF and then close(2), the
client could afterwards still receive the server's INIT_ACK due
to a connection with higher latency. This INIT_ACK is then considered
out of the blue and hence responded with ABORT as there was no
alive assoc found anymore. This can be easily reproduced f.e.
with sctp_test application from lksctp. One way to fix this race
is to wait for the handshake to actually complete.

The fix defers waiting after sctp_primitive_ASSOCIATE() and
sctp_primitive_SEND() succeeded, so that DATA chunks cooked up
from sctp_sendmsg() have already been placed into the output
queue through the side-effect interpreter, and therefore can then
be bundeled together with COOKIE_ECHO control chunks.

strace from example application (shortened):

socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP) = 3
sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
           msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
           msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
           msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
           msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
           msg_iov(0)=[], msg_controllen=48, {cmsg_len=48, cmsg_level=0x84 /* SOL_??? */, cmsg_type=, ...},
           msg_flags=0}, 0) = 0 // graceful shutdown for SOCK_SEQPACKET via SCTP_EOF
close(3) = 0

tcpdump before patch (fooling the application):

22:33:36.306142 IP 192.168.1.114.41462 > 192.168.1.115.8888: sctp (1) [INIT] [init tag: 3879023686] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: 3139201684]
22:33:36.316619 IP 192.168.1.115.8888 > 192.168.1.114.41462: sctp (1) [INIT ACK] [init tag: 3345394793] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: 3380109591]
22:33:36.317600 IP 192.168.1.114.41462 > 192.168.1.115.8888: sctp (1) [ABORT]

tcpdump after patch:

14:28:58.884116 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [INIT] [init tag: 438593213] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: 3092969729]
14:28:58.888414 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [INIT ACK] [init tag: 381429855] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: 2141904492]
14:28:58.888638 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [COOKIE ECHO] , (2) [DATA] (B)(E) [TSN: 3092969729] [...]
14:28:58.893278 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [COOKIE ACK] , (2) [SACK] [cum ack 3092969729] [a_rwnd 106491] [#gap acks 0] [#dup tsns 0]
14:28:58.893591 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [DATA] (B)(E) [TSN: 3092969730] [...]
14:28:59.096963 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [SACK] [cum ack 3092969730] [a_rwnd 106496] [#gap acks 0] [#dup tsns 0]
14:28:59.097086 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [DATA] (B)(E) [TSN: 3092969731] [...] , (2) [DATA] (B)(E) [TSN: 3092969732] [...]
14:28:59.103218 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [SACK] [cum ack 3092969732] [a_rwnd 106486] [#gap acks 0] [#dup tsns 0]
14:28:59.103330 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [SHUTDOWN]
14:28:59.107793 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [SHUTDOWN ACK]
14:28:59.107890 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [SHUTDOWN COMPLETE]

Looks like this bug is from the pre-git history museum. ;)

Fixes: 08707d5482df ("lksctp-2_5_31-0_5_1.patch")
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Acked-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/sctp/socket.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -1604,7 +1604,7 @@ static int sctp_sendmsg(struct kiocb *io
 	sctp_assoc_t associd = 0;
 	sctp_cmsgs_t cmsgs = { NULL };
 	sctp_scope_t scope;
-	bool fill_sinfo_ttl = false;
+	bool fill_sinfo_ttl = false, wait_connect = false;
 	struct sctp_datamsg *datamsg;
 	int msg_flags = msg->msg_flags;
 	__u16 sinfo_flags = 0;
@@ -1944,6 +1944,7 @@ static int sctp_sendmsg(struct kiocb *io
 		if (err < 0)
 			goto out_free;
 
+		wait_connect = true;
 		pr_debug("%s: we associated primitively\n", __func__);
 	}
 
@@ -1981,6 +1982,11 @@ static int sctp_sendmsg(struct kiocb *io
 	sctp_datamsg_put(datamsg);
 	err = msg_len;
 
+	if (unlikely(wait_connect)) {
+		timeo = sock_sndtimeo(sk, msg_flags & MSG_DONTWAIT);
+		sctp_wait_for_connect(asoc, &timeo);
+	}
+
 	/* If we are already past ASSOCIATE, the lower
 	 * layers are responsible for association cleanup.
 	 */

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

* [PATCH 3.18 29/50] sh_eth: Fix ethtool operation crash when net device is down
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (27 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 28/50] net: sctp: fix race for one-to-many sockets in sendmsgs auto associate Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 30/50] net, sched: fix soft lockup in tc_classify Greg Kroah-Hartman
                   ` (21 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ben Hutchings, David S. Miller, Amit Pundir

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

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

From: Ben Hutchings <ben.hutchings@codethink.co.uk>

commit 4f9dce230b32eec45cec8c28cae61efdfa2f7d57 upstream.

The driver connects and disconnects the PHY device whenever the
net device is brought up and down.  The ethtool get_settings,
set_settings and nway_reset operations will dereference a null
or dangling pointer if called while it is down.

I think it would be preferable to keep the PHY connected, but there
may be good reasons not to.

As an immediate fix for this bug:
- Set the phydev pointer to NULL after disconnecting the PHY
- Change those three operations to return -ENODEV while the PHY is
  not connected

Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/ethernet/renesas/sh_eth.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -1832,6 +1832,9 @@ static int sh_eth_get_settings(struct ne
 	unsigned long flags;
 	int ret;
 
+	if (!mdp->phydev)
+		return -ENODEV;
+
 	spin_lock_irqsave(&mdp->lock, flags);
 	ret = phy_ethtool_gset(mdp->phydev, ecmd);
 	spin_unlock_irqrestore(&mdp->lock, flags);
@@ -1846,6 +1849,9 @@ static int sh_eth_set_settings(struct ne
 	unsigned long flags;
 	int ret;
 
+	if (!mdp->phydev)
+		return -ENODEV;
+
 	spin_lock_irqsave(&mdp->lock, flags);
 
 	/* disable tx and rx */
@@ -1880,6 +1886,9 @@ static int sh_eth_nway_reset(struct net_
 	unsigned long flags;
 	int ret;
 
+	if (!mdp->phydev)
+		return -ENODEV;
+
 	spin_lock_irqsave(&mdp->lock, flags);
 	ret = phy_start_aneg(mdp->phydev);
 	spin_unlock_irqrestore(&mdp->lock, flags);
@@ -2189,6 +2198,7 @@ static int sh_eth_close(struct net_devic
 	if (mdp->phydev) {
 		phy_stop(mdp->phydev);
 		phy_disconnect(mdp->phydev);
+		mdp->phydev = NULL;
 	}
 
 	free_irq(ndev->irq, ndev);

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

* [PATCH 3.18 30/50] net, sched: fix soft lockup in tc_classify
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (28 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 29/50] sh_eth: Fix ethtool operation crash when net device is down Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 31/50] ipmi/watchdog: fix watchdog timeout set on reboot Greg Kroah-Hartman
                   ` (20 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Shahar Klein, Daniel Borkmann,
	Cong Wang, Eric Dumazet, David S. Miller, Amit Pundir

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

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

From: Daniel Borkmann <daniel@iogearbox.net>

commit 628185cfddf1dfb701c4efe2cfd72cf5b09f5702 upstream.

Shahar reported a soft lockup in tc_classify(), where we run into an
endless loop when walking the classifier chain due to tp->next == tp
which is a state we should never run into. The issue only seems to
trigger under load in the tc control path.

What happens is that in tc_ctl_tfilter(), thread A allocates a new
tp, initializes it, sets tp_created to 1, and calls into tp->ops->change()
with it. In that classifier callback we had to unlock/lock the rtnl
mutex and returned with -EAGAIN. One reason why we need to drop there
is, for example, that we need to request an action module to be loaded.

This happens via tcf_exts_validate() -> tcf_action_init/_1() meaning
after we loaded and found the requested action, we need to redo the
whole request so we don't race against others. While we had to unlock
rtnl in that time, thread B's request was processed next on that CPU.
Thread B added a new tp instance successfully to the classifier chain.
When thread A returned grabbing the rtnl mutex again, propagating -EAGAIN
and destroying its tp instance which never got linked, we goto replay
and redo A's request.

This time when walking the classifier chain in tc_ctl_tfilter() for
checking for existing tp instances we had a priority match and found
the tp instance that was created and linked by thread B. Now calling
again into tp->ops->change() with that tp was successful and returned
without error.

tp_created was never cleared in the second round, thus kernel thinks
that we need to link it into the classifier chain (once again). tp and
*back point to the same object due to the match we had earlier on. Thus
for thread B's already public tp, we reset tp->next to tp itself and
link it into the chain, which eventually causes the mentioned endless
loop in tc_classify() once a packet hits the data path.

Fix is to clear tp_created at the beginning of each request, also when
we replay it. On the paths that can cause -EAGAIN we already destroy
the original tp instance we had and on replay we really need to start
from scratch. It seems that this issue was first introduced in commit
12186be7d2e1 ("net_cls: fix unconfigured struct tcf_proto keeps chaining
and avoid kernel panic when we use cls_cgroup").

Fixes: 12186be7d2e1 ("net_cls: fix unconfigured struct tcf_proto keeps chaining and avoid kernel panic when we use cls_cgroup")
Reported-by: Shahar Klein <shahark@mellanox.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Tested-by: Shahar Klein <shahark@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/sched/cls_api.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/net/sched/cls_api.c
+++ b/net/sched/cls_api.c
@@ -137,13 +137,15 @@ static int tc_ctl_tfilter(struct sk_buff
 	unsigned long cl;
 	unsigned long fh;
 	int err;
-	int tp_created = 0;
+	int tp_created;
 
 	if ((n->nlmsg_type != RTM_GETTFILTER) &&
 	    !netlink_ns_capable(skb, net->user_ns, CAP_NET_ADMIN))
 		return -EPERM;
 
 replay:
+	tp_created = 0;
+
 	err = nlmsg_parse(n, sizeof(*t), tca, TCA_MAX, NULL);
 	if (err < 0)
 		return err;

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

* [PATCH 3.18 31/50] ipmi/watchdog: fix watchdog timeout set on reboot
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (29 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 30/50] net, sched: fix soft lockup in tc_classify Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 32/50] dentry name snapshots Greg Kroah-Hartman
                   ` (19 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Valentin Vidic, Corey Minyard

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

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

From: Valentin Vidic <Valentin.Vidic@CARNet.hr>

commit 860f01e96981a68553f3ca49f574ff14fe955e72 upstream.

systemd by default starts watchdog on reboot and sets the timer to
ShutdownWatchdogSec=10min.  Reboot handler in ipmi_watchdog than reduces
the timer to 120s which is not enough time to boot a Xen machine with
a lot of RAM.  As a result the machine is rebooted the second time
during the long run of (XEN) Scrubbing Free RAM.....

Fix this by setting the timer to 120s only if it was previously
set to a low value.

Signed-off-by: Valentin Vidic <Valentin.Vidic@CARNet.hr>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/char/ipmi/ipmi_watchdog.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- a/drivers/char/ipmi/ipmi_watchdog.c
+++ b/drivers/char/ipmi/ipmi_watchdog.c
@@ -1156,10 +1156,11 @@ static int wdog_reboot_handler(struct no
 			ipmi_watchdog_state = WDOG_TIMEOUT_NONE;
 			ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB);
 		} else if (ipmi_watchdog_state != WDOG_TIMEOUT_NONE) {
-			/* Set a long timer to let the reboot happens, but
-			   reboot if it hangs, but only if the watchdog
+			/* Set a long timer to let the reboot happen or
+			   reset if it hangs, but only if the watchdog
 			   timer was already running. */
-			timeout = 120;
+			if (timeout < 120)
+				timeout = 120;
 			pretimeout = 0;
 			ipmi_watchdog_state = WDOG_TIMEOUT_RESET;
 			ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB);

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

* [PATCH 3.18 32/50] dentry name snapshots
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (30 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 31/50] ipmi/watchdog: fix watchdog timeout set on reboot Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 33/50] [media] v4l: s5c73m3: fix negation operator Greg Kroah-Hartman
                   ` (18 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Al Viro

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

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

From: Al Viro <viro@zeniv.linux.org.uk>

commit 49d31c2f389acfe83417083e1208422b4091cd9e upstream.

take_dentry_name_snapshot() takes a safe snapshot of dentry name;
if the name is a short one, it gets copied into caller-supplied
structure, otherwise an extra reference to external name is grabbed
(those are never modified).  In either case the pointer to stable
string is stored into the same structure.

dentry must be held by the caller of take_dentry_name_snapshot(),
but may be freely dropped afterwards - the snapshot will stay
until destroyed by release_dentry_name_snapshot().

Intended use:
	struct name_snapshot s;

	take_dentry_name_snapshot(&s, dentry);
	...
	access s.name
	...
	release_dentry_name_snapshot(&s);

Replaces fsnotify_oldname_...(), gets used in fsnotify to obtain the name
to pass down with event.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/dcache.c              |   27 +++++++++++++++++++++++++++
 fs/debugfs/inode.c       |   10 +++++-----
 fs/namei.c               |    8 ++++----
 fs/notify/fsnotify.c     |    8 ++++++--
 include/linux/dcache.h   |    7 +++++++
 include/linux/fsnotify.h |   31 -------------------------------
 6 files changed, 49 insertions(+), 42 deletions(-)

--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -3549,3 +3549,30 @@ void __init vfs_caches_init(unsigned lon
 	bdev_cache_init();
 	chrdev_init();
 }
+
+void take_dentry_name_snapshot(struct name_snapshot *name, struct dentry *dentry)
+{
+	spin_lock(&dentry->d_lock);
+	if (unlikely(dname_external(dentry))) {
+		struct external_name *p = external_name(dentry);
+		atomic_inc(&p->u.count);
+		spin_unlock(&dentry->d_lock);
+		name->name = p->name;
+	} else {
+		memcpy(name->inline_name, dentry->d_iname, DNAME_INLINE_LEN);
+		spin_unlock(&dentry->d_lock);
+		name->name = name->inline_name;
+	}
+}
+EXPORT_SYMBOL(take_dentry_name_snapshot);
+
+void release_dentry_name_snapshot(struct name_snapshot *name)
+{
+	if (unlikely(name->name != name->inline_name)) {
+		struct external_name *p;
+		p = container_of(name->name, struct external_name, name[0]);
+		if (unlikely(atomic_dec_and_test(&p->u.count)))
+			kfree_rcu(p, u.head);
+	}
+}
+EXPORT_SYMBOL(release_dentry_name_snapshot);
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -620,7 +620,7 @@ struct dentry *debugfs_rename(struct den
 {
 	int error;
 	struct dentry *dentry = NULL, *trap;
-	const char *old_name;
+	struct name_snapshot old_name;
 
 	trap = lock_rename(new_dir, old_dir);
 	/* Source or destination directories don't exist? */
@@ -635,19 +635,19 @@ struct dentry *debugfs_rename(struct den
 	if (IS_ERR(dentry) || dentry == trap || dentry->d_inode)
 		goto exit;
 
-	old_name = fsnotify_oldname_init(old_dentry->d_name.name);
+	take_dentry_name_snapshot(&old_name, old_dentry);
 
 	error = simple_rename(old_dir->d_inode, old_dentry, new_dir->d_inode,
 		dentry);
 	if (error) {
-		fsnotify_oldname_free(old_name);
+		release_dentry_name_snapshot(&old_name);
 		goto exit;
 	}
 	d_move(old_dentry, dentry);
-	fsnotify_move(old_dir->d_inode, new_dir->d_inode, old_name,
+	fsnotify_move(d_inode(old_dir), d_inode(new_dir), old_name.name,
 		S_ISDIR(old_dentry->d_inode->i_mode),
 		NULL, old_dentry);
-	fsnotify_oldname_free(old_name);
+	release_dentry_name_snapshot(&old_name);
 	unlock_rename(new_dir, old_dir);
 	dput(dentry);
 	return old_dentry;
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -4088,11 +4088,11 @@ int vfs_rename(struct inode *old_dir, st
 {
 	int error;
 	bool is_dir = d_is_dir(old_dentry);
-	const unsigned char *old_name;
 	struct inode *source = old_dentry->d_inode;
 	struct inode *target = new_dentry->d_inode;
 	bool new_is_dir = false;
 	unsigned max_links = new_dir->i_sb->s_max_links;
+	struct name_snapshot old_name;
 
 	if (source == target)
 		return 0;
@@ -4142,7 +4142,7 @@ int vfs_rename(struct inode *old_dir, st
 	if (error)
 		return error;
 
-	old_name = fsnotify_oldname_init(old_dentry->d_name.name);
+	take_dentry_name_snapshot(&old_name, old_dentry);
 	dget(new_dentry);
 	if (!is_dir || (flags & RENAME_EXCHANGE))
 		lock_two_nondirectories(source, target);
@@ -4203,14 +4203,14 @@ out:
 		mutex_unlock(&target->i_mutex);
 	dput(new_dentry);
 	if (!error) {
-		fsnotify_move(old_dir, new_dir, old_name, is_dir,
+		fsnotify_move(old_dir, new_dir, old_name.name, is_dir,
 			      !(flags & RENAME_EXCHANGE) ? target : NULL, old_dentry);
 		if (flags & RENAME_EXCHANGE) {
 			fsnotify_move(new_dir, old_dir, old_dentry->d_name.name,
 				      new_is_dir, NULL, new_dentry);
 		}
 	}
-	fsnotify_oldname_free(old_name);
+	release_dentry_name_snapshot(&old_name);
 
 	return error;
 }
--- a/fs/notify/fsnotify.c
+++ b/fs/notify/fsnotify.c
@@ -105,16 +105,20 @@ int __fsnotify_parent(struct path *path,
 	if (unlikely(!fsnotify_inode_watches_children(p_inode)))
 		__fsnotify_update_child_dentry_flags(p_inode);
 	else if (p_inode->i_fsnotify_mask & mask) {
+		struct name_snapshot name;
+
 		/* we are notifying a parent so come up with the new mask which
 		 * specifies these are events which came from a child. */
 		mask |= FS_EVENT_ON_CHILD;
 
+		take_dentry_name_snapshot(&name, dentry);
 		if (path)
 			ret = fsnotify(p_inode, mask, path, FSNOTIFY_EVENT_PATH,
-				       dentry->d_name.name, 0);
+				       name.name, 0);
 		else
 			ret = fsnotify(p_inode, mask, dentry->d_inode, FSNOTIFY_EVENT_INODE,
-				       dentry->d_name.name, 0);
+				       name.name, 0);
+		release_dentry_name_snapshot(&name);
 	}
 
 	dput(parent);
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -527,4 +527,11 @@ static inline struct dentry *d_backing_d
 	return upper;
 }
 
+struct name_snapshot {
+	const char *name;
+	char inline_name[DNAME_INLINE_LEN];
+};
+void take_dentry_name_snapshot(struct name_snapshot *, struct dentry *);
+void release_dentry_name_snapshot(struct name_snapshot *);
+
 #endif	/* __LINUX_DCACHE_H */
--- a/include/linux/fsnotify.h
+++ b/include/linux/fsnotify.h
@@ -310,35 +310,4 @@ static inline void fsnotify_change(struc
 	}
 }
 
-#if defined(CONFIG_FSNOTIFY)	/* notify helpers */
-
-/*
- * fsnotify_oldname_init - save off the old filename before we change it
- */
-static inline const unsigned char *fsnotify_oldname_init(const unsigned char *name)
-{
-	return kstrdup(name, GFP_KERNEL);
-}
-
-/*
- * fsnotify_oldname_free - free the name we got from fsnotify_oldname_init
- */
-static inline void fsnotify_oldname_free(const unsigned char *old_name)
-{
-	kfree(old_name);
-}
-
-#else	/* CONFIG_FSNOTIFY */
-
-static inline const char *fsnotify_oldname_init(const unsigned char *name)
-{
-	return NULL;
-}
-
-static inline void fsnotify_oldname_free(const unsigned char *old_name)
-{
-}
-
-#endif	/*  CONFIG_FSNOTIFY */
-
 #endif	/* _LINUX_FS_NOTIFY_H */

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

* [PATCH 3.18 33/50] [media] v4l: s5c73m3: fix negation operator
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (31 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 32/50] dentry name snapshots Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 34/50] pstore: Allow prz to control need for locking Greg Kroah-Hartman
                   ` (17 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, David Binderman, Andrzej Hajda,
	Hans Verkuil, Mauro Carvalho Chehab

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

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

From: Andrzej Hajda <a.hajda@samsung.com>

commit a2370ba2752538404e363346b339869c9973aeac upstream.

Bool values should be negated using logical operators. Using bitwise operators
results in unexpected and possibly incorrect results.

Reported-by: David Binderman <dcb314@hotmail.com>
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/media/i2c/s5c73m3/s5c73m3-ctrls.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/media/i2c/s5c73m3/s5c73m3-ctrls.c
+++ b/drivers/media/i2c/s5c73m3/s5c73m3-ctrls.c
@@ -211,7 +211,7 @@ static int s5c73m3_3a_lock(struct s5c73m
 	}
 
 	if ((ctrl->val ^ ctrl->cur.val) & V4L2_LOCK_FOCUS)
-		ret = s5c73m3_af_run(state, ~af_lock);
+		ret = s5c73m3_af_run(state, !af_lock);
 
 	return ret;
 }

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

* [PATCH 3.18 34/50] pstore: Allow prz to control need for locking
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (32 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 33/50] [media] v4l: s5c73m3: fix negation operator Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 35/50] pstore: Correctly initialize spinlock and flags Greg Kroah-Hartman
                   ` (16 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Joel Fernandes, Kees Cook

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

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

From: Joel Fernandes <joelaf@google.com>

commit 663deb47880f2283809669563c5a52ac7c6aef1a upstream.

In preparation of not locking at all for certain buffers depending on if
there's contention, make locking optional depending on the initialization
of the prz.

Signed-off-by: Joel Fernandes <joelaf@google.com>
[kees: moved locking flag into prz instead of via caller arguments]
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/pstore/ram.c            |    5 +++--
 fs/pstore/ram_core.c       |   24 +++++++++++++++---------
 include/linux/pstore_ram.h |   10 +++++++++-
 3 files changed, 27 insertions(+), 12 deletions(-)

--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -365,7 +365,7 @@ static int ramoops_init_przs(struct devi
 
 		cxt->przs[i] = persistent_ram_new(*paddr, sz, 0,
 						  &cxt->ecc_info,
-						  cxt->memtype);
+						  cxt->memtype, 0);
 		if (IS_ERR(cxt->przs[i])) {
 			err = PTR_ERR(cxt->przs[i]);
 			dev_err(dev, "failed to request mem region (0x%zx@0x%llx): %d\n",
@@ -395,7 +395,8 @@ static int ramoops_init_prz(struct devic
 		return -ENOMEM;
 	}
 
-	*prz = persistent_ram_new(*paddr, sz, sig, &cxt->ecc_info, cxt->memtype);
+	*prz = persistent_ram_new(*paddr, sz, sig, &cxt->ecc_info,
+				  cxt->memtype, 0);
 	if (IS_ERR(*prz)) {
 		int err = PTR_ERR(*prz);
 
--- a/fs/pstore/ram_core.c
+++ b/fs/pstore/ram_core.c
@@ -85,9 +85,10 @@ static size_t buffer_start_add_locked(st
 {
 	int old;
 	int new;
-	unsigned long flags;
+	unsigned long flags = 0;
 
-	raw_spin_lock_irqsave(&prz->buffer_lock, flags);
+	if (!(prz->flags & PRZ_FLAG_NO_LOCK))
+		raw_spin_lock_irqsave(&prz->buffer_lock, flags);
 
 	old = atomic_read(&prz->buffer->start);
 	new = old + a;
@@ -95,7 +96,8 @@ static size_t buffer_start_add_locked(st
 		new -= prz->buffer_size;
 	atomic_set(&prz->buffer->start, new);
 
-	raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
+	if (!(prz->flags & PRZ_FLAG_NO_LOCK))
+		raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
 
 	return old;
 }
@@ -105,9 +107,10 @@ static void buffer_size_add_locked(struc
 {
 	size_t old;
 	size_t new;
-	unsigned long flags;
+	unsigned long flags = 0;
 
-	raw_spin_lock_irqsave(&prz->buffer_lock, flags);
+	if (!(prz->flags & PRZ_FLAG_NO_LOCK))
+		raw_spin_lock_irqsave(&prz->buffer_lock, flags);
 
 	old = atomic_read(&prz->buffer->size);
 	if (old == prz->buffer_size)
@@ -119,7 +122,8 @@ static void buffer_size_add_locked(struc
 	atomic_set(&prz->buffer->size, new);
 
 exit:
-	raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
+	if (!(prz->flags & PRZ_FLAG_NO_LOCK))
+		raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
 }
 
 static size_t (*buffer_start_add)(struct persistent_ram_zone *, size_t) = buffer_start_add_atomic;
@@ -459,7 +463,8 @@ static int persistent_ram_buffer_map(phy
 }
 
 static int persistent_ram_post_init(struct persistent_ram_zone *prz, u32 sig,
-				    struct persistent_ram_ecc_info *ecc_info)
+				    struct persistent_ram_ecc_info *ecc_info,
+				    unsigned long flags)
 {
 	int ret;
 
@@ -488,6 +493,7 @@ static int persistent_ram_post_init(stru
 	prz->buffer->sig = sig;
 	persistent_ram_zap(prz);
 	prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
+	prz->flags = flags;
 
 	return 0;
 }
@@ -512,7 +518,7 @@ void persistent_ram_free(struct persiste
 
 struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size,
 			u32 sig, struct persistent_ram_ecc_info *ecc_info,
-			unsigned int memtype)
+			unsigned int memtype, u32 flags)
 {
 	struct persistent_ram_zone *prz;
 	int ret = -ENOMEM;
@@ -527,7 +533,7 @@ struct persistent_ram_zone *persistent_r
 	if (ret)
 		goto err;
 
-	ret = persistent_ram_post_init(prz, sig, ecc_info);
+	ret = persistent_ram_post_init(prz, sig, ecc_info, flags);
 	if (ret)
 		goto err;
 
--- a/include/linux/pstore_ram.h
+++ b/include/linux/pstore_ram.h
@@ -23,6 +23,13 @@
 #include <linux/types.h>
 #include <linux/init.h>
 
+/*
+ * Choose whether access to the RAM zone requires locking or not.  If a zone
+ * can be written to from different CPUs like with ftrace for example, then
+ * PRZ_FLAG_NO_LOCK is used. For all other cases, locking is required.
+ */
+#define PRZ_FLAG_NO_LOCK	BIT(0)
+
 struct persistent_ram_buffer;
 struct rs_control;
 
@@ -39,6 +46,7 @@ struct persistent_ram_zone {
 	void *vaddr;
 	struct persistent_ram_buffer *buffer;
 	size_t buffer_size;
+	u32 flags;
 	raw_spinlock_t buffer_lock;
 
 	/* ECC correction */
@@ -55,7 +63,7 @@ struct persistent_ram_zone {
 
 struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size,
 			u32 sig, struct persistent_ram_ecc_info *ecc_info,
-			unsigned int memtype);
+			unsigned int memtype, u32 flags);
 void persistent_ram_free(struct persistent_ram_zone *prz);
 void persistent_ram_zap(struct persistent_ram_zone *prz);
 

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

* [PATCH 3.18 35/50] pstore: Correctly initialize spinlock and flags
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (33 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 34/50] pstore: Allow prz to control need for locking Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 36/50] pstore: Use dynamic spinlock initializer Greg Kroah-Hartman
                   ` (15 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Brian Norris, Kees Cook

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

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

From: Kees Cook <keescook@chromium.org>

commit 76d5692a58031696e282384cbd893832bc92bd76 upstream.

The ram backend wasn't always initializing its spinlock correctly. Since
it was coming from kzalloc memory, though, it was harmless on
architectures that initialize unlocked spinlocks to 0 (at least x86 and
ARM). This also fixes a possibly ignored flag setting too.

When running under CONFIG_DEBUG_SPINLOCK, the following Oops was visible:

[    0.760836] persistent_ram: found existing buffer, size 29988, start 29988
[    0.765112] persistent_ram: found existing buffer, size 30105, start 30105
[    0.769435] persistent_ram: found existing buffer, size 118542, start 118542
[    0.785960] persistent_ram: found existing buffer, size 0, start 0
[    0.786098] persistent_ram: found existing buffer, size 0, start 0
[    0.786131] pstore: using zlib compression
[    0.790716] BUG: spinlock bad magic on CPU#0, swapper/0/1
[    0.790729]  lock: 0xffffffc0d1ca9bb0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
[    0.790742] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.10.0-rc2+ #913
[    0.790747] Hardware name: Google Kevin (DT)
[    0.790750] Call trace:
[    0.790768] [<ffffff900808ae88>] dump_backtrace+0x0/0x2bc
[    0.790780] [<ffffff900808b164>] show_stack+0x20/0x28
[    0.790794] [<ffffff9008460ee0>] dump_stack+0xa4/0xcc
[    0.790809] [<ffffff9008113cfc>] spin_dump+0xe0/0xf0
[    0.790821] [<ffffff9008113d3c>] spin_bug+0x30/0x3c
[    0.790834] [<ffffff9008113e28>] do_raw_spin_lock+0x50/0x1b8
[    0.790846] [<ffffff9008a2d2ec>] _raw_spin_lock_irqsave+0x54/0x6c
[    0.790862] [<ffffff90083ac3b4>] buffer_size_add+0x48/0xcc
[    0.790875] [<ffffff90083acb34>] persistent_ram_write+0x60/0x11c
[    0.790888] [<ffffff90083aab1c>] ramoops_pstore_write_buf+0xd4/0x2a4
[    0.790900] [<ffffff90083a9d3c>] pstore_console_write+0xf0/0x134
[    0.790912] [<ffffff900811c304>] console_unlock+0x48c/0x5e8
[    0.790923] [<ffffff900811da18>] register_console+0x3b0/0x4d4
[    0.790935] [<ffffff90083aa7d0>] pstore_register+0x1a8/0x234
[    0.790947] [<ffffff90083ac250>] ramoops_probe+0x6b8/0x7d4
[    0.790961] [<ffffff90085ca548>] platform_drv_probe+0x7c/0xd0
[    0.790972] [<ffffff90085c76ac>] driver_probe_device+0x1b4/0x3bc
[    0.790982] [<ffffff90085c7ac8>] __device_attach_driver+0xc8/0xf4
[    0.790996] [<ffffff90085c4bfc>] bus_for_each_drv+0xb4/0xe4
[    0.791006] [<ffffff90085c7414>] __device_attach+0xd0/0x158
[    0.791016] [<ffffff90085c7b18>] device_initial_probe+0x24/0x30
[    0.791026] [<ffffff90085c648c>] bus_probe_device+0x50/0xe4
[    0.791038] [<ffffff90085c35b8>] device_add+0x3a4/0x76c
[    0.791051] [<ffffff90087d0e84>] of_device_add+0x74/0x84
[    0.791062] [<ffffff90087d19b8>] of_platform_device_create_pdata+0xc0/0x100
[    0.791073] [<ffffff90087d1a2c>] of_platform_device_create+0x34/0x40
[    0.791086] [<ffffff900903c910>] of_platform_default_populate_init+0x58/0x78
[    0.791097] [<ffffff90080831fc>] do_one_initcall+0x88/0x160
[    0.791109] [<ffffff90090010ac>] kernel_init_freeable+0x264/0x31c
[    0.791123] [<ffffff9008a25bd0>] kernel_init+0x18/0x11c
[    0.791133] [<ffffff9008082ec0>] ret_from_fork+0x10/0x50
[    0.793717] console [pstore-1] enabled
[    0.797845] pstore: Registered ramoops as persistent store backend
[    0.804647] ramoops: attached 0x100000@0xf7edc000, ecc: 0/0

Fixes: 663deb47880f ("pstore: Allow prz to control need for locking")
Fixes: 109704492ef6 ("pstore: Make spinlock per zone instead of global")
Reported-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/pstore/ram_core.c |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

--- a/fs/pstore/ram_core.c
+++ b/fs/pstore/ram_core.c
@@ -463,8 +463,7 @@ static int persistent_ram_buffer_map(phy
 }
 
 static int persistent_ram_post_init(struct persistent_ram_zone *prz, u32 sig,
-				    struct persistent_ram_ecc_info *ecc_info,
-				    unsigned long flags)
+				    struct persistent_ram_ecc_info *ecc_info)
 {
 	int ret;
 
@@ -490,10 +489,9 @@ static int persistent_ram_post_init(stru
 			 prz->buffer->sig);
 	}
 
+	/* Rewind missing or invalid memory area. */
 	prz->buffer->sig = sig;
 	persistent_ram_zap(prz);
-	prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
-	prz->flags = flags;
 
 	return 0;
 }
@@ -529,11 +527,15 @@ struct persistent_ram_zone *persistent_r
 		goto err;
 	}
 
+	/* Initialize general buffer state. */
+	prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
+	prz->flags = flags;
+
 	ret = persistent_ram_buffer_map(start, size, prz, memtype);
 	if (ret)
 		goto err;
 
-	ret = persistent_ram_post_init(prz, sig, ecc_info, flags);
+	ret = persistent_ram_post_init(prz, sig, ecc_info);
 	if (ret)
 		goto err;
 

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

* [PATCH 3.18 36/50] pstore: Use dynamic spinlock initializer
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (34 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 35/50] pstore: Correctly initialize spinlock and flags Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 37/50] net: skb_needs_check() accepts CHECKSUM_NONE for tx Greg Kroah-Hartman
                   ` (14 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Kees Cook

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

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

From: Kees Cook <keescook@chromium.org>

commit e9a330c4289f2ba1ca4bf98c2b430ab165a8931b upstream.

The per-prz spinlock should be using the dynamic initializer so that
lockdep can correctly track it. Without this, under lockdep, we get a
warning at boot that the lock is in non-static memory.

Fixes: 109704492ef6 ("pstore: Make spinlock per zone instead of global")
Fixes: 76d5692a5803 ("pstore: Correctly initialize spinlock and flags")
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

--- a/fs/pstore/ram_core.c
+++ b/fs/pstore/ram_core.c
@@ -528,7 +528,7 @@ struct persistent_ram_zone *persistent_r
 	}
 
 	/* Initialize general buffer state. */
-	prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
+	raw_spin_lock_init(&prz->buffer_lock);
 	prz->flags = flags;
 
 	ret = persistent_ram_buffer_map(start, size, prz, memtype);

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

* [PATCH 3.18 37/50] net: skb_needs_check() accepts CHECKSUM_NONE for tx
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (35 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 36/50] pstore: Use dynamic spinlock initializer Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 38/50] tpm: fix a kernel memory leak in tpm-sysfs.c Greg Kroah-Hartman
                   ` (13 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eric Dumazet, Willem de Bruijn,
	David S. Miller

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

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

From: Eric Dumazet <edumazet@google.com>

commit 6e7bc478c9a006c701c14476ec9d389a484b4864 upstream.

My recent change missed fact that UFO would perform a complete
UDP checksum before segmenting in frags.

In this case skb->ip_summed is set to CHECKSUM_NONE.

We need to add this valid case to skb_needs_check()

Fixes: b2504a5dbef3 ("net: reduce skb_warn_bad_offload() noise")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/core/dev.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2435,9 +2435,10 @@ EXPORT_SYMBOL(skb_mac_gso_segment);
 static inline bool skb_needs_check(struct sk_buff *skb, bool tx_path)
 {
 	if (tx_path)
-		return skb->ip_summed != CHECKSUM_PARTIAL;
-	else
-		return skb->ip_summed == CHECKSUM_NONE;
+		return skb->ip_summed != CHECKSUM_PARTIAL &&
+		       skb->ip_summed != CHECKSUM_NONE;
+
+	return skb->ip_summed == CHECKSUM_NONE;
 }
 
 /**

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

* [PATCH 3.18 38/50] tpm: fix a kernel memory leak in tpm-sysfs.c
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (36 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 37/50] net: skb_needs_check() accepts CHECKSUM_NONE for tx Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 39/50] x86/mce/AMD: Make the init code more robust Greg Kroah-Hartman
                   ` (12 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jason Gunthorpe, Stefan Berger,
	Jarkko Sakkinen, James Morris

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

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

From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>

commit 13b47cfcfc60495cde216eef4c01040d76174cbe upstream.

While cleaning up sysfs callback that prints EK we discovered a kernel
memory leak. This commit fixes the issue by zeroing the buffer used for
TPM command/response.

The leak happen when we use either tpm_vtpm_proxy, tpm_ibmvtpm or
xen-tpmfront.

Cc: stable@vger.kernel.org
Fixes: 0883743825e3 ("TPM: sysfs functions consolidation")
Reported-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Tested-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: James Morris <james.l.morris@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


---
 drivers/char/tpm/tpm-sysfs.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/char/tpm/tpm-sysfs.c
+++ b/drivers/char/tpm/tpm-sysfs.c
@@ -57,6 +57,8 @@ static ssize_t pubek_show(struct device
 
 	struct tpm_chip *chip = dev_get_drvdata(dev);
 
+	memset(&tpm_cmd, 0, sizeof(tpm_cmd));
+
 	tpm_cmd.header.in = tpm_readpubek_header;
 	err = transmit_cmd(chip, &tpm_cmd, READ_PUBEK_RESULT_SIZE,
 			   "attempting to read the PUBEK");

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

* [PATCH 3.18 39/50] x86/mce/AMD: Make the init code more robust
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (37 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 38/50] tpm: fix a kernel memory leak in tpm-sysfs.c Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 40/50] r8169: add support for RTL8168 series add-on card Greg Kroah-Hartman
                   ` (11 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Markus Trippelsdorf, Boris Ostrovsky,
	Thomas Gleixner, Linus Torvalds, Sasha Levin

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

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

From: Thomas Gleixner <tglx@linutronix.de>


[ Upstream commit 0dad3a3014a0b9e72521ff44f17e0054f43dcdea ]

If mce_device_init() fails then the mce device pointer is NULL and the
AMD mce code happily dereferences it.

Add a sanity check.

Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Reported-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/x86/kernel/cpu/mcheck/mce_amd.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
@@ -573,6 +573,9 @@ static int threshold_create_bank(unsigne
 	const char *name = th_names[bank];
 	int err = 0;
 
+	if (!dev)
+		return -ENODEV;
+
 	if (is_shared_bank(bank)) {
 		nb = node_to_amd_nb(amd_get_nb_id(cpu));
 

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

* [PATCH 3.18 40/50] r8169: add support for RTL8168 series add-on card.
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (38 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 39/50] x86/mce/AMD: Make the init code more robust Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 42/50] ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output Greg Kroah-Hartman
                   ` (10 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chun-Hao Lin, David S. Miller, Sasha Levin

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

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

From: Chun-Hao Lin <hau@realtek.com>


[ Upstream commit 610c908773d30907c950ca3b2ee8ac4b2813537b ]

This chip is the same as RTL8168, but its device id is 0x8161.

Signed-off-by: Chun-Hao Lin <hau@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/realtek/r8169.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -326,6 +326,7 @@ enum cfg_version {
 static const struct pci_device_id rtl8169_pci_tbl[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK,	0x8129), 0, 0, RTL_CFG_0 },
 	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK,	0x8136), 0, 0, RTL_CFG_2 },
+	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK,	0x8161), 0, 0, RTL_CFG_1 },
 	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK,	0x8167), 0, 0, RTL_CFG_0 },
 	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK,	0x8168), 0, 0, RTL_CFG_1 },
 	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK,	0x8169), 0, 0, RTL_CFG_0 },

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

* [PATCH 3.18 42/50] ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (39 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 40/50] r8169: add support for RTL8168 series add-on card Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 43/50] net/mlx4: Remove BUG_ON from ICM allocation routine Greg Kroah-Hartman
                   ` (9 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Zheng Li, David S. Miller, Sasha Levin

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

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

From: Zheng Li <james.z.li@ericsson.com>


[ Upstream commit e4c5e13aa45c23692e4acf56f0b3533f328199b2 ]

There is an inconsistent conditional judgement between __ip6_append_data
and ip6_finish_output functions, the variable length in __ip6_append_data
just include the length of application's payload and udp6 header, don't
include the length of ipv6 header, but in ip6_finish_output use
(skb->len > ip6_skb_dst_mtu(skb)) as judgement, and skb->len include the
length of ipv6 header.

That causes some particular application's udp6 payloads whose length are
between (MTU - IPv6 Header) and MTU were fragmented by ip6_fragment even
though the rst->dev support UFO feature.

Add the length of ipv6 header to length in __ip6_append_data to keep
consistent conditional judgement as ip6_finish_output for ip6 fragment.

Signed-off-by: Zheng Li <james.z.li@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ipv6/ip6_output.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1305,7 +1305,7 @@ emsgsize:
 
 	skb = skb_peek_tail(&sk->sk_write_queue);
 	cork->length += length;
-	if (((length > mtu) ||
+	if ((((length + fragheaderlen) > mtu) ||
 	     (skb && skb_is_gso(skb))) &&
 	    (sk->sk_protocol == IPPROTO_UDP) &&
 	    (rt->dst.dev->features & NETIF_F_UFO) &&

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

* [PATCH 3.18 43/50] net/mlx4: Remove BUG_ON from ICM allocation routine
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (40 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 42/50] ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 44/50] drm/msm: Ensure that the hardware write pointer is valid Greg Kroah-Hartman
                   ` (8 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ozgur Karatas, Leon Romanovsky,
	Tariq Toukan, David S. Miller, Sasha Levin

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

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

From: Leon Romanovsky <leonro@mellanox.com>


[ Upstream commit c1d5f8ff80ea84768f5fae1ca9d1abfbb5e6bbaa ]

This patch removes BUG_ON() macro from mlx4_alloc_icm_coherent()
by checking DMA address alignment in advance and performing proper
folding in case of error.

Fixes: 5b0bf5e25efe ("mlx4_core: Support ICM tables in coherent memory")
Reported-by: Ozgur Karatas <okaratas@member.fsf.org>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/mellanox/mlx4/icm.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

--- a/drivers/net/ethernet/mellanox/mlx4/icm.c
+++ b/drivers/net/ethernet/mellanox/mlx4/icm.c
@@ -117,8 +117,13 @@ static int mlx4_alloc_icm_coherent(struc
 	if (!buf)
 		return -ENOMEM;
 
+	if (offset_in_page(buf)) {
+		dma_free_coherent(dev, PAGE_SIZE << order,
+				  buf, sg_dma_address(mem));
+		return -ENOMEM;
+	}
+
 	sg_set_buf(mem, buf, PAGE_SIZE << order);
-	BUG_ON(mem->offset);
 	sg_dma_len(mem) = PAGE_SIZE << order;
 	return 0;
 }

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

* [PATCH 3.18 44/50] drm/msm: Ensure that the hardware write pointer is valid
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (41 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 43/50] net/mlx4: Remove BUG_ON from ICM allocation routine Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 45/50] drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set Greg Kroah-Hartman
                   ` (7 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jordan Crouse, Rob Clark, Sasha Levin

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

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

From: Jordan Crouse <jcrouse@codeaurora.org>


[ Upstream commit 88b333b0ed790f9433ff542b163bf972953b74d3 ]

Currently the value written to CP_RB_WPTR is calculated on the fly as
(rb->next - rb->start). But as the code is designed rb->next is wrapped
before writing the commands so if a series of commands happened to
fit perfectly in the ringbuffer, rb->next would end up being equal to
rb->size / 4 and thus result in an out of bounds address to CP_RB_WPTR.

The easiest way to fix this is to mask WPTR when writing it to the
hardware; it makes the hardware happy and the rest of the ringbuffer
math appears to work and there isn't any point in upsetting anything.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
[squash in is_power_of_2() check]
Signed-off-by: Rob Clark <robdclark@gmail.com>

Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/msm/adreno/adreno_gpu.c |    9 ++++++++-
 drivers/gpu/drm/msm/msm_ringbuffer.c    |    3 ++-
 2 files changed, 10 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -199,7 +199,14 @@ void adreno_flush(struct msm_gpu *gpu)
 void adreno_idle(struct msm_gpu *gpu)
 {
 	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
-	uint32_t wptr = get_wptr(gpu->rb);
+	uint32_t wptr;
+
+	/*
+	 * Mask wptr value that we calculate to fit in the HW range. This is
+	 * to account for the possibility that the last command fit exactly into
+	 * the ringbuffer and rb->next hasn't wrapped to zero yet
+	 */
+	wptr = get_wptr(gpu->rb) & ((gpu->rb->size / 4) - 1);
 
 	/* wait for CP to drain ringbuffer: */
 	if (spin_until(adreno_gpu->memptrs->rptr == wptr))
--- a/drivers/gpu/drm/msm/msm_ringbuffer.c
+++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
@@ -23,7 +23,8 @@ struct msm_ringbuffer *msm_ringbuffer_ne
 	struct msm_ringbuffer *ring;
 	int ret;
 
-	size = ALIGN(size, 4);   /* size should be dword aligned */
+	if (WARN_ON(!is_power_of_2(size)))
+		return ERR_PTR(-EINVAL);
 
 	ring = kzalloc(sizeof(*ring), GFP_KERNEL);
 	if (!ring) {

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

* [PATCH 3.18 45/50] drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (42 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 44/50] drm/msm: Ensure that the hardware write pointer is valid Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 46/50] vfio-pci: use 32-bit comparisons for register address for gcc-4.5 Greg Kroah-Hartman
                   ` (6 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jordan Crouse, Rob Clark, Sasha Levin

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

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

From: Jordan Crouse <jcrouse@codeaurora.org>


[ Upstream commit a6cb3b864b21b7345f824a4faa12b723c8aaf099 ]

For every submission buffer object one of MSM_SUBMIT_BO_WRITE
and MSM_SUBMIT_BO_READ must be set (and nothing else). If we
allowed zero then the buffer object would never get queued to
be unreferenced.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/msm/msm_gem_submit.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/gpu/drm/msm/msm_gem_submit.c
+++ b/drivers/gpu/drm/msm/msm_gem_submit.c
@@ -90,7 +90,8 @@ static int submit_lookup_objects(struct
 			pagefault_disable();
 		}
 
-		if (submit_bo.flags & ~MSM_SUBMIT_BO_FLAGS) {
+		if ((submit_bo.flags & ~MSM_SUBMIT_BO_FLAGS) ||
+			!(submit_bo.flags & MSM_SUBMIT_BO_FLAGS)) {
 			DRM_ERROR("invalid flags: %x\n", submit_bo.flags);
 			ret = -EINVAL;
 			goto out_unlock;

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

* [PATCH 3.18 46/50] vfio-pci: use 32-bit comparisons for register address for gcc-4.5
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (43 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 45/50] drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 47/50] ASoC: tlv320aic3x: Mark the RESET register as volatile Greg Kroah-Hartman
                   ` (5 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, Alex Williamson, Sasha Levin

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

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

From: Arnd Bergmann <arnd@arndb.de>


[ Upstream commit 45e869714489431625c569d21fc952428d761476 ]

Using ancient compilers (gcc-4.5 or older) on ARM, we get a link
failure with the vfio-pci driver:

ERROR: "__aeabi_lcmp" [drivers/vfio/pci/vfio-pci.ko] undefined!

The reason is that the compiler tries to do a comparison of
a 64-bit range. This changes it to convert to a 32-bit number
explicitly first, as newer compilers do for themselves.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/vfio/pci/vfio_pci_rdwr.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/drivers/vfio/pci/vfio_pci_rdwr.c
+++ b/drivers/vfio/pci/vfio_pci_rdwr.c
@@ -190,7 +190,10 @@ ssize_t vfio_pci_vga_rw(struct vfio_pci_
 	if (!vdev->has_vga)
 		return -EINVAL;
 
-	switch (pos) {
+	if (pos > 0xbfffful)
+		return -EINVAL;
+
+	switch ((u32)pos) {
 	case 0xa0000 ... 0xbffff:
 		count = min(count, (size_t)(0xc0000 - pos));
 		iomem = ioremap_nocache(0xa0000, 0xbffff - 0xa0000 + 1);

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

* [PATCH 3.18 47/50] ASoC: tlv320aic3x: Mark the RESET register as volatile
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (44 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 46/50] vfio-pci: use 32-bit comparisons for register address for gcc-4.5 Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 48/50] spi: dw: Make debugfs name unique between instances Greg Kroah-Hartman
                   ` (4 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Peter Ujfalusi, Jarkko Nikula,
	Mark Brown, Sasha Levin

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

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

From: Peter Ujfalusi <peter.ujfalusi@ti.com>


[ Upstream commit 63c3194b82530bd71fd49db84eb7ab656b8d404a ]

The RESET register only have one self clearing bit and it should not be
cached. If it is cached, when we sync the registers back to the chip we
will initiate a software reset as well, which is not desirable.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 sound/soc/codecs/tlv320aic3x.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -122,6 +122,16 @@ static const struct reg_default aic3x_re
 	{ 108, 0x00 }, { 109, 0x00 },
 };
 
+static bool aic3x_volatile_reg(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case AIC3X_RESET:
+		return true;
+	default:
+		return false;
+	}
+}
+
 static const struct regmap_config aic3x_regmap = {
 	.reg_bits = 8,
 	.val_bits = 8,
@@ -129,6 +139,9 @@ static const struct regmap_config aic3x_
 	.max_register = DAC_ICC_ADJ,
 	.reg_defaults = aic3x_reg,
 	.num_reg_defaults = ARRAY_SIZE(aic3x_reg),
+
+	.volatile_reg = aic3x_volatile_reg,
+
 	.cache_type = REGCACHE_RBTREE,
 };
 

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

* [PATCH 3.18 48/50] spi: dw: Make debugfs name unique between instances
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (45 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 47/50] ASoC: tlv320aic3x: Mark the RESET register as volatile Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 49/50] vlan: Propagate MAC address to VLANs Greg Kroah-Hartman
                   ` (3 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Phil Reid, Mark Brown, Sasha Levin

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

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

From: Phil Reid <preid@electromag.com.au>


[ Upstream commit 13288bdf4adbaa6bd1267f10044c1bc25d90ce7f ]

Some system have multiple dw devices. Currently the driver uses a
fixed name for the debugfs dir. Append dev name to the debugfs dir
name to make it unique.

Signed-off-by: Phil Reid <preid@electromag.com.au>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/spi/spi-dw.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/drivers/spi/spi-dw.c
+++ b/drivers/spi/spi-dw.c
@@ -118,7 +118,10 @@ static const struct file_operations dw_s
 
 static int dw_spi_debugfs_init(struct dw_spi *dws)
 {
-	dws->debugfs = debugfs_create_dir("dw_spi", NULL);
+	char name[128];
+
+	snprintf(name, 128, "dw_spi-%s", dev_name(&dws->master->dev));
+	dws->debugfs = debugfs_create_dir(name, NULL);
 	if (!dws->debugfs)
 		return -ENOMEM;
 

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

* [PATCH 3.18 49/50] vlan: Propagate MAC address to VLANs
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (46 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 48/50] spi: dw: Make debugfs name unique between instances Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-04 23:16 ` [PATCH 3.18 50/50] xfrm: Dont use sk_family for socket policy lookups Greg Kroah-Hartman
                   ` (2 subsequent siblings)
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mike Manning, David S. Miller, Sumit Semwal

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

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

From: Mike Manning <mmanning@brocade.com>

commit 308453aa9156a3b8ee382c0949befb507a32b0c1 upstream.

The MAC address of the physical interface is only copied to the VLAN
when it is first created, resulting in an inconsistency after MAC
address changes of only newly created VLANs having an up-to-date MAC.

The VLANs should continue inheriting the MAC address of the physical
interface until the VLAN MAC address is explicitly set to any value.
This allows IPv6 EUI64 addresses for the VLAN to reflect any changes
to the MAC of the physical interface and thus for DAD to behave as
expected.

Signed-off-by: Mike Manning <mmanning@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/8021q/vlan.c     |    5 +++++
 net/8021q/vlan.h     |    2 ++
 net/8021q/vlan_dev.c |   20 +++++++++++++++++---
 3 files changed, 24 insertions(+), 3 deletions(-)

--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -292,6 +292,10 @@ static void vlan_sync_address(struct net
 	if (ether_addr_equal(vlan->real_dev_addr, dev->dev_addr))
 		return;
 
+	/* vlan continues to inherit address of lower device */
+	if (vlan_dev_inherit_address(vlandev, dev))
+		goto out;
+
 	/* vlan address was different from the old address and is equal to
 	 * the new address */
 	if (!ether_addr_equal(vlandev->dev_addr, vlan->real_dev_addr) &&
@@ -304,6 +308,7 @@ static void vlan_sync_address(struct net
 	    !ether_addr_equal(vlandev->dev_addr, dev->dev_addr))
 		dev_uc_add(dev, vlandev->dev_addr);
 
+out:
 	ether_addr_copy(vlan->real_dev_addr, dev->dev_addr);
 }
 
--- a/net/8021q/vlan.h
+++ b/net/8021q/vlan.h
@@ -109,6 +109,8 @@ int vlan_check_real_dev(struct net_devic
 void vlan_setup(struct net_device *dev);
 int register_vlan_dev(struct net_device *dev);
 void unregister_vlan_dev(struct net_device *dev, struct list_head *head);
+bool vlan_dev_inherit_address(struct net_device *dev,
+			      struct net_device *real_dev);
 
 static inline u32 vlan_get_ingress_priority(struct net_device *dev,
 					    u16 vlan_tci)
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -276,6 +276,17 @@ void vlan_dev_get_realdev_name(const str
 	strncpy(result, vlan_dev_priv(dev)->real_dev->name, 23);
 }
 
+bool vlan_dev_inherit_address(struct net_device *dev,
+			      struct net_device *real_dev)
+{
+	if (dev->addr_assign_type != NET_ADDR_STOLEN)
+		return false;
+
+	ether_addr_copy(dev->dev_addr, real_dev->dev_addr);
+	call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
+	return true;
+}
+
 static int vlan_dev_open(struct net_device *dev)
 {
 	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
@@ -286,7 +297,8 @@ static int vlan_dev_open(struct net_devi
 	    !(vlan->flags & VLAN_FLAG_LOOSE_BINDING))
 		return -ENETDOWN;
 
-	if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr)) {
+	if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr) &&
+	    !vlan_dev_inherit_address(dev, real_dev)) {
 		err = dev_uc_add(real_dev, dev->dev_addr);
 		if (err < 0)
 			goto out;
@@ -591,8 +603,10 @@ static int vlan_dev_init(struct net_devi
 	/* ipv6 shared card related stuff */
 	dev->dev_id = real_dev->dev_id;
 
-	if (is_zero_ether_addr(dev->dev_addr))
-		eth_hw_addr_inherit(dev, real_dev);
+	if (is_zero_ether_addr(dev->dev_addr)) {
+		ether_addr_copy(dev->dev_addr, real_dev->dev_addr);
+		dev->addr_assign_type = NET_ADDR_STOLEN;
+	}
 	if (is_zero_ether_addr(dev->broadcast))
 		memcpy(dev->broadcast, real_dev->broadcast, dev->addr_len);
 

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

* [PATCH 3.18 50/50] xfrm: Dont use sk_family for socket policy lookups
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (47 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 49/50] vlan: Propagate MAC address to VLANs Greg Kroah-Hartman
@ 2017-08-04 23:16 ` Greg Kroah-Hartman
  2017-08-05  1:43 ` [PATCH 3.18 00/50] 3.18.64-stable review Guenter Roeck
  2017-08-05  1:52 ` Shuah Khan
  50 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-04 23:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Dmitry Vyukov, Steffen Klassert

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

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

From: Steffen Klassert <steffen.klassert@secunet.com>

commit 4c86d77743a54fb2d8a4d18a037a074c892bb3be upstream.

On IPv4-mapped IPv6 addresses sk_family is AF_INET6,
but the flow informations are created based on AF_INET.
So the routing set up 'struct flowi4' but we try to
access 'struct flowi6' what leads to an out of bounds
access. Fix this by using the family we get with the
dst_entry, like we do it for the standard policy lookup.

Reported-by: Dmitry Vyukov <dvyukov@google.com>
Tested-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/xfrm/xfrm_policy.c |    9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1211,15 +1211,14 @@ static inline int policy_to_flow_dir(int
 }
 
 static struct xfrm_policy *xfrm_sk_policy_lookup(struct sock *sk, int dir,
-						 const struct flowi *fl)
+						 const struct flowi *fl, u16 family)
 {
 	struct xfrm_policy *pol;
 	struct net *net = sock_net(sk);
 
 	read_lock_bh(&net->xfrm.xfrm_policy_lock);
 	if ((pol = sk->sk_policy[dir]) != NULL) {
-		bool match = xfrm_selector_match(&pol->selector, fl,
-						 sk->sk_family);
+		bool match = xfrm_selector_match(&pol->selector, fl, family);
 		int err = 0;
 
 		if (match) {
@@ -2150,7 +2149,7 @@ struct dst_entry *xfrm_lookup(struct net
 
 	if (sk && sk->sk_policy[XFRM_POLICY_OUT]) {
 		num_pols = 1;
-		pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl);
+		pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl, family);
 		err = xfrm_expand_policies(fl, family, pols,
 					   &num_pols, &num_xfrms);
 		if (err < 0)
@@ -2428,7 +2427,7 @@ int __xfrm_policy_check(struct sock *sk,
 
 	pol = NULL;
 	if (sk && sk->sk_policy[dir]) {
-		pol = xfrm_sk_policy_lookup(sk, dir, &fl);
+		pol = xfrm_sk_policy_lookup(sk, dir, &fl, family);
 		if (IS_ERR(pol)) {
 			XFRM_INC_STATS(net, LINUX_MIB_XFRMINPOLERROR);
 			return 0;

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (48 preceding siblings ...)
  2017-08-04 23:16 ` [PATCH 3.18 50/50] xfrm: Dont use sk_family for socket policy lookups Greg Kroah-Hartman
@ 2017-08-05  1:43 ` Guenter Roeck
  2017-08-05  2:46   ` Greg Kroah-Hartman
  2017-08-05  1:52 ` Shuah Khan
  50 siblings, 1 reply; 65+ messages in thread
From: Guenter Roeck @ 2017-08-05  1:43 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 3.18.64 release.
> There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> Anything received after that time might be too late.
> 

Preliminary:

Lots of

lib/string.c:31:32: fatal error: asm/word-at-a-time.h

affecting several architectures.

alpha:

lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'

Guenter

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
                   ` (49 preceding siblings ...)
  2017-08-05  1:43 ` [PATCH 3.18 00/50] 3.18.64-stable review Guenter Roeck
@ 2017-08-05  1:52 ` Shuah Khan
  50 siblings, 0 replies; 65+ messages in thread
From: Shuah Khan @ 2017-08-05  1:52 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, linux, patches, ben.hutchings, stable, Shuah Khan

On 08/04/2017 05:15 PM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 3.18.64 release.
> There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	kernel.org/pub/linux/kernel/v3.x/stable-review/patch-3.18.64-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-3.18.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] 65+ messages in thread

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  1:43 ` [PATCH 3.18 00/50] 3.18.64-stable review Guenter Roeck
@ 2017-08-05  2:46   ` Greg Kroah-Hartman
  2017-08-05  2:51     ` Greg Kroah-Hartman
  2017-08-05  3:57     ` Guenter Roeck
  0 siblings, 2 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-05  2:46 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 3.18.64 release.
> > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > Anything received after that time might be too late.
> > 
> 
> Preliminary:
> 
> Lots of
> 
> lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> 
> affecting several architectures.
> 
> alpha:
> 
> lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'

Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
zero_bytemask() on alpha and tile"), right?  Any other arches failing?

thanks,

greg k-h

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  2:46   ` Greg Kroah-Hartman
@ 2017-08-05  2:51     ` Greg Kroah-Hartman
  2017-08-05  3:00       ` Greg Kroah-Hartman
  2017-08-05  5:55       ` Willy Tarreau
  2017-08-05  3:57     ` Guenter Roeck
  1 sibling, 2 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-05  2:51 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
> On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 3.18.64 release.
> > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > Anything received after that time might be too late.
> > > 
> > 
> > Preliminary:
> > 
> > Lots of
> > 
> > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > 
> > affecting several architectures.
> > 
> > alpha:
> > 
> > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> 
> Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> zero_bytemask() on alpha and tile"), right?  Any other arches failing?

Hm, that doesn't work, do we care about tile? :)

Let me see how deep this hole is, I just wanted to get strscpy into 3.18
to fix a bug...

thanks,

greg k-h

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  2:51     ` Greg Kroah-Hartman
@ 2017-08-05  3:00       ` Greg Kroah-Hartman
  2017-08-05  4:01         ` Guenter Roeck
  2017-08-05  5:55       ` Willy Tarreau
  1 sibling, 1 reply; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-05  3:00 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
> On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
> > On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > > This is the start of the stable review cycle for the 3.18.64 release.
> > > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > > Anything received after that time might be too late.
> > > > 
> > > 
> > > Preliminary:
> > > 
> > > Lots of
> > > 
> > > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > > 
> > > affecting several architectures.
> > > 
> > > alpha:
> > > 
> > > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> > 
> > Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> > zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> 
> Hm, that doesn't work, do we care about tile? :)
> 
> Let me see how deep this hole is, I just wanted to get strscpy into 3.18
> to fix a bug...

Ok, I think tile and alpha should be fixed, is there anything else that
is broken?

thanks,

greg k-h

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  2:46   ` Greg Kroah-Hartman
  2017-08-05  2:51     ` Greg Kroah-Hartman
@ 2017-08-05  3:57     ` Guenter Roeck
  2017-08-05 15:45       ` Greg Kroah-Hartman
  1 sibling, 1 reply; 65+ messages in thread
From: Guenter Roeck @ 2017-08-05  3:57 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On 08/04/2017 07:46 PM, Greg Kroah-Hartman wrote:
> On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
>> On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
>>> This is the start of the stable review cycle for the 3.18.64 release.
>>> There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
>>> Anything received after that time might be too late.
>>>
>>
>> Preliminary:
>>
>> Lots of
>>
>> lib/string.c:31:32: fatal error: asm/word-at-a-time.h
>>
>> affecting several architectures.
>>
>> alpha:
>>
>> lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> 
> Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> 

Yes, you could say so. Is the offending patch really needed ?

Guenter

total: 136 pass: 68 fail: 68
Failed builds:
alpha:defconfig
alpha:allmodconfig
alpha:allnoconfig
arc:defconfig
arc:allnoconfig
arc:tb10x_defconfig
blackfin:defconfig
blackfin:BF561-EZKIT-SMP_defconfig
c6x:dsk6455_defconfig
c6x:evmc6457_defconfig
c6x:evmc6678_defconfig
cris:defconfig
cris:allnoconfig
cris:etrax-100lx_defconfig
cris:artpec_3_defconfig
cris:etraxfs_defconfig
frv:defconfig
hexagon:defconfig
hexagon:allnoconfig
ia64:defconfig
ia64:allnoconfig
m32r:defconfig
metag:defconfig
metag:allnoconfig
metag:meta1_defconfig
metag:meta2_defconfig
metag:meta2_smp_defconfig
microblaze:mmu_defconfig
microblaze:nommu_defconfig
microblaze:allnoconfig
mips:defconfig
mips:allnoconfig
mips:defconfig
mips:allmodconfig
mips:allnoconfig
mips:bcm47xx_defconfig
mips:bcm63xx_defconfig
mips:nlm_xlp_defconfig
mips:ath79_defconfig
mips:ar7_defconfig
mips:e55_defconfig
mips:cavium_octeon_defconfig
mips:malta_defconfig
mips:rt305x_defconfig
mn10300:asb2303_defconfig
mn10300:asb2364_defconfig
powerpc:defconfig
powerpc:allmodconfig
powerpc:allnoconfig
powerpc:ppc64e_defconfig
powerpc:cell_defconfig
powerpc:maple_defconfig
powerpc:ppc6xx_defconfig
powerpc:mpc83xx_defconfig
powerpc:tqm8xx_defconfig
powerpc:85xx/sbc8548_defconfig
powerpc:83xx/mpc834x_mds_defconfig
powerpc:86xx/sbc8641d_defconfig
s390:defconfig
s390:allmodconfig
s390:allnoconfig
score:defconfig
tile:tilegx_defconfig
unicore32:defconfig
unicore32:allnoconfig
xtensa:defconfig
xtensa:allmodconfig
xtensa:allnoconfig

Qemu:

total: 111 pass: 78 fail: 33
Failed tests:
alpha:defconfig
metag:meta2_defconfig
metag:tz1090_defconfig
microblaze:microblaze_defconfig
microblaze:microblazeel_defconfig
mips:malta_defconfig:nosmp
mips:malta_defconfig:smp
mips64:malta_defconfig:nosmp
mips64:malta_defconfig:smp
mipsel:24Kf:malta_defconfig:nosmp
mipsel:24Kf:malta_defconfig:smp
mipsel64:malta_defconfig:nosmp
mipsel64:malta_defconfig:smp
mipsel64:fuloong2e_defconfig:fulong2e
powerpc:mac99:nosmp:ppc_book3s_defconfig
powerpc:g3beige:nosmp:ppc_book3s_defconfig
powerpc:mac99:smp:ppc_book3s_defconfig
powerpc:virtex-ml507:44x/virtex5_defconfig
powerpc:mpc8544ds:mpc85xx_defconfig
powerpc:mpc8544ds:mpc85xx_smp_defconfig
powerpc:mpc8548cds:85xx/mpc85xx_cds_defconfig
powerpc:mpc8548cds:smpdev:85xx/mpc85xx_cds_defconfig
powerpc:bamboo:44x/bamboo_defconfig
powerpc:mac99:ppc64_book3s_defconfig:nosmp
powerpc:mac99:ppc64_book3s_defconfig:smp4
powerpc:pseries:pseries_defconfig
powerpc:mpc8544ds:ppc64_e5500_defconfig:nosmp
powerpc:mpc8544ds:ppc64_e5500_defconfig:smp
s390:defconfig
xtensa:dc232b:lx60:generic_kc705_defconfig
xtensa:dc232b:kc705:generic_kc705_defconfig
xtensa:dc233c:ml605:generic_kc705_defconfig
xtensa:dc233c:kc705:generic_kc705_defconfig

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  3:00       ` Greg Kroah-Hartman
@ 2017-08-05  4:01         ` Guenter Roeck
  2017-08-05 15:43           ` Greg Kroah-Hartman
  0 siblings, 1 reply; 65+ messages in thread
From: Guenter Roeck @ 2017-08-05  4:01 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On 08/04/2017 08:00 PM, Greg Kroah-Hartman wrote:
> On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
>> On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
>>> On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
>>>> On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
>>>>> This is the start of the stable review cycle for the 3.18.64 release.
>>>>> There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
>>>>> Anything received after that time might be too late.
>>>>>
>>>>
>>>> Preliminary:
>>>>
>>>> Lots of
>>>>
>>>> lib/string.c:31:32: fatal error: asm/word-at-a-time.h
>>>>
>>>> affecting several architectures.
>>>>
>>>> alpha:
>>>>
>>>> lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
>>>
>>> Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
>>> zero_bytemask() on alpha and tile"), right?  Any other arches failing?
>>
>> Hm, that doesn't work, do we care about tile? :)
>>
>> Let me see how deep this hole is, I just wanted to get strscpy into 3.18
>> to fix a bug...
> 
> Ok, I think tile and alpha should be fixed, is there anything else that
> is broken?
> 

Did you get my e-mail ? I sent it a couple of minutes ago.

Guenter

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  2:51     ` Greg Kroah-Hartman
  2017-08-05  3:00       ` Greg Kroah-Hartman
@ 2017-08-05  5:55       ` Willy Tarreau
  2017-08-05  6:02         ` Willy Tarreau
  1 sibling, 1 reply; 65+ messages in thread
From: Willy Tarreau @ 2017-08-05  5:55 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Guenter Roeck, linux-kernel, torvalds, akpm, shuahkh, patches,
	ben.hutchings, stable

On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
> On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
> > On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > > This is the start of the stable review cycle for the 3.18.64 release.
> > > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > > Anything received after that time might be too late.
> > > > 
> > > 
> > > Preliminary:
> > > 
> > > Lots of
> > > 
> > > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > > 
> > > affecting several architectures.
> > > 
> > > alpha:
> > > 
> > > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> > 
> > Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> > zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> 
> Hm, that doesn't work, do we care about tile? :)
> 
> Let me see how deep this hole is, I just wanted to get strscpy into 3.18
> to fix a bug...

I suspect you'll need this one which came as part of the strscpy() series
between 4.2 and 4.3 (though I have not tested) :

  commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2
  Author: Chris Metcalf <cmetcalf@ezchip.com>
  Date:   Wed Apr 29 12:48:40 2015 -0400

    Make asm/word-at-a-time.h available on all architectures
    
    Added the x86 implementation of word-at-a-time to the
    generic version, which previously only supported big-endian.
    (...)
    
Willy

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  5:55       ` Willy Tarreau
@ 2017-08-05  6:02         ` Willy Tarreau
  2017-08-05 15:43           ` Greg Kroah-Hartman
  0 siblings, 1 reply; 65+ messages in thread
From: Willy Tarreau @ 2017-08-05  6:02 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Guenter Roeck, linux-kernel, torvalds, akpm, shuahkh, patches,
	ben.hutchings, stable

On Sat, Aug 05, 2017 at 07:55:11AM +0200, Willy Tarreau wrote:
> On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
> > On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
> > > On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > > > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > > > This is the start of the stable review cycle for the 3.18.64 release.
> > > > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > > > Anything received after that time might be too late.
> > > > > 
> > > > 
> > > > Preliminary:
> > > > 
> > > > Lots of
> > > > 
> > > > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > > > 
> > > > affecting several architectures.
> > > > 
> > > > alpha:
> > > > 
> > > > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> > > 
> > > Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> > > zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> > 
> > Hm, that doesn't work, do we care about tile? :)
> > 
> > Let me see how deep this hole is, I just wanted to get strscpy into 3.18
> > to fix a bug...
> 
> I suspect you'll need this one which came as part of the strscpy() series
> between 4.2 and 4.3 (though I have not tested) :
> 
>   commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2
>   Author: Chris Metcalf <cmetcalf@ezchip.com>
>   Date:   Wed Apr 29 12:48:40 2015 -0400
> 
>     Make asm/word-at-a-time.h available on all architectures
>     
>     Added the x86 implementation of word-at-a-time to the
>     generic version, which previously only supported big-endian.
>     (...)

OK I just applied it on top of 3.18.64-rc1 and it allowed me to build mips
which previously broke. It will not apply as-is, you'll need to drop the
change for arch/nios2/include/asm/Kbuild, and after that it's OK.

Willy

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  6:02         ` Willy Tarreau
@ 2017-08-05 15:43           ` Greg Kroah-Hartman
  2017-08-05 19:11             ` Guenter Roeck
  0 siblings, 1 reply; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-05 15:43 UTC (permalink / raw)
  To: Willy Tarreau
  Cc: Guenter Roeck, linux-kernel, torvalds, akpm, shuahkh, patches,
	ben.hutchings, stable

On Sat, Aug 05, 2017 at 08:02:17AM +0200, Willy Tarreau wrote:
> On Sat, Aug 05, 2017 at 07:55:11AM +0200, Willy Tarreau wrote:
> > On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
> > > On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
> > > > On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > > > > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > > > > This is the start of the stable review cycle for the 3.18.64 release.
> > > > > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > > > > Anything received after that time might be too late.
> > > > > > 
> > > > > 
> > > > > Preliminary:
> > > > > 
> > > > > Lots of
> > > > > 
> > > > > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > > > > 
> > > > > affecting several architectures.
> > > > > 
> > > > > alpha:
> > > > > 
> > > > > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> > > > 
> > > > Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> > > > zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> > > 
> > > Hm, that doesn't work, do we care about tile? :)
> > > 
> > > Let me see how deep this hole is, I just wanted to get strscpy into 3.18
> > > to fix a bug...
> > 
> > I suspect you'll need this one which came as part of the strscpy() series
> > between 4.2 and 4.3 (though I have not tested) :
> > 
> >   commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2
> >   Author: Chris Metcalf <cmetcalf@ezchip.com>
> >   Date:   Wed Apr 29 12:48:40 2015 -0400
> > 
> >     Make asm/word-at-a-time.h available on all architectures
> >     
> >     Added the x86 implementation of word-at-a-time to the
> >     generic version, which previously only supported big-endian.
> >     (...)
> 
> OK I just applied it on top of 3.18.64-rc1 and it allowed me to build mips
> which previously broke. It will not apply as-is, you'll need to drop the
> change for arch/nios2/include/asm/Kbuild, and after that it's OK.

Thanks for that, I've now queued that patch up.

greg k-h

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  4:01         ` Guenter Roeck
@ 2017-08-05 15:43           ` Greg Kroah-Hartman
  0 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-05 15:43 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On Fri, Aug 04, 2017 at 09:01:10PM -0700, Guenter Roeck wrote:
> On 08/04/2017 08:00 PM, Greg Kroah-Hartman wrote:
> > On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
> > > On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
> > > > On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > > > > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > > > > This is the start of the stable review cycle for the 3.18.64 release.
> > > > > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > > > > Anything received after that time might be too late.
> > > > > > 
> > > > > 
> > > > > Preliminary:
> > > > > 
> > > > > Lots of
> > > > > 
> > > > > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > > > > 
> > > > > affecting several architectures.
> > > > > 
> > > > > alpha:
> > > > > 
> > > > > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> > > > 
> > > > Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> > > > zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> > > 
> > > Hm, that doesn't work, do we care about tile? :)
> > > 
> > > Let me see how deep this hole is, I just wanted to get strscpy into 3.18
> > > to fix a bug...
> > 
> > Ok, I think tile and alpha should be fixed, is there anything else that
> > is broken?
> > 
> 
> Did you get my e-mail ? I sent it a couple of minutes ago.

Yes, thanks, I've pushed out another update, that should fix all of
these.

greg k-h

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05  3:57     ` Guenter Roeck
@ 2017-08-05 15:45       ` Greg Kroah-Hartman
  0 siblings, 0 replies; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-05 15:45 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On Fri, Aug 04, 2017 at 08:57:29PM -0700, Guenter Roeck wrote:
> On 08/04/2017 07:46 PM, Greg Kroah-Hartman wrote:
> > On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > > This is the start of the stable review cycle for the 3.18.64 release.
> > > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > > Anything received after that time might be too late.
> > > > 
> > > 
> > > Preliminary:
> > > 
> > > Lots of
> > > 
> > > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > > 
> > > affecting several architectures.
> > > 
> > > alpha:
> > > 
> > > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> > 
> > Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> > zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> > 
> 
> Yes, you could say so. Is the offending patch really needed ?

The offending patch is for a subsystem that no one really uses, _but_
getting strscpy() into 3.18 is a good thing based on what I have seen
being used by the different vendor trees that rely on 3.18 at the
moment.

As proof of that, I did this backport a few weeks ago and didn't get it
correct :)

thanks,

greg k-h

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05 15:43           ` Greg Kroah-Hartman
@ 2017-08-05 19:11             ` Guenter Roeck
  2017-08-07 19:34               ` Greg Kroah-Hartman
  0 siblings, 1 reply; 65+ messages in thread
From: Guenter Roeck @ 2017-08-05 19:11 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Willy Tarreau
  Cc: linux-kernel, torvalds, akpm, shuahkh, patches, ben.hutchings, stable

On 08/05/2017 08:43 AM, Greg Kroah-Hartman wrote:
> On Sat, Aug 05, 2017 at 08:02:17AM +0200, Willy Tarreau wrote:
>> On Sat, Aug 05, 2017 at 07:55:11AM +0200, Willy Tarreau wrote:
>>> On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
>>>> On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
>>>>> On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
>>>>>> On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
>>>>>>> This is the start of the stable review cycle for the 3.18.64 release.
>>>>>>> There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
>>>>>>> Anything received after that time might be too late.
>>>>>>>
>>>>>>
>>>>>> Preliminary:
>>>>>>
>>>>>> Lots of
>>>>>>
>>>>>> lib/string.c:31:32: fatal error: asm/word-at-a-time.h
>>>>>>
>>>>>> affecting several architectures.
>>>>>>
>>>>>> alpha:
>>>>>>
>>>>>> lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
>>>>>
>>>>> Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
>>>>> zero_bytemask() on alpha and tile"), right?  Any other arches failing?
>>>>
>>>> Hm, that doesn't work, do we care about tile? :)
>>>>
>>>> Let me see how deep this hole is, I just wanted to get strscpy into 3.18
>>>> to fix a bug...
>>>
>>> I suspect you'll need this one which came as part of the strscpy() series
>>> between 4.2 and 4.3 (though I have not tested) :
>>>
>>>    commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2
>>>    Author: Chris Metcalf <cmetcalf@ezchip.com>
>>>    Date:   Wed Apr 29 12:48:40 2015 -0400
>>>
>>>      Make asm/word-at-a-time.h available on all architectures
>>>      
>>>      Added the x86 implementation of word-at-a-time to the
>>>      generic version, which previously only supported big-endian.
>>>      (...)
>>
>> OK I just applied it on top of 3.18.64-rc1 and it allowed me to build mips
>> which previously broke. It will not apply as-is, you'll need to drop the
>> change for arch/nios2/include/asm/Kbuild, and after that it's OK.
> 
> Thanks for that, I've now queued that patch up.
> 

Better, but there are still some errors.

powerpc:
lib/string.c: In function 'strscpy':
lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'

tile:
arch/tile/gxio/mpipe.c:46:15: error: conflicting types for 'strscpy'
include/linux/string.h:29:22: note: previous declaration of 'strscpy' was here

Missing patches:

7a5692e6e533 ("arch/powerpc: provide zero_bytemask() for big-endian")
30059d494a72 ("tile: use global strscpy() rather than private copy")

Guenter

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-05 19:11             ` Guenter Roeck
@ 2017-08-07 19:34               ` Greg Kroah-Hartman
  2017-08-08  4:11                 ` Guenter Roeck
  0 siblings, 1 reply; 65+ messages in thread
From: Greg Kroah-Hartman @ 2017-08-07 19:34 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Willy Tarreau, linux-kernel, torvalds, akpm, shuahkh, patches,
	ben.hutchings, stable

On Sat, Aug 05, 2017 at 12:11:19PM -0700, Guenter Roeck wrote:
> On 08/05/2017 08:43 AM, Greg Kroah-Hartman wrote:
> > On Sat, Aug 05, 2017 at 08:02:17AM +0200, Willy Tarreau wrote:
> > > On Sat, Aug 05, 2017 at 07:55:11AM +0200, Willy Tarreau wrote:
> > > > On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
> > > > > On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
> > > > > > On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
> > > > > > > On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
> > > > > > > > This is the start of the stable review cycle for the 3.18.64 release.
> > > > > > > > There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
> > > > > > > > Anything received after that time might be too late.
> > > > > > > > 
> > > > > > > 
> > > > > > > Preliminary:
> > > > > > > 
> > > > > > > Lots of
> > > > > > > 
> > > > > > > lib/string.c:31:32: fatal error: asm/word-at-a-time.h
> > > > > > > 
> > > > > > > affecting several architectures.
> > > > > > > 
> > > > > > > alpha:
> > > > > > > 
> > > > > > > lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> > > > > > 
> > > > > > Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
> > > > > > zero_bytemask() on alpha and tile"), right?  Any other arches failing?
> > > > > 
> > > > > Hm, that doesn't work, do we care about tile? :)
> > > > > 
> > > > > Let me see how deep this hole is, I just wanted to get strscpy into 3.18
> > > > > to fix a bug...
> > > > 
> > > > I suspect you'll need this one which came as part of the strscpy() series
> > > > between 4.2 and 4.3 (though I have not tested) :
> > > > 
> > > >    commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2
> > > >    Author: Chris Metcalf <cmetcalf@ezchip.com>
> > > >    Date:   Wed Apr 29 12:48:40 2015 -0400
> > > > 
> > > >      Make asm/word-at-a-time.h available on all architectures
> > > >      Added the x86 implementation of word-at-a-time to the
> > > >      generic version, which previously only supported big-endian.
> > > >      (...)
> > > 
> > > OK I just applied it on top of 3.18.64-rc1 and it allowed me to build mips
> > > which previously broke. It will not apply as-is, you'll need to drop the
> > > change for arch/nios2/include/asm/Kbuild, and after that it's OK.
> > 
> > Thanks for that, I've now queued that patch up.
> > 
> 
> Better, but there are still some errors.
> 
> powerpc:
> lib/string.c: In function 'strscpy':
> lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
> 
> tile:
> arch/tile/gxio/mpipe.c:46:15: error: conflicting types for 'strscpy'
> include/linux/string.h:29:22: note: previous declaration of 'strscpy' was here
> 
> Missing patches:
> 
> 7a5692e6e533 ("arch/powerpc: provide zero_bytemask() for big-endian")
> 30059d494a72 ("tile: use global strscpy() rather than private copy")

Thanks for these, I'll queue them up.  And do a -rc2 in a few days as
this was a mess...

thanks,

greg k-h

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

* Re: [PATCH 3.18 00/50] 3.18.64-stable review
  2017-08-07 19:34               ` Greg Kroah-Hartman
@ 2017-08-08  4:11                 ` Guenter Roeck
  0 siblings, 0 replies; 65+ messages in thread
From: Guenter Roeck @ 2017-08-08  4:11 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Willy Tarreau, linux-kernel, torvalds, akpm, shuahkh, patches,
	ben.hutchings, stable

On 08/07/2017 12:34 PM, Greg Kroah-Hartman wrote:
> On Sat, Aug 05, 2017 at 12:11:19PM -0700, Guenter Roeck wrote:
>> On 08/05/2017 08:43 AM, Greg Kroah-Hartman wrote:
>>> On Sat, Aug 05, 2017 at 08:02:17AM +0200, Willy Tarreau wrote:
>>>> On Sat, Aug 05, 2017 at 07:55:11AM +0200, Willy Tarreau wrote:
>>>>> On Fri, Aug 04, 2017 at 07:51:07PM -0700, Greg Kroah-Hartman wrote:
>>>>>> On Fri, Aug 04, 2017 at 07:46:57PM -0700, Greg Kroah-Hartman wrote:
>>>>>>> On Fri, Aug 04, 2017 at 06:43:50PM -0700, Guenter Roeck wrote:
>>>>>>>> On 08/04/2017 04:15 PM, Greg Kroah-Hartman wrote:
>>>>>>>>> This is the start of the stable review cycle for the 3.18.64 release.
>>>>>>>>> There are 50 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 Sun Aug  6 23:15:34 UTC 2017.
>>>>>>>>> Anything received after that time might be too late.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Preliminary:
>>>>>>>>
>>>>>>>> Lots of
>>>>>>>>
>>>>>>>> lib/string.c:31:32: fatal error: asm/word-at-a-time.h
>>>>>>>>
>>>>>>>> affecting several architectures.
>>>>>>>>
>>>>>>>> alpha:
>>>>>>>>
>>>>>>>> lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
>>>>>>>
>>>>>>> Hm, I think I need to add c753bf34c94e ("word-at-a-time.h: support
>>>>>>> zero_bytemask() on alpha and tile"), right?  Any other arches failing?
>>>>>>
>>>>>> Hm, that doesn't work, do we care about tile? :)
>>>>>>
>>>>>> Let me see how deep this hole is, I just wanted to get strscpy into 3.18
>>>>>> to fix a bug...
>>>>>
>>>>> I suspect you'll need this one which came as part of the strscpy() series
>>>>> between 4.2 and 4.3 (though I have not tested) :
>>>>>
>>>>>     commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2
>>>>>     Author: Chris Metcalf <cmetcalf@ezchip.com>
>>>>>     Date:   Wed Apr 29 12:48:40 2015 -0400
>>>>>
>>>>>       Make asm/word-at-a-time.h available on all architectures
>>>>>       Added the x86 implementation of word-at-a-time to the
>>>>>       generic version, which previously only supported big-endian.
>>>>>       (...)
>>>>
>>>> OK I just applied it on top of 3.18.64-rc1 and it allowed me to build mips
>>>> which previously broke. It will not apply as-is, you'll need to drop the
>>>> change for arch/nios2/include/asm/Kbuild, and after that it's OK.
>>>
>>> Thanks for that, I've now queued that patch up.
>>>
>>
>> Better, but there are still some errors.
>>
>> powerpc:
>> lib/string.c: In function 'strscpy':
>> lib/string.c:217:4: error: implicit declaration of function 'zero_bytemask'
>>
>> tile:
>> arch/tile/gxio/mpipe.c:46:15: error: conflicting types for 'strscpy'
>> include/linux/string.h:29:22: note: previous declaration of 'strscpy' was here
>>
>> Missing patches:
>>
>> 7a5692e6e533 ("arch/powerpc: provide zero_bytemask() for big-endian")
>> 30059d494a72 ("tile: use global strscpy() rather than private copy")
> 
> Thanks for these, I'll queue them up.  And do a -rc2 in a few days as
> this was a mess...
> 

Getting there. With v3.18.63-62-gc7d9ae0:

Build results:
	total: 136 pass: 136 fail: 0
Qemu test results:
	total: 111 pass: 111 fail: 0

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

Guenter

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

end of thread, other threads:[~2017-08-08  4:11 UTC | newest]

Thread overview: 65+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-04 23:15 [PATCH 3.18 00/50] 3.18.64-stable review Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 01/50] af_key: Add lock to key dump Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 02/50] pstore: Make spinlock per zone instead of global Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 03/50] net: reduce skb_warn_bad_offload() noise Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 04/50] powerpc/pseries: Fix of_node_put() underflow during reconfig remove Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 05/50] md/raid5: add thread_group worker async_tx_issue_pending_all Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 06/50] drm/vmwgfx: Fix gcc-7.1.1 warning Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 07/50] KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 08/50] KVM: PPC: Book3S HV: Reload HTM registers explicitly Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 09/50] KVM: PPC: Book3S HV: Save/restore host values of debug registers Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 10/50] Revert "powerpc/numa: Fix percpu allocations to be NUMA aware" Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 11/50] Staging: comedi: comedi_fops: Avoid orphaned proc entry Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 12/50] Bluetooth: bnep: bnep_add_connection() should verify that its dealing with l2cap socket Greg Kroah-Hartman
2017-08-04 23:15 ` [PATCH 3.18 13/50] Bluetooth: Fix potential NULL dereference Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 14/50] Bluetooth: cmtp: cmtp_add_connection() should verify that its dealing with l2cap socket Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 15/50] net: phy: Do not perform software reset for Generic PHY Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 16/50] isdn: Fix a sleep-in-atomic bug Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 17/50] string: provide strscpy() Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 18/50] strscpy: zero any trailing garbage bytes in the destination Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 19/50] isdn/i4l: fix buffer overflow Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 20/50] wil6210: fix deadlock when using fw_no_recovery option Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 21/50] mailbox: always wait in mbox_send_message for blocking Tx mode Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 22/50] mailbox: skip complete wait event if timer expired Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 23/50] mailbox: handle empty message in tx_tick Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 24/50] mpt3sas: Dont overreach ioc->reply_post[] during initialization Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 25/50] kaweth: fix firmware download Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 26/50] kaweth: fix oops upon failed memory allocation Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 27/50] ipv6: fix possible deadlock in ip6_fl_purge / ip6_fl_gc Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 28/50] net: sctp: fix race for one-to-many sockets in sendmsgs auto associate Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 29/50] sh_eth: Fix ethtool operation crash when net device is down Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 30/50] net, sched: fix soft lockup in tc_classify Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 31/50] ipmi/watchdog: fix watchdog timeout set on reboot Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 32/50] dentry name snapshots Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 33/50] [media] v4l: s5c73m3: fix negation operator Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 34/50] pstore: Allow prz to control need for locking Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 35/50] pstore: Correctly initialize spinlock and flags Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 36/50] pstore: Use dynamic spinlock initializer Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 37/50] net: skb_needs_check() accepts CHECKSUM_NONE for tx Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 38/50] tpm: fix a kernel memory leak in tpm-sysfs.c Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 39/50] x86/mce/AMD: Make the init code more robust Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 40/50] r8169: add support for RTL8168 series add-on card Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 42/50] ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 43/50] net/mlx4: Remove BUG_ON from ICM allocation routine Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 44/50] drm/msm: Ensure that the hardware write pointer is valid Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 45/50] drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 46/50] vfio-pci: use 32-bit comparisons for register address for gcc-4.5 Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 47/50] ASoC: tlv320aic3x: Mark the RESET register as volatile Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 48/50] spi: dw: Make debugfs name unique between instances Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 49/50] vlan: Propagate MAC address to VLANs Greg Kroah-Hartman
2017-08-04 23:16 ` [PATCH 3.18 50/50] xfrm: Dont use sk_family for socket policy lookups Greg Kroah-Hartman
2017-08-05  1:43 ` [PATCH 3.18 00/50] 3.18.64-stable review Guenter Roeck
2017-08-05  2:46   ` Greg Kroah-Hartman
2017-08-05  2:51     ` Greg Kroah-Hartman
2017-08-05  3:00       ` Greg Kroah-Hartman
2017-08-05  4:01         ` Guenter Roeck
2017-08-05 15:43           ` Greg Kroah-Hartman
2017-08-05  5:55       ` Willy Tarreau
2017-08-05  6:02         ` Willy Tarreau
2017-08-05 15:43           ` Greg Kroah-Hartman
2017-08-05 19:11             ` Guenter Roeck
2017-08-07 19:34               ` Greg Kroah-Hartman
2017-08-08  4:11                 ` Guenter Roeck
2017-08-05  3:57     ` Guenter Roeck
2017-08-05 15:45       ` Greg Kroah-Hartman
2017-08-05  1:52 ` Shuah Khan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.