tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: a1de832bd3243577de365222d8bc92708005ebf3 commit: b69a2afd5afce9bf6d56e349d6ab592c916e20f2 x86/kexec: Carry forward IMA measurement log on kexec date: 4 months ago config: x86_64-randconfig-s051-20221107 compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b69a2afd5afce9bf6d56e349d6ab592c916e20f2 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout b69a2afd5afce9bf6d56e349d6ab592c916e20f2 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash security/integrity/ima/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> security/integrity/ima/ima_kexec.c:58:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [addressable] [assigned] [usertype] version @@ got restricted __le16 [usertype] @@ security/integrity/ima/ima_kexec.c:58:30: sparse: expected unsigned short [addressable] [assigned] [usertype] version security/integrity/ima/ima_kexec.c:58:30: sparse: got restricted __le16 [usertype] >> security/integrity/ima/ima_kexec.c:59:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [addressable] [assigned] [usertype] count @@ got restricted __le64 [usertype] @@ security/integrity/ima/ima_kexec.c:59:28: sparse: expected unsigned long long [addressable] [assigned] [usertype] count security/integrity/ima/ima_kexec.c:59:28: sparse: got restricted __le64 [usertype] >> security/integrity/ima/ima_kexec.c:60:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [addressable] [assigned] [usertype] buffer_size @@ got restricted __le64 [usertype] @@ security/integrity/ima/ima_kexec.c:60:34: sparse: expected unsigned long long [addressable] [assigned] [usertype] buffer_size security/integrity/ima/ima_kexec.c:60:34: sparse: got restricted __le64 [usertype] vim +58 security/integrity/ima/ima_kexec.c 94c3aac567a9dd Mimi Zohar 2016-12-19 16 7b8589cc29e7c3 Mimi Zohar 2016-12-19 17 #ifdef CONFIG_IMA_KEXEC 7b8589cc29e7c3 Mimi Zohar 2016-12-19 18 static int ima_dump_measurement_list(unsigned long *buffer_size, void **buffer, 7b8589cc29e7c3 Mimi Zohar 2016-12-19 19 unsigned long segment_size) 7b8589cc29e7c3 Mimi Zohar 2016-12-19 20 { 7b8589cc29e7c3 Mimi Zohar 2016-12-19 21 struct ima_queue_entry *qe; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 22 struct seq_file file; d68a6fe9fccfd0 Mimi Zohar 2016-12-19 23 struct ima_kexec_hdr khdr; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 24 int ret = 0; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 25 7b8589cc29e7c3 Mimi Zohar 2016-12-19 26 /* segment size can't change between kexec load and execute */ 7b8589cc29e7c3 Mimi Zohar 2016-12-19 27 file.buf = vmalloc(segment_size); 7b8589cc29e7c3 Mimi Zohar 2016-12-19 28 if (!file.buf) { 7b8589cc29e7c3 Mimi Zohar 2016-12-19 29 ret = -ENOMEM; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 30 goto out; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 31 } 7b8589cc29e7c3 Mimi Zohar 2016-12-19 32 7b8589cc29e7c3 Mimi Zohar 2016-12-19 33 file.size = segment_size; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 34 file.read_pos = 0; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 35 file.count = sizeof(khdr); /* reserved space */ 7b8589cc29e7c3 Mimi Zohar 2016-12-19 36 d68a6fe9fccfd0 Mimi Zohar 2016-12-19 37 memset(&khdr, 0, sizeof(khdr)); d68a6fe9fccfd0 Mimi Zohar 2016-12-19 38 khdr.version = 1; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 39 list_for_each_entry_rcu(qe, &ima_measurements, later) { 7b8589cc29e7c3 Mimi Zohar 2016-12-19 40 if (file.count < file.size) { 7b8589cc29e7c3 Mimi Zohar 2016-12-19 41 khdr.count++; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 42 ima_measurements_show(&file, qe); 7b8589cc29e7c3 Mimi Zohar 2016-12-19 43 } else { 7b8589cc29e7c3 Mimi Zohar 2016-12-19 44 ret = -EINVAL; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 45 break; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 46 } 7b8589cc29e7c3 Mimi Zohar 2016-12-19 47 } 7b8589cc29e7c3 Mimi Zohar 2016-12-19 48 7b8589cc29e7c3 Mimi Zohar 2016-12-19 49 if (ret < 0) 7b8589cc29e7c3 Mimi Zohar 2016-12-19 50 goto out; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 51 7b8589cc29e7c3 Mimi Zohar 2016-12-19 52 /* 7b8589cc29e7c3 Mimi Zohar 2016-12-19 53 * fill in reserved space with some buffer details 7b8589cc29e7c3 Mimi Zohar 2016-12-19 54 * (eg. version, buffer size, number of measurements) 7b8589cc29e7c3 Mimi Zohar 2016-12-19 55 */ 7b8589cc29e7c3 Mimi Zohar 2016-12-19 56 khdr.buffer_size = file.count; d68a6fe9fccfd0 Mimi Zohar 2016-12-19 57 if (ima_canonical_fmt) { d68a6fe9fccfd0 Mimi Zohar 2016-12-19 @58 khdr.version = cpu_to_le16(khdr.version); d68a6fe9fccfd0 Mimi Zohar 2016-12-19 @59 khdr.count = cpu_to_le64(khdr.count); d68a6fe9fccfd0 Mimi Zohar 2016-12-19 @60 khdr.buffer_size = cpu_to_le64(khdr.buffer_size); d68a6fe9fccfd0 Mimi Zohar 2016-12-19 61 } 7b8589cc29e7c3 Mimi Zohar 2016-12-19 62 memcpy(file.buf, &khdr, sizeof(khdr)); d68a6fe9fccfd0 Mimi Zohar 2016-12-19 63 520451e90cbe9d Bruno Meneguele 2021-12-28 64 print_hex_dump_debug("ima dump: ", DUMP_PREFIX_NONE, 16, 1, 520451e90cbe9d Bruno Meneguele 2021-12-28 65 file.buf, file.count < 100 ? file.count : 100, 520451e90cbe9d Bruno Meneguele 2021-12-28 66 true); 7b8589cc29e7c3 Mimi Zohar 2016-12-19 67 7b8589cc29e7c3 Mimi Zohar 2016-12-19 68 *buffer_size = file.count; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 69 *buffer = file.buf; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 70 out: 7b8589cc29e7c3 Mimi Zohar 2016-12-19 71 if (ret == -EINVAL) 7b8589cc29e7c3 Mimi Zohar 2016-12-19 72 vfree(file.buf); 7b8589cc29e7c3 Mimi Zohar 2016-12-19 73 return ret; 7b8589cc29e7c3 Mimi Zohar 2016-12-19 74 } 7b8589cc29e7c3 Mimi Zohar 2016-12-19 75 :::::: The code at line 58 was first introduced by commit :::::: d68a6fe9fccfd00589c61df672b449d66ba3183f ima: define a canonical binary_runtime_measurements list format :::::: TO: Mimi Zohar :::::: CC: Linus Torvalds -- 0-DAY CI Kernel Test Service https://01.org/lkp