]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 Nov 2023 14:05:56 +0000 (14:05 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 Nov 2023 14:05:56 +0000 (14:05 +0000)
added patches:
ext4-apply-umask-if-acl-support-is-disabled.patch
ext4-correct-offset-of-gdb-backup-in-non-meta_bg-group-to-update_backups.patch
ext4-correct-return-value-of-ext4_convert_meta_bg.patch
ext4-remove-gdb-backup-copy-for-meta-bg-in-setup_new_flex_group_blocks.patch
revert-net-r8169-disable-multicast-filter-for-rtl8168h-and-rtl8107e.patch

queue-4.19/ext4-apply-umask-if-acl-support-is-disabled.patch [new file with mode: 0644]
queue-4.19/ext4-correct-offset-of-gdb-backup-in-non-meta_bg-group-to-update_backups.patch [new file with mode: 0644]
queue-4.19/ext4-correct-return-value-of-ext4_convert_meta_bg.patch [new file with mode: 0644]
queue-4.19/ext4-remove-gdb-backup-copy-for-meta-bg-in-setup_new_flex_group_blocks.patch [new file with mode: 0644]
queue-4.19/revert-net-r8169-disable-multicast-filter-for-rtl8168h-and-rtl8107e.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/ext4-apply-umask-if-acl-support-is-disabled.patch b/queue-4.19/ext4-apply-umask-if-acl-support-is-disabled.patch
new file mode 100644 (file)
index 0000000..84c627f
--- /dev/null
@@ -0,0 +1,45 @@
+From 484fd6c1de13b336806a967908a927cc0356e312 Mon Sep 17 00:00:00 2001
+From: Max Kellermann <max.kellermann@ionos.com>
+Date: Tue, 19 Sep 2023 10:18:23 +0200
+Subject: ext4: apply umask if ACL support is disabled
+
+From: Max Kellermann <max.kellermann@ionos.com>
+
+commit 484fd6c1de13b336806a967908a927cc0356e312 upstream.
+
+The function ext4_init_acl() calls posix_acl_create() which is
+responsible for applying the umask.  But without
+CONFIG_EXT4_FS_POSIX_ACL, ext4_init_acl() is an empty inline function,
+and nobody applies the umask.
+
+This fixes a bug which causes the umask to be ignored with O_TMPFILE
+on ext4:
+
+ https://github.com/MusicPlayerDaemon/MPD/issues/558
+ https://bugs.gentoo.org/show_bug.cgi?id=686142#c3
+ https://bugzilla.kernel.org/show_bug.cgi?id=203625
+
+Reviewed-by: "J. Bruce Fields" <bfields@redhat.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
+Link: https://lore.kernel.org/r/20230919081824.1096619-1-max.kellermann@ionos.com
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/ext4/acl.h |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/fs/ext4/acl.h
++++ b/fs/ext4/acl.h
+@@ -67,6 +67,11 @@ extern int ext4_init_acl(handle_t *, str
+ static inline int
+ ext4_init_acl(handle_t *handle, struct inode *inode, struct inode *dir)
+ {
++      /* usually, the umask is applied by posix_acl_create(), but if
++         ext4 ACL support is disabled at compile time, we need to do
++         it here, because posix_acl_create() will never be called */
++      inode->i_mode &= ~current_umask();
++
+       return 0;
+ }
+ #endif  /* CONFIG_EXT4_FS_POSIX_ACL */
diff --git a/queue-4.19/ext4-correct-offset-of-gdb-backup-in-non-meta_bg-group-to-update_backups.patch b/queue-4.19/ext4-correct-offset-of-gdb-backup-in-non-meta_bg-group-to-update_backups.patch
new file mode 100644 (file)
index 0000000..13755df
--- /dev/null
@@ -0,0 +1,57 @@
+From 31f13421c004a420c0e9d288859c9ea9259ea0cc Mon Sep 17 00:00:00 2001
+From: Kemeng Shi <shikemeng@huaweicloud.com>
+Date: Sun, 27 Aug 2023 01:47:00 +0800
+Subject: ext4: correct offset of gdb backup in non meta_bg group to update_backups
+
+From: Kemeng Shi <shikemeng@huaweicloud.com>
+
+commit 31f13421c004a420c0e9d288859c9ea9259ea0cc upstream.
+
+Commit 0aeaa2559d6d5 ("ext4: fix corruption when online resizing a 1K
+bigalloc fs") found that primary superblock's offset in its group is
+not equal to offset of backup superblock in its group when block size
+is 1K and bigalloc is enabled. As group descriptor blocks are right
+after superblock, we can't pass block number of gdb to update_backups
+for the same reason.
+
+The root casue of the issue above is that leading 1K padding block is
+count as data block offset for primary block while backup block has no
+padding block offset in its group.
+
+Remove padding data block count to fix the issue for gdb backups.
+
+For meta_bg case, update_backups treat blk_off as block number, do no
+conversion in this case.
+
+Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
+Reviewed-by: Theodore Ts'o <tytso@mit.edu>
+Link: https://lore.kernel.org/r/20230826174712.4059355-2-shikemeng@huaweicloud.com
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Cc: stable@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/ext4/resize.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/fs/ext4/resize.c
++++ b/fs/ext4/resize.c
+@@ -1565,6 +1565,8 @@ exit_journal:
+               int gdb_num_end = ((group + flex_gd->count - 1) /
+                                  EXT4_DESC_PER_BLOCK(sb));
+               int meta_bg = ext4_has_feature_meta_bg(sb);
++              sector_t padding_blocks = meta_bg ? 0 : sbi->s_sbh->b_blocknr -
++                                       ext4_group_first_block_no(sb, 0);
+               sector_t old_gdb = 0;
+               update_backups(sb, ext4_group_first_block_no(sb, 0),
+@@ -1576,8 +1578,8 @@ exit_journal:
+                                                    gdb_num);
+                       if (old_gdb == gdb_bh->b_blocknr)
+                               continue;
+-                      update_backups(sb, gdb_bh->b_blocknr, gdb_bh->b_data,
+-                                     gdb_bh->b_size, meta_bg);
++                      update_backups(sb, gdb_bh->b_blocknr - padding_blocks,
++                                     gdb_bh->b_data, gdb_bh->b_size, meta_bg);
+                       old_gdb = gdb_bh->b_blocknr;
+               }
+       }
diff --git a/queue-4.19/ext4-correct-return-value-of-ext4_convert_meta_bg.patch b/queue-4.19/ext4-correct-return-value-of-ext4_convert_meta_bg.patch
new file mode 100644 (file)
index 0000000..9dd147e
--- /dev/null
@@ -0,0 +1,33 @@
+From 48f1551592c54f7d8e2befc72a99ff4e47f7dca0 Mon Sep 17 00:00:00 2001
+From: Kemeng Shi <shikemeng@huaweicloud.com>
+Date: Sun, 27 Aug 2023 01:47:02 +0800
+Subject: ext4: correct return value of ext4_convert_meta_bg
+
+From: Kemeng Shi <shikemeng@huaweicloud.com>
+
+commit 48f1551592c54f7d8e2befc72a99ff4e47f7dca0 upstream.
+
+Avoid to ignore error in "err".
+
+Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
+Link: https://lore.kernel.org/r/20230826174712.4059355-4-shikemeng@huaweicloud.com
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Cc: stable@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/ext4/resize.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/fs/ext4/resize.c
++++ b/fs/ext4/resize.c
+@@ -1942,9 +1942,7 @@ static int ext4_convert_meta_bg(struct s
+ errout:
+       ret = ext4_journal_stop(handle);
+-      if (!err)
+-              err = ret;
+-      return ret;
++      return err ? err : ret;
+ invalid_resize_inode:
+       ext4_error(sb, "corrupted/inconsistent resize inode");
diff --git a/queue-4.19/ext4-remove-gdb-backup-copy-for-meta-bg-in-setup_new_flex_group_blocks.patch b/queue-4.19/ext4-remove-gdb-backup-copy-for-meta-bg-in-setup_new_flex_group_blocks.patch
new file mode 100644 (file)
index 0000000..b68a85d
--- /dev/null
@@ -0,0 +1,67 @@
+From 40dd7953f4d606c280074f10d23046b6812708ce Mon Sep 17 00:00:00 2001
+From: Kemeng Shi <shikemeng@huaweicloud.com>
+Date: Sun, 27 Aug 2023 01:47:03 +0800
+Subject: ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks
+
+From: Kemeng Shi <shikemeng@huaweicloud.com>
+
+commit 40dd7953f4d606c280074f10d23046b6812708ce upstream.
+
+Wrong check of gdb backup in meta bg as following:
+first_group is the first group of meta_bg which contains target group, so
+target group is always >= first_group. We check if target group has gdb
+backup by comparing first_group with [group + 1] and [group +
+EXT4_DESC_PER_BLOCK(sb) - 1]. As group >= first_group, then [group + N] is
+> first_group. So no copy of gdb backup in meta bg is done in
+setup_new_flex_group_blocks.
+
+No need to do gdb backup copy in meta bg from setup_new_flex_group_blocks
+as we always copy updated gdb block to backups at end of
+ext4_flex_group_add as following:
+
+ext4_flex_group_add
+  /* no gdb backup copy for meta bg any more */
+  setup_new_flex_group_blocks
+
+  /* update current group number */
+  ext4_update_super
+    sbi->s_groups_count += flex_gd->count;
+
+  /*
+   * if group in meta bg contains backup is added, the primary gdb block
+   * of the meta bg will be copy to backup in new added group here.
+   */
+  for (; gdb_num <= gdb_num_end; gdb_num++)
+    update_backups(...)
+
+In summary, we can remove wrong gdb backup copy code in
+setup_new_flex_group_blocks.
+
+Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
+Reviewed-by: Theodore Ts'o <tytso@mit.edu>
+Link: https://lore.kernel.org/r/20230826174712.4059355-5-shikemeng@huaweicloud.com
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Cc: stable@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/ext4/resize.c |    9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
+
+--- a/fs/ext4/resize.c
++++ b/fs/ext4/resize.c
+@@ -572,13 +572,8 @@ static int setup_new_flex_group_blocks(s
+               if (meta_bg == 0 && !ext4_bg_has_super(sb, group))
+                       goto handle_itb;
+-              if (meta_bg == 1) {
+-                      ext4_group_t first_group;
+-                      first_group = ext4_meta_bg_first_group(sb, group);
+-                      if (first_group != group + 1 &&
+-                          first_group != group + EXT4_DESC_PER_BLOCK(sb) - 1)
+-                              goto handle_itb;
+-              }
++              if (meta_bg == 1)
++                      goto handle_itb;
+               block = start + ext4_bg_has_super(sb, group);
+               /* Copy all of the GDT blocks into the backup in this group */
diff --git a/queue-4.19/revert-net-r8169-disable-multicast-filter-for-rtl8168h-and-rtl8107e.patch b/queue-4.19/revert-net-r8169-disable-multicast-filter-for-rtl8168h-and-rtl8107e.patch
new file mode 100644 (file)
index 0000000..0ec5d93
--- /dev/null
@@ -0,0 +1,45 @@
+From 6a26310273c323380da21eb23fcfd50e31140913 Mon Sep 17 00:00:00 2001
+From: Heiner Kallweit <hkallweit1@gmail.com>
+Date: Tue, 21 Nov 2023 09:09:33 +0100
+Subject: Revert "net: r8169: Disable multicast filter for RTL8168H and RTL8107E"
+
+From: Heiner Kallweit <hkallweit1@gmail.com>
+
+commit 6a26310273c323380da21eb23fcfd50e31140913 upstream.
+
+This reverts commit efa5f1311c4998e9e6317c52bc5ee93b3a0f36df.
+
+I couldn't reproduce the reported issue. What I did, based on a pcap
+packet log provided by the reporter:
+- Used same chip version (RTL8168h)
+- Set MAC address to the one used on the reporters system
+- Replayed the EAPOL unicast packet that, according to the reporter,
+  was filtered out by the mc filter.
+The packet was properly received.
+
+Therefore the root cause of the reported issue seems to be somewhere
+else. Disabling mc filtering completely for the most common chip
+version is a quite big hammer. Therefore revert the change and wait
+for further analysis results from the reporter.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/realtek/r8169_main.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/net/ethernet/realtek/r8169_main.c
++++ b/drivers/net/ethernet/realtek/r8169_main.c
+@@ -4628,9 +4628,7 @@ static void rtl_set_rx_mode(struct net_d
+               rx_mode &= ~AcceptMulticast;
+       } else if (netdev_mc_count(dev) > MC_FILTER_LIMIT ||
+                  dev->flags & IFF_ALLMULTI ||
+-                 tp->mac_version == RTL_GIGA_MAC_VER_35 ||
+-                 tp->mac_version == RTL_GIGA_MAC_VER_46 ||
+-                 tp->mac_version == RTL_GIGA_MAC_VER_48) {
++                 tp->mac_version == RTL_GIGA_MAC_VER_35) {
+               /* accept all multicasts */
+       } else if (netdev_mc_empty(dev)) {
+               rx_mode &= ~AcceptMulticast;
index cfd96f083929f3826a9c2722d7eb6e09d40680ea..745d0b8c5ea074159326ae09af2eb89c92284ec5 100644 (file)
@@ -86,3 +86,8 @@ media-sharp-fix-sharp-encoding.patch
 media-venus-hfi_parser-add-check-to-keep-the-number-of-codecs-within-range.patch
 media-venus-hfi-fix-the-check-to-handle-session-buffer-requirement.patch
 media-venus-hfi-add-checks-to-handle-capabilities-from-firmware.patch
+revert-net-r8169-disable-multicast-filter-for-rtl8168h-and-rtl8107e.patch
+ext4-apply-umask-if-acl-support-is-disabled.patch
+ext4-correct-offset-of-gdb-backup-in-non-meta_bg-group-to-update_backups.patch
+ext4-correct-return-value-of-ext4_convert_meta_bg.patch
+ext4-remove-gdb-backup-copy-for-meta-bg-in-setup_new_flex_group_blocks.patch