Hi Deven,
[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on dm/for-next]
[also build test WARNING on pcmoore-selinux/next linus/master v5.8-rc5]
[cannot apply to security/next-testing next-20200717]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url:
https://github.com/0day-ci/linux/commits/Deven-Bowers/Integrity-Policy-En...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git
for-next
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
In file included from arch/m68k/include/asm/io_mm.h:25,
from arch/m68k/include/asm/io.h:8,
from include/linux/io.h:13,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:13,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:10,
from include/linux/highmem.h:10,
from include/linux/pagemap.h:11,
from include/linux/blkdev.h:16,
from include/linux/dm-bufio.h:12,
from drivers/md/dm-verity.h:14,
from drivers/md/dm-verity-target.c:16:
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsb':
arch/m68k/include/asm/raw_io.h:83:7: warning: variable '__w' set but not used
[-Wunused-but-set-variable]
83 | ({u8 __w, __v = (b); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:430:3: note: in expansion of macro 'rom_out_8'
430 | rom_out_8(port, *buf++);
| ^~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw':
arch/m68k/include/asm/raw_io.h:86:8: warning: variable '__w' set but not used
[-Wunused-but-set-variable]
86 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:448:3: note: in expansion of macro
'rom_out_be16'
448 | rom_out_be16(port, *buf++);
| ^~~~~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw_swapw':
arch/m68k/include/asm/raw_io.h:90:8: warning: variable '__w' set but not used
[-Wunused-but-set-variable]
90 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:466:3: note: in expansion of macro
'rom_out_le16'
466 | rom_out_le16(port, *buf++);
| ^~~~~~~~~~~~
In file included from include/linux/kernel.h:11,
from include/linux/list.h:9,
from include/linux/rculist.h:10,
from include/linux/pid.h:5,
from include/linux/sched.h:14,
from include/linux/blkdev.h:5,
from include/linux/dm-bufio.h:12,
from drivers/md/dm-verity.h:14,
from drivers/md/dm-verity-target.c:16:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of pointer with
null pointer [-Wextra]
169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET
&& (void *)(kaddr) < high_memory)
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro
'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
drivers/md/dm-verity-target.c: In function 'verity_ctr':
> drivers/md/dm-verity-target.c:988:8: warning: variable
'root_hash_digest_to_validate' set but not used [-Wunused-but-set-variable]
988 | char *root_hash_digest_to_validate;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/root_hash_digest_to_validate +988 drivers/md/dm-verity-target.c
753c1fd02807cb drivers/md/dm-verity.c Sami Tolvanen 2015-11-05 963
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 964 /*
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 965 * Target
parameters:
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 966
* <version> The current format is version 1.
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 967 * Vsn 0
is compatible with original Chromium OS releases.
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 968
* <data device>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 969
* <hash device>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 970
* <data block size>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 971
* <hash block size>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 972 * <the
number of data blocks>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 973
* <hash start block>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 974
* <algorithm>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 975
* <digest>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 976
* <salt> Hex string or "-" if no salt.
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 977 */
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 978 static int
verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 979 {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 980 struct
dm_verity *v;
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 981 struct
dm_arg_set as;
753c1fd02807cb drivers/md/dm-verity.c Sami Tolvanen 2015-11-05 982 unsigned
int num;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 983 unsigned
long long num_ll;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 984 int r;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 985 int i;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 986 sector_t
hash_position;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 987 char
dummy;
88cd3e6cfac915 drivers/md/dm-verity-target.c Jaskaran Khurana 2019-07-17 @988 char
*root_hash_digest_to_validate;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 989
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 990 v =
kzalloc(sizeof(struct dm_verity), GFP_KERNEL);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 991 if (!v)
{
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 992
ti->error = "Cannot allocate verity structure";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 993 return
-ENOMEM;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 994 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 995
ti->private = v;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 996 v->ti
= ti;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 997
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 998 r =
verity_fec_ctr_alloc(v);
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 999 if (r)
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1000 goto
bad;
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1001
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1002 if
((dm_table_get_mode(ti->table) & ~FMODE_READ)) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1003
ti->error = "Device must be readonly";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1004 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1005 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1006 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1007
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1008 if (argc
< 10) {
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1009
ti->error = "Not enough arguments";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1010 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1011 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1012 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1013
5d8be84397618a drivers/md/dm-verity.c Mikulas Patocka 2013-07-10 1014 if
(sscanf(argv[0], "%u%c", &num, &dummy) != 1 ||
5d8be84397618a drivers/md/dm-verity.c Mikulas Patocka 2013-07-10 1015 num
> 1) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1016
ti->error = "Invalid version";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1017 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1018 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1019 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1020
v->version = num;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1021
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1022 r =
dm_get_device(ti, argv[1], FMODE_READ, &v->data_dev);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1023 if (r) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1024
ti->error = "Data device lookup failed";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1025 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1026 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1027
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1028 r =
dm_get_device(ti, argv[2], FMODE_READ, &v->hash_dev);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1029 if (r) {
21ffe552e9cd9f drivers/md/dm-verity-target.c Eric Biggers 2016-09-08 1030
ti->error = "Hash device lookup failed";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1031 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1032 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1033
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1034 if
(sscanf(argv[3], "%u%c", &num, &dummy) != 1 ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1035 !num
|| (num & (num - 1)) ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1036 num
< bdev_logical_block_size(v->data_dev->bdev) ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1037 num
> PAGE_SIZE) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1038
ti->error = "Invalid data device block size";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1039 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1040 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1041 }
553d8fe029a561 drivers/md/dm-verity.c Mikulas Patocka 2013-07-10 1042
v->data_dev_block_bits = __ffs(num);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1043
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1044 if
(sscanf(argv[4], "%u%c", &num, &dummy) != 1 ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1045 !num
|| (num & (num - 1)) ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1046 num
< bdev_logical_block_size(v->hash_dev->bdev) ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1047 num
> INT_MAX) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1048
ti->error = "Invalid hash device block size";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1049 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1050 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1051 }
553d8fe029a561 drivers/md/dm-verity.c Mikulas Patocka 2013-07-10 1052
v->hash_dev_block_bits = __ffs(num);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1053
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1054 if
(sscanf(argv[5], "%llu%c", &num_ll, &dummy) != 1 ||
1d55f6bcc0331d drivers/md/dm-verity.c Mikulas Patocka 2012-09-26 1055
(sector_t)(num_ll << (v->data_dev_block_bits - SECTOR_SHIFT))
1d55f6bcc0331d drivers/md/dm-verity.c Mikulas Patocka 2012-09-26 1056
>> (v->data_dev_block_bits - SECTOR_SHIFT) != num_ll) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1057
ti->error = "Invalid data blocks";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1058 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1059 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1060 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1061
v->data_blocks = num_ll;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1062
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1063 if
(ti->len > (v->data_blocks << (v->data_dev_block_bits - SECTOR_SHIFT)))
{
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1064
ti->error = "Data device is too small";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1065 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1066 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1067 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1068
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1069 if
(sscanf(argv[6], "%llu%c", &num_ll, &dummy) != 1 ||
1d55f6bcc0331d drivers/md/dm-verity.c Mikulas Patocka 2012-09-26 1070
(sector_t)(num_ll << (v->hash_dev_block_bits - SECTOR_SHIFT))
1d55f6bcc0331d drivers/md/dm-verity.c Mikulas Patocka 2012-09-26 1071
>> (v->hash_dev_block_bits - SECTOR_SHIFT) != num_ll) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1072
ti->error = "Invalid hash start";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1073 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1074 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1075 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1076
v->hash_start = num_ll;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1077
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1078
v->alg_name = kstrdup(argv[7], GFP_KERNEL);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1079 if
(!v->alg_name) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1080
ti->error = "Cannot allocate algorithm name";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1081 r =
-ENOMEM;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1082 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1083 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1084
d1ac3ff008fb9a drivers/md/dm-verity-target.c Gilad Ben-Yossef 2017-02-19 1085 v->tfm
= crypto_alloc_ahash(v->alg_name, 0, 0);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1086 if
(IS_ERR(v->tfm)) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1087
ti->error = "Cannot initialize hash function";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1088 r =
PTR_ERR(v->tfm);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1089
v->tfm = NULL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1090 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1091 }
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1092
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1093 /*
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1094 *
dm-verity performance can vary greatly depending on which hash
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1095 *
algorithm implementation is used. Help people debug performance
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1096 *
problems by logging the ->cra_driver_name.
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1097 */
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1098
DMINFO("%s using implementation \"%s\"", v->alg_name,
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1099
crypto_hash_alg_common(v->tfm)->base.cra_driver_name);
bbf6a566920e1b drivers/md/dm-verity-target.c Eric Biggers 2018-12-05 1100
d1ac3ff008fb9a drivers/md/dm-verity-target.c Gilad Ben-Yossef 2017-02-19 1101
v->digest_size = crypto_ahash_digestsize(v->tfm);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1102 if ((1
<< v->hash_dev_block_bits) < v->digest_size * 2) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1103
ti->error = "Digest size too big";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1104 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1105 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1106 }
d1ac3ff008fb9a drivers/md/dm-verity-target.c Gilad Ben-Yossef 2017-02-19 1107
v->ahash_reqsize = sizeof(struct ahash_request) +
d1ac3ff008fb9a drivers/md/dm-verity-target.c Gilad Ben-Yossef 2017-02-19 1108
crypto_ahash_reqsize(v->tfm);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1109
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1110
v->root_digest = kmalloc(v->digest_size, GFP_KERNEL);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1111 if
(!v->root_digest) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1112
ti->error = "Cannot allocate root digest";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1113 r =
-ENOMEM;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1114 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1115 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1116 if
(strlen(argv[8]) != v->digest_size * 2 ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1117
hex2bin(v->root_digest, argv[8], v->digest_size)) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1118
ti->error = "Invalid root digest";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1119 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1120 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1121 }
88cd3e6cfac915 drivers/md/dm-verity-target.c Jaskaran Khurana 2019-07-17 1122
root_hash_digest_to_validate = argv[8];
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1123
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1124 if
(strcmp(argv[9], "-")) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1125
v->salt_size = strlen(argv[9]) / 2;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1126
v->salt = kmalloc(v->salt_size, GFP_KERNEL);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1127 if
(!v->salt) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1128
ti->error = "Cannot allocate salt";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1129 r =
-ENOMEM;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1130 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1131 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1132 if
(strlen(argv[9]) != v->salt_size * 2 ||
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1133
hex2bin(v->salt, argv[9], v->salt_size)) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1134
ti->error = "Invalid salt";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1135 r =
-EINVAL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1136 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1137 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1138 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1139
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1140 argv +=
10;
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1141 argc -=
10;
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1142
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1143 /*
Optional parameters */
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1144 if (argc)
{
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1145 as.argc
= argc;
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1146 as.argv
= argv;
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1147
03b608829d1182 drivers/md/dm-verity-target.c Deven Bowers 2020-07-17 1148 r =
verity_parse_opt_args(&as, v);
753c1fd02807cb drivers/md/dm-verity.c Sami Tolvanen 2015-11-05 1149 if (r
< 0)
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1150 goto
bad;
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1151 }
65ff5b7ddf0541 drivers/md/dm-verity.c Sami Tolvanen 2015-03-18 1152
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1153
v->hash_per_block_bits =
553d8fe029a561 drivers/md/dm-verity.c Mikulas Patocka 2013-07-10 1154 __fls((1
<< v->hash_dev_block_bits) / v->digest_size);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1155
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1156
v->levels = 0;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1157 if
(v->data_blocks)
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1158 while
(v->hash_per_block_bits * v->levels < 64 &&
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1159
(unsigned long long)(v->data_blocks - 1) >>
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1160
(v->hash_per_block_bits * v->levels))
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1161
v->levels++;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1162
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1163 if
(v->levels > DM_VERITY_MAX_LEVELS) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1164
ti->error = "Too many tree levels";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1165 r =
-E2BIG;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1166 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1167 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1168
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1169
hash_position = v->hash_start;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1170 for (i =
v->levels - 1; i >= 0; i--) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1171 sector_t
s;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1172
v->hash_level_block[i] = hash_position;
b1bf2de0727193 drivers/md/dm-verity.c Mikulas Patocka 2013-07-10 1173 s =
(v->data_blocks + ((sector_t)1 << ((i + 1) * v->hash_per_block_bits)) - 1)
b1bf2de0727193 drivers/md/dm-verity.c Mikulas Patocka 2013-07-10 1174
>> ((i + 1) * v->hash_per_block_bits);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1175 if
(hash_position + s < hash_position) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1176
ti->error = "Hash device offset overflow";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1177 r =
-E2BIG;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1178 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1179 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1180
hash_position += s;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1181 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1182
v->hash_blocks = hash_position;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1183
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1184
v->bufio = dm_bufio_client_create(v->hash_dev->bdev,
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1185 1
<< v->hash_dev_block_bits, 1, sizeof(struct buffer_aux),
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1186
dm_bufio_alloc_callback, NULL);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1187 if
(IS_ERR(v->bufio)) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1188
ti->error = "Cannot initialize dm-bufio";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1189 r =
PTR_ERR(v->bufio);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1190
v->bufio = NULL;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1191 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1192 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1193
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1194 if
(dm_bufio_get_device_size(v->bufio) < v->hash_blocks) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1195
ti->error = "Hash device is too small";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1196 r =
-E2BIG;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1197 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1198 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1199
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1200 /*
WQ_UNBOUND greatly improves performance when running on ramdisk */
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1201
v->verify_wq = alloc_workqueue("kverityd", WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM
| WQ_UNBOUND, num_online_cpus());
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1202 if
(!v->verify_wq) {
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1203
ti->error = "Cannot allocate workqueue";
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1204 r =
-ENOMEM;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1205 goto
bad;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1206 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1207
30187e1d48a258 drivers/md/dm-verity-target.c Mike Snitzer 2016-01-31 1208
ti->per_io_data_size = sizeof(struct dm_verity_io) +
d1ac3ff008fb9a drivers/md/dm-verity-target.c Gilad Ben-Yossef 2017-02-19 1209
v->ahash_reqsize + v->digest_size * 2;
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1210
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1211 r =
verity_fec_ctr(v);
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1212 if (r)
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1213 goto
bad;
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1214
30187e1d48a258 drivers/md/dm-verity-target.c Mike Snitzer 2016-01-31 1215
ti->per_io_data_size = roundup(ti->per_io_data_size,
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1216
__alignof__(struct dm_verity_io));
a739ff3f543afb drivers/md/dm-verity-target.c Sami Tolvanen 2015-12-03 1217
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1218 return
0;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1219
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1220 bad:
88cd3e6cfac915 drivers/md/dm-verity-target.c Jaskaran Khurana 2019-07-17 1221
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1222
verity_dtr(ti);
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1223
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1224 return
r;
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1225 }
a4ffc152198efb drivers/md/dm-verity.c Mikulas Patocka 2012-03-28 1226
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org