diff options
author | Kirill Korotaev <dev@openvz.org> | 2006-09-07 14:17:04 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-08 08:40:46 -0700 |
commit | 3a459756810912d2c2bf188cef566af255936b4d (patch) | |
tree | 1b52d90a2412811ebf5078b4f55112864e1890df /include/asm-ia64/mman.h | |
parent | 10387e5eb45c6e48d67102b88229f5bc6037461c (diff) | |
download | op-kernel-dev-3a459756810912d2c2bf188cef566af255936b4d.zip op-kernel-dev-3a459756810912d2c2bf188cef566af255936b4d.tar.gz |
[PATCH] IA64,sparc: local DoS with corrupted ELFs
This prevents cross-region mappings on IA64 and SPARC which could lead
to system crash. They were correctly trapped for normal mmap() calls,
but not for the kernel internal calls generated by executable loading.
This code just moves the architecture-specific cross-region checks into
an arch-specific "arch_mmap_check()" macro, and defines that for the
architectures that needed it (ia64, sparc and sparc64).
Architectures that don't have any special requirements can just ignore
the new cross-region check, since the mmap() code will just notice on
its own when the macro isn't defined.
Signed-off-by: Pavel Emelianov <xemul@openvz.org>
Signed-off-by: Kirill Korotaev <dev@openvz.org>
Acked-by: David Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
[ Cleaned up to not affect architectures that don't need it ]
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-ia64/mman.h')
-rw-r--r-- | include/asm-ia64/mman.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/asm-ia64/mman.h b/include/asm-ia64/mman.h index 6ba179f..c73b878 100644 --- a/include/asm-ia64/mman.h +++ b/include/asm-ia64/mman.h @@ -22,4 +22,12 @@ #define MCL_CURRENT 1 /* lock all current mappings */ #define MCL_FUTURE 2 /* lock all future mappings */ +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ +#define arch_mmap_check ia64_mmap_check +int ia64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags); +#endif +#endif + #endif /* _ASM_IA64_MMAN_H */ |