From b60e5e711ad490216cc39f0cdfac91a789d85694 Mon Sep 17 00:00:00 2001 From: William Lee Irwin III Date: Mon, 23 Aug 2004 21:28:18 -0700 Subject: [PATCH] [PATCH] hugetlb: permit executable mappings During the kernel summit, some discussion was had about the support requirements for a userspace program loader that loads executables into hugetlb on behalf of a major application (Oracle). In order to support this in a robust fashion, the cleanup of the hugetlb must be robust in the presence of disorderly termination of the programs (e.g. kill -9). Hence, the cleanup semantics are those of System V shared memory, but Linux' System V shared memory needs one critical extension for this use: executability. The following microscopic patch enables this major application to provide robust hugetlb cleanup. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- include/linux/shm.h | 1 + ipc/shm.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/linux/shm.h b/include/linux/shm.h index 1907355c0eb14..80113a1f60bc8 100644 --- a/include/linux/shm.h +++ b/include/linux/shm.h @@ -44,6 +44,7 @@ struct shmid_ds { #define SHM_RDONLY 010000 /* read-only access */ #define SHM_RND 020000 /* round attach address to SHMLBA boundary */ #define SHM_REMAP 040000 /* take-over region on attach */ +#define SHM_EXEC 0100000 /* execution access */ /* super user shmctl commands */ #define SHM_LOCK 11 diff --git a/ipc/shm.c b/ipc/shm.c index 31a925745c25d..530fb1f6ae1d6 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -688,6 +688,10 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr) o_flags = O_RDWR; acc_mode = S_IRUGO | S_IWUGO; } + if (shmflg & SHM_EXEC) { + prot |= PROT_EXEC; + acc_mode |= S_IXUGO; + } /* * We cannot rely on the fs check since SYSV IPC does have an -- 2.53.0