Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: selftests: Fix compiling errors when initializing the static structure

Errors like below were produced from test_util.c when compiling the KVM
selftests on my local platform.

lib/test_util.c: In function 'vm_mem_backing_src_alias':
lib/test_util.c:177:12: error: initializer element is not constant
.flag = anon_flags,
^~~~~~~~~~
lib/test_util.c:177:12: note: (near initialization for 'aliases[0].flag')

The reason is that we are using non-const expressions to initialize the
static structure, which will probably trigger a compiling error/warning
on stricter GCC versions. Fix it by converting the two const variables
"anon_flags" and "anon_huge_flags" into more stable macros.

Fixes: b3784bc28ccc0 ("KVM: selftests: refactor vm_mem_backing_src_type flags")
Reported-by: Zenghui Yu <yuzenghui@huawei.com>
Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
Message-Id: <20210610085418.35544-1-wangyanan55@huawei.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

authored by

Yanan Wang and committed by
Paolo Bonzini
95bf69b4 218bf772

+19 -19
+19 -19
tools/testing/selftests/kvm/lib/test_util.c
··· 166 166 return 0; 167 167 } 168 168 169 + #define ANON_FLAGS (MAP_PRIVATE | MAP_ANONYMOUS) 170 + #define ANON_HUGE_FLAGS (ANON_FLAGS | MAP_HUGETLB) 171 + 169 172 const struct vm_mem_backing_src_alias *vm_mem_backing_src_alias(uint32_t i) 170 173 { 171 - static const int anon_flags = MAP_PRIVATE | MAP_ANONYMOUS; 172 - static const int anon_huge_flags = anon_flags | MAP_HUGETLB; 173 - 174 174 static const struct vm_mem_backing_src_alias aliases[] = { 175 175 [VM_MEM_SRC_ANONYMOUS] = { 176 176 .name = "anonymous", 177 - .flag = anon_flags, 177 + .flag = ANON_FLAGS, 178 178 }, 179 179 [VM_MEM_SRC_ANONYMOUS_THP] = { 180 180 .name = "anonymous_thp", 181 - .flag = anon_flags, 181 + .flag = ANON_FLAGS, 182 182 }, 183 183 [VM_MEM_SRC_ANONYMOUS_HUGETLB] = { 184 184 .name = "anonymous_hugetlb", 185 - .flag = anon_huge_flags, 185 + .flag = ANON_HUGE_FLAGS, 186 186 }, 187 187 [VM_MEM_SRC_ANONYMOUS_HUGETLB_16KB] = { 188 188 .name = "anonymous_hugetlb_16kb", 189 - .flag = anon_huge_flags | MAP_HUGE_16KB, 189 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_16KB, 190 190 }, 191 191 [VM_MEM_SRC_ANONYMOUS_HUGETLB_64KB] = { 192 192 .name = "anonymous_hugetlb_64kb", 193 - .flag = anon_huge_flags | MAP_HUGE_64KB, 193 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_64KB, 194 194 }, 195 195 [VM_MEM_SRC_ANONYMOUS_HUGETLB_512KB] = { 196 196 .name = "anonymous_hugetlb_512kb", 197 - .flag = anon_huge_flags | MAP_HUGE_512KB, 197 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_512KB, 198 198 }, 199 199 [VM_MEM_SRC_ANONYMOUS_HUGETLB_1MB] = { 200 200 .name = "anonymous_hugetlb_1mb", 201 - .flag = anon_huge_flags | MAP_HUGE_1MB, 201 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_1MB, 202 202 }, 203 203 [VM_MEM_SRC_ANONYMOUS_HUGETLB_2MB] = { 204 204 .name = "anonymous_hugetlb_2mb", 205 - .flag = anon_huge_flags | MAP_HUGE_2MB, 205 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_2MB, 206 206 }, 207 207 [VM_MEM_SRC_ANONYMOUS_HUGETLB_8MB] = { 208 208 .name = "anonymous_hugetlb_8mb", 209 - .flag = anon_huge_flags | MAP_HUGE_8MB, 209 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_8MB, 210 210 }, 211 211 [VM_MEM_SRC_ANONYMOUS_HUGETLB_16MB] = { 212 212 .name = "anonymous_hugetlb_16mb", 213 - .flag = anon_huge_flags | MAP_HUGE_16MB, 213 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_16MB, 214 214 }, 215 215 [VM_MEM_SRC_ANONYMOUS_HUGETLB_32MB] = { 216 216 .name = "anonymous_hugetlb_32mb", 217 - .flag = anon_huge_flags | MAP_HUGE_32MB, 217 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_32MB, 218 218 }, 219 219 [VM_MEM_SRC_ANONYMOUS_HUGETLB_256MB] = { 220 220 .name = "anonymous_hugetlb_256mb", 221 - .flag = anon_huge_flags | MAP_HUGE_256MB, 221 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_256MB, 222 222 }, 223 223 [VM_MEM_SRC_ANONYMOUS_HUGETLB_512MB] = { 224 224 .name = "anonymous_hugetlb_512mb", 225 - .flag = anon_huge_flags | MAP_HUGE_512MB, 225 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_512MB, 226 226 }, 227 227 [VM_MEM_SRC_ANONYMOUS_HUGETLB_1GB] = { 228 228 .name = "anonymous_hugetlb_1gb", 229 - .flag = anon_huge_flags | MAP_HUGE_1GB, 229 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_1GB, 230 230 }, 231 231 [VM_MEM_SRC_ANONYMOUS_HUGETLB_2GB] = { 232 232 .name = "anonymous_hugetlb_2gb", 233 - .flag = anon_huge_flags | MAP_HUGE_2GB, 233 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_2GB, 234 234 }, 235 235 [VM_MEM_SRC_ANONYMOUS_HUGETLB_16GB] = { 236 236 .name = "anonymous_hugetlb_16gb", 237 - .flag = anon_huge_flags | MAP_HUGE_16GB, 237 + .flag = ANON_HUGE_FLAGS | MAP_HUGE_16GB, 238 238 }, 239 239 [VM_MEM_SRC_SHMEM] = { 240 240 .name = "shmem",