lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202105291411.ygMZz3Hl-lkp@intel.com>
Date:   Sat, 29 May 2021 14:15:19 +0800
From:   kernel test robot <lkp@...el.com>
To:     Daniel Rosenberg <drosen@...gle.com>
Cc:     kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
        linux-kernel@...r.kernel.org, Theodore Ts'o <tytso@....edu>,
        Andreas Dilger <adilger@...ger.ca>
Subject: fs/ext4/dir.c:126:12: warning: stack frame size of 2096 bytes in
 function 'ext4_readdir'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   6799d4f2da496cab9b3fd26283a8ce3639b1a88d
commit: 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500 ext4: handle casefolding with encryption
date:   8 weeks ago
config: powerpc64-randconfig-r036-20210529 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project bc6799f2f79f0ae87e9f1ebf9d25ba799fbd25a9)
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 powerpc64 cross compiling tool for clang build
        # apt-get install binutils-powerpc64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64 

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

All warnings (new ones prefixed by >>):

   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:45:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(insw, (unsigned long p, void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:199:1: note: expanded from here
   __do_insw
   ^
   arch/powerpc/include/asm/io.h:557:56: note: expanded from macro '__do_insw'
   #define __do_insw(p, b, n)      readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/dir.c:26:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:201:1: note: expanded from here
   __do_insl
   ^
   arch/powerpc/include/asm/io.h:558:56: note: expanded from macro '__do_insl'
   #define __do_insl(p, b, n)      readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/dir.c:26:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:203:1: note: expanded from here
   __do_outsb
   ^
   arch/powerpc/include/asm/io.h:559:58: note: expanded from macro '__do_outsb'
   #define __do_outsb(p, b, n)     writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/dir.c:26:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:205:1: note: expanded from here
   __do_outsw
   ^
   arch/powerpc/include/asm/io.h:560:58: note: expanded from macro '__do_outsw'
   #define __do_outsw(p, b, n)     writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/dir.c:26:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:207:1: note: expanded from here
   __do_outsl
   ^
   arch/powerpc/include/asm/io.h:561:58: note: expanded from macro '__do_outsl'
   #define __do_outsl(p, b, n)     writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
>> fs/ext4/dir.c:126:12: warning: stack frame size of 2096 bytes in function 'ext4_readdir' [-Wframe-larger-than=]
   static int ext4_readdir(struct file *file, struct dir_context *ctx)
              ^
   14 warnings generated.


vim +/ext4_readdir +126 fs/ext4/dir.c

ac27a0ec112a08 Dave Kleikamp       2006-10-11  125  
725bebb27882ae Al Viro             2013-05-17 @126  static int ext4_readdir(struct file *file, struct dir_context *ctx)
ac27a0ec112a08 Dave Kleikamp       2006-10-11  127  {
498e5f24158da7 Theodore Ts'o       2008-11-05  128  	unsigned int offset;
aa13d5f67c6f5f Giedrius Rekasius   2014-05-27  129  	int i;
617ba13b31fbf5 Mingming Cao        2006-10-11  130  	struct ext4_dir_entry_2 *de;
ac27a0ec112a08 Dave Kleikamp       2006-10-11  131  	int err;
725bebb27882ae Al Viro             2013-05-17  132  	struct inode *inode = file_inode(file);
d1f5273e9adb40 Fan Yong            2012-03-18  133  	struct super_block *sb = inode->i_sb;
4461471107b79b Michael Halcrow     2015-04-12  134  	struct buffer_head *bh = NULL;
a7550b30ab709f Jaegeuk Kim         2016-07-10  135  	struct fscrypt_str fstr = FSTR_INIT(NULL, 0);
ac27a0ec112a08 Dave Kleikamp       2006-10-11  136  
ec0caa974cd092 Eric Biggers        2020-12-02  137  	err = fscrypt_prepare_readdir(inode);
3b1ada55b905f3 Eric Biggers        2019-12-09  138  	if (err)
28b4c263961c47 Theodore Ts'o       2016-02-07  139  		return err;
28b4c263961c47 Theodore Ts'o       2016-02-07  140  
d1f5273e9adb40 Fan Yong            2012-03-18  141  	if (is_dx_dir(inode)) {
725bebb27882ae Al Viro             2013-05-17  142  		err = ext4_dx_readdir(file, ctx);
400086d7c11327 Milan Djurovic      2021-03-15  143  		if (err != ERR_BAD_DX_DIR)
725bebb27882ae Al Viro             2013-05-17  144  			return err;
400086d7c11327 Milan Djurovic      2021-03-15  145  
48a34311953d92 Jan Kara            2020-02-10  146  		/* Can we just clear INDEX flag to ignore htree information? */
48a34311953d92 Jan Kara            2020-02-10  147  		if (!ext4_has_metadata_csum(sb)) {
ac27a0ec112a08 Dave Kleikamp       2006-10-11  148  			/*
ac27a0ec112a08 Dave Kleikamp       2006-10-11  149  			 * We don't set the inode dirty flag since it's not
48a34311953d92 Jan Kara            2020-02-10  150  			 * critical that it gets flushed back to the disk.
ac27a0ec112a08 Dave Kleikamp       2006-10-11  151  			 */
48a34311953d92 Jan Kara            2020-02-10  152  			ext4_clear_inode_flag(inode, EXT4_INODE_INDEX);
48a34311953d92 Jan Kara            2020-02-10  153  		}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  154  	}
8af0f082279770 Tao Ma              2013-04-19  155  
8af0f082279770 Tao Ma              2013-04-19  156  	if (ext4_has_inline_data(inode)) {
8af0f082279770 Tao Ma              2013-04-19  157  		int has_inline_data = 1;
4461471107b79b Michael Halcrow     2015-04-12  158  		err = ext4_read_inline_dir(file, ctx,
8af0f082279770 Tao Ma              2013-04-19  159  					   &has_inline_data);
8af0f082279770 Tao Ma              2013-04-19  160  		if (has_inline_data)
4461471107b79b Michael Halcrow     2015-04-12  161  			return err;
4461471107b79b Michael Halcrow     2015-04-12  162  	}
4461471107b79b Michael Halcrow     2015-04-12  163  
592ddec7578a33 Chandan Rajendra    2018-12-12  164  	if (IS_ENCRYPTED(inode)) {
8b10fe68985278 Jeff Layton         2020-08-10  165  		err = fscrypt_fname_alloc_buffer(EXT4_NAME_LEN, &fstr);
b7236e21d55ff9 Theodore Ts'o       2015-05-18  166  		if (err < 0)
4461471107b79b Michael Halcrow     2015-04-12  167  			return err;
4461471107b79b Michael Halcrow     2015-04-12  168  	}
8af0f082279770 Tao Ma              2013-04-19  169  
725bebb27882ae Al Viro             2013-05-17  170  	while (ctx->pos < inode->i_size) {
2ed886852adfcb Theodore Ts'o       2010-05-16  171  		struct ext4_map_blocks map;
ac27a0ec112a08 Dave Kleikamp       2006-10-11  172  
1f60fbe7274918 Theodore Ts'o       2016-04-23  173  		if (fatal_signal_pending(current)) {
1f60fbe7274918 Theodore Ts'o       2016-04-23  174  			err = -ERESTARTSYS;
1f60fbe7274918 Theodore Ts'o       2016-04-23  175  			goto errout;
1f60fbe7274918 Theodore Ts'o       2016-04-23  176  		}
1f60fbe7274918 Theodore Ts'o       2016-04-23  177  		cond_resched();
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  178  		offset = ctx->pos & (sb->s_blocksize - 1);
725bebb27882ae Al Viro             2013-05-17  179  		map.m_lblk = ctx->pos >> EXT4_BLOCK_SIZE_BITS(sb);
2ed886852adfcb Theodore Ts'o       2010-05-16  180  		map.m_len = 1;
2ed886852adfcb Theodore Ts'o       2010-05-16  181  		err = ext4_map_blocks(NULL, inode, &map, 0);
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  182  		if (err == 0) {
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  183  			/* m_len should never be zero but let's avoid
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  184  			 * an infinite loop if it somehow is */
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  185  			if (map.m_len == 0)
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  186  				map.m_len = 1;
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  187  			ctx->pos += map.m_len * sb->s_blocksize;
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  188  			continue;
4e19d6b65fb4fc Theodore Ts'o       2019-06-20  189  		}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  190  		if (err > 0) {
2ed886852adfcb Theodore Ts'o       2010-05-16  191  			pgoff_t index = map.m_pblk >>
09cbfeaf1a5a67 Kirill A. Shutemov  2016-04-01  192  					(PAGE_SHIFT - inode->i_blkbits);
725bebb27882ae Al Viro             2013-05-17  193  			if (!ra_has_index(&file->f_ra, index))
cf914a7d656e62 Rusty Russell       2007-07-19  194  				page_cache_sync_readahead(
dc7868fcb9a739 Fengguang Wu        2007-07-19  195  					sb->s_bdev->bd_inode->i_mapping,
725bebb27882ae Al Viro             2013-05-17  196  					&file->f_ra, file,
cf914a7d656e62 Rusty Russell       2007-07-19  197  					index, 1);
09cbfeaf1a5a67 Kirill A. Shutemov  2016-04-01  198  			file->f_ra.prev_pos = (loff_t)index << PAGE_SHIFT;
1c2150283cae89 Theodore Ts'o       2014-08-29  199  			bh = ext4_bread(NULL, inode, map.m_lblk, 0);
c906f38e8853cf Kirill Tkhai        2016-02-16  200  			if (IS_ERR(bh)) {
c906f38e8853cf Kirill Tkhai        2016-02-16  201  				err = PTR_ERR(bh);
c906f38e8853cf Kirill Tkhai        2016-02-16  202  				bh = NULL;
c906f38e8853cf Kirill Tkhai        2016-02-16  203  				goto errout;
c906f38e8853cf Kirill Tkhai        2016-02-16  204  			}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  205  		}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  206  
ac27a0ec112a08 Dave Kleikamp       2006-10-11  207  		if (!bh) {
e6c4021190c828 Eric Sandeen        2006-12-06  208  			/* corrupt size?  Maybe no more blocks to read */
725bebb27882ae Al Viro             2013-05-17  209  			if (ctx->pos > inode->i_blocks << 9)
e6c4021190c828 Eric Sandeen        2006-12-06  210  				break;
725bebb27882ae Al Viro             2013-05-17  211  			ctx->pos += sb->s_blocksize - offset;
ac27a0ec112a08 Dave Kleikamp       2006-10-11  212  			continue;
ac27a0ec112a08 Dave Kleikamp       2006-10-11  213  		}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  214  
b0336e8d2108e6 Darrick J. Wong     2012-04-29  215  		/* Check the checksum */
b0336e8d2108e6 Darrick J. Wong     2012-04-29  216  		if (!buffer_verified(bh) &&
f036adb3997646 Theodore Ts'o       2019-06-21  217  		    !ext4_dirblock_csum_verify(inode, bh)) {
725bebb27882ae Al Viro             2013-05-17  218  			EXT4_ERROR_FILE(file, 0, "directory fails checksum "
b0336e8d2108e6 Darrick J. Wong     2012-04-29  219  					"at offset %llu",
725bebb27882ae Al Viro             2013-05-17  220  					(unsigned long long)ctx->pos);
725bebb27882ae Al Viro             2013-05-17  221  			ctx->pos += sb->s_blocksize - offset;
d5ac7773051602 Guo Chao            2013-01-28  222  			brelse(bh);
4461471107b79b Michael Halcrow     2015-04-12  223  			bh = NULL;
b0336e8d2108e6 Darrick J. Wong     2012-04-29  224  			continue;
b0336e8d2108e6 Darrick J. Wong     2012-04-29  225  		}
b0336e8d2108e6 Darrick J. Wong     2012-04-29  226  		set_buffer_verified(bh);
b0336e8d2108e6 Darrick J. Wong     2012-04-29  227  
ac27a0ec112a08 Dave Kleikamp       2006-10-11  228  		/* If the dir block has changed since the last call to
ac27a0ec112a08 Dave Kleikamp       2006-10-11  229  		 * readdir(2), then we might be pointing to an invalid
ac27a0ec112a08 Dave Kleikamp       2006-10-11  230  		 * dirent right now.  Scan from the start of the block
ac27a0ec112a08 Dave Kleikamp       2006-10-11  231  		 * to make sure. */
c472c07bfed9c8 Goffredo Baroncelli 2018-02-01  232  		if (!inode_eq_iversion(inode, file->f_version)) {
ac27a0ec112a08 Dave Kleikamp       2006-10-11  233  			for (i = 0; i < sb->s_blocksize && i < offset; ) {
617ba13b31fbf5 Mingming Cao        2006-10-11  234  				de = (struct ext4_dir_entry_2 *)
ac27a0ec112a08 Dave Kleikamp       2006-10-11  235  					(bh->b_data + i);
ac27a0ec112a08 Dave Kleikamp       2006-10-11  236  				/* It's too expensive to do a full
ac27a0ec112a08 Dave Kleikamp       2006-10-11  237  				 * dirent test each time round this
ac27a0ec112a08 Dave Kleikamp       2006-10-11  238  				 * loop, but we do have to test at
ac27a0ec112a08 Dave Kleikamp       2006-10-11  239  				 * least that it is non-zero.  A
ac27a0ec112a08 Dave Kleikamp       2006-10-11  240  				 * failure will be detected in the
ac27a0ec112a08 Dave Kleikamp       2006-10-11  241  				 * dirent test below. */
3d0518f4758eca Wei Yongjun         2009-02-14  242  				if (ext4_rec_len_from_disk(de->rec_len,
471fbbea7ff706 Daniel Rosenberg    2021-03-19  243  					sb->s_blocksize) < ext4_dir_rec_len(1,
471fbbea7ff706 Daniel Rosenberg    2021-03-19  244  									inode))
ac27a0ec112a08 Dave Kleikamp       2006-10-11  245  					break;
3d0518f4758eca Wei Yongjun         2009-02-14  246  				i += ext4_rec_len_from_disk(de->rec_len,
3d0518f4758eca Wei Yongjun         2009-02-14  247  							    sb->s_blocksize);
ac27a0ec112a08 Dave Kleikamp       2006-10-11  248  			}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  249  			offset = i;
725bebb27882ae Al Viro             2013-05-17  250  			ctx->pos = (ctx->pos & ~(sb->s_blocksize - 1))
ac27a0ec112a08 Dave Kleikamp       2006-10-11  251  				| offset;
ee73f9a52a3437 Jeff Layton         2018-01-09  252  			file->f_version = inode_query_iversion(inode);
ac27a0ec112a08 Dave Kleikamp       2006-10-11  253  		}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  254  
725bebb27882ae Al Viro             2013-05-17  255  		while (ctx->pos < inode->i_size
ac27a0ec112a08 Dave Kleikamp       2006-10-11  256  		       && offset < sb->s_blocksize) {
617ba13b31fbf5 Mingming Cao        2006-10-11  257  			de = (struct ext4_dir_entry_2 *) (bh->b_data + offset);
725bebb27882ae Al Viro             2013-05-17  258  			if (ext4_check_dir_entry(inode, file, de, bh,
226ba972b08637 Tao Ma              2012-12-10  259  						 bh->b_data, bh->b_size,
226ba972b08637 Tao Ma              2012-12-10  260  						 offset)) {
63f5793351d821 Andrew Morton       2006-10-11  261  				/*
725bebb27882ae Al Viro             2013-05-17  262  				 * On error, skip to the next block
63f5793351d821 Andrew Morton       2006-10-11  263  				 */
725bebb27882ae Al Viro             2013-05-17  264  				ctx->pos = (ctx->pos |
ac27a0ec112a08 Dave Kleikamp       2006-10-11  265  						(sb->s_blocksize - 1)) + 1;
725bebb27882ae Al Viro             2013-05-17  266  				break;
ac27a0ec112a08 Dave Kleikamp       2006-10-11  267  			}
3d0518f4758eca Wei Yongjun         2009-02-14  268  			offset += ext4_rec_len_from_disk(de->rec_len,
3d0518f4758eca Wei Yongjun         2009-02-14  269  					sb->s_blocksize);
ac27a0ec112a08 Dave Kleikamp       2006-10-11  270  			if (le32_to_cpu(de->inode)) {
592ddec7578a33 Chandan Rajendra    2018-12-12  271  				if (!IS_ENCRYPTED(inode)) {
725bebb27882ae Al Viro             2013-05-17  272  					if (!dir_emit(ctx, de->name,
ac27a0ec112a08 Dave Kleikamp       2006-10-11  273  					    de->name_len,
ac27a0ec112a08 Dave Kleikamp       2006-10-11  274  					    le32_to_cpu(de->inode),
4461471107b79b Michael Halcrow     2015-04-12  275  					    get_dtype(sb, de->file_type)))
4461471107b79b Michael Halcrow     2015-04-12  276  						goto done;
4461471107b79b Michael Halcrow     2015-04-12  277  				} else {
a7550b30ab709f Jaegeuk Kim         2016-07-10  278  					int save_len = fstr.len;
a7550b30ab709f Jaegeuk Kim         2016-07-10  279  					struct fscrypt_str de_name =
a7550b30ab709f Jaegeuk Kim         2016-07-10  280  							FSTR_INIT(de->name,
a7550b30ab709f Jaegeuk Kim         2016-07-10  281  								de->name_len);
d229959072eba4 Theodore Ts'o       2015-05-18  282  
4461471107b79b Michael Halcrow     2015-04-12  283  					/* Directory is encrypted */
a7550b30ab709f Jaegeuk Kim         2016-07-10  284  					err = fscrypt_fname_disk_to_usr(inode,
471fbbea7ff706 Daniel Rosenberg    2021-03-19  285  						EXT4_DIRENT_HASH(de),
471fbbea7ff706 Daniel Rosenberg    2021-03-19  286  						EXT4_DIRENT_MINOR_HASH(de),
471fbbea7ff706 Daniel Rosenberg    2021-03-19  287  						&de_name, &fstr);
ef1eb3aa50930f Eric Biggers        2016-09-15  288  					de_name = fstr;
a7550b30ab709f Jaegeuk Kim         2016-07-10  289  					fstr.len = save_len;
ef1eb3aa50930f Eric Biggers        2016-09-15  290  					if (err)
4461471107b79b Michael Halcrow     2015-04-12  291  						goto errout;
4461471107b79b Michael Halcrow     2015-04-12  292  					if (!dir_emit(ctx,
ef1eb3aa50930f Eric Biggers        2016-09-15  293  					    de_name.name, de_name.len,
4461471107b79b Michael Halcrow     2015-04-12  294  					    le32_to_cpu(de->inode),
4461471107b79b Michael Halcrow     2015-04-12  295  					    get_dtype(sb, de->file_type)))
4461471107b79b Michael Halcrow     2015-04-12  296  						goto done;
725bebb27882ae Al Viro             2013-05-17  297  				}
ac27a0ec112a08 Dave Kleikamp       2006-10-11  298  			}
725bebb27882ae Al Viro             2013-05-17  299  			ctx->pos += ext4_rec_len_from_disk(de->rec_len,
3d0518f4758eca Wei Yongjun         2009-02-14  300  						sb->s_blocksize);
ac27a0ec112a08 Dave Kleikamp       2006-10-11  301  		}
ae05327a00fd47 Al Viro             2016-05-12  302  		if ((ctx->pos < inode->i_size) && !dir_relax_shared(inode))
4461471107b79b Michael Halcrow     2015-04-12  303  			goto done;
ac27a0ec112a08 Dave Kleikamp       2006-10-11  304  		brelse(bh);
4461471107b79b Michael Halcrow     2015-04-12  305  		bh = NULL;
4461471107b79b Michael Halcrow     2015-04-12  306  		offset = 0;
725bebb27882ae Al Viro             2013-05-17  307  	}
4461471107b79b Michael Halcrow     2015-04-12  308  done:
4461471107b79b Michael Halcrow     2015-04-12  309  	err = 0;
4461471107b79b Michael Halcrow     2015-04-12  310  errout:
a7550b30ab709f Jaegeuk Kim         2016-07-10  311  	fscrypt_fname_free_buffer(&fstr);
4461471107b79b Michael Halcrow     2015-04-12  312  	brelse(bh);
4461471107b79b Michael Halcrow     2015-04-12  313  	return err;
ac27a0ec112a08 Dave Kleikamp       2006-10-11  314  }
ac27a0ec112a08 Dave Kleikamp       2006-10-11  315  

:::::: The code at line 126 was first introduced by commit
:::::: 725bebb27882ae617d50776cc8b6cacd84481c91 [readdir] convert ext4

:::::: TO: Al Viro <viro@...iv.linux.org.uk>
:::::: CC: Al Viro <viro@...iv.linux.org.uk>

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

Download attachment ".config.gz" of type "application/gzip" (27127 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ