From: Greg Kroah-Hartman Date: Mon, 16 Mar 2020 11:40:55 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v4.19.111~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c9c216ffaf1ec8c4d3d28325ef37018ebfc29383;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch ktest-add-timeout-for-ssh-sync-testing.patch --- diff --git a/queue-4.19/cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch b/queue-4.19/cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch new file mode 100644 index 00000000000..ec4d72e314f --- /dev/null +++ b/queue-4.19/cifs_atomic_open-fix-double-put-on-late-allocation-failure.patch @@ -0,0 +1,66 @@ +From d9a9f4849fe0c9d560851ab22a85a666cddfdd24 Mon Sep 17 00:00:00 2001 +From: Al Viro +Date: Thu, 12 Mar 2020 18:25:20 -0400 +Subject: cifs_atomic_open(): fix double-put on late allocation failure + +From: Al Viro + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -627,3 +627,10 @@ in your dentry operations instead. + DCACHE_RCUACCESS is gone; having an RCU delay on dentry freeing is the + default. DCACHE_NORCU opts out, and only d_alloc_pseudo() has any + business doing so. ++-- ++[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 +@@ -561,7 +561,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 +@@ -851,9 +851,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.19/ktest-add-timeout-for-ssh-sync-testing.patch b/queue-4.19/ktest-add-timeout-for-ssh-sync-testing.patch new file mode 100644 index 00000000000..8a85f63ff39 --- /dev/null +++ b/queue-4.19/ktest-add-timeout-for-ssh-sync-testing.patch @@ -0,0 +1,36 @@ +From 4d00fc477a2ce8b6d2b09fb34ef9fe9918e7d434 Mon Sep 17 00:00:00 2001 +From: "Steven Rostedt (VMware)" +Date: Mon, 9 Mar 2020 16:00:11 -0400 +Subject: ktest: Add timeout for ssh sync testing + +From: Steven Rostedt (VMware) + +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) +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -1372,7 +1372,7 @@ sub reboot { + + } else { + # Make sure everything has been written to disk +- run_ssh("sync"); ++ run_ssh("sync", 10); + + if (defined($time)) { + start_monitor; diff --git a/queue-4.19/series b/queue-4.19/series index 1b47b2dd7bd..0578ecc81d8 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -54,3 +54,5 @@ netfilter-xt_recent-recent_seq_next-should-increase-position-index.patch netfilter-x_tables-xt_mttg_seq_next-should-increase-position-index.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