[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <fc6696de-34d7-e4ce-2b39-f788ba22843e@redhat.com>
Date: Thu, 5 Jan 2017 10:37:54 +0100
From: Jerome Marchand <jmarchan@...hat.com>
To: Khalid Aziz <khalid.aziz@...cle.com>, davem@...emloft.net,
corbet@....net, arnd@...db.de, akpm@...ux-foundation.org
Cc: hpa@...or.com, viro@...iv.linux.org.uk, nitin.m.gupta@...cle.com,
chris.hyser@...cle.com, tushar.n.dave@...cle.com,
sowmini.varadhan@...cle.com, mike.kravetz@...cle.com,
adam.buchbinder@...il.com, minchan@...nel.org, hughd@...gle.com,
kirill.shutemov@...ux.intel.com, keescook@...omium.org,
allen.pais@...cle.com, aryabinin@...tuozzo.com,
atish.patra@...cle.com, joe@...ches.com, pmladek@...e.com,
jslaby@...e.cz, cmetcalf@...lanox.com,
paul.gortmaker@...driver.com, mhocko@...e.com,
dave.hansen@...ux.intel.com, lstoakes@...il.com,
0x7f454c46@...il.com, vbabka@...e.cz, tglx@...utronix.de,
mingo@...hat.com, dan.j.williams@...el.com, iamjoonsoo.kim@....com,
mgorman@...hsingularity.net, vdavydov.dev@...il.com,
hannes@...xchg.org, namit@...are.com, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org, sparclinux@...r.kernel.org,
linux-arch@...r.kernel.org, x86@...nel.org, linux-mm@...ck.org,
Khalid Aziz <khalid@...ehiking.org>
Subject: Re: [RFC PATCH v3] sparc64: Add support for Application Data
Integrity (ADI)
On 01/04/2017 11:46 PM, Khalid Aziz wrote:
> ADI is a new feature supported on sparc M7 and newer processors to allow
> hardware to catch rogue accesses to memory. ADI is supported for data
> fetches only and not instruction fetches. An app can enable ADI on its
> data pages, set version tags on them and use versioned addresses to
> access the data pages. Upper bits of the address contain the version
> tag. On M7 processors, upper four bits (bits 63-60) contain the version
> tag. If a rogue app attempts to access ADI enabled data pages, its
> access is blocked and processor generates an exception.
>
> This patch extends mprotect to enable ADI (TSTATE.mcde), enable/disable
> MCD (Memory Corruption Detection) on selected memory ranges, enable
> TTE.mcd in PTEs, return ADI parameters to userspace and save/restore ADI
> version tags on page swap out/in. It also adds handlers for all traps
> related to MCD. ADI is not enabled by default for any task. A task must
> explicitly enable ADI on a memory range and set version tag for ADI to
> be effective for the task.
>
> Signed-off-by: Khalid Aziz <khalid.aziz@...cle.com>
> Cc: Khalid Aziz <khalid@...ehiking.org>
> ---
> v2:
> - Fixed a build error
>
> v3:
> - Removed CONFIG_SPARC_ADI
> - Replaced prctl commands with mprotect
> - Added auxiliary vectors for ADI parameters
> - Enabled ADI for swappable pages
>
> Documentation/sparc/adi.txt | 239 ++++++++++++++++++++++++++++++++
> arch/sparc/include/asm/adi.h | 6 +
> arch/sparc/include/asm/adi_64.h | 46 ++++++
> arch/sparc/include/asm/elf_64.h | 8 ++
> arch/sparc/include/asm/hugetlb.h | 13 ++
> arch/sparc/include/asm/hypervisor.h | 2 +
> arch/sparc/include/asm/mman.h | 40 +++++-
> arch/sparc/include/asm/mmu_64.h | 2 +
> arch/sparc/include/asm/mmu_context_64.h | 32 +++++
> arch/sparc/include/asm/pgtable_64.h | 97 ++++++++++++-
> arch/sparc/include/asm/ttable.h | 10 ++
> arch/sparc/include/asm/uaccess_64.h | 120 +++++++++++++++-
> arch/sparc/include/uapi/asm/asi.h | 5 +
> arch/sparc/include/uapi/asm/auxvec.h | 8 ++
> arch/sparc/include/uapi/asm/mman.h | 2 +
> arch/sparc/include/uapi/asm/pstate.h | 10 ++
> arch/sparc/kernel/Makefile | 1 +
> arch/sparc/kernel/adi_64.c | 93 +++++++++++++
> arch/sparc/kernel/entry.h | 3 +
> arch/sparc/kernel/head_64.S | 1 +
> arch/sparc/kernel/mdesc.c | 4 +
> arch/sparc/kernel/process_64.c | 21 +++
> arch/sparc/kernel/sun4v_mcd.S | 16 +++
> arch/sparc/kernel/traps_64.c | 142 ++++++++++++++++++-
> arch/sparc/kernel/ttable_64.S | 6 +-
> arch/sparc/mm/gup.c | 37 +++++
> arch/sparc/mm/tlb.c | 28 ++++
> arch/x86/kernel/signal_compat.c | 2 +-
> include/asm-generic/pgtable.h | 5 +
> include/linux/mm.h | 2 +
> include/uapi/asm-generic/siginfo.h | 5 +-
> mm/memory.c | 2 +-
> mm/rmap.c | 4 +-
I haven't actually reviewed the code and looked at why you need
set_swp_pte_at() function, but the code that add the generic version of
this function need to be separated from the rest of the patch. Also,
given the size of this patch, I suspect the rest also need to be broken
into more patches.
Jerome
Download attachment "signature.asc" of type "application/pgp-signature" (474 bytes)
Powered by blists - more mailing lists