]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 22 Jan 2024 19:40:25 +0000 (11:40 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 22 Jan 2024 19:40:25 +0000 (11:40 -0800)
added patches:
fbdev-flush-deferred-work-in-fb_deferred_io_fsync.patch
rootfs-fix-support-for-rootfstype-when-root-is-given.patch

queue-5.4/fbdev-flush-deferred-work-in-fb_deferred_io_fsync.patch [new file with mode: 0644]
queue-5.4/rootfs-fix-support-for-rootfstype-when-root-is-given.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/fbdev-flush-deferred-work-in-fb_deferred_io_fsync.patch b/queue-5.4/fbdev-flush-deferred-work-in-fb_deferred_io_fsync.patch
new file mode 100644 (file)
index 0000000..ffdabce
--- /dev/null
@@ -0,0 +1,51 @@
+From 15e4c1f462279b4e128f27de48133e0debe9e0df Mon Sep 17 00:00:00 2001
+From: Nam Cao <namcao@linutronix.de>
+Date: Mon, 18 Dec 2023 10:57:30 +0100
+Subject: fbdev: flush deferred work in fb_deferred_io_fsync()
+
+From: Nam Cao <namcao@linutronix.de>
+
+commit 15e4c1f462279b4e128f27de48133e0debe9e0df upstream.
+
+The driver's fsync() is supposed to flush any pending operation to
+hardware. It is implemented in this driver by cancelling the queued
+deferred IO first, then schedule it for "immediate execution" by calling
+schedule_delayed_work() again with delay=0. However, setting delay=0
+only means the work is scheduled immediately, it does not mean the work
+is executed immediately. There is no guarantee that the work is finished
+after schedule_delayed_work() returns. After this driver's fsync()
+returns, there can still be pending work. Furthermore, if close() is
+called by users immediately after fsync(), the pending work gets
+cancelled and fsync() may do nothing.
+
+To ensure that the deferred IO completes, use flush_delayed_work()
+instead. Write operations to this driver either write to the device
+directly, or invoke schedule_delayed_work(); so by flushing the
+workqueue, it can be guaranteed that all previous writes make it to the
+device.
+
+Fixes: 5e841b88d23d ("fb: fsync() method for deferred I/O flush.")
+Cc: stable@vger.kernel.org
+Signed-off-by: Nam Cao <namcao@linutronix.de>
+Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Helge Deller <deller@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/video/fbdev/core/fb_defio.c |    6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+--- a/drivers/video/fbdev/core/fb_defio.c
++++ b/drivers/video/fbdev/core/fb_defio.c
+@@ -78,11 +78,7 @@ int fb_deferred_io_fsync(struct file *fi
+               return 0;
+       inode_lock(inode);
+-      /* Kill off the delayed work */
+-      cancel_delayed_work_sync(&info->deferred_work);
+-
+-      /* Run it immediately */
+-      schedule_delayed_work(&info->deferred_work, 0);
++      flush_delayed_work(&info->deferred_work);
+       inode_unlock(inode);
+       return 0;
diff --git a/queue-5.4/rootfs-fix-support-for-rootfstype-when-root-is-given.patch b/queue-5.4/rootfs-fix-support-for-rootfstype-when-root-is-given.patch
new file mode 100644 (file)
index 0000000..6baef2e
--- /dev/null
@@ -0,0 +1,70 @@
+From 21528c69a0d8483f7c6345b1a0bc8d8975e9a172 Mon Sep 17 00:00:00 2001
+From: Stefan Berger <stefanb@linux.ibm.com>
+Date: Sun, 19 Nov 2023 20:12:48 -0500
+Subject: rootfs: Fix support for rootfstype= when root= is given
+
+From: Stefan Berger <stefanb@linux.ibm.com>
+
+commit 21528c69a0d8483f7c6345b1a0bc8d8975e9a172 upstream.
+
+Documentation/filesystems/ramfs-rootfs-initramfs.rst states:
+
+  If CONFIG_TMPFS is enabled, rootfs will use tmpfs instead of ramfs by
+  default.  To force ramfs, add "rootfstype=ramfs" to the kernel command
+  line.
+
+This currently does not work when root= is provided since then
+saved_root_name contains a string and rootfstype= is ignored. Therefore,
+ramfs is currently always chosen when root= is provided.
+
+The current behavior for rootfs's filesystem is:
+
+   root=       | rootfstype= | chosen rootfs filesystem
+   ------------+-------------+--------------------------
+   unspecified | unspecified | tmpfs
+   unspecified | tmpfs       | tmpfs
+   unspecified | ramfs       | ramfs
+    provided   | ignored     | ramfs
+
+rootfstype= should be respected regardless whether root= is given,
+as shown below:
+
+   root=       | rootfstype= | chosen rootfs filesystem
+   ------------+-------------+--------------------------
+   unspecified | unspecified | tmpfs  (as before)
+   unspecified | tmpfs       | tmpfs  (as before)
+   unspecified | ramfs       | ramfs  (as before)
+    provided   | unspecified | ramfs  (compatibility with before)
+    provided   | tmpfs       | tmpfs  (new)
+    provided   | ramfs       | ramfs  (new)
+
+This table represents the new behavior.
+
+Fixes: 6e19eded3684 ("initmpfs: use initramfs if rootfstype= or root= specified")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Rob Landley <rob@landley.net>
+Link: https://lore.kernel.org/lkml/8244c75f-445e-b15b-9dbf-266e7ca666e2@landley.net/
+Reviewed-and-Tested-by: Mimi Zohar <zohar@linux.ibm.com>
+Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
+Link: https://lore.kernel.org/r/20231120011248.396012-1-stefanb@linux.ibm.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ init/do_mounts.c |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/init/do_mounts.c
++++ b/init/do_mounts.c
+@@ -643,7 +643,10 @@ struct file_system_type rootfs_fs_type =
+ void __init init_rootfs(void)
+ {
+-      if (IS_ENABLED(CONFIG_TMPFS) && !saved_root_name[0] &&
+-              (!root_fs_names || strstr(root_fs_names, "tmpfs")))
+-              is_tmpfs = true;
++      if (IS_ENABLED(CONFIG_TMPFS)) {
++              if (!saved_root_name[0] && !root_fs_names)
++                      is_tmpfs = true;
++              else if (root_fs_names && !!strstr(root_fs_names, "tmpfs"))
++                      is_tmpfs = true;
++      }
+ }
index 1e7f357c4bcea0a6a4fafb23c152bfab21573160..05c8cb245d3c2a55b6ff1830fedc2bc9f3c509f8 100644 (file)
@@ -153,4 +153,6 @@ revert-usb-typec-class-fix-typec_altmode_put_partner-to-put-plugs.patch
 usb-typec-class-fix-typec_altmode_put_partner-to-put-plugs.patch
 usb-mon-fix-atomicity-violation-in-mon_bin_vma_fault.patch
 alsa-oxygen-fix-right-channel-of-capture-volume-mixer.patch
+fbdev-flush-deferred-work-in-fb_deferred_io_fsync.patch
+rootfs-fix-support-for-rootfstype-when-root-is-given.patch
 net-ethernet-mtk_eth_soc-remove-duplicate-if-statements.patch