mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
682dbf430d
The length of the facility list accessed when interpretively executing STFLE is the same as the hosts facility list (in case of format-0) The memory following the facility list doesn't need to be accessible. The current VSIE implementation accesses a fixed length that exceeds the guest/host facility list length and can therefore wrongly inject a validity intercept. Instead, find out the host facility list length by running STFLE and copy only as much as necessary when shadowing. Acked-by: David Hildenbrand <david@redhat.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> Reviewed-by: Janosch Frank <frankja@linux.ibm.com> Link: https://lore.kernel.org/r/20231219140854.1042599-3-nsg@linux.ibm.com Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Message-ID: <20231219140854.1042599-3-nsg@linux.ibm.com>
22 lines
321 B
C
22 lines
321 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright IBM Corp. 2023
|
|
*/
|
|
|
|
#include <asm/facility.h>
|
|
|
|
unsigned int stfle_size(void)
|
|
{
|
|
static unsigned int size;
|
|
unsigned int r;
|
|
u64 dummy;
|
|
|
|
r = READ_ONCE(size);
|
|
if (!r) {
|
|
r = __stfle_asm(&dummy, 1) + 1;
|
|
WRITE_ONCE(size, r);
|
|
}
|
|
return r;
|
|
}
|
|
EXPORT_SYMBOL(stfle_size);
|