All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: kbuild-all@lists.01.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"Theodore Y. Ts'o" <tytso@mit.edu>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Eric Biggers <ebiggers@kernel.org>,
	Chandan Rajendra <chandan@linux.vnet.ibm.com>,
	linux-fscrypt@vger.kernel.org
Subject: Re: [PATCH] fscrypt: Restore modular support
Date: Tue, 24 Dec 2019 19:58:54 +0800	[thread overview]
Message-ID: <201912241924.RWSD70yW%lkp@intel.com> (raw)
In-Reply-To: <20191221143020.hbgeixvlmzt7nh54@gondor.apana.org.au>

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

Hi Herbert,

I love your patch! Yet something to improve:

[auto build test ERROR on linux/master]
[cannot apply to ext4/dev f2fs/dev-test linus/master tytso-fscrypt/master v5.5-rc3 next-20191220]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Herbert-Xu/fscrypt-Restore-modular-support/20191224-164226
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 1522d9da40bdfe502c91163e6d769332897201fa
config: x86_64-rhel (attached as .config)
compiler: gcc-7 (Debian 7.5.0-3) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

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

All errors (new ones prefixed by >>):

   ld: fs/super.o: in function `__put_super':
   fs/super.c:296: undefined reference to `fscrypt_sb_free'
   ld: fs/ext4/dir.o: in function `ext4_dir_open':
>> fs/ext4/dir.c:617: undefined reference to `fscrypt_get_encryption_info'
   ld: fs/ext4/dir.o: in function `ext4_readdir':
   fs/ext4/dir.c:118: undefined reference to `fscrypt_get_encryption_info'
>> ld: fs/ext4/dir.c:263: undefined reference to `fscrypt_fname_disk_to_usr'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:145: undefined reference to `fscrypt_fname_alloc_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
   ld: fs/ext4/file.o: in function `ext4_file_open':
>> fs/ext4/file.c:716: undefined reference to `fscrypt_file_open'
   ld: fs/ext4/ialloc.o: in function `__ext4_new_inode':
>> fs/ext4/ialloc.c:772: undefined reference to `fscrypt_get_encryption_info'
>> ld: fs/ext4/ialloc.c:1145: undefined reference to `fscrypt_inherit_context'
   ld: fs/ext4/inode.o: in function `ext4_block_write_begin':
>> fs/ext4/inode.c:1097: undefined reference to `fscrypt_decrypt_pagecache_blocks'
   ld: fs/ext4/inode.o: in function `__ext4_block_zero_page_range':
   fs/ext4/inode.c:3704: undefined reference to `fscrypt_decrypt_pagecache_blocks'
   ld: fs/ext4/inode.o: in function `fscrypt_require_key':
>> include/linux/fscrypt.h:548: undefined reference to `fscrypt_get_encryption_info'
   ld: fs/ext4/inode.o: in function `ext4_issue_zeroout':
>> fs/ext4/inode.c:406: undefined reference to `fscrypt_zeroout_range'
   ld: fs/ext4/ioctl.o: in function `ext4_ioctl':
>> fs/ext4/ioctl.c:1141: undefined reference to `fscrypt_ioctl_set_policy'
>> ld: fs/ext4/ioctl.c:1211: undefined reference to `fscrypt_ioctl_get_key_status'
>> ld: fs/ext4/ioctl.c:1186: undefined reference to `fscrypt_ioctl_get_policy'
>> ld: fs/ext4/ioctl.c:1206: undefined reference to `fscrypt_ioctl_remove_key_all_users'
>> ld: fs/ext4/ioctl.c:1201: undefined reference to `fscrypt_ioctl_remove_key'
>> ld: fs/ext4/ioctl.c:1196: undefined reference to `fscrypt_ioctl_add_key'

vim +1097 fs/ext4/inode.c

ac27a0ec112a08 Dave Kleikamp      2006-10-11  1013  
643fa9612bf1a2 Chandan Rajendra   2018-12-12  1014  #ifdef CONFIG_FS_ENCRYPTION
2058f83a728adf Michael Halcrow    2015-04-12  1015  static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
2058f83a728adf Michael Halcrow    2015-04-12  1016  				  get_block_t *get_block)
2058f83a728adf Michael Halcrow    2015-04-12  1017  {
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1018  	unsigned from = pos & (PAGE_SIZE - 1);
2058f83a728adf Michael Halcrow    2015-04-12  1019  	unsigned to = from + len;
2058f83a728adf Michael Halcrow    2015-04-12  1020  	struct inode *inode = page->mapping->host;
2058f83a728adf Michael Halcrow    2015-04-12  1021  	unsigned block_start, block_end;
2058f83a728adf Michael Halcrow    2015-04-12  1022  	sector_t block;
2058f83a728adf Michael Halcrow    2015-04-12  1023  	int err = 0;
2058f83a728adf Michael Halcrow    2015-04-12  1024  	unsigned blocksize = inode->i_sb->s_blocksize;
2058f83a728adf Michael Halcrow    2015-04-12  1025  	unsigned bbits;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1026  	struct buffer_head *bh, *head, *wait[2];
0b578f358a6a7a Chandan Rajendra   2019-05-20  1027  	int nr_wait = 0;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1028  	int i;
2058f83a728adf Michael Halcrow    2015-04-12  1029  
2058f83a728adf Michael Halcrow    2015-04-12  1030  	BUG_ON(!PageLocked(page));
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1031  	BUG_ON(from > PAGE_SIZE);
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1032  	BUG_ON(to > PAGE_SIZE);
2058f83a728adf Michael Halcrow    2015-04-12  1033  	BUG_ON(from > to);
2058f83a728adf Michael Halcrow    2015-04-12  1034  
2058f83a728adf Michael Halcrow    2015-04-12  1035  	if (!page_has_buffers(page))
2058f83a728adf Michael Halcrow    2015-04-12  1036  		create_empty_buffers(page, blocksize, 0);
2058f83a728adf Michael Halcrow    2015-04-12  1037  	head = page_buffers(page);
2058f83a728adf Michael Halcrow    2015-04-12  1038  	bbits = ilog2(blocksize);
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1039  	block = (sector_t)page->index << (PAGE_SHIFT - bbits);
2058f83a728adf Michael Halcrow    2015-04-12  1040  
2058f83a728adf Michael Halcrow    2015-04-12  1041  	for (bh = head, block_start = 0; bh != head || !block_start;
2058f83a728adf Michael Halcrow    2015-04-12  1042  	    block++, block_start = block_end, bh = bh->b_this_page) {
2058f83a728adf Michael Halcrow    2015-04-12  1043  		block_end = block_start + blocksize;
2058f83a728adf Michael Halcrow    2015-04-12  1044  		if (block_end <= from || block_start >= to) {
2058f83a728adf Michael Halcrow    2015-04-12  1045  			if (PageUptodate(page)) {
2058f83a728adf Michael Halcrow    2015-04-12  1046  				if (!buffer_uptodate(bh))
2058f83a728adf Michael Halcrow    2015-04-12  1047  					set_buffer_uptodate(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1048  			}
2058f83a728adf Michael Halcrow    2015-04-12  1049  			continue;
2058f83a728adf Michael Halcrow    2015-04-12  1050  		}
2058f83a728adf Michael Halcrow    2015-04-12  1051  		if (buffer_new(bh))
2058f83a728adf Michael Halcrow    2015-04-12  1052  			clear_buffer_new(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1053  		if (!buffer_mapped(bh)) {
2058f83a728adf Michael Halcrow    2015-04-12  1054  			WARN_ON(bh->b_size != blocksize);
2058f83a728adf Michael Halcrow    2015-04-12  1055  			err = get_block(inode, block, bh, 1);
2058f83a728adf Michael Halcrow    2015-04-12  1056  			if (err)
2058f83a728adf Michael Halcrow    2015-04-12  1057  				break;
2058f83a728adf Michael Halcrow    2015-04-12  1058  			if (buffer_new(bh)) {
2058f83a728adf Michael Halcrow    2015-04-12  1059  				if (PageUptodate(page)) {
2058f83a728adf Michael Halcrow    2015-04-12  1060  					clear_buffer_new(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1061  					set_buffer_uptodate(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1062  					mark_buffer_dirty(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1063  					continue;
2058f83a728adf Michael Halcrow    2015-04-12  1064  				}
2058f83a728adf Michael Halcrow    2015-04-12  1065  				if (block_end > to || block_start < from)
2058f83a728adf Michael Halcrow    2015-04-12  1066  					zero_user_segments(page, to, block_end,
2058f83a728adf Michael Halcrow    2015-04-12  1067  							   block_start, from);
2058f83a728adf Michael Halcrow    2015-04-12  1068  				continue;
2058f83a728adf Michael Halcrow    2015-04-12  1069  			}
2058f83a728adf Michael Halcrow    2015-04-12  1070  		}
2058f83a728adf Michael Halcrow    2015-04-12  1071  		if (PageUptodate(page)) {
2058f83a728adf Michael Halcrow    2015-04-12  1072  			if (!buffer_uptodate(bh))
2058f83a728adf Michael Halcrow    2015-04-12  1073  				set_buffer_uptodate(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1074  			continue;
2058f83a728adf Michael Halcrow    2015-04-12  1075  		}
2058f83a728adf Michael Halcrow    2015-04-12  1076  		if (!buffer_uptodate(bh) && !buffer_delay(bh) &&
2058f83a728adf Michael Halcrow    2015-04-12  1077  		    !buffer_unwritten(bh) &&
2058f83a728adf Michael Halcrow    2015-04-12  1078  		    (block_start < from || block_end > to)) {
dfec8a14fc9043 Mike Christie      2016-06-05  1079  			ll_rw_block(REQ_OP_READ, 0, 1, &bh);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1080  			wait[nr_wait++] = bh;
2058f83a728adf Michael Halcrow    2015-04-12  1081  		}
2058f83a728adf Michael Halcrow    2015-04-12  1082  	}
2058f83a728adf Michael Halcrow    2015-04-12  1083  	/*
2058f83a728adf Michael Halcrow    2015-04-12  1084  	 * If we issued read requests, let them complete.
2058f83a728adf Michael Halcrow    2015-04-12  1085  	 */
0b578f358a6a7a Chandan Rajendra   2019-05-20  1086  	for (i = 0; i < nr_wait; i++) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1087  		wait_on_buffer(wait[i]);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1088  		if (!buffer_uptodate(wait[i]))
2058f83a728adf Michael Halcrow    2015-04-12  1089  			err = -EIO;
2058f83a728adf Michael Halcrow    2015-04-12  1090  	}
7e0785fce14f75 Chandan Rajendra   2019-05-20  1091  	if (unlikely(err)) {
2058f83a728adf Michael Halcrow    2015-04-12  1092  		page_zero_new_buffers(page, from, to);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1093  	} else if (IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode)) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1094  		for (i = 0; i < nr_wait; i++) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1095  			int err2;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1096  
0b578f358a6a7a Chandan Rajendra   2019-05-20 @1097  			err2 = fscrypt_decrypt_pagecache_blocks(page, blocksize,
0b578f358a6a7a Chandan Rajendra   2019-05-20  1098  								bh_offset(wait[i]));
0b578f358a6a7a Chandan Rajendra   2019-05-20  1099  			if (err2) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1100  				clear_buffer_uptodate(wait[i]);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1101  				err = err2;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1102  			}
0b578f358a6a7a Chandan Rajendra   2019-05-20  1103  		}
7e0785fce14f75 Chandan Rajendra   2019-05-20  1104  	}
7e0785fce14f75 Chandan Rajendra   2019-05-20  1105  
2058f83a728adf Michael Halcrow    2015-04-12  1106  	return err;
2058f83a728adf Michael Halcrow    2015-04-12  1107  }
2058f83a728adf Michael Halcrow    2015-04-12  1108  #endif
2058f83a728adf Michael Halcrow    2015-04-12  1109  

:::::: The code at line 1097 was first introduced by commit
:::::: 0b578f358a6a7afee2ddc48dd39c2972726187de ext4: decrypt only the needed blocks in ext4_block_write_begin()

:::::: TO: Chandan Rajendra <chandan@linux.ibm.com>
:::::: CC: Eric Biggers <ebiggers@google.com>

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

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

WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] fscrypt: Restore modular support
Date: Tue, 24 Dec 2019 19:58:54 +0800	[thread overview]
Message-ID: <201912241924.RWSD70yW%lkp@intel.com> (raw)
In-Reply-To: <20191221143020.hbgeixvlmzt7nh54@gondor.apana.org.au>

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

Hi Herbert,

I love your patch! Yet something to improve:

[auto build test ERROR on linux/master]
[cannot apply to ext4/dev f2fs/dev-test linus/master tytso-fscrypt/master v5.5-rc3 next-20191220]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Herbert-Xu/fscrypt-Restore-modular-support/20191224-164226
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 1522d9da40bdfe502c91163e6d769332897201fa
config: x86_64-rhel (attached as .config)
compiler: gcc-7 (Debian 7.5.0-3) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

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

All errors (new ones prefixed by >>):

   ld: fs/super.o: in function `__put_super':
   fs/super.c:296: undefined reference to `fscrypt_sb_free'
   ld: fs/ext4/dir.o: in function `ext4_dir_open':
>> fs/ext4/dir.c:617: undefined reference to `fscrypt_get_encryption_info'
   ld: fs/ext4/dir.o: in function `ext4_readdir':
   fs/ext4/dir.c:118: undefined reference to `fscrypt_get_encryption_info'
>> ld: fs/ext4/dir.c:263: undefined reference to `fscrypt_fname_disk_to_usr'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:145: undefined reference to `fscrypt_fname_alloc_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
>> ld: fs/ext4/dir.c:288: undefined reference to `fscrypt_fname_free_buffer'
   ld: fs/ext4/file.o: in function `ext4_file_open':
>> fs/ext4/file.c:716: undefined reference to `fscrypt_file_open'
   ld: fs/ext4/ialloc.o: in function `__ext4_new_inode':
>> fs/ext4/ialloc.c:772: undefined reference to `fscrypt_get_encryption_info'
>> ld: fs/ext4/ialloc.c:1145: undefined reference to `fscrypt_inherit_context'
   ld: fs/ext4/inode.o: in function `ext4_block_write_begin':
>> fs/ext4/inode.c:1097: undefined reference to `fscrypt_decrypt_pagecache_blocks'
   ld: fs/ext4/inode.o: in function `__ext4_block_zero_page_range':
   fs/ext4/inode.c:3704: undefined reference to `fscrypt_decrypt_pagecache_blocks'
   ld: fs/ext4/inode.o: in function `fscrypt_require_key':
>> include/linux/fscrypt.h:548: undefined reference to `fscrypt_get_encryption_info'
   ld: fs/ext4/inode.o: in function `ext4_issue_zeroout':
>> fs/ext4/inode.c:406: undefined reference to `fscrypt_zeroout_range'
   ld: fs/ext4/ioctl.o: in function `ext4_ioctl':
>> fs/ext4/ioctl.c:1141: undefined reference to `fscrypt_ioctl_set_policy'
>> ld: fs/ext4/ioctl.c:1211: undefined reference to `fscrypt_ioctl_get_key_status'
>> ld: fs/ext4/ioctl.c:1186: undefined reference to `fscrypt_ioctl_get_policy'
>> ld: fs/ext4/ioctl.c:1206: undefined reference to `fscrypt_ioctl_remove_key_all_users'
>> ld: fs/ext4/ioctl.c:1201: undefined reference to `fscrypt_ioctl_remove_key'
>> ld: fs/ext4/ioctl.c:1196: undefined reference to `fscrypt_ioctl_add_key'

vim +1097 fs/ext4/inode.c

ac27a0ec112a08 Dave Kleikamp      2006-10-11  1013  
643fa9612bf1a2 Chandan Rajendra   2018-12-12  1014  #ifdef CONFIG_FS_ENCRYPTION
2058f83a728adf Michael Halcrow    2015-04-12  1015  static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
2058f83a728adf Michael Halcrow    2015-04-12  1016  				  get_block_t *get_block)
2058f83a728adf Michael Halcrow    2015-04-12  1017  {
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1018  	unsigned from = pos & (PAGE_SIZE - 1);
2058f83a728adf Michael Halcrow    2015-04-12  1019  	unsigned to = from + len;
2058f83a728adf Michael Halcrow    2015-04-12  1020  	struct inode *inode = page->mapping->host;
2058f83a728adf Michael Halcrow    2015-04-12  1021  	unsigned block_start, block_end;
2058f83a728adf Michael Halcrow    2015-04-12  1022  	sector_t block;
2058f83a728adf Michael Halcrow    2015-04-12  1023  	int err = 0;
2058f83a728adf Michael Halcrow    2015-04-12  1024  	unsigned blocksize = inode->i_sb->s_blocksize;
2058f83a728adf Michael Halcrow    2015-04-12  1025  	unsigned bbits;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1026  	struct buffer_head *bh, *head, *wait[2];
0b578f358a6a7a Chandan Rajendra   2019-05-20  1027  	int nr_wait = 0;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1028  	int i;
2058f83a728adf Michael Halcrow    2015-04-12  1029  
2058f83a728adf Michael Halcrow    2015-04-12  1030  	BUG_ON(!PageLocked(page));
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1031  	BUG_ON(from > PAGE_SIZE);
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1032  	BUG_ON(to > PAGE_SIZE);
2058f83a728adf Michael Halcrow    2015-04-12  1033  	BUG_ON(from > to);
2058f83a728adf Michael Halcrow    2015-04-12  1034  
2058f83a728adf Michael Halcrow    2015-04-12  1035  	if (!page_has_buffers(page))
2058f83a728adf Michael Halcrow    2015-04-12  1036  		create_empty_buffers(page, blocksize, 0);
2058f83a728adf Michael Halcrow    2015-04-12  1037  	head = page_buffers(page);
2058f83a728adf Michael Halcrow    2015-04-12  1038  	bbits = ilog2(blocksize);
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01  1039  	block = (sector_t)page->index << (PAGE_SHIFT - bbits);
2058f83a728adf Michael Halcrow    2015-04-12  1040  
2058f83a728adf Michael Halcrow    2015-04-12  1041  	for (bh = head, block_start = 0; bh != head || !block_start;
2058f83a728adf Michael Halcrow    2015-04-12  1042  	    block++, block_start = block_end, bh = bh->b_this_page) {
2058f83a728adf Michael Halcrow    2015-04-12  1043  		block_end = block_start + blocksize;
2058f83a728adf Michael Halcrow    2015-04-12  1044  		if (block_end <= from || block_start >= to) {
2058f83a728adf Michael Halcrow    2015-04-12  1045  			if (PageUptodate(page)) {
2058f83a728adf Michael Halcrow    2015-04-12  1046  				if (!buffer_uptodate(bh))
2058f83a728adf Michael Halcrow    2015-04-12  1047  					set_buffer_uptodate(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1048  			}
2058f83a728adf Michael Halcrow    2015-04-12  1049  			continue;
2058f83a728adf Michael Halcrow    2015-04-12  1050  		}
2058f83a728adf Michael Halcrow    2015-04-12  1051  		if (buffer_new(bh))
2058f83a728adf Michael Halcrow    2015-04-12  1052  			clear_buffer_new(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1053  		if (!buffer_mapped(bh)) {
2058f83a728adf Michael Halcrow    2015-04-12  1054  			WARN_ON(bh->b_size != blocksize);
2058f83a728adf Michael Halcrow    2015-04-12  1055  			err = get_block(inode, block, bh, 1);
2058f83a728adf Michael Halcrow    2015-04-12  1056  			if (err)
2058f83a728adf Michael Halcrow    2015-04-12  1057  				break;
2058f83a728adf Michael Halcrow    2015-04-12  1058  			if (buffer_new(bh)) {
2058f83a728adf Michael Halcrow    2015-04-12  1059  				if (PageUptodate(page)) {
2058f83a728adf Michael Halcrow    2015-04-12  1060  					clear_buffer_new(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1061  					set_buffer_uptodate(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1062  					mark_buffer_dirty(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1063  					continue;
2058f83a728adf Michael Halcrow    2015-04-12  1064  				}
2058f83a728adf Michael Halcrow    2015-04-12  1065  				if (block_end > to || block_start < from)
2058f83a728adf Michael Halcrow    2015-04-12  1066  					zero_user_segments(page, to, block_end,
2058f83a728adf Michael Halcrow    2015-04-12  1067  							   block_start, from);
2058f83a728adf Michael Halcrow    2015-04-12  1068  				continue;
2058f83a728adf Michael Halcrow    2015-04-12  1069  			}
2058f83a728adf Michael Halcrow    2015-04-12  1070  		}
2058f83a728adf Michael Halcrow    2015-04-12  1071  		if (PageUptodate(page)) {
2058f83a728adf Michael Halcrow    2015-04-12  1072  			if (!buffer_uptodate(bh))
2058f83a728adf Michael Halcrow    2015-04-12  1073  				set_buffer_uptodate(bh);
2058f83a728adf Michael Halcrow    2015-04-12  1074  			continue;
2058f83a728adf Michael Halcrow    2015-04-12  1075  		}
2058f83a728adf Michael Halcrow    2015-04-12  1076  		if (!buffer_uptodate(bh) && !buffer_delay(bh) &&
2058f83a728adf Michael Halcrow    2015-04-12  1077  		    !buffer_unwritten(bh) &&
2058f83a728adf Michael Halcrow    2015-04-12  1078  		    (block_start < from || block_end > to)) {
dfec8a14fc9043 Mike Christie      2016-06-05  1079  			ll_rw_block(REQ_OP_READ, 0, 1, &bh);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1080  			wait[nr_wait++] = bh;
2058f83a728adf Michael Halcrow    2015-04-12  1081  		}
2058f83a728adf Michael Halcrow    2015-04-12  1082  	}
2058f83a728adf Michael Halcrow    2015-04-12  1083  	/*
2058f83a728adf Michael Halcrow    2015-04-12  1084  	 * If we issued read requests, let them complete.
2058f83a728adf Michael Halcrow    2015-04-12  1085  	 */
0b578f358a6a7a Chandan Rajendra   2019-05-20  1086  	for (i = 0; i < nr_wait; i++) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1087  		wait_on_buffer(wait[i]);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1088  		if (!buffer_uptodate(wait[i]))
2058f83a728adf Michael Halcrow    2015-04-12  1089  			err = -EIO;
2058f83a728adf Michael Halcrow    2015-04-12  1090  	}
7e0785fce14f75 Chandan Rajendra   2019-05-20  1091  	if (unlikely(err)) {
2058f83a728adf Michael Halcrow    2015-04-12  1092  		page_zero_new_buffers(page, from, to);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1093  	} else if (IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode)) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1094  		for (i = 0; i < nr_wait; i++) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1095  			int err2;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1096  
0b578f358a6a7a Chandan Rajendra   2019-05-20 @1097  			err2 = fscrypt_decrypt_pagecache_blocks(page, blocksize,
0b578f358a6a7a Chandan Rajendra   2019-05-20  1098  								bh_offset(wait[i]));
0b578f358a6a7a Chandan Rajendra   2019-05-20  1099  			if (err2) {
0b578f358a6a7a Chandan Rajendra   2019-05-20  1100  				clear_buffer_uptodate(wait[i]);
0b578f358a6a7a Chandan Rajendra   2019-05-20  1101  				err = err2;
0b578f358a6a7a Chandan Rajendra   2019-05-20  1102  			}
0b578f358a6a7a Chandan Rajendra   2019-05-20  1103  		}
7e0785fce14f75 Chandan Rajendra   2019-05-20  1104  	}
7e0785fce14f75 Chandan Rajendra   2019-05-20  1105  
2058f83a728adf Michael Halcrow    2015-04-12  1106  	return err;
2058f83a728adf Michael Halcrow    2015-04-12  1107  }
2058f83a728adf Michael Halcrow    2015-04-12  1108  #endif
2058f83a728adf Michael Halcrow    2015-04-12  1109  

:::::: The code@line 1097 was first introduced by commit
:::::: 0b578f358a6a7afee2ddc48dd39c2972726187de ext4: decrypt only the needed blocks in ext4_block_write_begin()

:::::: TO: Chandan Rajendra <chandan@linux.ibm.com>
:::::: CC: Eric Biggers <ebiggers@google.com>

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation

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

  parent reply	other threads:[~2019-12-24 11:59 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-21 14:30 [PATCH] fscrypt: Restore modular support Herbert Xu
2019-12-21 23:44 ` Eric Biggers
2019-12-22  8:41   ` [v2 PATCH] fscrypt: Allow modular crypto algorithms Herbert Xu
2019-12-22 16:45     ` Eric Biggers
2019-12-23  7:46       ` [v3 " Herbert Xu
2019-12-24 22:38         ` Eric Biggers
2019-12-27  2:47           ` [v4 " Herbert Xu
2020-01-03 17:04             ` Eric Biggers
2019-12-24 11:44 ` [PATCH] fscrypt: Restore modular support kbuild test robot
2019-12-24 11:44   ` kbuild test robot
2019-12-24 11:58 ` kbuild test robot [this message]
2019-12-24 11:58   ` kbuild test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201912241924.RWSD70yW%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=chandan@linux.vnet.ibm.com \
    --cc=ebiggers@kernel.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=jaegeuk@kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-fscrypt@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.