• Ye Bin's avatar
    ext4: init error handle resource before init group descriptors · 172e344e
    Ye Bin authored
    Now, 's_err_report' timer is init after ext4_group_desc_init() when fill
    super. Theoretically, ext4_group_desc_init() may access to error handle
    as follows:
    __ext4_fill_super
      ext4_group_desc_init
        ext4_check_descriptors
          ext4_get_group_desc
            ext4_error
              ext4_handle_error
                ext4_commit_super
                  ext4_update_super
                    if (!es->s_error_count)
                      mod_timer(&sbi->s_err_report, jiffies + 24*60*60*HZ);
    		  --> Accessing Uninitialized Variables
    timer_setup(&sbi->s_err_report, print_daily_error_info, 0);
    
    Maybe above issue is just theoretical, as ext4_check_descriptors() didn't
    judge 'gpd' which get from ext4_get_group_desc(), if access to error handle
    ext4_get_group_desc() will return NULL, then will trigger null-ptr-deref in
    ext4_check_descriptors().
    However, from the perspective of pure code, it is better to initialize
    resource that may need to be used first.
    Signed-off-by: default avatarYe Bin <yebin10@huawei.com>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20230119013711.86680-1-yebin@huaweicloud.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    172e344e
super.c 203 KB