From 7777b4c617e9c2be6c3315d8120f4ce027df9dd1 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 19 Jun 2024 13:24:59 +0200 Subject: [PATCH] drop some more 6.6 patches --- ...erflow-when-setting-values-via-sysfs.patch | 80 ----------- ...-refactor-out-ext4_generic_attr_show.patch | 132 ------------------ queue-6.6/series | 2 - 3 files changed, 214 deletions(-) delete mode 100644 queue-6.6/ext4-avoid-overflow-when-setting-values-via-sysfs.patch delete mode 100644 queue-6.6/ext4-refactor-out-ext4_generic_attr_show.patch diff --git a/queue-6.6/ext4-avoid-overflow-when-setting-values-via-sysfs.patch b/queue-6.6/ext4-avoid-overflow-when-setting-values-via-sysfs.patch deleted file mode 100644 index 8e8ce7ddf5a..00000000000 --- a/queue-6.6/ext4-avoid-overflow-when-setting-values-via-sysfs.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 9fd5aac986651796cd9c05d89eb56da4b1700499 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Mar 2024 19:33:17 +0800 -Subject: ext4: avoid overflow when setting values via sysfs - -From: Baokun Li - -[ Upstream commit 9e8e819f8f272c4e5dcd0bd6c7450e36481ed139 ] - -When setting values of type unsigned int through sysfs, we use kstrtoul() -to parse it and then truncate part of it as the final set value, when the -set value is greater than UINT_MAX, the set value will not match what we -see because of the truncation. As follows: - - $ echo 4294967296 > /sys/fs/ext4/sda/mb_max_linear_groups - $ cat /sys/fs/ext4/sda/mb_max_linear_groups - 0 - -So we use kstrtouint() to parse the attr_pointer_ui type to avoid the -inconsistency described above. In addition, a judgment is added to avoid -setting s_resv_clusters less than 0. - -Signed-off-by: Baokun Li -Reviewed-by: Jan Kara -Link: https://lore.kernel.org/r/20240319113325.3110393-2-libaokun1@huawei.com -Signed-off-by: Theodore Ts'o -Stable-dep-of: 13df4d44a3aa ("ext4: fix slab-out-of-bounds in ext4_mb_find_good_group_avg_frag_lists()") -Signed-off-by: Sasha Levin ---- - fs/ext4/sysfs.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c -index 6d332dff79ddc..ca820620b9742 100644 ---- a/fs/ext4/sysfs.c -+++ b/fs/ext4/sysfs.c -@@ -104,7 +104,7 @@ static ssize_t reserved_clusters_store(struct ext4_sb_info *sbi, - int ret; - - ret = kstrtoull(skip_spaces(buf), 0, &val); -- if (ret || val >= clusters) -+ if (ret || val >= clusters || (s64)val < 0) - return -EINVAL; - - atomic64_set(&sbi->s_resv_clusters, val); -@@ -451,7 +451,8 @@ static ssize_t ext4_attr_store(struct kobject *kobj, - s_kobj); - struct ext4_attr *a = container_of(attr, struct ext4_attr, attr); - void *ptr = calc_ptr(a, sbi); -- unsigned long t; -+ unsigned int t; -+ unsigned long lt; - int ret; - - switch (a->attr_id) { -@@ -460,7 +461,7 @@ static ssize_t ext4_attr_store(struct kobject *kobj, - case attr_pointer_ui: - if (!ptr) - return 0; -- ret = kstrtoul(skip_spaces(buf), 0, &t); -+ ret = kstrtouint(skip_spaces(buf), 0, &t); - if (ret) - return ret; - if (a->attr_ptr == ptr_ext4_super_block_offset) -@@ -471,10 +472,10 @@ static ssize_t ext4_attr_store(struct kobject *kobj, - case attr_pointer_ul: - if (!ptr) - return 0; -- ret = kstrtoul(skip_spaces(buf), 0, &t); -+ ret = kstrtoul(skip_spaces(buf), 0, <); - if (ret) - return ret; -- *((unsigned long *) ptr) = t; -+ *((unsigned long *) ptr) = lt; - return len; - case attr_inode_readahead: - return inode_readahead_blks_store(sbi, buf, len); --- -2.43.0 - diff --git a/queue-6.6/ext4-refactor-out-ext4_generic_attr_show.patch b/queue-6.6/ext4-refactor-out-ext4_generic_attr_show.patch deleted file mode 100644 index 30d2b9883e4..00000000000 --- a/queue-6.6/ext4-refactor-out-ext4_generic_attr_show.patch +++ /dev/null @@ -1,132 +0,0 @@ -From ab049cbb779321b16f125be5e86889cc6c96892f Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Mar 2024 19:33:19 +0800 -Subject: ext4: refactor out ext4_generic_attr_show() - -From: Baokun Li - -[ Upstream commit 57341fe3179c7694c92dcf99e7f836cee4c800dd ] - -Refactor out the function ext4_generic_attr_show() to handle the reading -of values of various common types, with no functional changes. - -Signed-off-by: Baokun Li -Reviewed-by: Zhang Yi -Reviewed-by: Jan Kara -Link: https://lore.kernel.org/r/20240319113325.3110393-4-libaokun1@huawei.com -Signed-off-by: Theodore Ts'o -Stable-dep-of: 13df4d44a3aa ("ext4: fix slab-out-of-bounds in ext4_mb_find_good_group_avg_frag_lists()") -Signed-off-by: Sasha Levin ---- - fs/ext4/sysfs.c | 74 +++++++++++++++++++++---------------------------- - 1 file changed, 32 insertions(+), 42 deletions(-) - -diff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c -index ca820620b9742..295ea9a32de91 100644 ---- a/fs/ext4/sysfs.c -+++ b/fs/ext4/sysfs.c -@@ -366,13 +366,42 @@ static ssize_t __print_tstamp(char *buf, __le32 lo, __u8 hi) - #define print_tstamp(buf, es, tstamp) \ - __print_tstamp(buf, (es)->tstamp, (es)->tstamp ## _hi) - -+static ssize_t ext4_generic_attr_show(struct ext4_attr *a, -+ struct ext4_sb_info *sbi, char *buf) -+{ -+ void *ptr = calc_ptr(a, sbi); -+ -+ if (!ptr) -+ return 0; -+ -+ switch (a->attr_id) { -+ case attr_inode_readahead: -+ case attr_pointer_ui: -+ if (a->attr_ptr == ptr_ext4_super_block_offset) -+ return sysfs_emit(buf, "%u\n", le32_to_cpup(ptr)); -+ return sysfs_emit(buf, "%u\n", *((unsigned int *) ptr)); -+ case attr_pointer_ul: -+ return sysfs_emit(buf, "%lu\n", *((unsigned long *) ptr)); -+ case attr_pointer_u8: -+ return sysfs_emit(buf, "%u\n", *((unsigned char *) ptr)); -+ case attr_pointer_u64: -+ if (a->attr_ptr == ptr_ext4_super_block_offset) -+ return sysfs_emit(buf, "%llu\n", le64_to_cpup(ptr)); -+ return sysfs_emit(buf, "%llu\n", *((unsigned long long *) ptr)); -+ case attr_pointer_string: -+ return sysfs_emit(buf, "%.*s\n", a->attr_size, (char *) ptr); -+ case attr_pointer_atomic: -+ return sysfs_emit(buf, "%d\n", atomic_read((atomic_t *) ptr)); -+ } -+ return 0; -+} -+ - static ssize_t ext4_attr_show(struct kobject *kobj, - struct attribute *attr, char *buf) - { - struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info, - s_kobj); - struct ext4_attr *a = container_of(attr, struct ext4_attr, attr); -- void *ptr = calc_ptr(a, sbi); - - switch (a->attr_id) { - case attr_delayed_allocation_blocks: -@@ -391,45 +420,6 @@ static ssize_t ext4_attr_show(struct kobject *kobj, - return sysfs_emit(buf, "%llu\n", - (unsigned long long) - percpu_counter_sum(&sbi->s_sra_exceeded_retry_limit)); -- case attr_inode_readahead: -- case attr_pointer_ui: -- if (!ptr) -- return 0; -- if (a->attr_ptr == ptr_ext4_super_block_offset) -- return sysfs_emit(buf, "%u\n", -- le32_to_cpup(ptr)); -- else -- return sysfs_emit(buf, "%u\n", -- *((unsigned int *) ptr)); -- case attr_pointer_ul: -- if (!ptr) -- return 0; -- return sysfs_emit(buf, "%lu\n", -- *((unsigned long *) ptr)); -- case attr_pointer_u8: -- if (!ptr) -- return 0; -- return sysfs_emit(buf, "%u\n", -- *((unsigned char *) ptr)); -- case attr_pointer_u64: -- if (!ptr) -- return 0; -- if (a->attr_ptr == ptr_ext4_super_block_offset) -- return sysfs_emit(buf, "%llu\n", -- le64_to_cpup(ptr)); -- else -- return sysfs_emit(buf, "%llu\n", -- *((unsigned long long *) ptr)); -- case attr_pointer_string: -- if (!ptr) -- return 0; -- return sysfs_emit(buf, "%.*s\n", a->attr_size, -- (char *) ptr); -- case attr_pointer_atomic: -- if (!ptr) -- return 0; -- return sysfs_emit(buf, "%d\n", -- atomic_read((atomic_t *) ptr)); - case attr_feature: - return sysfs_emit(buf, "supported\n"); - case attr_first_error_time: -@@ -438,9 +428,9 @@ static ssize_t ext4_attr_show(struct kobject *kobj, - return print_tstamp(buf, sbi->s_es, s_last_error_time); - case attr_journal_task: - return journal_task_show(sbi, buf); -+ default: -+ return ext4_generic_attr_show(a, sbi, buf); - } -- -- return 0; - } - - static ssize_t ext4_attr_store(struct kobject *kobj, --- -2.43.0 - diff --git a/queue-6.6/series b/queue-6.6/series index 0a52b60b33d..11985923a20 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -71,8 +71,6 @@ selftests-mm-compaction_test-fix-bogus-test-success-.patch irqchip-riscv-intc-allow-large-non-standard-interrup.patch irqchip-riscv-intc-introduce-andes-hart-level-interr.patch irqchip-riscv-intc-prevent-memory-leak-when-riscv_in.patch -ext4-avoid-overflow-when-setting-values-via-sysfs.patch -ext4-refactor-out-ext4_generic_attr_show.patch eventfs-update-all-the-eventfs_inodes-from-the-event.patch bpf-fix-multi-uprobe-pid-filtering-logic.patch nilfs2-return-the-mapped-address-from-nilfs_get_page.patch -- 2.47.3