lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2d761420-7546-9843-7253-c9b20fd84580@csgroup.eu>
Date:   Mon, 27 Jun 2022 05:48:28 +0000
From:   Christophe Leroy <christophe.leroy@...roup.eu>
To:     Anshuman Khandual <anshuman.khandual@....com>,
        "linux-mm@...ck.org" <linux-mm@...ck.org>
CC:     "hch@...radead.org" <hch@...radead.org>,
        Andrew Morton <akpm@...ux-foundation.org>,
        "linuxppc-dev@...ts.ozlabs.org" <linuxppc-dev@...ts.ozlabs.org>,
        "sparclinux@...r.kernel.org" <sparclinux@...r.kernel.org>,
        "x86@...nel.org" <x86@...nel.org>,
        "openrisc@...ts.librecores.org" <openrisc@...ts.librecores.org>,
        "linux-xtensa@...ux-xtensa.org" <linux-xtensa@...ux-xtensa.org>,
        "linux-csky@...r.kernel.org" <linux-csky@...r.kernel.org>,
        "linux-hexagon@...r.kernel.org" <linux-hexagon@...r.kernel.org>,
        "linux-parisc@...r.kernel.org" <linux-parisc@...r.kernel.org>,
        "linux-alpha@...r.kernel.org" <linux-alpha@...r.kernel.org>,
        "linux-riscv@...ts.infradead.org" <linux-riscv@...ts.infradead.org>,
        "linux-s390@...r.kernel.org" <linux-s390@...r.kernel.org>,
        "linux-ia64@...r.kernel.org" <linux-ia64@...r.kernel.org>,
        "linux-mips@...r.kernel.org" <linux-mips@...r.kernel.org>,
        "linux-m68k@...ts.linux-m68k.org" <linux-m68k@...ts.linux-m68k.org>,
        "linux-snps-arc@...ts.infradead.org" 
        <linux-snps-arc@...ts.infradead.org>,
        "linux-arm-kernel@...ts.infradead.org" 
        <linux-arm-kernel@...ts.infradead.org>,
        "linux-um@...ts.infradead.org" <linux-um@...ts.infradead.org>,
        "linux-sh@...r.kernel.org" <linux-sh@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH V4 26/26] mm/mmap: Drop ARCH_HAS_VM_GET_PAGE_PROT



Le 24/06/2022 à 06:43, Anshuman Khandual a écrit :
> Now all the platforms enable ARCH_HAS_GET_PAGE_PROT. They define and export
> own vm_get_page_prot() whether custom or standard DECLARE_VM_GET_PAGE_PROT.
> Hence there is no need for default generic fallback for vm_get_page_prot().
> Just drop this fallback and also ARCH_HAS_GET_PAGE_PROT mechanism.
> 
> Cc: Andrew Morton <akpm@...ux-foundation.org>
> Cc: linux-mm@...ck.org
> Cc: linux-kernel@...r.kernel.org
> Signed-off-by: Anshuman Khandual <anshuman.khandual@....com>

Reviewed-by: Christophe Leroy <christophe.leroy@...roup.eu>

> ---
>   arch/alpha/Kconfig      |  1 -
>   arch/arc/Kconfig        |  1 -
>   arch/arm/Kconfig        |  1 -
>   arch/arm64/Kconfig      |  1 -
>   arch/csky/Kconfig       |  1 -
>   arch/hexagon/Kconfig    |  1 -
>   arch/ia64/Kconfig       |  1 -
>   arch/loongarch/Kconfig  |  1 -
>   arch/m68k/Kconfig       |  1 -
>   arch/microblaze/Kconfig |  1 -
>   arch/mips/Kconfig       |  1 -
>   arch/nios2/Kconfig      |  1 -
>   arch/openrisc/Kconfig   |  1 -
>   arch/parisc/Kconfig     |  1 -
>   arch/powerpc/Kconfig    |  1 -
>   arch/riscv/Kconfig      |  1 -
>   arch/s390/Kconfig       |  1 -
>   arch/sh/Kconfig         |  1 -
>   arch/sparc/Kconfig      |  1 -
>   arch/um/Kconfig         |  1 -
>   arch/x86/Kconfig        |  1 -
>   arch/xtensa/Kconfig     |  1 -
>   include/linux/mm.h      |  3 ---
>   mm/Kconfig              |  3 ---
>   mm/mmap.c               | 22 ----------------------
>   25 files changed, 50 deletions(-)
> 
> diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
> index db1c8b329461..7d0d26b5b3f5 100644
> --- a/arch/alpha/Kconfig
> +++ b/arch/alpha/Kconfig
> @@ -2,7 +2,6 @@
>   config ALPHA
>   	bool
>   	default y
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_32BIT_USTAT_F_TINODE
>   	select ARCH_MIGHT_HAVE_PC_PARPORT
>   	select ARCH_MIGHT_HAVE_PC_SERIO
> diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
> index 8be56a5d8a9b..9e3653253ef2 100644
> --- a/arch/arc/Kconfig
> +++ b/arch/arc/Kconfig
> @@ -13,7 +13,6 @@ config ARC
>   	select ARCH_HAS_SETUP_DMA_OPS
>   	select ARCH_HAS_SYNC_DMA_FOR_CPU
>   	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC
>   	select ARCH_32BIT_OFF_T
>   	select BUILDTIME_TABLE_SORT
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index e153b6d4fc5b..7630ba9cb6cc 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -24,7 +24,6 @@ config ARM
>   	select ARCH_HAS_SYNC_DMA_FOR_CPU if SWIOTLB || !MMU
>   	select ARCH_HAS_TEARDOWN_DMA_OPS if MMU
>   	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAVE_CUSTOM_GPIO_H
>   	select ARCH_HAVE_NMI_SAFE_CMPXCHG if CPU_V7 || CPU_V7M || CPU_V6K
>   	select ARCH_HAS_GCOV_PROFILE_ALL
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 1652a9800ebe..7030bf3f8d6f 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -45,7 +45,6 @@ config ARM64
>   	select ARCH_HAS_SYSCALL_WRAPPER
>   	select ARCH_HAS_TEARDOWN_DMA_OPS if IOMMU_SUPPORT
>   	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAS_ZONE_DMA_SET if EXPERT
>   	select ARCH_HAVE_ELF_PROT
>   	select ARCH_HAVE_NMI_SAFE_CMPXCHG
> diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig
> index 588b8a9c68ed..21d72b078eef 100644
> --- a/arch/csky/Kconfig
> +++ b/arch/csky/Kconfig
> @@ -6,7 +6,6 @@ config CSKY
>   	select ARCH_HAS_GCOV_PROFILE_ALL
>   	select ARCH_HAS_SYNC_DMA_FOR_CPU
>   	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_USE_BUILTIN_BSWAP
>   	select ARCH_USE_QUEUED_RWLOCKS
>   	select ARCH_WANT_FRAME_POINTERS if !CPU_CK610 && $(cc-option,-mbacktrace)
> diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig
> index bc4ceecd0588..54eadf265178 100644
> --- a/arch/hexagon/Kconfig
> +++ b/arch/hexagon/Kconfig
> @@ -6,7 +6,6 @@ config HEXAGON
>   	def_bool y
>   	select ARCH_32BIT_OFF_T
>   	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_NO_PREEMPT
>   	select DMA_GLOBAL_POOL
>   	# Other pending projects/to-do items.
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index 0510a5737711..cb93769a9f2a 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -12,7 +12,6 @@ config IA64
>   	select ARCH_HAS_DMA_MARK_CLEAN
>   	select ARCH_HAS_STRNCPY_FROM_USER
>   	select ARCH_HAS_STRNLEN_USER
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_MIGHT_HAVE_PC_PARPORT
>   	select ARCH_MIGHT_HAVE_PC_SERIO
>   	select ACPI
> diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
> index fd07b8e760ee..1920d52653b4 100644
> --- a/arch/loongarch/Kconfig
> +++ b/arch/loongarch/Kconfig
> @@ -9,7 +9,6 @@ config LOONGARCH
>   	select ARCH_HAS_ACPI_TABLE_UPGRADE	if ACPI
>   	select ARCH_HAS_PHYS_TO_DMA
>   	select ARCH_HAS_PTE_SPECIAL
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
>   	select ARCH_INLINE_READ_LOCK if !PREEMPTION
>   	select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION
> diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
> index 49aa0cf13e96..936cce42ae9a 100644
> --- a/arch/m68k/Kconfig
> +++ b/arch/m68k/Kconfig
> @@ -7,7 +7,6 @@ config M68K
>   	select ARCH_HAS_CURRENT_STACK_POINTER
>   	select ARCH_HAS_DMA_PREP_COHERENT if HAS_DMA && MMU && !COLDFIRE
>   	select ARCH_HAS_SYNC_DMA_FOR_DEVICE if HAS_DMA
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS
>   	select ARCH_MIGHT_HAVE_PC_PARPORT if ISA
>   	select ARCH_NO_PREEMPT if !COLDFIRE
> diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
> index 15f91ba8a0c4..8cf429ad1c84 100644
> --- a/arch/microblaze/Kconfig
> +++ b/arch/microblaze/Kconfig
> @@ -7,7 +7,6 @@ config MICROBLAZE
>   	select ARCH_HAS_GCOV_PROFILE_ALL
>   	select ARCH_HAS_SYNC_DMA_FOR_CPU
>   	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_MIGHT_HAVE_PC_PARPORT
>   	select ARCH_WANT_IPC_PARSE_VERSION
>   	select BUILDTIME_TABLE_SORT
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index d0b7eb11ec81..db09d45d59ec 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -14,7 +14,6 @@ config MIPS
>   	select ARCH_HAS_STRNLEN_USER
>   	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
>   	select ARCH_HAS_UBSAN_SANITIZE_ALL
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAS_GCOV_PROFILE_ALL
>   	select ARCH_KEEP_MEMBLOCK
>   	select ARCH_SUPPORTS_UPROBES
> diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig
> index e0459dffd218..4167f1eb4cd8 100644
> --- a/arch/nios2/Kconfig
> +++ b/arch/nios2/Kconfig
> @@ -6,7 +6,6 @@ config NIOS2
>   	select ARCH_HAS_SYNC_DMA_FOR_CPU
>   	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
>   	select ARCH_HAS_DMA_SET_UNCACHED
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_NO_SWAP
>   	select COMMON_CLK
>   	select TIMER_OF
> diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
> index fe0dfb50eb86..e814df4c483c 100644
> --- a/arch/openrisc/Kconfig
> +++ b/arch/openrisc/Kconfig
> @@ -10,7 +10,6 @@ config OPENRISC
>   	select ARCH_HAS_DMA_SET_UNCACHED
>   	select ARCH_HAS_DMA_CLEAR_UNCACHED
>   	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select COMMON_CLK
>   	select OF
>   	select OF_EARLY_FLATTREE
> diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
> index 90eabc846f81..5f2448dc5a2b 100644
> --- a/arch/parisc/Kconfig
> +++ b/arch/parisc/Kconfig
> @@ -11,7 +11,6 @@ config PARISC
>   	select ARCH_HAS_ELF_RANDOMIZE
>   	select ARCH_HAS_STRICT_KERNEL_RWX
>   	select ARCH_HAS_UBSAN_SANITIZE_ALL
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAS_PTE_SPECIAL
>   	select ARCH_NO_SG_CHAIN
>   	select ARCH_SUPPORTS_HUGETLBFS if PA20
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 1035d172c7dd..250b8658b2d4 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -140,7 +140,6 @@ config PPC
>   	select ARCH_HAS_TICK_BROADCAST		if GENERIC_CLOCKEVENTS_BROADCAST
>   	select ARCH_HAS_UACCESS_FLUSHCACHE
>   	select ARCH_HAS_UBSAN_SANITIZE_ALL
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAVE_NMI_SAFE_CMPXCHG
>   	select ARCH_KEEP_MEMBLOCK
>   	select ARCH_MIGHT_HAVE_PC_PARPORT
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 583389d4e43a..32ffef9f6e5b 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -32,7 +32,6 @@ config RISCV
>   	select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
>   	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
>   	select ARCH_HAS_UBSAN_SANITIZE_ALL
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
>   	select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
>   	select ARCH_STACKWALK
> diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
> index c4481377ca83..91c0b80a8bf0 100644
> --- a/arch/s390/Kconfig
> +++ b/arch/s390/Kconfig
> @@ -81,7 +81,6 @@ config S390
>   	select ARCH_HAS_SYSCALL_WRAPPER
>   	select ARCH_HAS_UBSAN_SANITIZE_ALL
>   	select ARCH_HAS_VDSO_DATA
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAVE_NMI_SAFE_CMPXCHG
>   	select ARCH_INLINE_READ_LOCK
>   	select ARCH_INLINE_READ_LOCK_BH
> diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
> index 91f3ea325388..5f220e903e5a 100644
> --- a/arch/sh/Kconfig
> +++ b/arch/sh/Kconfig
> @@ -12,7 +12,6 @@ config SUPERH
>   	select ARCH_HAS_GCOV_PROFILE_ALL
>   	select ARCH_HAS_PTE_SPECIAL
>   	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HIBERNATION_POSSIBLE if MMU
>   	select ARCH_MIGHT_HAVE_PC_PARPORT
>   	select ARCH_WANT_IPC_PARSE_VERSION
> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
> index 09f868613a4d..9c1cce74953a 100644
> --- a/arch/sparc/Kconfig
> +++ b/arch/sparc/Kconfig
> @@ -13,7 +13,6 @@ config 64BIT
>   config SPARC
>   	bool
>   	default y
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_MIGHT_HAVE_PC_PARPORT if SPARC64 && PCI
>   	select ARCH_MIGHT_HAVE_PC_SERIO
>   	select DMA_OPS
> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> index 7fb43654e5b5..4ec22e156a2e 100644
> --- a/arch/um/Kconfig
> +++ b/arch/um/Kconfig
> @@ -10,7 +10,6 @@ config UML
>   	select ARCH_HAS_KCOV
>   	select ARCH_HAS_STRNCPY_FROM_USER
>   	select ARCH_HAS_STRNLEN_USER
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_NO_PREEMPT
>   	select HAVE_ARCH_AUDITSYSCALL
>   	select HAVE_ARCH_SECCOMP_FILTER
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index be0b95e51df6..841e4843d0c4 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -94,7 +94,6 @@ config X86
>   	select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
>   	select ARCH_HAS_SYSCALL_WRAPPER
>   	select ARCH_HAS_UBSAN_SANITIZE_ALL
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_HAS_DEBUG_WX
>   	select ARCH_HAS_ZONE_DMA_SET if EXPERT
>   	select ARCH_HAVE_NMI_SAFE_CMPXCHG
> diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
> index 4c0d83520ff1..0b0f0172cced 100644
> --- a/arch/xtensa/Kconfig
> +++ b/arch/xtensa/Kconfig
> @@ -11,7 +11,6 @@ config XTENSA
>   	select ARCH_HAS_DMA_SET_UNCACHED if MMU
>   	select ARCH_HAS_STRNCPY_FROM_USER if !KASAN
>   	select ARCH_HAS_STRNLEN_USER
> -	select ARCH_HAS_VM_GET_PAGE_PROT
>   	select ARCH_USE_MEMTEST
>   	select ARCH_USE_QUEUED_RWLOCKS
>   	select ARCH_USE_QUEUED_SPINLOCKS
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 70d900f6df43..d776a86be1d4 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -424,9 +424,6 @@ extern unsigned int kobjsize(const void *objp);
>    * mapping from the currently active vm_flags protection bits (the
>    * low four bits) to a page protection mask..
>    */
> -#ifndef CONFIG_ARCH_HAS_VM_GET_PAGE_PROT
> -extern pgprot_t protection_map[16];
> -#endif
>   
>   #define DECLARE_VM_GET_PAGE_PROT					\
>   pgprot_t vm_get_page_prot(unsigned long vm_flags)			\
> diff --git a/mm/Kconfig b/mm/Kconfig
> index 169e64192e48..f47d257a053b 100644
> --- a/mm/Kconfig
> +++ b/mm/Kconfig
> @@ -951,9 +951,6 @@ config ARCH_HAS_CURRENT_STACK_POINTER
>   	  register alias named "current_stack_pointer", this config can be
>   	  selected.
>   
> -config ARCH_HAS_VM_GET_PAGE_PROT
> -	bool
> -
>   config ARCH_HAS_PTE_DEVMAP
>   	bool
>   
> diff --git a/mm/mmap.c b/mm/mmap.c
> index 43db3bd49071..3557fe83d124 100644
> --- a/mm/mmap.c
> +++ b/mm/mmap.c
> @@ -101,28 +101,6 @@ static void unmap_region(struct mm_struct *mm,
>    *								w: (no) no
>    *								x: (yes) yes
>    */
> -#ifndef CONFIG_ARCH_HAS_VM_GET_PAGE_PROT
> -pgprot_t protection_map[16] __ro_after_init = {
> -	[VM_NONE]					= __P000,
> -	[VM_READ]					= __P001,
> -	[VM_WRITE]					= __P010,
> -	[VM_WRITE | VM_READ]				= __P011,
> -	[VM_EXEC]					= __P100,
> -	[VM_EXEC | VM_READ]				= __P101,
> -	[VM_EXEC | VM_WRITE]				= __P110,
> -	[VM_EXEC | VM_WRITE | VM_READ]			= __P111,
> -	[VM_SHARED]					= __S000,
> -	[VM_SHARED | VM_READ]				= __S001,
> -	[VM_SHARED | VM_WRITE]				= __S010,
> -	[VM_SHARED | VM_WRITE | VM_READ]		= __S011,
> -	[VM_SHARED | VM_EXEC]				= __S100,
> -	[VM_SHARED | VM_EXEC | VM_READ]			= __S101,
> -	[VM_SHARED | VM_EXEC | VM_WRITE]		= __S110,
> -	[VM_SHARED | VM_EXEC | VM_WRITE | VM_READ]	= __S111
> -};
> -DECLARE_VM_GET_PAGE_PROT
> -#endif	/* CONFIG_ARCH_HAS_VM_GET_PAGE_PROT */
> -
>   static pgprot_t vm_pgprot_modify(pgprot_t oldprot, unsigned long vm_flags)
>   {
>   	return pgprot_modify(oldprot, vm_get_page_prot(vm_flags));

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ