Could line 3760 just use kfree? julia ---------- Forwarded message ---------- Date: Sun, 13 Jul 2025 16:28:01 +0800 From: kernel test robot <lkp@xxxxxxxxx> To: oe-kbuild@xxxxxxxxxxxxxxx Cc: lkp@xxxxxxxxx, Julia Lawall <julia.lawall@xxxxxxxx> Subject: [tytso-ext4:pu 9/35] fs/ext4/mballoc.c:3760:29-30: WARNING kmalloc is used to allocate this memory at line 3725 BCC: lkp@xxxxxxxxx CC: oe-kbuild-all@xxxxxxxxxxxxxxx CC: linux-ext4@xxxxxxxxxxxxxxx TO: Baokun Li <libaokun1@xxxxxxxxxx> CC: "Theodore Ts'o" <tytso@xxxxxxx> tree: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git pu head: a3404072989e188560fb86c1116ef76bcb8a5c4d commit: c1ba37650891e5cb970ad406a15f7c1baa3c6e33 [9/35] ext4: utilize multiple global goals to reduce contention :::::: branch date: 13 hours ago :::::: commit date: 13 hours ago config: i386-randconfig-052-20250713 (https://download.01.org/0day-ci/archive/20250713/202507131637.ay2myDnW-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Julia Lawall <julia.lawall@xxxxxxxx> | Closes: https://lore.kernel.org/r/202507131637.ay2myDnW-lkp@xxxxxxxxx/ cocci warnings: (new ones prefixed by >>) >> fs/ext4/mballoc.c:3760:29-30: WARNING kmalloc is used to allocate this memory at line 3725 vim +3760 fs/ext4/mballoc.c 55cdd0af2bc5ffc Wang Jianchao 2021-07-24 3600 9d99012ff26380a Akira Fujita 2012-05-28 3601 int ext4_mb_init(struct super_block *sb) c9de560ded61faa Alex Tomas 2008-01-29 3602 { c9de560ded61faa Alex Tomas 2008-01-29 3603 struct ext4_sb_info *sbi = EXT4_SB(sb); 6be2ded1d7c51b3 Aneesh Kumar K.V 2008-07-23 3604 unsigned i, j; 935244cd54b86ca Nicolai Stange 2016-05-05 3605 unsigned offset, offset_incr; c9de560ded61faa Alex Tomas 2008-01-29 3606 unsigned max; 74767c5a2dca0a6 Shen Feng 2008-07-11 3607 int ret; c9de560ded61faa Alex Tomas 2008-01-29 3608 4b68f6df105966f Harshad Shirwadkar 2021-04-01 3609 i = MB_NUM_ORDERS(sb) * sizeof(*sbi->s_mb_offsets); c9de560ded61faa Alex Tomas 2008-01-29 3610 c9de560ded61faa Alex Tomas 2008-01-29 3611 sbi->s_mb_offsets = kmalloc(i, GFP_KERNEL); c9de560ded61faa Alex Tomas 2008-01-29 3612 if (sbi->s_mb_offsets == NULL) { fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3613 ret = -ENOMEM; fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3614 goto out; c9de560ded61faa Alex Tomas 2008-01-29 3615 } ff7ef329b268b60 Yasunori Goto 2008-12-17 3616 4b68f6df105966f Harshad Shirwadkar 2021-04-01 3617 i = MB_NUM_ORDERS(sb) * sizeof(*sbi->s_mb_maxs); c9de560ded61faa Alex Tomas 2008-01-29 3618 sbi->s_mb_maxs = kmalloc(i, GFP_KERNEL); c9de560ded61faa Alex Tomas 2008-01-29 3619 if (sbi->s_mb_maxs == NULL) { fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3620 ret = -ENOMEM; fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3621 goto out; fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3622 } fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3623 2892c15ddda6a76 Eric Sandeen 2011-02-12 3624 ret = ext4_groupinfo_create_slab(sb->s_blocksize); 2892c15ddda6a76 Eric Sandeen 2011-02-12 3625 if (ret < 0) fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3626 goto out; c9de560ded61faa Alex Tomas 2008-01-29 3627 c9de560ded61faa Alex Tomas 2008-01-29 3628 /* order 0 is regular bitmap */ c9de560ded61faa Alex Tomas 2008-01-29 3629 sbi->s_mb_maxs[0] = sb->s_blocksize << 3; c9de560ded61faa Alex Tomas 2008-01-29 3630 sbi->s_mb_offsets[0] = 0; c9de560ded61faa Alex Tomas 2008-01-29 3631 c9de560ded61faa Alex Tomas 2008-01-29 3632 i = 1; c9de560ded61faa Alex Tomas 2008-01-29 3633 offset = 0; 935244cd54b86ca Nicolai Stange 2016-05-05 3634 offset_incr = 1 << (sb->s_blocksize_bits - 1); c9de560ded61faa Alex Tomas 2008-01-29 3635 max = sb->s_blocksize << 2; c9de560ded61faa Alex Tomas 2008-01-29 3636 do { c9de560ded61faa Alex Tomas 2008-01-29 3637 sbi->s_mb_offsets[i] = offset; c9de560ded61faa Alex Tomas 2008-01-29 3638 sbi->s_mb_maxs[i] = max; 935244cd54b86ca Nicolai Stange 2016-05-05 3639 offset += offset_incr; 935244cd54b86ca Nicolai Stange 2016-05-05 3640 offset_incr = offset_incr >> 1; c9de560ded61faa Alex Tomas 2008-01-29 3641 max = max >> 1; c9de560ded61faa Alex Tomas 2008-01-29 3642 i++; 4b68f6df105966f Harshad Shirwadkar 2021-04-01 3643 } while (i < MB_NUM_ORDERS(sb)); 4b68f6df105966f Harshad Shirwadkar 2021-04-01 3644 83e80a6e3543f37 Jan Kara 2022-09-08 3645 sbi->s_mb_avg_fragment_size = 83e80a6e3543f37 Jan Kara 2022-09-08 3646 kmalloc_array(MB_NUM_ORDERS(sb), sizeof(struct list_head), 83e80a6e3543f37 Jan Kara 2022-09-08 3647 GFP_KERNEL); 83e80a6e3543f37 Jan Kara 2022-09-08 3648 if (!sbi->s_mb_avg_fragment_size) { 83e80a6e3543f37 Jan Kara 2022-09-08 3649 ret = -ENOMEM; 83e80a6e3543f37 Jan Kara 2022-09-08 3650 goto out; 83e80a6e3543f37 Jan Kara 2022-09-08 3651 } 83e80a6e3543f37 Jan Kara 2022-09-08 3652 sbi->s_mb_avg_fragment_size_locks = 83e80a6e3543f37 Jan Kara 2022-09-08 3653 kmalloc_array(MB_NUM_ORDERS(sb), sizeof(rwlock_t), 83e80a6e3543f37 Jan Kara 2022-09-08 3654 GFP_KERNEL); 83e80a6e3543f37 Jan Kara 2022-09-08 3655 if (!sbi->s_mb_avg_fragment_size_locks) { 83e80a6e3543f37 Jan Kara 2022-09-08 3656 ret = -ENOMEM; 83e80a6e3543f37 Jan Kara 2022-09-08 3657 goto out; 83e80a6e3543f37 Jan Kara 2022-09-08 3658 } 83e80a6e3543f37 Jan Kara 2022-09-08 3659 for (i = 0; i < MB_NUM_ORDERS(sb); i++) { 83e80a6e3543f37 Jan Kara 2022-09-08 3660 INIT_LIST_HEAD(&sbi->s_mb_avg_fragment_size[i]); 83e80a6e3543f37 Jan Kara 2022-09-08 3661 rwlock_init(&sbi->s_mb_avg_fragment_size_locks[i]); 83e80a6e3543f37 Jan Kara 2022-09-08 3662 } 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3663 sbi->s_mb_largest_free_orders = 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3664 kmalloc_array(MB_NUM_ORDERS(sb), sizeof(struct list_head), 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3665 GFP_KERNEL); 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3666 if (!sbi->s_mb_largest_free_orders) { 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3667 ret = -ENOMEM; 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3668 goto out; 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3669 } 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3670 sbi->s_mb_largest_free_orders_locks = 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3671 kmalloc_array(MB_NUM_ORDERS(sb), sizeof(rwlock_t), 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3672 GFP_KERNEL); 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3673 if (!sbi->s_mb_largest_free_orders_locks) { 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3674 ret = -ENOMEM; 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3675 goto out; 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3676 } 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3677 for (i = 0; i < MB_NUM_ORDERS(sb); i++) { 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3678 INIT_LIST_HEAD(&sbi->s_mb_largest_free_orders[i]); 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3679 rwlock_init(&sbi->s_mb_largest_free_orders_locks[i]); 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3680 } c9de560ded61faa Alex Tomas 2008-01-29 3681 c9de560ded61faa Alex Tomas 2008-01-29 3682 spin_lock_init(&sbi->s_md_lock); d08854f5bcf3ea0 Theodore Ts'o 2016-06-26 3683 sbi->s_mb_free_pending = 0; ce774e5365e46be Jinke Han 2023-06-12 3684 INIT_LIST_HEAD(&sbi->s_freed_data_list[0]); ce774e5365e46be Jinke Han 2023-06-12 3685 INIT_LIST_HEAD(&sbi->s_freed_data_list[1]); 55cdd0af2bc5ffc Wang Jianchao 2021-07-24 3686 INIT_LIST_HEAD(&sbi->s_discard_list); 55cdd0af2bc5ffc Wang Jianchao 2021-07-24 3687 INIT_WORK(&sbi->s_discard_work, ext4_discard_work); 5036ab8df278f98 Wang Jianchao 2021-08-30 3688 atomic_set(&sbi->s_retry_alloc_pending, 0); c9de560ded61faa Alex Tomas 2008-01-29 3689 c9de560ded61faa Alex Tomas 2008-01-29 3690 sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; c9de560ded61faa Alex Tomas 2008-01-29 3691 sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; c9de560ded61faa Alex Tomas 2008-01-29 3692 sbi->s_mb_stats = MB_DEFAULT_STATS; c9de560ded61faa Alex Tomas 2008-01-29 3693 sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; c9de560ded61faa Alex Tomas 2008-01-29 3694 sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; f52f3d2b9fbab73 Ojaswin Mujoo 2023-05-30 3695 sbi->s_mb_best_avail_max_trim_order = MB_DEFAULT_BEST_AVAIL_TRIM_ORDER; 7e170922f06bf46 Ojaswin Mujoo 2023-05-30 3696 27baebb849d46d9 Theodore Ts'o 2011-09-09 3697 /* 27baebb849d46d9 Theodore Ts'o 2011-09-09 3698 * The default group preallocation is 512, which for 4k block 27baebb849d46d9 Theodore Ts'o 2011-09-09 3699 * sizes translates to 2 megabytes. However for bigalloc file 27baebb849d46d9 Theodore Ts'o 2011-09-09 3700 * systems, this is probably too big (i.e, if the cluster size 27baebb849d46d9 Theodore Ts'o 2011-09-09 3701 * is 1 megabyte, then group preallocation size becomes half a 27baebb849d46d9 Theodore Ts'o 2011-09-09 3702 * gigabyte!). As a default, we will keep a two megabyte 27baebb849d46d9 Theodore Ts'o 2011-09-09 3703 * group pralloc size for cluster sizes up to 64k, and after 27baebb849d46d9 Theodore Ts'o 2011-09-09 3704 * that, we will force a minimum group preallocation size of 27baebb849d46d9 Theodore Ts'o 2011-09-09 3705 * 32 clusters. This translates to 8 megs when the cluster 27baebb849d46d9 Theodore Ts'o 2011-09-09 3706 * size is 256k, and 32 megs when the cluster size is 1 meg, 27baebb849d46d9 Theodore Ts'o 2011-09-09 3707 * which seems reasonable as a default. 27baebb849d46d9 Theodore Ts'o 2011-09-09 3708 */ 27baebb849d46d9 Theodore Ts'o 2011-09-09 3709 sbi->s_mb_group_prealloc = max(MB_DEFAULT_GROUP_PREALLOC >> 27baebb849d46d9 Theodore Ts'o 2011-09-09 3710 sbi->s_cluster_bits, 32); d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3711 /* d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3712 * If there is a s_stripe > 1, then we set the s_mb_group_prealloc d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3713 * to the lowest multiple of s_stripe which is bigger than d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3714 * the s_mb_group_prealloc as determined above. We want d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3715 * the preallocation size to be an exact multiple of the d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3716 * RAID stripe size so that preallocations don't fragment d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3717 * the stripes. d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3718 */ d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3719 if (sbi->s_stripe > 1) { d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3720 sbi->s_mb_group_prealloc = roundup( ff2beee206d23f4 Ojaswin Mujoo 2024-08-30 3721 sbi->s_mb_group_prealloc, EXT4_NUM_B2C(sbi, sbi->s_stripe)); d7a1fee135771e6 Dan Ehrenberg 2011-07-17 3722 } c9de560ded61faa Alex Tomas 2008-01-29 3723 c1ba37650891e5c Baokun Li 2025-06-23 3724 sbi->s_mb_last_groups = kcalloc(MB_LAST_GROUPS, sizeof(ext4_group_t), c1ba37650891e5c Baokun Li 2025-06-23 @3725 GFP_KERNEL); c1ba37650891e5c Baokun Li 2025-06-23 3726 if (sbi->s_mb_last_groups == NULL) { c1ba37650891e5c Baokun Li 2025-06-23 3727 ret = -ENOMEM; c1ba37650891e5c Baokun Li 2025-06-23 3728 goto out; c1ba37650891e5c Baokun Li 2025-06-23 3729 } c1ba37650891e5c Baokun Li 2025-06-23 3730 730c213c79a6381 Eric Sandeen 2008-09-13 3731 sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); c9de560ded61faa Alex Tomas 2008-01-29 3732 if (sbi->s_locality_groups == NULL) { fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3733 ret = -ENOMEM; c1ba37650891e5c Baokun Li 2025-06-23 3734 goto out_free_last_groups; c9de560ded61faa Alex Tomas 2008-01-29 3735 } 730c213c79a6381 Eric Sandeen 2008-09-13 3736 for_each_possible_cpu(i) { c9de560ded61faa Alex Tomas 2008-01-29 3737 struct ext4_locality_group *lg; 730c213c79a6381 Eric Sandeen 2008-09-13 3738 lg = per_cpu_ptr(sbi->s_locality_groups, i); c9de560ded61faa Alex Tomas 2008-01-29 3739 mutex_init(&lg->lg_mutex); 6be2ded1d7c51b3 Aneesh Kumar K.V 2008-07-23 3740 for (j = 0; j < PREALLOC_TB_SIZE; j++) 6be2ded1d7c51b3 Aneesh Kumar K.V 2008-07-23 3741 INIT_LIST_HEAD(&lg->lg_prealloc_list[j]); c9de560ded61faa Alex Tomas 2008-01-29 3742 spin_lock_init(&lg->lg_prealloc_lock); c9de560ded61faa Alex Tomas 2008-01-29 3743 } c9de560ded61faa Alex Tomas 2008-01-29 3744 10f0d2a517796b8 Christoph Hellwig 2022-04-15 3745 if (bdev_nonrot(sb->s_bdev)) 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3746 sbi->s_mb_max_linear_groups = 0; 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3747 else 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3748 sbi->s_mb_max_linear_groups = MB_DEFAULT_LINEAR_LIMIT; 79a77c5ac34cc27 Yu Jian 2011-08-01 3749 /* init file for buddy data */ 79a77c5ac34cc27 Yu Jian 2011-08-01 3750 ret = ext4_mb_init_backend(sb); 7aa0baeaba4afc4 Tao Ma 2011-10-06 3751 if (ret != 0) 7aa0baeaba4afc4 Tao Ma 2011-10-06 3752 goto out_free_locality_groups; 79a77c5ac34cc27 Yu Jian 2011-08-01 3753 7aa0baeaba4afc4 Tao Ma 2011-10-06 3754 return 0; 7aa0baeaba4afc4 Tao Ma 2011-10-06 3755 7aa0baeaba4afc4 Tao Ma 2011-10-06 3756 out_free_locality_groups: 7aa0baeaba4afc4 Tao Ma 2011-10-06 3757 free_percpu(sbi->s_locality_groups); 7aa0baeaba4afc4 Tao Ma 2011-10-06 3758 sbi->s_locality_groups = NULL; c1ba37650891e5c Baokun Li 2025-06-23 3759 out_free_last_groups: c1ba37650891e5c Baokun Li 2025-06-23 @3760 kvfree(sbi->s_mb_last_groups); c1ba37650891e5c Baokun Li 2025-06-23 3761 sbi->s_mb_last_groups = NULL; fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3762 out: 83e80a6e3543f37 Jan Kara 2022-09-08 3763 kfree(sbi->s_mb_avg_fragment_size); 83e80a6e3543f37 Jan Kara 2022-09-08 3764 kfree(sbi->s_mb_avg_fragment_size_locks); 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3765 kfree(sbi->s_mb_largest_free_orders); 196e402adf2e4cd Harshad Shirwadkar 2021-04-01 3766 kfree(sbi->s_mb_largest_free_orders_locks); fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3767 kfree(sbi->s_mb_offsets); 7aa0baeaba4afc4 Tao Ma 2011-10-06 3768 sbi->s_mb_offsets = NULL; fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3769 kfree(sbi->s_mb_maxs); 7aa0baeaba4afc4 Tao Ma 2011-10-06 3770 sbi->s_mb_maxs = NULL; fb1813f4a8a27bb Curt Wohlgemuth 2010-10-27 3771 return ret; c9de560ded61faa Alex Tomas 2008-01-29 3772 } c9de560ded61faa Alex Tomas 2008-01-29 3773 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki