diff options
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/msg.c | 8 | ||||
-rw-r--r-- | ipc/sem.c | 8 | ||||
-rw-r--r-- | ipc/shm.c | 8 | ||||
-rw-r--r-- | ipc/syscall.c | 5 |
4 files changed, 26 insertions, 3 deletions
diff --git a/ipc/msg.c b/ipc/msg.c index 747b65507a9..6a0500c7b47 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -37,6 +37,7 @@ #include <linux/rwsem.h> #include <linux/nsproxy.h> #include <linux/ipc_namespace.h> +#include <trace/ipc.h> #include <asm/current.h> #include <asm/uaccess.h> @@ -71,6 +72,8 @@ struct msg_sender { #define msg_unlock(msq) ipc_unlock(&(msq)->q_perm) +DEFINE_TRACE(ipc_msg_create); + static void freeque(struct ipc_namespace *, struct kern_ipc_perm *); static int newque(struct ipc_namespace *, struct ipc_params *); #ifdef CONFIG_PROC_FS @@ -314,6 +317,7 @@ SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg) struct ipc_namespace *ns; struct ipc_ops msg_ops; struct ipc_params msg_params; + long ret; ns = current->nsproxy->ipc_ns; @@ -324,7 +328,9 @@ SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg) msg_params.key = key; msg_params.flg = msgflg; - return ipcget(ns, &msg_ids(ns), &msg_ops, &msg_params); + ret = ipcget(ns, &msg_ids(ns), &msg_ops, &msg_params); + trace_ipc_msg_create(ret, msgflg); + return ret; } static inline unsigned long diff --git a/ipc/sem.c b/ipc/sem.c index 0e0d49bbb86..32026ae7aa1 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -86,6 +86,7 @@ #include <linux/rwsem.h> #include <linux/nsproxy.h> #include <linux/ipc_namespace.h> +#include <trace/ipc.h> #include <asm/uaccess.h> #include "util.h" @@ -118,6 +119,8 @@ static int sysvipc_sem_proc_show(struct seq_file *s, void *it); #define sc_semopm sem_ctls[2] #define sc_semmni sem_ctls[3] +DEFINE_TRACE(ipc_sem_create); + void sem_init_ns(struct ipc_namespace *ns) { ns->sc_semmsl = SEMMSL; @@ -323,6 +326,7 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg) struct ipc_namespace *ns; struct ipc_ops sem_ops; struct ipc_params sem_params; + long err; ns = current->nsproxy->ipc_ns; @@ -337,7 +341,9 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg) sem_params.flg = semflg; sem_params.u.nsems = nsems; - return ipcget(ns, &sem_ids(ns), &sem_ops, &sem_params); + err = ipcget(ns, &sem_ids(ns), &sem_ops, &sem_params); + trace_ipc_sem_create(err, semflg); + return err; } /* diff --git a/ipc/shm.c b/ipc/shm.c index 7d3bb22a930..f9761bb2d11 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -39,6 +39,7 @@ #include <linux/nsproxy.h> #include <linux/mount.h> #include <linux/ipc_namespace.h> +#include <trace/ipc.h> #include <asm/uaccess.h> @@ -56,6 +57,8 @@ struct shm_file_data { static const struct file_operations shm_file_operations; static const struct vm_operations_struct shm_vm_ops; +DEFINE_TRACE(ipc_shm_create); + #define shm_ids(ns) ((ns)->ids[IPC_SHM_IDS]) #define shm_unlock(shp) \ @@ -456,6 +459,7 @@ SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg) struct ipc_namespace *ns; struct ipc_ops shm_ops; struct ipc_params shm_params; + long err; ns = current->nsproxy->ipc_ns; @@ -467,7 +471,9 @@ SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg) shm_params.flg = shmflg; shm_params.u.size = size; - return ipcget(ns, &shm_ids(ns), &shm_ops, &shm_params); + err = ipcget(ns, &shm_ids(ns), &shm_ops, &shm_params); + trace_ipc_shm_create(err, shmflg); + return err; } static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_ds *in, int version) diff --git a/ipc/syscall.c b/ipc/syscall.c index 1d6f53f6b56..daf35cd9e4e 100644 --- a/ipc/syscall.c +++ b/ipc/syscall.c @@ -12,6 +12,9 @@ #include <linux/shm.h> #include <linux/syscalls.h> #include <linux/uaccess.h> +#include <trace/ipc.h> + +DEFINE_TRACE(ipc_call); SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, unsigned long, third, void __user *, ptr, long, fifth) @@ -21,6 +24,8 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, version = call >> 16; /* hack for backward compatibility */ call &= 0xffff; + trace_ipc_call(call, first); + switch (call) { case SEMOP: return sys_semtimedop(first, (struct sembuf __user *)ptr, |