2015-02-27 14:55:57

by Daniel Borkmann

[permalink] [raw]
Subject: [PATCH net-next 09/10] arm64: unexport set_memory_ro and set_memory_rw

This effectively unexports set_memory_ro and set_memory_rw functions from
commit 11d91a770f1f ("arm64: Add CONFIG_DEBUG_SET_MODULE_RONX support").

No module user of those is in mainline kernel and we explicitly do not want
modules to use these functions, as they i.e. protect eBPF (interpreted and
JIT'ed) images from malicious modifications or bugs.

Outside of eBPF scope, I believe also other set_memory_* functions should
be unexported on arm64 for modules.

Signed-off-by: Daniel Borkmann <[email protected]>
Cc: Laura Abbott <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: [email protected]
Acked-by: Alexei Starovoitov <[email protected]>
---
arch/arm64/mm/pageattr.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c
index bb0ea94..8659357 100644
--- a/arch/arm64/mm/pageattr.c
+++ b/arch/arm64/mm/pageattr.c
@@ -70,7 +70,6 @@ int set_memory_ro(unsigned long addr, int numpages)
__pgprot(PTE_RDONLY),
__pgprot(PTE_WRITE));
}
-EXPORT_SYMBOL_GPL(set_memory_ro);

int set_memory_rw(unsigned long addr, int numpages)
{
@@ -78,7 +77,6 @@ int set_memory_rw(unsigned long addr, int numpages)
__pgprot(PTE_WRITE),
__pgprot(PTE_RDONLY));
}
-EXPORT_SYMBOL_GPL(set_memory_rw);

int set_memory_nx(unsigned long addr, int numpages)
{
--
1.9.3


2015-02-27 18:52:02

by Laura Abbott

[permalink] [raw]
Subject: Re: [PATCH net-next 09/10] arm64: unexport set_memory_ro and set_memory_rw

On 2/27/2015 6:55 AM, Daniel Borkmann wrote:
> This effectively unexports set_memory_ro and set_memory_rw functions from
> commit 11d91a770f1f ("arm64: Add CONFIG_DEBUG_SET_MODULE_RONX support").
>
> No module user of those is in mainline kernel and we explicitly do not want
> modules to use these functions, as they i.e. protect eBPF (interpreted and
> JIT'ed) images from malicious modifications or bugs.
>
> Outside of eBPF scope, I believe also other set_memory_* functions should
> be unexported on arm64 for modules.
>
> Signed-off-by: Daniel Borkmann <[email protected]>
> Cc: Laura Abbott <[email protected]>
> Cc: Will Deacon <[email protected]>
> Cc: [email protected]
> Acked-by: Alexei Starovoitov <[email protected]>
> ---
> arch/arm64/mm/pageattr.c | 2 --
> 1 file changed, 2 deletions(-)
>

We have some uses for modules doing set_memory_ro/rw but none that are
in mainline. That can be dealt with if the features ever get
mainlined which seems unlikely.

Acked-by: Laura Abbott <[email protected]>

> diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c
> index bb0ea94..8659357 100644
> --- a/arch/arm64/mm/pageattr.c
> +++ b/arch/arm64/mm/pageattr.c
> @@ -70,7 +70,6 @@ int set_memory_ro(unsigned long addr, int numpages)
> __pgprot(PTE_RDONLY),
> __pgprot(PTE_WRITE));
> }
> -EXPORT_SYMBOL_GPL(set_memory_ro);
>
> int set_memory_rw(unsigned long addr, int numpages)
> {
> @@ -78,7 +77,6 @@ int set_memory_rw(unsigned long addr, int numpages)
> __pgprot(PTE_WRITE),
> __pgprot(PTE_RDONLY));
> }
> -EXPORT_SYMBOL_GPL(set_memory_rw);
>
> int set_memory_nx(unsigned long addr, int numpages)
> {
>


--
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

2015-02-27 19:54:43

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH net-next 09/10] arm64: unexport set_memory_ro and set_memory_rw

On Fri, Feb 27, 2015 at 02:55:41PM +0000, Daniel Borkmann wrote:
> This effectively unexports set_memory_ro and set_memory_rw functions from
> commit 11d91a770f1f ("arm64: Add CONFIG_DEBUG_SET_MODULE_RONX support").
>
> No module user of those is in mainline kernel and we explicitly do not want
> modules to use these functions, as they i.e. protect eBPF (interpreted and
> JIT'ed) images from malicious modifications or bugs.
>
> Outside of eBPF scope, I believe also other set_memory_* functions should
> be unexported on arm64 for modules.
>
> Signed-off-by: Daniel Borkmann <[email protected]>
> Cc: Laura Abbott <[email protected]>
> Cc: Will Deacon <[email protected]>
> Cc: [email protected]
> Acked-by: Alexei Starovoitov <[email protected]>
> ---
> arch/arm64/mm/pageattr.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c
> index bb0ea94..8659357 100644
> --- a/arch/arm64/mm/pageattr.c
> +++ b/arch/arm64/mm/pageattr.c
> @@ -70,7 +70,6 @@ int set_memory_ro(unsigned long addr, int numpages)
> __pgprot(PTE_RDONLY),
> __pgprot(PTE_WRITE));
> }
> -EXPORT_SYMBOL_GPL(set_memory_ro);
>
> int set_memory_rw(unsigned long addr, int numpages)
> {
> @@ -78,7 +77,6 @@ int set_memory_rw(unsigned long addr, int numpages)
> __pgprot(PTE_WRITE),
> __pgprot(PTE_RDONLY));
> }
> -EXPORT_SYMBOL_GPL(set_memory_rw);
>
> int set_memory_nx(unsigned long addr, int numpages)
> {

Looks good to me. Can this be applied independently, or does it need to
remain part of your series?

Will

2015-02-27 20:05:19

by Daniel Borkmann

[permalink] [raw]
Subject: Re: [PATCH net-next 09/10] arm64: unexport set_memory_ro and set_memory_rw

On 02/27/2015 08:54 PM, Will Deacon wrote:
...
> Looks good to me. Can this be applied independently, or does it need to
> remain part of your series?

Ideally, it should be seen as part of this series, but I have no problem
if this one goes via arm64 tree, instead. What Dave and you prefer. ;)

Thanks,
Daniel