X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=ipc%2Fmsg.c;h=558aa91186b6ced1a27b1e05b65c5ee129e0a175;hb=d460a6f3d67a8558fb58299518077888b7dbf5f3;hp=9e4310c546ae93fa85f3932675bcd53ae33ece7a;hpb=1329dfc8bb8932976844438cd5e757c720d6f1ff;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git diff --git a/ipc/msg.c b/ipc/msg.c index 9e4310c..558aa91 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -695,6 +695,12 @@ long do_msgsnd(int msqid, long mtype, void __user *mtext, if (ipcperms(ns, &msq->q_perm, S_IWUGO)) goto out_unlock0; + /* raced with RMID? */ + if (msq->q_perm.deleted) { + err = -EIDRM; + goto out_unlock0; + } + err = security_msg_queue_msgsnd(msq, msg, msgflg); if (err) goto out_unlock0; @@ -901,6 +907,13 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, int msgfl goto out_unlock1; ipc_lock_object(&msq->q_perm); + + /* raced with RMID? */ + if (msq->q_perm.deleted) { + msg = ERR_PTR(-EIDRM); + goto out_unlock0; + } + msg = find_msg(msq, &msgtyp, mode); if (!IS_ERR(msg)) { /*