Commit b60e5e71 authored by William Lee Irwin III's avatar William Lee Irwin III Committed by Linus Torvalds

[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: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 93ff3346
...@@ -44,6 +44,7 @@ struct shmid_ds { ...@@ -44,6 +44,7 @@ struct shmid_ds {
#define SHM_RDONLY 010000 /* read-only access */ #define SHM_RDONLY 010000 /* read-only access */
#define SHM_RND 020000 /* round attach address to SHMLBA boundary */ #define SHM_RND 020000 /* round attach address to SHMLBA boundary */
#define SHM_REMAP 040000 /* take-over region on attach */ #define SHM_REMAP 040000 /* take-over region on attach */
#define SHM_EXEC 0100000 /* execution access */
/* super user shmctl commands */ /* super user shmctl commands */
#define SHM_LOCK 11 #define SHM_LOCK 11
......
...@@ -688,6 +688,10 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr) ...@@ -688,6 +688,10 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
o_flags = O_RDWR; o_flags = O_RDWR;
acc_mode = S_IRUGO | S_IWUGO; 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 * We cannot rely on the fs check since SYSV IPC does have an
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment