lkml.org 
[lkml]   [2019]   [Dec]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] fscrypt: Restore modular support
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
[unhandled content-type:application/gzip]
\
 
 \ /
  Last update: 2019-12-24 12:59    [W:1.210 / U:0.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site