2021-06-09 17:06:02

by kernel test robot

[permalink] [raw]
Subject: security/integrity/ima/ima_kexec.c:81:6: warning: no previous prototype for function 'ima_add_kexec_buffer'

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/?id=dce92f6b11c3174737bd65eaf933458909b633ff
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 <[email protected]>

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 <[email protected]>
:::::: CC: Linus Torvalds <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]


Attachments:
(No filename) (7.42 kB)
.config.gz (41.57 kB)
Download all attachments