mirror of
https://github.com/joel16/android_kernel_sony_msm8994.git
synced 2025-01-09 05:40:39 +00:00
[PATCH] ipc: expand shm_flags
Unobfsucate this struct member Cc: Manfred Spraul <manfred@colorfullife.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
b3f3d6141f
commit
b33291c0bc
22
ipc/shm.c
22
ipc/shm.c
@ -34,8 +34,6 @@
|
|||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
#define shm_flags shm_perm.mode
|
|
||||||
|
|
||||||
static struct file_operations shm_file_operations;
|
static struct file_operations shm_file_operations;
|
||||||
static struct vm_operations_struct shm_vm_ops;
|
static struct vm_operations_struct shm_vm_ops;
|
||||||
|
|
||||||
@ -148,7 +146,7 @@ static void shm_close (struct vm_area_struct *shmd)
|
|||||||
shp->shm_dtim = get_seconds();
|
shp->shm_dtim = get_seconds();
|
||||||
shp->shm_nattch--;
|
shp->shm_nattch--;
|
||||||
if(shp->shm_nattch == 0 &&
|
if(shp->shm_nattch == 0 &&
|
||||||
shp->shm_flags & SHM_DEST)
|
shp->shm_perm.mode & SHM_DEST)
|
||||||
shm_destroy (shp);
|
shm_destroy (shp);
|
||||||
else
|
else
|
||||||
shm_unlock(shp);
|
shm_unlock(shp);
|
||||||
@ -205,7 +203,7 @@ static int newseg (key_t key, int shmflg, size_t size)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
shp->shm_perm.key = key;
|
shp->shm_perm.key = key;
|
||||||
shp->shm_flags = (shmflg & S_IRWXUGO);
|
shp->shm_perm.mode = (shmflg & S_IRWXUGO);
|
||||||
shp->mlock_user = NULL;
|
shp->mlock_user = NULL;
|
||||||
|
|
||||||
shp->shm_perm.security = NULL;
|
shp->shm_perm.security = NULL;
|
||||||
@ -345,7 +343,7 @@ static inline unsigned long copy_shmid_from_user(struct shm_setbuf *out, void __
|
|||||||
|
|
||||||
out->uid = tbuf.shm_perm.uid;
|
out->uid = tbuf.shm_perm.uid;
|
||||||
out->gid = tbuf.shm_perm.gid;
|
out->gid = tbuf.shm_perm.gid;
|
||||||
out->mode = tbuf.shm_flags;
|
out->mode = tbuf.shm_perm.mode;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -358,7 +356,7 @@ static inline unsigned long copy_shmid_from_user(struct shm_setbuf *out, void __
|
|||||||
|
|
||||||
out->uid = tbuf_old.shm_perm.uid;
|
out->uid = tbuf_old.shm_perm.uid;
|
||||||
out->gid = tbuf_old.shm_perm.gid;
|
out->gid = tbuf_old.shm_perm.gid;
|
||||||
out->mode = tbuf_old.shm_flags;
|
out->mode = tbuf_old.shm_perm.mode;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -560,13 +558,13 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
|
|||||||
if (!is_file_hugepages(shp->shm_file)) {
|
if (!is_file_hugepages(shp->shm_file)) {
|
||||||
err = shmem_lock(shp->shm_file, 1, user);
|
err = shmem_lock(shp->shm_file, 1, user);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
shp->shm_flags |= SHM_LOCKED;
|
shp->shm_perm.mode |= SHM_LOCKED;
|
||||||
shp->mlock_user = user;
|
shp->mlock_user = user;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!is_file_hugepages(shp->shm_file)) {
|
} else if (!is_file_hugepages(shp->shm_file)) {
|
||||||
shmem_lock(shp->shm_file, 0, shp->mlock_user);
|
shmem_lock(shp->shm_file, 0, shp->mlock_user);
|
||||||
shp->shm_flags &= ~SHM_LOCKED;
|
shp->shm_perm.mode &= ~SHM_LOCKED;
|
||||||
shp->mlock_user = NULL;
|
shp->mlock_user = NULL;
|
||||||
}
|
}
|
||||||
shm_unlock(shp);
|
shm_unlock(shp);
|
||||||
@ -605,7 +603,7 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
|
|||||||
goto out_unlock_up;
|
goto out_unlock_up;
|
||||||
|
|
||||||
if (shp->shm_nattch){
|
if (shp->shm_nattch){
|
||||||
shp->shm_flags |= SHM_DEST;
|
shp->shm_perm.mode |= SHM_DEST;
|
||||||
/* Do not find it any more */
|
/* Do not find it any more */
|
||||||
shp->shm_perm.key = IPC_PRIVATE;
|
shp->shm_perm.key = IPC_PRIVATE;
|
||||||
shm_unlock(shp);
|
shm_unlock(shp);
|
||||||
@ -644,7 +642,7 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
|
|||||||
|
|
||||||
shp->shm_perm.uid = setbuf.uid;
|
shp->shm_perm.uid = setbuf.uid;
|
||||||
shp->shm_perm.gid = setbuf.gid;
|
shp->shm_perm.gid = setbuf.gid;
|
||||||
shp->shm_flags = (shp->shm_flags & ~S_IRWXUGO)
|
shp->shm_perm.mode = (shp->shm_perm.mode & ~S_IRWXUGO)
|
||||||
| (setbuf.mode & S_IRWXUGO);
|
| (setbuf.mode & S_IRWXUGO);
|
||||||
shp->shm_ctim = get_seconds();
|
shp->shm_ctim = get_seconds();
|
||||||
break;
|
break;
|
||||||
@ -777,7 +775,7 @@ invalid:
|
|||||||
BUG();
|
BUG();
|
||||||
shp->shm_nattch--;
|
shp->shm_nattch--;
|
||||||
if(shp->shm_nattch == 0 &&
|
if(shp->shm_nattch == 0 &&
|
||||||
shp->shm_flags & SHM_DEST)
|
shp->shm_perm.mode & SHM_DEST)
|
||||||
shm_destroy (shp);
|
shm_destroy (shp);
|
||||||
else
|
else
|
||||||
shm_unlock(shp);
|
shm_unlock(shp);
|
||||||
@ -902,7 +900,7 @@ static int sysvipc_shm_proc_show(struct seq_file *s, void *it)
|
|||||||
return seq_printf(s, format,
|
return seq_printf(s, format,
|
||||||
shp->shm_perm.key,
|
shp->shm_perm.key,
|
||||||
shp->id,
|
shp->id,
|
||||||
shp->shm_flags,
|
shp->shm_perm.mode,
|
||||||
shp->shm_segsz,
|
shp->shm_segsz,
|
||||||
shp->shm_cprid,
|
shp->shm_cprid,
|
||||||
shp->shm_lprid,
|
shp->shm_lprid,
|
||||||
|
Loading…
Reference in New Issue
Block a user