From 6b6e5f45dc73678d5b0be2000d9ea17732f711f2 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 23 Jul 2024 15:35:14 +0200 Subject: [PATCH] 5.10-stable patches added patches: ext4-fix-error-code-saved-on-super-block-during-file-system-abort.patch ext4-send-notifications-on-error.patch --- ...super-block-during-file-system-abort.patch | 38 +++++++++ .../ext4-send-notifications-on-error.patch | 78 +++++++++++++++++++ queue-5.10/series | 2 + 3 files changed, 118 insertions(+) create mode 100644 queue-5.10/ext4-fix-error-code-saved-on-super-block-during-file-system-abort.patch create mode 100644 queue-5.10/ext4-send-notifications-on-error.patch diff --git a/queue-5.10/ext4-fix-error-code-saved-on-super-block-during-file-system-abort.patch b/queue-5.10/ext4-fix-error-code-saved-on-super-block-during-file-system-abort.patch new file mode 100644 index 00000000000..0456d986004 --- /dev/null +++ b/queue-5.10/ext4-fix-error-code-saved-on-super-block-during-file-system-abort.patch @@ -0,0 +1,38 @@ +From 124e7c61deb27d758df5ec0521c36cf08d417f7a Mon Sep 17 00:00:00 2001 +From: Gabriel Krisman Bertazi +Date: Tue, 26 Oct 2021 14:33:02 -0300 +Subject: ext4: fix error code saved on super block during file system abort + +From: Gabriel Krisman Bertazi + +commit 124e7c61deb27d758df5ec0521c36cf08d417f7a upstream. + +ext4_abort will eventually call ext4_errno_to_code, which translates the +errno to an EXT4_ERR specific error. This means that ext4_abort expects +an errno. By using EXT4_ERR_ here, it gets misinterpreted (as an errno), +and ends up saving EXT4_ERR_EBUSY on the superblock during an abort, +which makes no sense. + +ESHUTDOWN will get properly translated to EXT4_ERR_SHUTDOWN, so use that +instead. + +Signed-off-by: Gabriel Krisman Bertazi +Link: https://lore.kernel.org/r/20211026173302.84000-1-krisman@collabora.com +Signed-off-by: Theodore Ts'o +Signed-off-by: Ajay Kaher +Signed-off-by: Greg Kroah-Hartman +--- + fs/ext4/super.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/ext4/super.c ++++ b/fs/ext4/super.c +@@ -5887,7 +5887,7 @@ static int ext4_remount(struct super_blo + } + + if (ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED)) +- ext4_abort(sb, EXT4_ERR_ESHUTDOWN, "Abort forced by user"); ++ ext4_abort(sb, ESHUTDOWN, "Abort forced by user"); + + sb->s_flags = (sb->s_flags & ~SB_POSIXACL) | + (test_opt(sb, POSIX_ACL) ? SB_POSIXACL : 0); diff --git a/queue-5.10/ext4-send-notifications-on-error.patch b/queue-5.10/ext4-send-notifications-on-error.patch new file mode 100644 index 00000000000..abe393cfedb --- /dev/null +++ b/queue-5.10/ext4-send-notifications-on-error.patch @@ -0,0 +1,78 @@ +From 9a089b21f79b47eed240d4da7ea0d049de7c9b4d Mon Sep 17 00:00:00 2001 +From: Gabriel Krisman Bertazi +Date: Mon, 25 Oct 2021 16:27:44 -0300 +Subject: ext4: Send notifications on error + +From: Gabriel Krisman Bertazi + +commit 9a089b21f79b47eed240d4da7ea0d049de7c9b4d upstream. + +Send a FS_ERROR message via fsnotify to a userspace monitoring tool +whenever a ext4 error condition is triggered. This follows the existing +error conditions in ext4, so it is hooked to the ext4_error* functions. + +Link: https://lore.kernel.org/r/20211025192746.66445-30-krisman@collabora.com +Signed-off-by: Gabriel Krisman Bertazi +Acked-by: Theodore Ts'o +Reviewed-by: Amir Goldstein +Reviewed-by: Jan Kara +Signed-off-by: Jan Kara +[Ajay: - Modified to apply on v5.10.y + - Added fsnotify for __ext4_abort()] +Signed-off-by: Ajay Kaher +Signed-off-by: Greg Kroah-Hartman +--- + fs/ext4/super.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/fs/ext4/super.c ++++ b/fs/ext4/super.c +@@ -46,6 +46,7 @@ + #include + #include + #include ++#include + + #include "ext4.h" + #include "ext4_extents.h" /* Needed for trace points definition */ +@@ -699,6 +700,7 @@ void __ext4_error(struct super_block *sb + sb->s_id, function, line, current->comm, &vaf); + va_end(args); + } ++ fsnotify_sb_error(sb, NULL, error ? error : EFSCORRUPTED); + save_error_info(sb, error, 0, block, function, line); + ext4_handle_error(sb); + } +@@ -730,6 +732,7 @@ void __ext4_error_inode(struct inode *in + current->comm, &vaf); + va_end(args); + } ++ fsnotify_sb_error(inode->i_sb, inode, error ? error : EFSCORRUPTED); + save_error_info(inode->i_sb, error, inode->i_ino, block, + function, line); + ext4_handle_error(inode->i_sb); +@@ -769,6 +772,7 @@ void __ext4_error_file(struct file *file + current->comm, path, &vaf); + va_end(args); + } ++ fsnotify_sb_error(inode->i_sb, inode, EFSCORRUPTED); + save_error_info(inode->i_sb, EFSCORRUPTED, inode->i_ino, block, + function, line); + ext4_handle_error(inode->i_sb); +@@ -837,7 +841,7 @@ void __ext4_std_error(struct super_block + printk(KERN_CRIT "EXT4-fs error (device %s) in %s:%d: %s\n", + sb->s_id, function, line, errstr); + } +- ++ fsnotify_sb_error(sb, NULL, errno ? errno : EFSCORRUPTED); + save_error_info(sb, -errno, 0, 0, function, line); + ext4_handle_error(sb); + } +@@ -861,6 +865,7 @@ void __ext4_abort(struct super_block *sb + if (unlikely(ext4_forced_shutdown(EXT4_SB(sb)))) + return; + ++ fsnotify_sb_error(sb, NULL, error ? error : EFSCORRUPTED); + save_error_info(sb, error, 0, 0, function, line); + va_start(args, fmt); + vaf.fmt = fmt; diff --git a/queue-5.10/series b/queue-5.10/series index f780fb1bd14..fe97dca59d6 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -46,3 +46,5 @@ acpi-processor_idle-fix-invalid-comparison-with-insertion-sort-for-latency.patch bpf-fix-overrunning-reservations-in-ringbuf.patch bpf-skmsg-fix-null-pointer-dereference-in-sk_psock_skb_ingress_enqueue.patch scsi-core-fix-a-use-after-free.patch +ext4-fix-error-code-saved-on-super-block-during-file-system-abort.patch +ext4-send-notifications-on-error.patch -- 2.47.3