Hi Lakshmi,
First bad commit (maybe != root cause):
tree:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 368094df48e680fa51cedb68537408cfa64b788e
commit: dce92f6b11c3174737bd65eaf933458909b633ff arm64: Enable passing IMA log to next
kernel on kexec
date: 3 months ago
config: arm64-randconfig-r004-20210609 (attached as .config)
compiler: clang version 13.0.0 (
https://github.com/llvm/llvm-project
d2012d965d60c3258b3a69d024491698f8aec386)
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 arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
#
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout dce92f6b11c3174737bd65eaf933458909b633ff
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
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 >>):
> security/integrity/ima/ima_kexec.c:81:6: warning: no previous
prototype for function 'ima_add_kexec_buffer' [-Wmissing-prototypes]
void
ima_add_kexec_buffer(struct kimage *image)
^
security/integrity/ima/ima_kexec.c:81:1: note: declare 'static' if the function
is not intended to be used outside of this translation unit
void ima_add_kexec_buffer(struct kimage *image)
^
static
1 warning generated.
vim +/ima_add_kexec_buffer +81 security/integrity/ima/ima_kexec.c
7b8589cc29e7c3 Mimi Zohar 2016-12-19 74
7b8589cc29e7c3 Mimi Zohar 2016-12-19 75 /*
7b8589cc29e7c3 Mimi Zohar 2016-12-19 76 * Called during kexec_file_load
so that IMA can add a segment to the kexec
7b8589cc29e7c3 Mimi Zohar 2016-12-19 77 * image for the measurement list
for the next kernel.
7b8589cc29e7c3 Mimi Zohar 2016-12-19 78 *
7b8589cc29e7c3 Mimi Zohar 2016-12-19 79 * This function assumes that
kexec_mutex is held.
7b8589cc29e7c3 Mimi Zohar 2016-12-19 80 */
7b8589cc29e7c3 Mimi Zohar 2016-12-19 @81 void ima_add_kexec_buffer(struct
kimage *image)
7b8589cc29e7c3 Mimi Zohar 2016-12-19 82 {
7b8589cc29e7c3 Mimi Zohar 2016-12-19 83 struct kexec_buf kbuf = { .image
= image, .buf_align = PAGE_SIZE,
7b8589cc29e7c3 Mimi Zohar 2016-12-19 84 .buf_min = 0, .buf_max =
ULONG_MAX,
7b8589cc29e7c3 Mimi Zohar 2016-12-19 85 .top_down = true };
7b8589cc29e7c3 Mimi Zohar 2016-12-19 86 unsigned long
binary_runtime_size;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 87
7b8589cc29e7c3 Mimi Zohar 2016-12-19 88 /* use more understandable
variable names than defined in kbuf */
7b8589cc29e7c3 Mimi Zohar 2016-12-19 89 void *kexec_buffer = NULL;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 90 size_t kexec_buffer_size;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 91 size_t kexec_segment_size;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 92 int ret;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 93
7b8589cc29e7c3 Mimi Zohar 2016-12-19 94 /*
7b8589cc29e7c3 Mimi Zohar 2016-12-19 95 * Reserve an extra half page of
memory for additional measurements
7b8589cc29e7c3 Mimi Zohar 2016-12-19 96 * added during the kexec load.
7b8589cc29e7c3 Mimi Zohar 2016-12-19 97 */
7b8589cc29e7c3 Mimi Zohar 2016-12-19 98 binary_runtime_size =
ima_get_binary_runtime_size();
7b8589cc29e7c3 Mimi Zohar 2016-12-19 99 if (binary_runtime_size >=
ULONG_MAX - PAGE_SIZE)
7b8589cc29e7c3 Mimi Zohar 2016-12-19 100 kexec_segment_size = ULONG_MAX;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 101 else
7b8589cc29e7c3 Mimi Zohar 2016-12-19 102 kexec_segment_size =
ALIGN(ima_get_binary_runtime_size() +
7b8589cc29e7c3 Mimi Zohar 2016-12-19 103 PAGE_SIZE / 2,
PAGE_SIZE);
7b8589cc29e7c3 Mimi Zohar 2016-12-19 104 if ((kexec_segment_size ==
ULONG_MAX) ||
ca79b0c211af63 Arun KS 2018-12-28 105 ((kexec_segment_size >>
PAGE_SHIFT) > totalram_pages() / 2)) {
7b8589cc29e7c3 Mimi Zohar 2016-12-19 106 pr_err("Binary measurement
list too large.\n");
7b8589cc29e7c3 Mimi Zohar 2016-12-19 107 return;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 108 }
7b8589cc29e7c3 Mimi Zohar 2016-12-19 109
7b8589cc29e7c3 Mimi Zohar 2016-12-19 110
ima_dump_measurement_list(&kexec_buffer_size, &kexec_buffer,
7b8589cc29e7c3 Mimi Zohar 2016-12-19 111 kexec_segment_size);
7b8589cc29e7c3 Mimi Zohar 2016-12-19 112 if (!kexec_buffer) {
7b8589cc29e7c3 Mimi Zohar 2016-12-19 113 pr_err("Not enough memory
for the kexec measurement buffer.\n");
7b8589cc29e7c3 Mimi Zohar 2016-12-19 114 return;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 115 }
7b8589cc29e7c3 Mimi Zohar 2016-12-19 116
7b8589cc29e7c3 Mimi Zohar 2016-12-19 117 kbuf.buffer = kexec_buffer;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 118 kbuf.bufsz = kexec_buffer_size;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 119 kbuf.memsz = kexec_segment_size;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 120 ret =
kexec_add_buffer(&kbuf);
7b8589cc29e7c3 Mimi Zohar 2016-12-19 121 if (ret) {
7b8589cc29e7c3 Mimi Zohar 2016-12-19 122 pr_err("Error passing over
kexec measurement buffer.\n");
6d14c6517885fa Lakshmi Ramasubramanian 2021-02-04 123 vfree(kexec_buffer);
7b8589cc29e7c3 Mimi Zohar 2016-12-19 124 return;
7b8589cc29e7c3 Mimi Zohar 2016-12-19 125 }
7b8589cc29e7c3 Mimi Zohar 2016-12-19 126
0c605158be3210 Lakshmi Ramasubramanian 2021-02-21 127 image->ima_buffer_addr =
kbuf.mem;
0c605158be3210 Lakshmi Ramasubramanian 2021-02-21 128 image->ima_buffer_size =
kexec_segment_size;
f31e3386a4e92b Lakshmi Ramasubramanian 2021-02-04 129 image->ima_buffer =
kexec_buffer;
f31e3386a4e92b Lakshmi Ramasubramanian 2021-02-04 130
7b8589cc29e7c3 Mimi Zohar 2016-12-19 131 pr_debug("kexec measurement
buffer for the loaded kernel at 0x%lx.\n",
7b8589cc29e7c3 Mimi Zohar 2016-12-19 132 kbuf.mem);
7b8589cc29e7c3 Mimi Zohar 2016-12-19 133 }
7b8589cc29e7c3 Mimi Zohar 2016-12-19 134 #endif /* IMA_KEXEC */
7b8589cc29e7c3 Mimi Zohar 2016-12-19 135
:::::: The code at line 81 was first introduced by commit
:::::: 7b8589cc29e7c35dcfd2d5138979f17b48f90110 ima: on soft reboot, save the measurement
list
:::::: TO: Mimi Zohar <zohar(a)linux.vnet.ibm.com>
:::::: CC: Linus Torvalds <torvalds(a)linux-foundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org