]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Mar 2020 11:40:38 +0000 (12:40 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Mar 2020 11:40:38 +0000 (12:40 +0100)
added patches:
cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch
ktest-add-timeout-for-ssh-sync-testing.patch

queue-4.14/cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch [new file with mode: 0644]
queue-4.14/ktest-add-timeout-for-ssh-sync-testing.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch b/queue-4.14/cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch
new file mode 100644 (file)
index 0000000..d888d53
--- /dev/null
@@ -0,0 +1,66 @@
+From d9a9f4849fe0c9d560851ab22a85a666cddfdd24 Mon Sep 17 00:00:00 2001
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Thu, 12 Mar 2020 18:25:20 -0400
+Subject: cifs_atomic_open(): fix double-put on late allocation failure
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+commit d9a9f4849fe0c9d560851ab22a85a666cddfdd24 upstream.
+
+several iterations of ->atomic_open() calling conventions ago, we
+used to need fput() if ->atomic_open() failed at some point after
+successful finish_open().  Now (since 2016) it's not needed -
+struct file carries enough state to make fput() work regardless
+of the point in struct file lifecycle and discarding it on
+failure exits in open() got unified.  Unfortunately, I'd missed
+the fact that we had an instance of ->atomic_open() (cifs one)
+that used to need that fput(), as well as the stale comment in
+finish_open() demanding such late failure handling.  Trivially
+fixed...
+
+Fixes: fe9ec8291fca "do_last(): take fput() on error after opening to out:"
+Cc: stable@kernel.org # v4.7+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/filesystems/porting |    7 +++++++
+ fs/cifs/dir.c                     |    1 -
+ fs/open.c                         |    3 ---
+ 3 files changed, 7 insertions(+), 4 deletions(-)
+
+--- a/Documentation/filesystems/porting
++++ b/Documentation/filesystems/porting
+@@ -606,3 +606,10 @@ in your dentry operations instead.
+       dentry separately, and it now has request_mask and query_flags arguments
+       to specify the fields and sync type requested by statx.  Filesystems not
+       supporting any statx-specific features may ignore the new arguments.
++--
++[mandatory]
++
++      [should've been added in 2016] stale comment in finish_open()
++      nonwithstanding, failure exits in ->atomic_open() instances should
++      *NOT* fput() the file, no matter what.  Everything is handled by the
++      caller.
+--- a/fs/cifs/dir.c
++++ b/fs/cifs/dir.c
+@@ -562,7 +562,6 @@ cifs_atomic_open(struct inode *inode, st
+               if (server->ops->close)
+                       server->ops->close(xid, tcon, &fid);
+               cifs_del_pending_open(&open);
+-              fput(file);
+               rc = -ENOMEM;
+       }
+--- a/fs/open.c
++++ b/fs/open.c
+@@ -824,9 +824,6 @@ cleanup_file:
+  * the return value of d_splice_alias(), then the caller needs to perform dput()
+  * on it after finish_open().
+  *
+- * On successful return @file is a fully instantiated open file.  After this, if
+- * an error occurs in ->atomic_open(), it needs to clean up with fput().
+- *
+  * Returns zero on success or -errno if the open failed.
+  */
+ int finish_open(struct file *file, struct dentry *dentry,
diff --git a/queue-4.14/ktest-add-timeout-for-ssh-sync-testing.patch b/queue-4.14/ktest-add-timeout-for-ssh-sync-testing.patch
new file mode 100644 (file)
index 0000000..8de7519
--- /dev/null
@@ -0,0 +1,36 @@
+From 4d00fc477a2ce8b6d2b09fb34ef9fe9918e7d434 Mon Sep 17 00:00:00 2001
+From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
+Date: Mon, 9 Mar 2020 16:00:11 -0400
+Subject: ktest: Add timeout for ssh sync testing
+
+From: Steven Rostedt (VMware) <rostedt@goodmis.org>
+
+commit 4d00fc477a2ce8b6d2b09fb34ef9fe9918e7d434 upstream.
+
+Before rebooting the box, a "ssh sync" is called to the test machine to see
+if it is alive or not. But if the test machine is in a partial state, that
+ssh may never actually finish, and the ktest test hangs.
+
+Add a 10 second timeout to the sync test, which will fail after 10 seconds
+and then cause the test to reboot the test machine.
+
+Cc: stable@vger.kernel.org
+Fixes: 6474ace999edd ("ktest.pl: Powercycle the box on reboot if no connection can be made")
+Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ tools/testing/ktest/ktest.pl |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/tools/testing/ktest/ktest.pl
++++ b/tools/testing/ktest/ktest.pl
+@@ -1345,7 +1345,7 @@ sub reboot {
+     } else {
+       # Make sure everything has been written to disk
+-      run_ssh("sync");
++      run_ssh("sync", 10);
+       if (defined($time)) {
+           start_monitor;
index d88e81b7cca9bb04df789f7665a43ee5d5f9c22b..947f71854a3e9418d184b6503be147e0f34f5732 100644 (file)
@@ -41,3 +41,5 @@ virtio-blk-fix-hw_queue-stopped-on-arbitrary-error.patch
 iommu-vt-d-quirk_ioat_snb_local_iommu-replace-warn_taint-with-pr_warn-add_taint.patch
 workqueue-don-t-use-wq_select_unbound_cpu-for-bound-works.patch
 drm-amd-display-remove-duplicated-assignment-to-grph_obj_type.patch
+ktest-add-timeout-for-ssh-sync-testing.patch
+cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch