]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop broken 4.14 patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Nov 2018 14:31:21 +0000 (06:31 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Nov 2018 14:31:21 +0000 (06:31 -0800)
queue-4.14/asoc-sta32x-set-component-pointer-in-private-struct.patch [deleted file]
queue-4.14/fsnotify-fix-busy-inodes-during-unmount.patch [deleted file]
queue-4.14/series
queue-4.14/xprtrdma-reset-credit-grant-properly-after-a-disconnect.patch [deleted file]

diff --git a/queue-4.14/asoc-sta32x-set-component-pointer-in-private-struct.patch b/queue-4.14/asoc-sta32x-set-component-pointer-in-private-struct.patch
deleted file mode 100644 (file)
index 7ef772c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From 747df19747bc9752cd40b9cce761e17a033aa5c2 Mon Sep 17 00:00:00 2001
-From: Daniel Mack <daniel@zonque.org>
-Date: Thu, 11 Oct 2018 20:32:05 +0200
-Subject: ASoC: sta32x: set ->component pointer in private struct
-
-From: Daniel Mack <daniel@zonque.org>
-
-commit 747df19747bc9752cd40b9cce761e17a033aa5c2 upstream.
-
-The ESD watchdog code in sta32x_watchdog() dereferences the pointer
-which is never assigned.
-
-This is a regression from a1be4cead9b950 ("ASoC: sta32x: Convert to direct
-regmap API usage.") which went unnoticed since nobody seems to use that ESD
-workaround.
-
-Fixes: a1be4cead9b950 ("ASoC: sta32x: Convert to direct regmap API usage.")
-Signed-off-by: Daniel Mack <daniel@zonque.org>
-Signed-off-by: Mark Brown <broonie@kernel.org>
-Cc: stable@vger.kernel.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- sound/soc/codecs/sta32x.c |    3 +++
- 1 file changed, 3 insertions(+)
-
---- a/sound/soc/codecs/sta32x.c
-+++ b/sound/soc/codecs/sta32x.c
-@@ -879,6 +879,9 @@ static int sta32x_probe(struct snd_soc_c
-       struct sta32x_priv *sta32x = snd_soc_codec_get_drvdata(codec);
-       struct sta32x_platform_data *pdata = sta32x->pdata;
-       int i, ret = 0, thermal = 0;
-+
-+      sta32x->component = component;
-+
-       ret = regulator_bulk_enable(ARRAY_SIZE(sta32x->supplies),
-                                   sta32x->supplies);
-       if (ret != 0) {
diff --git a/queue-4.14/fsnotify-fix-busy-inodes-during-unmount.patch b/queue-4.14/fsnotify-fix-busy-inodes-during-unmount.patch
deleted file mode 100644 (file)
index fbd1140..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-From 721fb6fbfd2132164c2e8777cc837f9b2c1794dc Mon Sep 17 00:00:00 2001
-From: Jan Kara <jack@suse.cz>
-Date: Wed, 17 Oct 2018 13:07:05 +0200
-Subject: fsnotify: Fix busy inodes during unmount
-
-From: Jan Kara <jack@suse.cz>
-
-commit 721fb6fbfd2132164c2e8777cc837f9b2c1794dc upstream.
-
-Detaching of mark connector from fsnotify_put_mark() can race with
-unmounting of the filesystem like:
-
-  CPU1                         CPU2
-fsnotify_put_mark()
-  spin_lock(&conn->lock);
-  ...
-  inode = fsnotify_detach_connector_from_object(conn)
-  spin_unlock(&conn->lock);
-                               generic_shutdown_super()
-                                 fsnotify_unmount_inodes()
-                                   sees connector detached for inode
-                                     -> nothing to do
-                                 evict_inode()
-                                   barfs on pending inode reference
-  iput(inode);
-
-Resulting in "Busy inodes after unmount" message and possible kernel
-oops. Make fsnotify_unmount_inodes() properly wait for outstanding inode
-references from detached connectors.
-
-Note that the accounting of outstanding inode references in the
-superblock can cause some cacheline contention on the counter. OTOH it
-happens only during deletion of the last notification mark from an inode
-(or during unlinking of watched inode) and that is not too bad. I have
-measured time to create & delete inotify watch 100000 times from 64
-processes in parallel (each process having its own inotify group and its
-own file on a shared superblock) on a 64 CPU machine. Average and
-standard deviation of 15 runs look like:
-
-       Avg             Stddev
-Vanilla        9.817400        0.276165
-Fixed  9.710467        0.228294
-
-So there's no statistically significant difference.
-
-Fixes: 6b3f05d24d35 ("fsnotify: Detach mark from object list when last reference is dropped")
-CC: stable@vger.kernel.org
-Signed-off-by: Jan Kara <jack@suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- fs/notify/fsnotify.c |    3 +++
- fs/notify/mark.c     |   39 +++++++++++++++++++++++++++++++--------
- include/linux/fs.h   |    3 +++
- 3 files changed, 37 insertions(+), 8 deletions(-)
-
---- a/fs/notify/fsnotify.c
-+++ b/fs/notify/fsnotify.c
-@@ -96,6 +96,9 @@ void fsnotify_unmount_inodes(struct supe
-       if (iput_inode)
-               iput(iput_inode);
-+      /* Wait for outstanding inode references from connectors */
-+      wait_var_event(&sb->s_fsnotify_inode_refs,
-+                     !atomic_long_read(&sb->s_fsnotify_inode_refs));
- }
- /*
---- a/fs/notify/mark.c
-+++ b/fs/notify/mark.c
-@@ -161,15 +161,18 @@ static void fsnotify_connector_destroy_w
-       }
- }
--static struct inode *fsnotify_detach_connector_from_object(
--                                      struct fsnotify_mark_connector *conn)
-+static void *fsnotify_detach_connector_from_object(
-+                                      struct fsnotify_mark_connector *conn,
-+                                      unsigned int *type)
- {
-       struct inode *inode = NULL;
-+      *type = conn->type;
-       if (conn->flags & FSNOTIFY_OBJ_TYPE_INODE) {
-               inode = conn->inode;
-               rcu_assign_pointer(inode->i_fsnotify_marks, NULL);
-               inode->i_fsnotify_mask = 0;
-+              atomic_long_inc(&inode->i_sb->s_fsnotify_inode_refs);
-               conn->inode = NULL;
-               conn->flags &= ~FSNOTIFY_OBJ_TYPE_INODE;
-       } else if (conn->flags & FSNOTIFY_OBJ_TYPE_VFSMOUNT) {
-@@ -193,10 +196,29 @@ static void fsnotify_final_mark_destroy(
-       fsnotify_put_group(group);
- }
-+/* Drop object reference originally held by a connector */
-+static void fsnotify_drop_object(unsigned int type, void *objp)
-+{
-+      struct inode *inode;
-+      struct super_block *sb;
-+
-+      if (!objp)
-+              return;
-+      /* Currently only inode references are passed to be dropped */
-+      if (WARN_ON_ONCE(type != FSNOTIFY_OBJ_TYPE_INODE))
-+              return;
-+      inode = objp;
-+      sb = inode->i_sb;
-+      iput(inode);
-+      if (atomic_long_dec_and_test(&sb->s_fsnotify_inode_refs))
-+              wake_up_var(&sb->s_fsnotify_inode_refs);
-+}
-+
- void fsnotify_put_mark(struct fsnotify_mark *mark)
- {
-       struct fsnotify_mark_connector *conn;
--      struct inode *inode = NULL;
-+      void *objp = NULL;
-+      unsigned int type = FSNOTIFY_OBJ_TYPE_DETACHED;
-       bool free_conn = false;
-       /* Catch marks that were actually never attached to object */
-@@ -216,7 +238,7 @@ void fsnotify_put_mark(struct fsnotify_m
-       conn = mark->connector;
-       hlist_del_init_rcu(&mark->obj_list);
-       if (hlist_empty(&conn->list)) {
--              inode = fsnotify_detach_connector_from_object(conn);
-+              objp = fsnotify_detach_connector_from_object(conn, &type);
-               free_conn = true;
-       } else {
-               __fsnotify_recalc_mask(conn);
-@@ -224,7 +246,7 @@ void fsnotify_put_mark(struct fsnotify_m
-       mark->connector = NULL;
-       spin_unlock(&conn->lock);
--      iput(inode);
-+      fsnotify_drop_object(type, objp);
-       if (free_conn) {
-               spin_lock(&destroy_lock);
-@@ -694,7 +716,8 @@ void fsnotify_destroy_marks(struct fsnot
- {
-       struct fsnotify_mark_connector *conn;
-       struct fsnotify_mark *mark, *old_mark = NULL;
--      struct inode *inode;
-+      void *objp;
-+      unsigned int type;
-       conn = fsnotify_grab_connector(connp);
-       if (!conn)
-@@ -720,11 +743,11 @@ void fsnotify_destroy_marks(struct fsnot
-        * mark references get dropped. It would lead to strange results such
-        * as delaying inode deletion or blocking unmount.
-        */
--      inode = fsnotify_detach_connector_from_object(conn);
-+      objp = fsnotify_detach_connector_from_object(conn, &type);
-       spin_unlock(&conn->lock);
-       if (old_mark)
-               fsnotify_put_mark(old_mark);
--      iput(inode);
-+      fsnotify_drop_object(type, objp);
- }
- /*
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -1406,6 +1406,9 @@ struct super_block {
-       /* Number of inodes with nlink == 0 but still referenced */
-       atomic_long_t s_remove_count;
-+      /* Pending fsnotify inode refs */
-+      atomic_long_t s_fsnotify_inode_refs;
-+
-       /* Being remounted read-only */
-       int s_readonly_remount;
index 244a02d3fccce61391ce354c8ad4121b12988e79..505bd137cc7a838cb3a2e4c99fb8a1b4ceea0c00 100644 (file)
@@ -132,7 +132,6 @@ dmaengine-stm32-dma-fix-incomplete-configuration-in-cyclic-mode.patch
 libnvdimm-hold-reference-on-parent-while-scheduling-async-init.patch
 libnvdimm-region-fail-badblocks-listing-for-inactive-regions.patch
 asoc-intel-skylake-add-missing-break-in-skl_tplg_get_token.patch
-asoc-sta32x-set-component-pointer-in-private-struct.patch
 ib-mlx5-fix-mr-cache-initialization.patch
 jbd2-fix-use-after-free-in-jbd2_log_do_checkpoint.patch
 gfs2_meta-mount-can-get-null-dev_name.patch
@@ -177,12 +176,11 @@ lockd-fix-access-beyond-unterminated-strings-in-prints.patch
 dm-ioctl-harden-copy_params-s-copy_from_user-from-malicious-users.patch
 dm-zoned-fix-metadata-block-ref-counting.patch
 dm-zoned-fix-various-dmz_get_mblock-issues.patch
-fsnotify-fix-busy-inodes-during-unmount.patch
 powerpc-msi-fix-compile-error-on-mpc83xx.patch
 mips-octeon-fix-out-of-bounds-array-access-on-cn68xx.patch
 power-supply-twl4030-charger-fix-of-sibling-node-lookup.patch
 iommu-arm-smmu-ensure-that-page-table-updates-are-visible-before-tlbi.patch
 tc-set-dma-masks-for-devices.patch
-xprtrdma-reset-credit-grant-properly-after-a-disconnect.patch
 net-bcmgenet-fix-of-child-node-lookup.patch
 media-v4l2-tpg-fix-kernel-oops-when-enabling-hflip-and-osd.patch
+kgdboc-passing-ekgdboc-to-command-line-causes-panic.patch
diff --git a/queue-4.14/xprtrdma-reset-credit-grant-properly-after-a-disconnect.patch b/queue-4.14/xprtrdma-reset-credit-grant-properly-after-a-disconnect.patch
deleted file mode 100644 (file)
index cc53ebf..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-From ef739b2175dde9c05594f768cb78149f1ce2ac36 Mon Sep 17 00:00:00 2001
-From: Chuck Lever <chuck.lever@oracle.com>
-Date: Mon, 1 Oct 2018 14:25:14 -0400
-Subject: xprtrdma: Reset credit grant properly after a disconnect
-
-From: Chuck Lever <chuck.lever@oracle.com>
-
-commit ef739b2175dde9c05594f768cb78149f1ce2ac36 upstream.
-
-On a fresh connection, an RPC/RDMA client is supposed to send only
-one RPC Call until it gets a credit grant in the first RPC Reply
-from the server [RFC 8166, Section 3.3.3].
-
-There is a bug in the Linux client's credit accounting mechanism
-introduced by commit e7ce710a8802 ("xprtrdma: Avoid deadlock when
-credit window is reset"). On connect, it simply dumps all pending
-RPC Calls onto the new connection.
-
-Servers have been tolerant of this bad behavior. Currently no server
-implementation ever changes its credit grant over reconnects, and
-servers always repost enough Receives before connections are fully
-established.
-
-To correct this issue, ensure that the client resets both the credit
-grant _and_ the congestion window when handling a reconnect.
-
-Fixes: e7ce710a8802 ("xprtrdma: Avoid deadlock when credit ... ")
-Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
-Cc: stable@kernel.org
-Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- net/sunrpc/xprtrdma/svc_rdma_backchannel.c |    1 +
- net/sunrpc/xprtrdma/transport.c            |    6 ++++++
- 2 files changed, 7 insertions(+)
-
---- a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
-+++ b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
-@@ -263,6 +263,7 @@ static void
- xprt_rdma_bc_close(struct rpc_xprt *xprt)
- {
-       dprintk("svcrdma: %s: xprt %p\n", __func__, xprt);
-+      xprt->cwnd = RPC_CWNDSHIFT;
- }
- static void
---- a/net/sunrpc/xprtrdma/transport.c
-+++ b/net/sunrpc/xprtrdma/transport.c
-@@ -484,6 +484,12 @@ xprt_rdma_close(struct rpc_xprt *xprt)
-               xprt->reestablish_timeout = 0;
-       xprt_disconnect_done(xprt);
-       rpcrdma_ep_disconnect(ep, ia);
-+
-+      /* Prepare @xprt for the next connection by reinitializing
-+       * its credit grant to one (see RFC 8166, Section 3.3.3).
-+       */
-+      r_xprt->rx_buf.rb_credits = 1;
-+      xprt->cwnd = RPC_CWNDSHIFT;
- }
- static void