#include <linux/shmem_fs.h>
#include <linux/security.h>
#include <linux/syscalls.h>
-#include <linux/vs_context.h>
+#include <linux/audit.h>
+#include <linux/ptrace.h>
#include <linux/vs_limit.h>
+
#include <asm/uaccess.h>
#include "util.h"
err = -EFAULT;
goto out;
}
+ if ((err = audit_ipc_perms(0, setbuf.uid, setbuf.gid, setbuf.mode)))
+ return err;
down(&shm_ids.sem);
shp = shm_lock(shmid);
err=-EINVAL;
return err;
}
+asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg)
+{
+ unsigned long ret;
+ long err;
+
+ err = do_shmat(shmid, shmaddr, shmflg, &ret);
+ if (err)
+ return err;
+ force_successful_syscall_return();
+ return (long)ret;
+}
+
/*
* detach and kill segment if marked destroyed.
* The work is done in shm_close.