This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / ipc / shm.c
index 714933b..07fb859 100644 (file)
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -26,6 +26,8 @@
 #include <linux/proc_fs.h>
 #include <linux/shmem_fs.h>
 #include <linux/security.h>
+#include <linux/vs_base.h>
+
 #include <asm/uaccess.h>
 
 #include "util.h"
@@ -163,6 +165,10 @@ static struct vm_operations_struct shm_vm_ops = {
        .open   = shm_open,     /* callback for a new vm-area open */
        .close  = shm_close,    /* callback for when the vm-area is released */
        .nopage = shmem_nopage,
+#ifdef CONFIG_NUMA
+       .set_policy = shmem_set_policy,
+       .get_policy = shmem_get_policy,
+#endif
 };
 
 static int newseg (key_t key, int shmflg, size_t size)
@@ -185,6 +191,7 @@ static int newseg (key_t key, int shmflg, size_t size)
                return -ENOMEM;
 
        shp->shm_perm.key = key;
+       shp->shm_perm.xid = current->xid;
        shp->shm_flags = (shmflg & S_IRWXUGO);
 
        shp->shm_perm.security = NULL;
@@ -843,11 +850,15 @@ static int sysvipc_shm_read_proc(char *buffer, char **start, off_t offset, int l
                struct shmid_kernel* shp;
 
                shp = shm_lock(i);
-               if(shp!=NULL) {
+               if (shp) {
 #define SMALL_STRING "%10d %10d  %4o %10u %5u %5u  %5d %5u %5u %5u %5u %10lu %10lu %10lu\n"
 #define BIG_STRING   "%10d %10d  %4o %21u %5u %5u  %5d %5u %5u %5u %5u %10lu %10lu %10lu\n"
                        char *format;
 
+                       if (!vx_check(shp->shm_perm.xid, VX_IDENT)) {
+                               shm_unlock(shp);
+                               continue;       
+                       }
                        if (sizeof(size_t) <= sizeof(int))
                                format = SMALL_STRING;
                        else