diff options
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/mqueue.c | 7 | ||||
-rw-r--r-- | ipc/msg.c | 6 | ||||
-rw-r--r-- | ipc/sem.c | 8 | ||||
-rw-r--r-- | ipc/shm.c | 6 |
4 files changed, 15 insertions, 12 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index 20f1fed8fa48..c0b26dc4617b 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c | |||
@@ -29,6 +29,8 @@ | |||
29 | #include <linux/audit.h> | 29 | #include <linux/audit.h> |
30 | #include <linux/signal.h> | 30 | #include <linux/signal.h> |
31 | #include <linux/mutex.h> | 31 | #include <linux/mutex.h> |
32 | #include <linux/nsproxy.h> | ||
33 | #include <linux/pid.h> | ||
32 | 34 | ||
33 | #include <net/sock.h> | 35 | #include <net/sock.h> |
34 | #include "util.h" | 36 | #include "util.h" |
@@ -330,7 +332,8 @@ static ssize_t mqueue_read_file(struct file *filp, char __user *u_data, | |||
330 | (info->notify_owner && | 332 | (info->notify_owner && |
331 | info->notify.sigev_notify == SIGEV_SIGNAL) ? | 333 | info->notify.sigev_notify == SIGEV_SIGNAL) ? |
332 | info->notify.sigev_signo : 0, | 334 | info->notify.sigev_signo : 0, |
333 | pid_nr(info->notify_owner)); | 335 | pid_nr_ns(info->notify_owner, |
336 | current->nsproxy->pid_ns)); | ||
334 | spin_unlock(&info->lock); | 337 | spin_unlock(&info->lock); |
335 | buffer[sizeof(buffer)-1] = '\0'; | 338 | buffer[sizeof(buffer)-1] = '\0'; |
336 | slen = strlen(buffer)+1; | 339 | slen = strlen(buffer)+1; |
@@ -507,7 +510,7 @@ static void __do_notify(struct mqueue_inode_info *info) | |||
507 | sig_i.si_errno = 0; | 510 | sig_i.si_errno = 0; |
508 | sig_i.si_code = SI_MESGQ; | 511 | sig_i.si_code = SI_MESGQ; |
509 | sig_i.si_value = info->notify.sigev_value; | 512 | sig_i.si_value = info->notify.sigev_value; |
510 | sig_i.si_pid = current->tgid; | 513 | sig_i.si_pid = task_pid_vnr(current); |
511 | sig_i.si_uid = current->uid; | 514 | sig_i.si_uid = current->uid; |
512 | 515 | ||
513 | kill_pid_info(info->notify.sigev_signo, | 516 | kill_pid_info(info->notify.sigev_signo, |
@@ -611,7 +611,7 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg) | |||
611 | msr->r_msg = ERR_PTR(-E2BIG); | 611 | msr->r_msg = ERR_PTR(-E2BIG); |
612 | } else { | 612 | } else { |
613 | msr->r_msg = NULL; | 613 | msr->r_msg = NULL; |
614 | msq->q_lrpid = msr->r_tsk->pid; | 614 | msq->q_lrpid = task_pid_vnr(msr->r_tsk); |
615 | msq->q_rtime = get_seconds(); | 615 | msq->q_rtime = get_seconds(); |
616 | wake_up_process(msr->r_tsk); | 616 | wake_up_process(msr->r_tsk); |
617 | smp_mb(); | 617 | smp_mb(); |
@@ -695,7 +695,7 @@ long do_msgsnd(int msqid, long mtype, void __user *mtext, | |||
695 | } | 695 | } |
696 | } | 696 | } |
697 | 697 | ||
698 | msq->q_lspid = current->tgid; | 698 | msq->q_lspid = task_tgid_vnr(current); |
699 | msq->q_stime = get_seconds(); | 699 | msq->q_stime = get_seconds(); |
700 | 700 | ||
701 | if (!pipelined_send(msq, msg)) { | 701 | if (!pipelined_send(msq, msg)) { |
@@ -810,7 +810,7 @@ long do_msgrcv(int msqid, long *pmtype, void __user *mtext, | |||
810 | list_del(&msg->m_list); | 810 | list_del(&msg->m_list); |
811 | msq->q_qnum--; | 811 | msq->q_qnum--; |
812 | msq->q_rtime = get_seconds(); | 812 | msq->q_rtime = get_seconds(); |
813 | msq->q_lrpid = current->tgid; | 813 | msq->q_lrpid = task_tgid_vnr(current); |
814 | msq->q_cbytes -= msg->m_ts; | 814 | msq->q_cbytes -= msg->m_ts; |
815 | atomic_sub(msg->m_ts, &msg_bytes); | 815 | atomic_sub(msg->m_ts, &msg_bytes); |
816 | atomic_dec(&msg_hdrs); | 816 | atomic_dec(&msg_hdrs); |
@@ -795,7 +795,7 @@ static int semctl_main(struct ipc_namespace *ns, int semid, int semnum, | |||
795 | for (un = sma->undo; un; un = un->id_next) | 795 | for (un = sma->undo; un; un = un->id_next) |
796 | un->semadj[semnum] = 0; | 796 | un->semadj[semnum] = 0; |
797 | curr->semval = val; | 797 | curr->semval = val; |
798 | curr->sempid = current->tgid; | 798 | curr->sempid = task_tgid_vnr(current); |
799 | sma->sem_ctime = get_seconds(); | 799 | sma->sem_ctime = get_seconds(); |
800 | /* maybe some queued-up processes were waiting for this */ | 800 | /* maybe some queued-up processes were waiting for this */ |
801 | update_queue(sma); | 801 | update_queue(sma); |
@@ -1196,7 +1196,7 @@ retry_undos: | |||
1196 | if (error) | 1196 | if (error) |
1197 | goto out_unlock_free; | 1197 | goto out_unlock_free; |
1198 | 1198 | ||
1199 | error = try_atomic_semop (sma, sops, nsops, un, current->tgid); | 1199 | error = try_atomic_semop (sma, sops, nsops, un, task_tgid_vnr(current)); |
1200 | if (error <= 0) { | 1200 | if (error <= 0) { |
1201 | if (alter && error == 0) | 1201 | if (alter && error == 0) |
1202 | update_queue (sma); | 1202 | update_queue (sma); |
@@ -1211,7 +1211,7 @@ retry_undos: | |||
1211 | queue.sops = sops; | 1211 | queue.sops = sops; |
1212 | queue.nsops = nsops; | 1212 | queue.nsops = nsops; |
1213 | queue.undo = un; | 1213 | queue.undo = un; |
1214 | queue.pid = current->tgid; | 1214 | queue.pid = task_tgid_vnr(current); |
1215 | queue.id = semid; | 1215 | queue.id = semid; |
1216 | queue.alter = alter; | 1216 | queue.alter = alter; |
1217 | if (alter) | 1217 | if (alter) |
@@ -1382,7 +1382,7 @@ found: | |||
1382 | semaphore->semval = 0; | 1382 | semaphore->semval = 0; |
1383 | if (semaphore->semval > SEMVMX) | 1383 | if (semaphore->semval > SEMVMX) |
1384 | semaphore->semval = SEMVMX; | 1384 | semaphore->semval = SEMVMX; |
1385 | semaphore->sempid = current->tgid; | 1385 | semaphore->sempid = task_tgid_vnr(current); |
1386 | } | 1386 | } |
1387 | } | 1387 | } |
1388 | sma->sem_otime = get_seconds(); | 1388 | sma->sem_otime = get_seconds(); |
@@ -168,7 +168,7 @@ static void shm_open(struct vm_area_struct *vma) | |||
168 | shp = shm_lock(sfd->ns, sfd->id); | 168 | shp = shm_lock(sfd->ns, sfd->id); |
169 | BUG_ON(!shp); | 169 | BUG_ON(!shp); |
170 | shp->shm_atim = get_seconds(); | 170 | shp->shm_atim = get_seconds(); |
171 | shp->shm_lprid = current->tgid; | 171 | shp->shm_lprid = task_tgid_vnr(current); |
172 | shp->shm_nattch++; | 172 | shp->shm_nattch++; |
173 | shm_unlock(shp); | 173 | shm_unlock(shp); |
174 | } | 174 | } |
@@ -213,7 +213,7 @@ static void shm_close(struct vm_area_struct *vma) | |||
213 | /* remove from the list of attaches of the shm segment */ | 213 | /* remove from the list of attaches of the shm segment */ |
214 | shp = shm_lock(ns, sfd->id); | 214 | shp = shm_lock(ns, sfd->id); |
215 | BUG_ON(!shp); | 215 | BUG_ON(!shp); |
216 | shp->shm_lprid = current->tgid; | 216 | shp->shm_lprid = task_tgid_vnr(current); |
217 | shp->shm_dtim = get_seconds(); | 217 | shp->shm_dtim = get_seconds(); |
218 | shp->shm_nattch--; | 218 | shp->shm_nattch--; |
219 | if(shp->shm_nattch == 0 && | 219 | if(shp->shm_nattch == 0 && |
@@ -392,7 +392,7 @@ static int newseg (struct ipc_namespace *ns, key_t key, int shmflg, size_t size) | |||
392 | if(id == -1) | 392 | if(id == -1) |
393 | goto no_id; | 393 | goto no_id; |
394 | 394 | ||
395 | shp->shm_cprid = current->tgid; | 395 | shp->shm_cprid = task_tgid_vnr(current); |
396 | shp->shm_lprid = 0; | 396 | shp->shm_lprid = 0; |
397 | shp->shm_atim = shp->shm_dtim = 0; | 397 | shp->shm_atim = shp->shm_dtim = 0; |
398 | shp->shm_ctim = get_seconds(); | 398 | shp->shm_ctim = get_seconds(); |