X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ipc%2Fmqueue.c;h=60f7a27f7a9e4ddeacb1eb95e1d867860b964f3c;hb=e9d76c2d082002f8bcbcee1a9202feda37fc0f72;hp=1e04cd464af9b5ad961684dd358a97870bc36323;hpb=a70a93229943c177f0062490b4f8e44be4cef685;p=linux-2.6 diff --git a/ipc/mqueue.c b/ipc/mqueue.c index 1e04cd464a..60f7a27f7a 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c @@ -332,8 +332,7 @@ static ssize_t mqueue_read_file(struct file *filp, char __user *u_data, (info->notify_owner && info->notify.sigev_notify == SIGEV_SIGNAL) ? info->notify.sigev_signo : 0, - pid_nr_ns(info->notify_owner, - current->nsproxy->pid_ns)); + pid_vnr(info->notify_owner)); spin_unlock(&info->lock); buffer[sizeof(buffer)-1] = '\0'; slen = strlen(buffer)+1; @@ -510,7 +509,7 @@ static void __do_notify(struct mqueue_inode_info *info) sig_i.si_errno = 0; sig_i.si_code = SI_MESGQ; sig_i.si_value = info->notify.sigev_value; - sig_i.si_pid = task_pid_vnr(current); + sig_i.si_pid = task_tgid_vnr(current); sig_i.si_uid = current->uid; kill_pid_info(info->notify.sigev_signo, @@ -1138,8 +1137,10 @@ asmlinkage long sys_mq_getsetattr(mqd_t mqdes, omqstat.mq_flags = filp->f_flags & O_NONBLOCK; if (u_mqstat) { ret = audit_mq_getsetattr(mqdes, &mqstat); - if (ret != 0) - goto out; + if (ret != 0) { + spin_unlock(&info->lock); + goto out_fput; + } if (mqstat.mq_flags & O_NONBLOCK) filp->f_flags |= O_NONBLOCK; else