Lines Matching refs:msqkptr

316 	struct msqid_kernel *msqkptr;  in msgunload()  local
328 msqkptr = &msqids[msqid]; in msgunload()
329 if (msqkptr->u.msg_qbytes != 0 || in msgunload()
330 (msqkptr->u.msg_perm.mode & MSG_LOCKED) != 0) in msgunload()
411 msq_remove(struct msqid_kernel *msqkptr) in msq_remove() argument
415 racct_sub_cred(msqkptr->cred, RACCT_NMSGQ, 1); in msq_remove()
416 racct_sub_cred(msqkptr->cred, RACCT_MSGQQUEUED, msqkptr->u.msg_qnum); in msq_remove()
417 racct_sub_cred(msqkptr->cred, RACCT_MSGQSIZE, msqkptr->u.msg_cbytes); in msq_remove()
418 crfree(msqkptr->cred); in msq_remove()
419 msqkptr->cred = NULL; in msq_remove()
422 msghdr = msqkptr->u.__msg_first; in msq_remove()
427 msqkptr->u.msg_cbytes -= msghdr->msg_ts; in msq_remove()
428 msqkptr->u.msg_qnum--; in msq_remove()
434 if (msqkptr->u.msg_cbytes != 0) in msq_remove()
436 if (msqkptr->u.msg_qnum != 0) in msq_remove()
439 msqkptr->u.msg_qbytes = 0; /* Mark it as free */ in msq_remove()
442 mac_sysvmsq_cleanup(msqkptr); in msq_remove()
445 wakeup(msqkptr); in msq_remove()
461 msq_prison_cansee(struct prison *rpr, struct msqid_kernel *msqkptr) in msq_prison_cansee() argument
464 if (msqkptr->cred == NULL || in msq_prison_cansee()
465 !(rpr == msqkptr->cred->cr_prison || in msq_prison_cansee()
466 prison_ischild(rpr, msqkptr->cred->cr_prison))) in msq_prison_cansee()
500 struct msqid_kernel *msqkptr; in kern_msgctl() local
517 msqkptr = &msqids[msqix]; in kern_msgctl()
520 if (msqkptr->u.msg_qbytes == 0) { in kern_msgctl()
525 if (msqkptr->u.msg_perm.seq != IPCID_TO_SEQ(msqid)) { in kern_msgctl()
531 error = msq_prison_cansee(rpr, msqkptr); in kern_msgctl()
538 error = mac_sysvmsq_check_msqctl(td->td_ucred, msqkptr, cmd); in kern_msgctl()
552 if ((error = ipcperm(td, &msqkptr->u.msg_perm, IPC_M))) in kern_msgctl()
565 for (msghdr = msqkptr->u.__msg_first; msghdr != NULL; in kern_msgctl()
573 msq_remove(msqkptr); in kern_msgctl()
580 if ((error = ipcperm(td, &msqkptr->u.msg_perm, IPC_M))) in kern_msgctl()
582 if (msqbuf->msg_qbytes > msqkptr->u.msg_qbytes) { in kern_msgctl()
597 msqkptr->u.msg_perm.uid = msqbuf->msg_perm.uid; /* change the owner */ in kern_msgctl()
598 msqkptr->u.msg_perm.gid = msqbuf->msg_perm.gid; /* change the owner */ in kern_msgctl()
599 msqkptr->u.msg_perm.mode = (msqkptr->u.msg_perm.mode & ~0777) | in kern_msgctl()
601 msqkptr->u.msg_qbytes = msqbuf->msg_qbytes; in kern_msgctl()
602 msqkptr->u.msg_ctime = time_second; in kern_msgctl()
606 if ((error = ipcperm(td, &msqkptr->u.msg_perm, IPC_R))) { in kern_msgctl()
610 *msqbuf = msqkptr->u; in kern_msgctl()
611 if (td->td_ucred->cr_prison != msqkptr->cred->cr_prison) in kern_msgctl()
649 struct msqid_kernel *msqkptr = NULL; in sys_msgget() local
659 msqkptr = &msqids[msqid]; in sys_msgget()
660 if (msqkptr->u.msg_qbytes != 0 && in sys_msgget()
661 msqkptr->cred != NULL && in sys_msgget()
662 msqkptr->cred->cr_prison == cred->cr_prison && in sys_msgget()
663 msqkptr->u.msg_perm.key == key) in sys_msgget()
674 msqkptr->u.msg_perm)); in sys_msgget()
675 if ((error = ipcperm(td, &msqkptr->u.msg_perm, in sys_msgget()
682 error = mac_sysvmsq_check_msqget(cred, msqkptr); in sys_msgget()
699 msqkptr = &msqids[msqid]; in sys_msgget()
700 if (msqkptr->u.msg_qbytes == 0 && in sys_msgget()
701 (msqkptr->u.msg_perm.mode & MSG_LOCKED) == 0) in sys_msgget()
721 msqkptr->u.msg_perm.key = key; in sys_msgget()
722 msqkptr->u.msg_perm.cuid = cred->cr_uid; in sys_msgget()
723 msqkptr->u.msg_perm.uid = cred->cr_uid; in sys_msgget()
724 msqkptr->u.msg_perm.cgid = cred->cr_gid; in sys_msgget()
725 msqkptr->u.msg_perm.gid = cred->cr_gid; in sys_msgget()
726 msqkptr->u.msg_perm.mode = (msgflg & 0777); in sys_msgget()
727 msqkptr->cred = crhold(cred); in sys_msgget()
729 msqkptr->u.msg_perm.seq = (msqkptr->u.msg_perm.seq + 1) & 0x7fff; in sys_msgget()
730 msqkptr->u.__msg_first = NULL; in sys_msgget()
731 msqkptr->u.__msg_last = NULL; in sys_msgget()
732 msqkptr->u.msg_cbytes = 0; in sys_msgget()
733 msqkptr->u.msg_qnum = 0; in sys_msgget()
734 msqkptr->u.msg_qbytes = msginfo.msgmnb; in sys_msgget()
735 msqkptr->u.msg_lspid = 0; in sys_msgget()
736 msqkptr->u.msg_lrpid = 0; in sys_msgget()
737 msqkptr->u.msg_stime = 0; in sys_msgget()
738 msqkptr->u.msg_rtime = 0; in sys_msgget()
739 msqkptr->u.msg_ctime = time_second; in sys_msgget()
741 mac_sysvmsq_create(cred, msqkptr); in sys_msgget()
743 AUDIT_ARG_SVIPC_PERM(&msqkptr->u.msg_perm); in sys_msgget()
752 td->td_retval[0] = IXSEQ_TO_IPCID(msqid, msqkptr->u.msg_perm); in sys_msgget()
771 struct msqid_kernel *msqkptr; in kern_msgsnd() local
794 msqkptr = &msqids[msqix]; in kern_msgsnd()
795 AUDIT_ARG_SVIPC_PERM(&msqkptr->u.msg_perm); in kern_msgsnd()
796 if (msqkptr->u.msg_qbytes == 0) { in kern_msgsnd()
801 if (msqkptr->u.msg_perm.seq != IPCID_TO_SEQ(msqid)) { in kern_msgsnd()
807 if ((error = msq_prison_cansee(rpr, msqkptr))) { in kern_msgsnd()
812 if ((error = ipcperm(td, &msqkptr->u.msg_perm, IPC_W))) { in kern_msgsnd()
818 error = mac_sysvmsq_check_msqsnd(td->td_ucred, msqkptr); in kern_msgsnd()
853 if (msgsz > msqkptr->u.msg_qbytes) { in kern_msgsnd()
859 if (msqkptr->u.msg_perm.mode & MSG_LOCKED) { in kern_msgsnd()
863 if (msgsz + msqkptr->u.msg_cbytes > msqkptr->u.msg_qbytes) { in kern_msgsnd()
886 if ((msqkptr->u.msg_perm.mode & MSG_LOCKED) != 0) { in kern_msgsnd()
893 msqkptr->u.msg_perm.mode |= MSG_LOCKED; in kern_msgsnd()
897 error = msleep(msqkptr, &msq_mtx, (PZERO - 4) | PCATCH, in kern_msgsnd()
901 msqkptr->u.msg_perm.mode &= ~MSG_LOCKED; in kern_msgsnd()
916 if (msqkptr->u.msg_qbytes == 0) { in kern_msgsnd()
933 if (msqkptr->u.msg_perm.mode & MSG_LOCKED) in kern_msgsnd()
937 if (msgsz + msqkptr->u.msg_cbytes > msqkptr->u.msg_qbytes) in kern_msgsnd()
947 if ((msqkptr->u.msg_perm.mode & MSG_LOCKED) != 0) in kern_msgsnd()
949 msqkptr->u.msg_perm.mode |= MSG_LOCKED; in kern_msgsnd()
966 mac_sysvmsg_create(td->td_ucred, msqkptr, msghdr); in kern_msgsnd()
997 msqkptr->u.msg_perm.mode &= ~MSG_LOCKED; in kern_msgsnd()
998 wakeup(msqkptr); in kern_msgsnd()
1026 msqkptr->u.msg_perm.mode &= ~MSG_LOCKED; in kern_msgsnd()
1027 wakeup(msqkptr); in kern_msgsnd()
1042 msqkptr->u.msg_perm.mode &= ~MSG_LOCKED; in kern_msgsnd()
1048 if (msqkptr->u.msg_qbytes == 0) { in kern_msgsnd()
1050 wakeup(msqkptr); in kern_msgsnd()
1067 error = mac_sysvmsq_check_msgmsq(td->td_ucred, msghdr, msqkptr); in kern_msgsnd()
1070 wakeup(msqkptr); in kern_msgsnd()
1078 if (msqkptr->u.__msg_first == NULL) { in kern_msgsnd()
1079 msqkptr->u.__msg_first = msghdr; in kern_msgsnd()
1080 msqkptr->u.__msg_last = msghdr; in kern_msgsnd()
1082 msqkptr->u.__msg_last->msg_next = msghdr; in kern_msgsnd()
1083 msqkptr->u.__msg_last = msghdr; in kern_msgsnd()
1085 msqkptr->u.__msg_last->msg_next = NULL; in kern_msgsnd()
1087 msqkptr->u.msg_cbytes += msghdr->msg_ts; in kern_msgsnd()
1088 msqkptr->u.msg_qnum++; in kern_msgsnd()
1089 msqkptr->u.msg_lspid = td->td_proc->p_pid; in kern_msgsnd()
1090 msqkptr->u.msg_stime = time_second; in kern_msgsnd()
1092 wakeup(msqkptr); in kern_msgsnd()
1141 struct msqid_kernel *msqkptr; in kern_msgrcv() local
1160 msqkptr = &msqids[msqix]; in kern_msgrcv()
1162 AUDIT_ARG_SVIPC_PERM(&msqkptr->u.msg_perm); in kern_msgrcv()
1163 if (msqkptr->u.msg_qbytes == 0) { in kern_msgrcv()
1168 if (msqkptr->u.msg_perm.seq != IPCID_TO_SEQ(msqid)) { in kern_msgrcv()
1174 if ((error = msq_prison_cansee(rpr, msqkptr))) { in kern_msgrcv()
1179 if ((error = ipcperm(td, &msqkptr->u.msg_perm, IPC_R))) { in kern_msgrcv()
1185 error = mac_sysvmsq_check_msqrcv(td->td_ucred, msqkptr); in kern_msgrcv()
1193 msghdr = msqkptr->u.__msg_first; in kern_msgrcv()
1209 if (msqkptr->u.__msg_first == in kern_msgrcv()
1210 msqkptr->u.__msg_last) { in kern_msgrcv()
1211 msqkptr->u.__msg_first = NULL; in kern_msgrcv()
1212 msqkptr->u.__msg_last = NULL; in kern_msgrcv()
1214 msqkptr->u.__msg_first = msghdr->msg_next; in kern_msgrcv()
1215 if (msqkptr->u.__msg_first == NULL) in kern_msgrcv()
1224 prev = &(msqkptr->u.__msg_first); in kern_msgrcv()
1256 if (msghdr == msqkptr->u.__msg_last) { in kern_msgrcv()
1259 &msqkptr->u.__msg_first) in kern_msgrcv()
1261 msqkptr->u.__msg_first = in kern_msgrcv()
1263 msqkptr->u.__msg_last = in kern_msgrcv()
1267 &msqkptr->u.__msg_first) in kern_msgrcv()
1269 msqkptr->u.__msg_last = in kern_msgrcv()
1306 error = msleep(msqkptr, &msq_mtx, (PZERO - 4) | PCATCH, in kern_msgrcv()
1320 if (msqkptr->u.msg_qbytes == 0 || in kern_msgrcv()
1321 msqkptr->u.msg_perm.seq != IPCID_TO_SEQ(msqid)) { in kern_msgrcv()
1334 msqkptr->u.msg_cbytes -= msghdr->msg_ts; in kern_msgrcv()
1335 msqkptr->u.msg_qnum--; in kern_msgrcv()
1336 msqkptr->u.msg_lrpid = td->td_proc->p_pid; in kern_msgrcv()
1337 msqkptr->u.msg_rtime = time_second; in kern_msgrcv()
1339 racct_sub_cred(msqkptr->cred, RACCT_MSGQQUEUED, 1); in kern_msgrcv()
1340 racct_sub_cred(msqkptr->cred, RACCT_MSGQSIZE, msghdr->msg_ts); in kern_msgrcv()
1377 wakeup(msqkptr); in kern_msgrcv()
1389 wakeup(msqkptr); in kern_msgrcv()
1690 struct msqid_kernel *msqkptr; in msg_prison_cleanup() local
1696 msqkptr = &msqids[i]; in msg_prison_cleanup()
1697 if (msqkptr->u.msg_qbytes != 0 && in msg_prison_cleanup()
1698 msqkptr->cred != NULL && msqkptr->cred->cr_prison == pr) in msg_prison_cleanup()
1699 msq_remove(msqkptr); in msg_prison_cleanup()