mbox series

[v4,0/9] ext4: avoid sysfs variables overflow causing BUG_ON/SOOB

Message ID 20240319113325.3110393-1-libaokun1@huawei.com
Headers show
Series ext4: avoid sysfs variables overflow causing BUG_ON/SOOB | expand

Message

Baokun Li March 19, 2024, 11:33 a.m. UTC
Hello everyone,

This patchset is intended to avoid variables that can be modified via sysfs
from overflowing when stored or used and thus causing various problems.

"kvm-xfstests -c ext4/all -g auto" has been executed with no new failures.

V3->V4:
  Patch 4: Corrects WARN_ON_ONCE added in V3.

V2->V3:
  Add Reviewed-by tag from Jan Kara.
  Patch 4: Trimming order before the for loop makes the logic easier to
           understand.

V1->V2:
  Patch 1: Use kstrtouint() as suggested by Alexey and Honza.
  Patch 2: Adapted to patch 1 changes.
  Patch 3: Add Reviewed-by tag.
  Patch 4: Avoid useless loops as suggested by Ojaswin and rename
	   attr_group_prealloc to attr_clusters_in_group.
  Patch 5: New patch added to limit mb_best_avail_max_trim_order < 64
	   as Honza's suggestion.
  Patch 6: Reordered and updated description.
  Patch 7: Add Reviewed-by tag.
  Patch 8: Keep unrelated variables on different lines as suggested by Honza.
  Patch 9: New patch to fix warnings found during compile checking.

[V1]: https://lore.kernel.org/all/20240126085716.1363019-1-libaokun1@huawei.com/
[V2]: https://lore.kernel.org/all/20240227091148.178435-1-libaokun1@huawei.com/
[V3]: https://lore.kernel.org/all/20240314140906.3064072-1-libaokun1@huawei.com/

Baokun Li (9):
  ext4: avoid overflow when setting values via sysfs
  ext4: refactor out ext4_generic_attr_store()
  ext4: refactor out ext4_generic_attr_show()
  ext4: fix slab-out-of-bounds in
    ext4_mb_find_good_group_avg_frag_lists()
  ext4: add new attr pointer attr_mb_order
  ext4: add positive int attr pointer to avoid sysfs variables overflow
  ext4: set type of ac_groups_linear_remaining to __u32 to avoid
    overflow
  ext4: set the type of max_zeroout to unsigned int to avoid overflow
  ext4: clean up s_mb_rb_lock to fix build warnings with C=1

 fs/ext4/extents.c |   3 +-
 fs/ext4/mballoc.c |   5 +-
 fs/ext4/mballoc.h |   2 +-
 fs/ext4/sysfs.c   | 174 ++++++++++++++++++++++++++++------------------
 4 files changed, 112 insertions(+), 72 deletions(-)

Comments

Baokun Li April 23, 2024, 1:44 a.m. UTC | #1
A gentle ping.

On 2024/3/19 19:33, Baokun Li wrote:
> Hello everyone,
>
> This patchset is intended to avoid variables that can be modified via sysfs
> from overflowing when stored or used and thus causing various problems.
>
> "kvm-xfstests -c ext4/all -g auto" has been executed with no new failures.
>
> V3->V4:
>    Patch 4: Corrects WARN_ON_ONCE added in V3.
>
> V2->V3:
>    Add Reviewed-by tag from Jan Kara.
>    Patch 4: Trimming order before the for loop makes the logic easier to
>             understand.
>
> V1->V2:
>    Patch 1: Use kstrtouint() as suggested by Alexey and Honza.
>    Patch 2: Adapted to patch 1 changes.
>    Patch 3: Add Reviewed-by tag.
>    Patch 4: Avoid useless loops as suggested by Ojaswin and rename
> 	   attr_group_prealloc to attr_clusters_in_group.
>    Patch 5: New patch added to limit mb_best_avail_max_trim_order < 64
> 	   as Honza's suggestion.
>    Patch 6: Reordered and updated description.
>    Patch 7: Add Reviewed-by tag.
>    Patch 8: Keep unrelated variables on different lines as suggested by Honza.
>    Patch 9: New patch to fix warnings found during compile checking.
>
> [V1]: https://lore.kernel.org/all/20240126085716.1363019-1-libaokun1@huawei.com/
> [V2]: https://lore.kernel.org/all/20240227091148.178435-1-libaokun1@huawei.com/
> [V3]: https://lore.kernel.org/all/20240314140906.3064072-1-libaokun1@huawei.com/
>
> Baokun Li (9):
>    ext4: avoid overflow when setting values via sysfs
>    ext4: refactor out ext4_generic_attr_store()
>    ext4: refactor out ext4_generic_attr_show()
>    ext4: fix slab-out-of-bounds in
>      ext4_mb_find_good_group_avg_frag_lists()
>    ext4: add new attr pointer attr_mb_order
>    ext4: add positive int attr pointer to avoid sysfs variables overflow
>    ext4: set type of ac_groups_linear_remaining to __u32 to avoid
>      overflow
>    ext4: set the type of max_zeroout to unsigned int to avoid overflow
>    ext4: clean up s_mb_rb_lock to fix build warnings with C=1
>
>   fs/ext4/extents.c |   3 +-
>   fs/ext4/mballoc.c |   5 +-
>   fs/ext4/mballoc.h |   2 +-
>   fs/ext4/sysfs.c   | 174 ++++++++++++++++++++++++++++------------------
>   4 files changed, 112 insertions(+), 72 deletions(-)
>
Baokun Li May 3, 2024, 2:03 a.m. UTC | #2
Hi Ted,

Would you consider merging in this patchset in the current merge
window? I would appreciate it if you could.

Thanks,
Baokun

On 2024/4/23 9:44, Baokun Li wrote:
> A gentle ping.
>
> On 2024/3/19 19:33, Baokun Li wrote:
>> Hello everyone,
>>
>> This patchset is intended to avoid variables that can be modified via 
>> sysfs
>> from overflowing when stored or used and thus causing various problems.
>>
>> "kvm-xfstests -c ext4/all -g auto" has been executed with no new 
>> failures.
>>
>> V3->V4:
>>    Patch 4: Corrects WARN_ON_ONCE added in V3.
>>
>> V2->V3:
>>    Add Reviewed-by tag from Jan Kara.
>>    Patch 4: Trimming order before the for loop makes the logic easier to
>>             understand.
>>
>> V1->V2:
>>    Patch 1: Use kstrtouint() as suggested by Alexey and Honza.
>>    Patch 2: Adapted to patch 1 changes.
>>    Patch 3: Add Reviewed-by tag.
>>    Patch 4: Avoid useless loops as suggested by Ojaswin and rename
>>        attr_group_prealloc to attr_clusters_in_group.
>>    Patch 5: New patch added to limit mb_best_avail_max_trim_order < 64
>>        as Honza's suggestion.
>>    Patch 6: Reordered and updated description.
>>    Patch 7: Add Reviewed-by tag.
>>    Patch 8: Keep unrelated variables on different lines as suggested 
>> by Honza.
>>    Patch 9: New patch to fix warnings found during compile checking.
>>
>> [V1]: 
>> https://lore.kernel.org/all/20240126085716.1363019-1-libaokun1@huawei.com/
>> [V2]: 
>> https://lore.kernel.org/all/20240227091148.178435-1-libaokun1@huawei.com/
>> [V3]: 
>> https://lore.kernel.org/all/20240314140906.3064072-1-libaokun1@huawei.com/
>>
>> Baokun Li (9):
>>    ext4: avoid overflow when setting values via sysfs
>>    ext4: refactor out ext4_generic_attr_store()
>>    ext4: refactor out ext4_generic_attr_show()
>>    ext4: fix slab-out-of-bounds in
>>      ext4_mb_find_good_group_avg_frag_lists()
>>    ext4: add new attr pointer attr_mb_order
>>    ext4: add positive int attr pointer to avoid sysfs variables overflow
>>    ext4: set type of ac_groups_linear_remaining to __u32 to avoid
>>      overflow
>>    ext4: set the type of max_zeroout to unsigned int to avoid overflow
>>    ext4: clean up s_mb_rb_lock to fix build warnings with C=1
>>
>>   fs/ext4/extents.c |   3 +-
>>   fs/ext4/mballoc.c |   5 +-
>>   fs/ext4/mballoc.h |   2 +-
>>   fs/ext4/sysfs.c   | 174 ++++++++++++++++++++++++++++------------------
>>   4 files changed, 112 insertions(+), 72 deletions(-)
>>
Theodore Ts'o May 3, 2024, 3:14 a.m. UTC | #3
On Fri, May 03, 2024 at 10:03:04AM +0800, Baokun Li wrote:
> Hi Ted,
> 
> Would you consider merging in this patchset in the current merge
> window? I would appreciate it if you could.

Yes, in fact it's next on my review list.  I've been working through
the patches on ext4's patchwork site roughly in chronological order
(focusing first on fixes and those that have been reviewed by other
folks).

Cheers,

					- Ted
Baokun Li May 3, 2024, 3:22 a.m. UTC | #4
On 2024/5/3 11:14, Theodore Ts'o wrote:
> On Fri, May 03, 2024 at 10:03:04AM +0800, Baokun Li wrote:
>> Hi Ted,
>>
>> Would you consider merging in this patchset in the current merge
>> window? I would appreciate it if you could.
> Yes, in fact it's next on my review list.  I've been working through
> the patches on ext4's patchwork site roughly in chronological order
> (focusing first on fixes and those that have been reviewed by other
> folks).
>
> Cheers,
>
> 					- Ted
Thanks a million for your work!

Cheers,
Baokun
Theodore Ts'o May 3, 2024, 4:01 a.m. UTC | #5
On Tue, 19 Mar 2024 19:33:16 +0800, Baokun Li wrote:
> This patchset is intended to avoid variables that can be modified via sysfs
> from overflowing when stored or used and thus causing various problems.
> 
> "kvm-xfstests -c ext4/all -g auto" has been executed with no new failures.
> 
> V3->V4:
>   Patch 4: Corrects WARN_ON_ONCE added in V3.
> 
> [...]

Applied, thanks!

[1/9] ext4: avoid overflow when setting values via sysfs
      commit: 9e8e819f8f272c4e5dcd0bd6c7450e36481ed139
[2/9] ext4: refactor out ext4_generic_attr_store()
      commit: f536808adcc37a546bf9cc819c349bd55a28159b
[3/9] ext4: refactor out ext4_generic_attr_show()
      commit: 57341fe3179c7694c92dcf99e7f836cee4c800dd
[4/9] ext4: fix slab-out-of-bounds in ext4_mb_find_good_group_avg_frag_lists()
      commit: 13df4d44a3aaabe61cd01d277b6ee23ead2a5206
[5/9] ext4: add new attr pointer attr_mb_order
      commit: b7b2a5799b8fafe95fcd5455c32ba2c643c86f99
[6/9] ext4: add positive int attr pointer to avoid sysfs variables overflow
      commit: 63bfe841053f8dda09c9d059d543486d9dc16104
[7/9] ext4: set type of ac_groups_linear_remaining to __u32 to avoid overflow
      commit: 9a9f3a9842927e4af7ca10c19c94dad83bebd713
[8/9] ext4: set the type of max_zeroout to unsigned int to avoid overflow
      commit: 261341a932d9244cbcd372a3659428c8723e5a49
[9/9] ext4: clean up s_mb_rb_lock to fix build warnings with C=1
      commit: e19089dff547c9e1f09712acc3536d7b0aa9ce3d

Best regards,