From: Michal Hocko <mhocko@kernel.org>
To: Ram Pai <linuxram@us.ibm.com>
Cc: mpe@ellerman.id.au, mingo@redhat.com, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-mm@kvack.org,
x86@kernel.org, linux-arch@vger.kernel.org,
linux-kernel@vger.kernel.org, dave.hansen@intel.com,
benh@kernel.crashing.org, paulus@samba.org,
khandual@linux.vnet.ibm.com, aneesh.kumar@linux.vnet.ibm.com,
bsingharora@gmail.com, hbabu@us.ibm.com,
bauerman@linux.vnet.ibm.com, ebiederm@xmission.com,
corbet@lwn.net, arnd@arndb.de, fweimer@redhat.com,
msuchanek@suse.com
Subject: Re: [PATCH v11 3/3] mm, x86: display pkey in smaps only if arch supports pkeys
Date: Wed, 31 Jan 2018 14:34:15 +0100 [thread overview]
Message-ID: <20180131133415.GV21609@dhcp22.suse.cz> (raw)
In-Reply-To: <1517341452-11924-4-git-send-email-linuxram@us.ibm.com>
On Tue 30-01-18 11:44:12, Ram Pai wrote:
> Currently the architecture specific code is expected to
> display the protection keys in smap for a given vma.
> This can lead to redundant code and possibly to divergent
> formats in which the key gets displayed.
>
> This patch changes the implementation. It displays the
> pkey only if the architecture support pkeys, i.e
> arch_pkeys_enabled() returns true. This patch
> provides x86 implementation for arch_pkeys_enabled().
>
> x86 arch_show_smap() function is not needed anymore.
> Deleting it.
Thanks for reworking this patch. Looks good to me.
> Signed-off-by: Ram Pai <linuxram@us.ibm.com>
Acked-by: Michal Hocko <mhocko@suse.com>
> ---
> arch/x86/include/asm/pkeys.h | 1 +
> arch/x86/kernel/fpu/xstate.c | 5 +++++
> arch/x86/kernel/setup.c | 8 --------
> fs/proc/task_mmu.c | 9 ++++-----
> include/linux/pkeys.h | 6 ++++++
> 5 files changed, 16 insertions(+), 13 deletions(-)
>
> diff --git a/arch/x86/include/asm/pkeys.h b/arch/x86/include/asm/pkeys.h
> index a0ba1ff..f6c287b 100644
> --- a/arch/x86/include/asm/pkeys.h
> +++ b/arch/x86/include/asm/pkeys.h
> @@ -6,6 +6,7 @@
>
> extern int arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
> unsigned long init_val);
> +extern bool arch_pkeys_enabled(void);
>
> /*
> * Try to dedicate one of the protection keys to be used as an
> diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c
> index 87a57b7..4f566e9 100644
> --- a/arch/x86/kernel/fpu/xstate.c
> +++ b/arch/x86/kernel/fpu/xstate.c
> @@ -945,6 +945,11 @@ int arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
>
> return 0;
> }
> +
> +bool arch_pkeys_enabled(void)
> +{
> + return boot_cpu_has(X86_FEATURE_OSPKE);
> +}
> #endif /* ! CONFIG_ARCH_HAS_PKEYS */
>
> /*
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 8af2e8d..ddf945a 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1326,11 +1326,3 @@ static int __init register_kernel_offset_dumper(void)
> return 0;
> }
> __initcall(register_kernel_offset_dumper);
> -
> -void arch_show_smap(struct seq_file *m, struct vm_area_struct *vma)
> -{
> - if (!boot_cpu_has(X86_FEATURE_OSPKE))
> - return;
> -
> - seq_printf(m, "ProtectionKey: %8u\n", vma_pkey(vma));
> -}
> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
> index 0edd4da..6f9fbde 100644
> --- a/fs/proc/task_mmu.c
> +++ b/fs/proc/task_mmu.c
> @@ -18,6 +18,7 @@
> #include <linux/page_idle.h>
> #include <linux/shmem_fs.h>
> #include <linux/uaccess.h>
> +#include <linux/pkeys.h>
>
> #include <asm/elf.h>
> #include <asm/tlb.h>
> @@ -728,10 +729,6 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask,
> }
> #endif /* HUGETLB_PAGE */
>
> -void __weak arch_show_smap(struct seq_file *m, struct vm_area_struct *vma)
> -{
> -}
> -
> static int show_smap(struct seq_file *m, void *v, int is_pid)
> {
> struct proc_maps_private *priv = m->private;
> @@ -851,9 +848,11 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
> (unsigned long)(mss->pss >> (10 + PSS_SHIFT)));
>
> if (!rollup_mode) {
> - arch_show_smap(m, vma);
> + if (arch_pkeys_enabled())
> + seq_printf(m, "ProtectionKey: %8u\n", vma_pkey(vma));
> show_smap_vma_flags(m, vma);
> }
> +
> m_cache_vma(m, vma);
> return ret;
> }
> diff --git a/include/linux/pkeys.h b/include/linux/pkeys.h
> index 0794ca7..dfdc609 100644
> --- a/include/linux/pkeys.h
> +++ b/include/linux/pkeys.h
> @@ -13,6 +13,7 @@
> #define arch_override_mprotect_pkey(vma, prot, pkey) (0)
> #define PKEY_DEDICATED_EXECUTE_ONLY 0
> #define ARCH_VM_PKEY_FLAGS 0
> +#define vma_pkey(vma) 0
>
> static inline bool mm_pkey_is_allocated(struct mm_struct *mm, int pkey)
> {
> @@ -35,6 +36,11 @@ static inline int arch_set_user_pkey_access(struct task_struct *tsk, int pkey,
> return 0;
> }
>
> +static inline bool arch_pkeys_enabled(void)
> +{
> + return false;
> +}
> +
> static inline void copy_init_pkru_to_fpregs(void)
> {
> }
> --
> 1.7.1
--
Michal Hocko
SUSE Labs
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2018-01-31 13:34 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-30 19:44 [PATCH v11 0/3] mm, x86, powerpc: Enhancements to Memory Protection Keys Ram Pai
2018-01-30 19:44 ` [PATCH v11 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled Ram Pai
2018-01-30 19:44 ` [PATCH v11 2/3] mm, powerpc, x86: introduce an additional vma bit for powerpc pkey Ram Pai
2018-01-30 19:44 ` [PATCH v11 3/3] mm, x86: display pkey in smaps only if arch supports pkeys Ram Pai
2018-01-31 13:34 ` Michal Hocko [this message]
2018-02-02 4:27 ` kbuild test robot
2018-02-02 7:21 ` Ram Pai
2018-02-06 5:51 ` Michael Ellerman
2018-01-31 7:07 ` [PATCH v11 0/3] mm, x86, powerpc: Enhancements to Memory Protection Keys Ingo Molnar
2018-02-01 2:55 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180131133415.GV21609@dhcp22.suse.cz \
--to=mhocko@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=arnd@arndb.de \
--cc=bauerman@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=bsingharora@gmail.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@intel.com \
--cc=ebiederm@xmission.com \
--cc=fweimer@redhat.com \
--cc=hbabu@us.ibm.com \
--cc=khandual@linux.vnet.ibm.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=linuxram@us.ibm.com \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=msuchanek@suse.com \
--cc=paulus@samba.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox