All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 2247/3590] fs/ext4/mballoc.c:1333:4: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
@ 2021-07-27 22:50 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-07-27 22:50 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 27857 bytes --]

CC: clang-built-linux(a)googlegroups.com
CC: kbuild-all(a)lists.01.org
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: "Matthew Wilcox (Oracle)" <willy@infradead.org>
CC: Christoph Hellwig <hch@lst.de>
CC: William Kucharski <william.kucharski@oracle.com>
CC: David Howells <dhowells@redhat.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   42d0b5f52c9b633a10626da27786049c76d4ea75
commit: 8c02d1a1387610edb84cd5f5fcbc78adcd0591cf [2247/3590] mm: Add folio flag manipulation functions
:::::: branch date: 7 hours ago
:::::: commit date: 7 days ago
config: x86_64-randconfig-c001-20210727 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project c658b472f3e61e1818e1909bf02f3d65470018a5)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=8c02d1a1387610edb84cd5f5fcbc78adcd0591cf
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout 8c02d1a1387610edb84cd5f5fcbc78adcd0591cf
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
           ^
   fs/ext4/mballoc.c:1521:6: note: Assuming 'page' is equal to NULL
           if (page == NULL || !PageUptodate(page)) {
               ^~~~~~~~~~~~
   fs/ext4/mballoc.c:1521:19: note: Left side of '||' is true
           if (page == NULL || !PageUptodate(page)) {
                            ^
   fs/ext4/mballoc.c:1522:7: note: 'page' is null
                   if (page)
                       ^~~~
   fs/ext4/mballoc.c:1522:3: note: Taking false branch
                   if (page)
                   ^
   fs/ext4/mballoc.c:1533:7: note: Assuming 'page' is non-null
                   if (page) {
                       ^~~~
   fs/ext4/mballoc.c:1533:3: note: Taking true branch
                   if (page) {
                   ^
   fs/ext4/mballoc.c:1534:11: note: Assuming field 'mapping' is equal to field 'i_mapping'
                           BUG_ON(page->mapping != inode->i_mapping);
                                  ^
   include/asm-generic/bug.h:65:45: note: expanded from macro 'BUG_ON'
   #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                               ^~~~~~~~~
   include/linux/compiler.h:48:41: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                                             ^
   include/linux/compiler.h:33:34: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                         ^
   fs/ext4/mballoc.c:1534:17: note: Field 'mapping' is equal to field 'i_mapping'
                           BUG_ON(page->mapping != inode->i_mapping);
                                        ^
   fs/ext4/mballoc.c:1534:4: note: Taking false branch
                           BUG_ON(page->mapping != inode->i_mapping);
                           ^
   include/asm-generic/bug.h:65:32: note: expanded from macro 'BUG_ON'
   #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                  ^
   fs/ext4/mballoc.c:1534:4: note: Loop condition is false.  Exiting loop
                           BUG_ON(page->mapping != inode->i_mapping);
                           ^
   include/asm-generic/bug.h:65:27: note: expanded from macro 'BUG_ON'
   #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                             ^
   fs/ext4/mballoc.c:1535:4: note: Taking true branch
                           if (!PageUptodate(page)) {
                           ^
   fs/ext4/mballoc.c:1536:11: note: Calling 'ext4_mb_init_cache'
                                   ret = ext4_mb_init_cache(page, NULL, gfp);
                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:1203:2: note: Taking false branch
           mb_debug(sb, "init page %lu\n", page->index);
           ^
   fs/ext4/mballoc.h:31:2: note: expanded from macro 'mb_debug'
           pr_debug("[%s/%d] EXT4-fs (%s): (%s, %d): %s: " fmt,            \
           ^
   include/linux/printk.h:477:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:140:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   fs/ext4/mballoc.c:1206:6: note: Assuming 'groups_per_page' is not equal to 0
           if (groups_per_page == 0)
               ^~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:1206:2: note: Taking false branch
           if (groups_per_page == 0)
           ^
   fs/ext4/mballoc.c:1210:6: note: Assuming 'groups_per_page' is <= 1
           if (groups_per_page > 1) {
               ^~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:1210:2: note: Taking false branch
           if (groups_per_page > 1) {
           ^
   fs/ext4/mballoc.c:1223:35: note: Assuming 'i' is < 'groups_per_page'
           for (i = 0, group = first_group; i < groups_per_page; i++, group++) {
                                            ^~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:1223:2: note: Loop condition is true.  Entering loop body
           for (i = 0, group = first_group; i < groups_per_page; i++, group++) {
           ^
   fs/ext4/mballoc.c:1224:7: note: Assuming 'group' is >= 'ngroups'
                   if (group >= ngroups)
                       ^~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:1224:3: note: Taking true branch
                   if (group >= ngroups)
                   ^
   fs/ext4/mballoc.c:1225:4: note:  Execution continues on line 1248
                           break;
                           ^
   fs/ext4/mballoc.c:1248:7: note: The value 0 is assigned to 'i'
           for (i = 0, group = first_group; i < groups_per_page; i++, group++) {
                ^~~~~
   fs/ext4/mballoc.c:1248:2: note: Loop condition is true.  Entering loop body
           for (i = 0, group = first_group; i < groups_per_page; i++, group++) {
           ^
   fs/ext4/mballoc.c:1251:7: note: Branch condition evaluates to a garbage value
                   if (!bh[i])
                       ^~~~~~
>> fs/ext4/mballoc.c:1333:4: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
                           brelse(bh[i]);
                           ^
   fs/ext4/mballoc.c:6341:6: note: Assuming 'minlen' is <= field 's_clusters_per_group'
           if (minlen > EXT4_CLUSTERS_PER_GROUP(sb) ||
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6341:6: note: Left side of '||' is false
   fs/ext4/mballoc.c:6342:6: note: Assuming 'start' is < 'max_blks'
               start >= max_blks ||
               ^~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6341:6: note: Left side of '||' is false
           if (minlen > EXT4_CLUSTERS_PER_GROUP(sb) ||
               ^
   fs/ext4/mballoc.c:6343:6: note: Assuming field 'len' is >= field 's_blocksize'
               range->len < sb->s_blocksize)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6341:2: note: Taking false branch
           if (minlen > EXT4_CLUSTERS_PER_GROUP(sb) ||
           ^
   fs/ext4/mballoc.c:6345:6: note: Assuming 'end' is < 'max_blks'
           if (end >= max_blks)
               ^~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6345:2: note: Taking false branch
           if (end >= max_blks)
           ^
   fs/ext4/mballoc.c:6347:6: note: Assuming 'end' is > 'first_data_blk'
           if (end <= first_data_blk)
               ^~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6347:2: note: Taking false branch
           if (end <= first_data_blk)
           ^
   fs/ext4/mballoc.c:6349:6: note: Assuming 'start' is >= 'first_data_blk'
           if (start < first_data_blk)
               ^~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6349:2: note: Taking false branch
           if (start < first_data_blk)
           ^
   fs/ext4/mballoc.c:6361:28: note: Assuming 'group' is <= 'last_group'
           for (group = first_group; group <= last_group; group++) {
                                     ^~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6361:2: note: Loop condition is true.  Entering loop body
           for (group = first_group; group <= last_group; group++) {
           ^
   fs/ext4/mballoc.c:6364:7: note: Assuming the condition is false
                   if (unlikely(EXT4_MB_GRP_NEED_INIT(grp))) {
                       ^
   include/linux/compiler.h:48:24: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:23:50: note: expanded from macro '__branch_check__'
   #define __branch_check__(x, expect, is_constant) ({                     \
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6364:3: note: Taking false branch
                   if (unlikely(EXT4_MB_GRP_NEED_INIT(grp))) {
                   ^
   fs/ext4/mballoc.c:6376:7: note: Assuming 'group' is not equal to 'last_group'
                   if (group == last_group)
                       ^~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6376:3: note: Taking false branch
                   if (group == last_group)
                   ^
   fs/ext4/mballoc.c:6379:7: note: Assuming 'minlen' is <= field 'bb_free'
                   if (grp->bb_free >= minlen) {
                       ^~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6379:3: note: Taking true branch
                   if (grp->bb_free >= minlen) {
                   ^
   fs/ext4/mballoc.c:6380:10: note: Calling 'ext4_trim_all_free'
                           cnt = ext4_trim_all_free(sb, group, first_cluster,
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:6251:8: note: Calling 'ext4_mb_load_buddy'
           ret = ext4_mb_load_buddy(sb, group, &e4b);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:1612:9: note: Calling 'ext4_mb_load_buddy_gfp'
           return ext4_mb_load_buddy_gfp(sb, group, e4b, GFP_NOFS);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/mballoc.c:1486:2: note: Loop condition is false.  Exiting loop
           might_sleep();
           ^
   include/linux/kernel.h:132:2: note: expanded from macro 'might_sleep'
           do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
           ^
   fs/ext4/mballoc.c:1487:2: note: Taking false branch
           mb_debug(sb, "load group %u\n", group);
           ^
   fs/ext4/mballoc.h:31:2: note: expanded from macro 'mb_debug'
           pr_debug("[%s/%d] EXT4-fs (%s): (%s, %d): %s: " fmt,            \
           ^
   include/linux/printk.h:477:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:140:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   fs/ext4/mballoc.c:1499:6: note: Assuming the condition is true
           if (unlikely(EXT4_MB_GRP_NEED_INIT(grp))) {
               ^
   include/linux/compiler.h:48:24: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:23:50: note: expanded from macro '__branch_check__'

vim +1333 fs/ext4/mballoc.c

c9de560ded61fa Alex Tomas            2008-01-29  1158  
c9de560ded61fa Alex Tomas            2008-01-29  1159  /* The buddy information is attached the buddy cache inode
c9de560ded61fa Alex Tomas            2008-01-29  1160   * for convenience. The information regarding each group
c9de560ded61fa Alex Tomas            2008-01-29  1161   * is loaded via ext4_mb_load_buddy. The information involve
c9de560ded61fa Alex Tomas            2008-01-29  1162   * block bitmap and buddy information. The information are
c9de560ded61fa Alex Tomas            2008-01-29  1163   * stored in the inode as
c9de560ded61fa Alex Tomas            2008-01-29  1164   *
c9de560ded61fa Alex Tomas            2008-01-29  1165   * {                        page                        }
c3a326a657562d Aneesh Kumar K.V      2008-11-25  1166   * [ group 0 bitmap][ group 0 buddy] [group 1][ group 1]...
c9de560ded61fa Alex Tomas            2008-01-29  1167   *
c9de560ded61fa Alex Tomas            2008-01-29  1168   *
c9de560ded61fa Alex Tomas            2008-01-29  1169   * one block each for bitmap and buddy information.
c9de560ded61fa Alex Tomas            2008-01-29  1170   * So for each group we take up 2 blocks. A page can
ea1754a084760e Kirill A. Shutemov    2016-04-01  1171   * contain blocks_per_page (PAGE_SIZE / blocksize)  blocks.
c9de560ded61fa Alex Tomas            2008-01-29  1172   * So it can have information regarding groups_per_page which
c9de560ded61fa Alex Tomas            2008-01-29  1173   * is blocks_per_page/2
8a57d9d61a6e36 Curt Wohlgemuth       2010-05-16  1174   *
8a57d9d61a6e36 Curt Wohlgemuth       2010-05-16  1175   * Locking note:  This routine takes the block group lock of all groups
8a57d9d61a6e36 Curt Wohlgemuth       2010-05-16  1176   * for this page; do not hold this lock when calling this routine!
c9de560ded61fa Alex Tomas            2008-01-29  1177   */
c9de560ded61fa Alex Tomas            2008-01-29  1178  
adb7ef600cc9d9 Konstantin Khlebnikov 2016-03-13  1179  static int ext4_mb_init_cache(struct page *page, char *incore, gfp_t gfp)
c9de560ded61fa Alex Tomas            2008-01-29  1180  {
8df9675f8b498d Theodore Ts'o         2009-05-01  1181  	ext4_group_t ngroups;
c9de560ded61fa Alex Tomas            2008-01-29  1182  	int blocksize;
c9de560ded61fa Alex Tomas            2008-01-29  1183  	int blocks_per_page;
c9de560ded61fa Alex Tomas            2008-01-29  1184  	int groups_per_page;
c9de560ded61fa Alex Tomas            2008-01-29  1185  	int err = 0;
c9de560ded61fa Alex Tomas            2008-01-29  1186  	int i;
813e57276fd909 Theodore Ts'o         2012-02-20  1187  	ext4_group_t first_group, group;
c9de560ded61fa Alex Tomas            2008-01-29  1188  	int first_block;
c9de560ded61fa Alex Tomas            2008-01-29  1189  	struct super_block *sb;
c9de560ded61fa Alex Tomas            2008-01-29  1190  	struct buffer_head *bhs;
fa77dcfafeaa6b Darrick J. Wong       2012-04-29  1191  	struct buffer_head **bh = NULL;
c9de560ded61fa Alex Tomas            2008-01-29  1192  	struct inode *inode;
c9de560ded61fa Alex Tomas            2008-01-29  1193  	char *data;
c9de560ded61fa Alex Tomas            2008-01-29  1194  	char *bitmap;
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1195  	struct ext4_group_info *grinfo;
c9de560ded61fa Alex Tomas            2008-01-29  1196  
c9de560ded61fa Alex Tomas            2008-01-29  1197  	inode = page->mapping->host;
c9de560ded61fa Alex Tomas            2008-01-29  1198  	sb = inode->i_sb;
8df9675f8b498d Theodore Ts'o         2009-05-01  1199  	ngroups = ext4_get_groups_count(sb);
93407472a21b82 Fabian Frederick      2017-02-27  1200  	blocksize = i_blocksize(inode);
09cbfeaf1a5a67 Kirill A. Shutemov    2016-04-01  1201  	blocks_per_page = PAGE_SIZE / blocksize;
c9de560ded61fa Alex Tomas            2008-01-29  1202  
d3df14535f4a5b Ritesh Harjani        2020-05-10  1203  	mb_debug(sb, "init page %lu\n", page->index);
d3df14535f4a5b Ritesh Harjani        2020-05-10  1204  
c9de560ded61fa Alex Tomas            2008-01-29  1205  	groups_per_page = blocks_per_page >> 1;
c9de560ded61fa Alex Tomas            2008-01-29  1206  	if (groups_per_page == 0)
c9de560ded61fa Alex Tomas            2008-01-29  1207  		groups_per_page = 1;
c9de560ded61fa Alex Tomas            2008-01-29  1208  
c9de560ded61fa Alex Tomas            2008-01-29  1209  	/* allocate buffer_heads to read bitmaps */
c9de560ded61fa Alex Tomas            2008-01-29  1210  	if (groups_per_page > 1) {
c9de560ded61fa Alex Tomas            2008-01-29  1211  		i = sizeof(struct buffer_head *) * groups_per_page;
adb7ef600cc9d9 Konstantin Khlebnikov 2016-03-13  1212  		bh = kzalloc(i, gfp);
813e57276fd909 Theodore Ts'o         2012-02-20  1213  		if (bh == NULL) {
813e57276fd909 Theodore Ts'o         2012-02-20  1214  			err = -ENOMEM;
c9de560ded61fa Alex Tomas            2008-01-29  1215  			goto out;
813e57276fd909 Theodore Ts'o         2012-02-20  1216  		}
c9de560ded61fa Alex Tomas            2008-01-29  1217  	} else
c9de560ded61fa Alex Tomas            2008-01-29  1218  		bh = &bhs;
c9de560ded61fa Alex Tomas            2008-01-29  1219  
c9de560ded61fa Alex Tomas            2008-01-29  1220  	first_group = page->index * blocks_per_page / 2;
c9de560ded61fa Alex Tomas            2008-01-29  1221  
c9de560ded61fa Alex Tomas            2008-01-29  1222  	/* read all groups the page covers into the cache */
813e57276fd909 Theodore Ts'o         2012-02-20  1223  	for (i = 0, group = first_group; i < groups_per_page; i++, group++) {
813e57276fd909 Theodore Ts'o         2012-02-20  1224  		if (group >= ngroups)
c9de560ded61fa Alex Tomas            2008-01-29  1225  			break;
c9de560ded61fa Alex Tomas            2008-01-29  1226  
813e57276fd909 Theodore Ts'o         2012-02-20  1227  		grinfo = ext4_get_group_info(sb, group);
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1228  		/*
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1229  		 * If page is uptodate then we came here after online resize
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1230  		 * which added some new uninitialized group info structs, so
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1231  		 * we must skip all initialized uptodate buddies on the page,
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1232  		 * which may be currently in use by an allocating task.
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1233  		 */
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1234  		if (PageUptodate(page) && !EXT4_MB_GRP_NEED_INIT(grinfo)) {
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1235  			bh[i] = NULL;
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1236  			continue;
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1237  		}
cfd73237722135 Alex Zhuravlev        2020-04-21  1238  		bh[i] = ext4_read_block_bitmap_nowait(sb, group, false);
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1239  		if (IS_ERR(bh[i])) {
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1240  			err = PTR_ERR(bh[i]);
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1241  			bh[i] = NULL;
c9de560ded61fa Alex Tomas            2008-01-29  1242  			goto out;
2ccb5fb9f113da Aneesh Kumar K.V      2009-01-05  1243  		}
d3df14535f4a5b Ritesh Harjani        2020-05-10  1244  		mb_debug(sb, "read bitmap for group %u\n", group);
c9de560ded61fa Alex Tomas            2008-01-29  1245  	}
c9de560ded61fa Alex Tomas            2008-01-29  1246  
c9de560ded61fa Alex Tomas            2008-01-29  1247  	/* wait for I/O completion */
813e57276fd909 Theodore Ts'o         2012-02-20  1248  	for (i = 0, group = first_group; i < groups_per_page; i++, group++) {
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1249  		int err2;
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1250  
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1251  		if (!bh[i])
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1252  			continue;
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1253  		err2 = ext4_wait_block_bitmap(sb, group, bh[i]);
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1254  		if (!err)
9008a58e5dcee0 Darrick J. Wong       2015-10-17  1255  			err = err2;
813e57276fd909 Theodore Ts'o         2012-02-20  1256  	}
c9de560ded61fa Alex Tomas            2008-01-29  1257  
c9de560ded61fa Alex Tomas            2008-01-29  1258  	first_block = page->index * blocks_per_page;
c9de560ded61fa Alex Tomas            2008-01-29  1259  	for (i = 0; i < blocks_per_page; i++) {
c9de560ded61fa Alex Tomas            2008-01-29  1260  		group = (first_block + i) >> 1;
8df9675f8b498d Theodore Ts'o         2009-05-01  1261  		if (group >= ngroups)
c9de560ded61fa Alex Tomas            2008-01-29  1262  			break;
c9de560ded61fa Alex Tomas            2008-01-29  1263  
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1264  		if (!bh[group - first_group])
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1265  			/* skip initialized uptodate buddy */
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1266  			continue;
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1267  
bbdc322f2c6006 Lukas Czerner         2015-06-08  1268  		if (!buffer_verified(bh[group - first_group]))
bbdc322f2c6006 Lukas Czerner         2015-06-08  1269  			/* Skip faulty bitmaps */
bbdc322f2c6006 Lukas Czerner         2015-06-08  1270  			continue;
bbdc322f2c6006 Lukas Czerner         2015-06-08  1271  		err = 0;
bbdc322f2c6006 Lukas Czerner         2015-06-08  1272  
c9de560ded61fa Alex Tomas            2008-01-29  1273  		/*
c9de560ded61fa Alex Tomas            2008-01-29  1274  		 * data carry information regarding this
c9de560ded61fa Alex Tomas            2008-01-29  1275  		 * particular group in the format specified
c9de560ded61fa Alex Tomas            2008-01-29  1276  		 * above
c9de560ded61fa Alex Tomas            2008-01-29  1277  		 *
c9de560ded61fa Alex Tomas            2008-01-29  1278  		 */
c9de560ded61fa Alex Tomas            2008-01-29  1279  		data = page_address(page) + (i * blocksize);
c9de560ded61fa Alex Tomas            2008-01-29  1280  		bitmap = bh[group - first_group]->b_data;
c9de560ded61fa Alex Tomas            2008-01-29  1281  
c9de560ded61fa Alex Tomas            2008-01-29  1282  		/*
c9de560ded61fa Alex Tomas            2008-01-29  1283  		 * We place the buddy block and bitmap block
c9de560ded61fa Alex Tomas            2008-01-29  1284  		 * close together
c9de560ded61fa Alex Tomas            2008-01-29  1285  		 */
c9de560ded61fa Alex Tomas            2008-01-29  1286  		if ((first_block + i) & 1) {
c9de560ded61fa Alex Tomas            2008-01-29  1287  			/* this is block of buddy */
c9de560ded61fa Alex Tomas            2008-01-29  1288  			BUG_ON(incore == NULL);
d3df14535f4a5b Ritesh Harjani        2020-05-10  1289  			mb_debug(sb, "put buddy for group %u in page %lu/%x\n",
c9de560ded61fa Alex Tomas            2008-01-29  1290  				group, page->index, i * blocksize);
f307333e14f6b1 Theodore Ts'o         2010-05-17  1291  			trace_ext4_mb_buddy_bitmap_load(sb, group);
c9de560ded61fa Alex Tomas            2008-01-29  1292  			grinfo = ext4_get_group_info(sb, group);
c9de560ded61fa Alex Tomas            2008-01-29  1293  			grinfo->bb_fragments = 0;
c9de560ded61fa Alex Tomas            2008-01-29  1294  			memset(grinfo->bb_counters, 0,
1927805e6599d8 Eric Sandeen          2009-08-25  1295  			       sizeof(*grinfo->bb_counters) *
4b68f6df105966 Harshad Shirwadkar    2021-04-01  1296  			       (MB_NUM_ORDERS(sb)));
c9de560ded61fa Alex Tomas            2008-01-29  1297  			/*
c9de560ded61fa Alex Tomas            2008-01-29  1298  			 * incore got set to the group block bitmap below
c9de560ded61fa Alex Tomas            2008-01-29  1299  			 */
7a2fcbf7f85737 Aneesh Kumar K.V      2009-01-05  1300  			ext4_lock_group(sb, group);
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1301  			/* init the buddy */
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1302  			memset(data, 0xff, blocksize);
c9de560ded61fa Alex Tomas            2008-01-29  1303  			ext4_mb_generate_buddy(sb, data, incore, group);
7a2fcbf7f85737 Aneesh Kumar K.V      2009-01-05  1304  			ext4_unlock_group(sb, group);
c9de560ded61fa Alex Tomas            2008-01-29  1305  			incore = NULL;
c9de560ded61fa Alex Tomas            2008-01-29  1306  		} else {
c9de560ded61fa Alex Tomas            2008-01-29  1307  			/* this is block of bitmap */
c9de560ded61fa Alex Tomas            2008-01-29  1308  			BUG_ON(incore != NULL);
d3df14535f4a5b Ritesh Harjani        2020-05-10  1309  			mb_debug(sb, "put bitmap for group %u in page %lu/%x\n",
c9de560ded61fa Alex Tomas            2008-01-29  1310  				group, page->index, i * blocksize);
f307333e14f6b1 Theodore Ts'o         2010-05-17  1311  			trace_ext4_mb_bitmap_load(sb, group);
c9de560ded61fa Alex Tomas            2008-01-29  1312  
c9de560ded61fa Alex Tomas            2008-01-29  1313  			/* see comments in ext4_mb_put_pa() */
c9de560ded61fa Alex Tomas            2008-01-29  1314  			ext4_lock_group(sb, group);
c9de560ded61fa Alex Tomas            2008-01-29  1315  			memcpy(data, bitmap, blocksize);
c9de560ded61fa Alex Tomas            2008-01-29  1316  
c9de560ded61fa Alex Tomas            2008-01-29  1317  			/* mark all preallocated blks used in in-core bitmap */
c9de560ded61fa Alex Tomas            2008-01-29  1318  			ext4_mb_generate_from_pa(sb, data, group);
7a2fcbf7f85737 Aneesh Kumar K.V      2009-01-05  1319  			ext4_mb_generate_from_freelist(sb, data, group);
c9de560ded61fa Alex Tomas            2008-01-29  1320  			ext4_unlock_group(sb, group);
c9de560ded61fa Alex Tomas            2008-01-29  1321  
c9de560ded61fa Alex Tomas            2008-01-29  1322  			/* set incore so that the buddy information can be
c9de560ded61fa Alex Tomas            2008-01-29  1323  			 * generated using this
c9de560ded61fa Alex Tomas            2008-01-29  1324  			 */
c9de560ded61fa Alex Tomas            2008-01-29  1325  			incore = data;
c9de560ded61fa Alex Tomas            2008-01-29  1326  		}
c9de560ded61fa Alex Tomas            2008-01-29  1327  	}
c9de560ded61fa Alex Tomas            2008-01-29  1328  	SetPageUptodate(page);
c9de560ded61fa Alex Tomas            2008-01-29  1329  
c9de560ded61fa Alex Tomas            2008-01-29  1330  out:
c9de560ded61fa Alex Tomas            2008-01-29  1331  	if (bh) {
9b8b7d353f5f9b Amir Goldstein        2011-05-09  1332  		for (i = 0; i < groups_per_page; i++)
c9de560ded61fa Alex Tomas            2008-01-29 @1333  			brelse(bh[i]);
c9de560ded61fa Alex Tomas            2008-01-29  1334  		if (bh != &bhs)
c9de560ded61fa Alex Tomas            2008-01-29  1335  			kfree(bh);
c9de560ded61fa Alex Tomas            2008-01-29  1336  	}
c9de560ded61fa Alex Tomas            2008-01-29  1337  	return err;
c9de560ded61fa Alex Tomas            2008-01-29  1338  }
c9de560ded61fa Alex Tomas            2008-01-29  1339  

:::::: The code@line 1333 was first introduced by commit
:::::: c9de560ded61faa5b754137b7753da252391c55a ext4: Add multi block allocator for ext4

:::::: TO: Alex Tomas <alex@clusterfs.com>
:::::: CC: Theodore Ts'o <tytso@mit.edu>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34139 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-07-27 22:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-27 22:50 [linux-next:master 2247/3590] fs/ext4/mballoc.c:1333:4: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.