377eeaa8e1
For the L1TF workaround its necessary to limit the swap file size to below MAX_PA/2, so that the higher bits of the swap offset inverted never point to valid memory. Add a mechanism for the architecture to override the swap file size check in swapfile.c and add a x86 specific max swapfile check function that enforces that limit. The check is only enabled if the CPU is vulnerable to L1TF. In VMs with 42bit MAX_PA the typical limit is 2TB now, on a native system with 46bit PA it is 32TB. The limit is only per individual swap file, so it's always possible to exceed these limits with multiple swap files or partitions. Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Dave Hansen <dave.hansen@intel.com>
16 lines
556 B
C
16 lines
556 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_SWAPFILE_H
|
|
#define _LINUX_SWAPFILE_H
|
|
|
|
/*
|
|
* these were static in swapfile.c but frontswap.c needs them and we don't
|
|
* want to expose them to the dozens of source files that include swap.h
|
|
*/
|
|
extern spinlock_t swap_lock;
|
|
extern struct plist_head swap_active_head;
|
|
extern struct swap_info_struct *swap_info[];
|
|
extern int try_to_unuse(unsigned int, bool, unsigned long);
|
|
extern unsigned long generic_max_swapfile_size(void);
|
|
extern unsigned long max_swapfile_size(void);
|
|
|
|
#endif /* _LINUX_SWAPFILE_H */
|