• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/bsd/kern/

Lines Matching refs:pinfo

149 	struct pshminfo *pinfo;
179 int pshm_access(struct pshminfo *pinfo, int mode, kauth_cred_t cred, proc_t p);
365 struct pshminfo *pinfo;
381 pinfo = PSHMINFO_NULL;
425 error = pshm_cache_search(&pinfo, &nd, &pcache);
461 AUDIT_ARG(posix_ipc_perm, pinfo->pshm_uid,
462 pinfo->pshm_gid, pinfo->pshm_mode);
466 if (pinfo->pshm_flags & PSHM_INDELETE) {
476 MALLOC(pinfo, struct pshminfo *, sizeof(struct pshminfo), M_SHM, M_WAITOK|M_ZERO);
477 if (pinfo == NULL) {
483 pinfo->pshm_flags = PSHM_DEFINED | PSHM_INCREATE;
484 pinfo->pshm_usecount = 1; /* existence reference */
485 pinfo->pshm_mode = cmode;
486 pinfo->pshm_uid = kauth_cred_getuid(kauth_cred_get());
487 pinfo->pshm_gid = kauth_cred_get()->cr_gid;
488 bcopy(pnbuf, &pinfo->pshm_name[0], PSHMNAMLEN);
489 pinfo->pshm_name[PSHMNAMLEN]=0;
492 mac_posixshm_label_init(pinfo);
499 mac_posixshm_label_associate(kauth_cred_get(), pinfo, nameptr);
503 if( pinfo->pshm_flags & PSHM_INDELETE) {
508 AUDIT_ARG(posix_ipc_perm, pinfo->pshm_uid,
509 pinfo->pshm_gid, pinfo->pshm_mode);
512 kauth_cred_get(), pinfo))) {
517 if ( (error = pshm_access(pinfo, fmode, kauth_cred_get(), p)) ) {
529 if( pinfo->pshm_flags & PSHM_INDELETE) {
536 kauth_cred_get(), pinfo))) {
542 if ( (error = pshm_access(pinfo, fmode, kauth_cred_get(), p)) ) {
554 pinfo->pshm_writecount++;
556 pinfo->pshm_readcount++;
580 if ( (error = pshm_cache_add(pinfo, &nd, pcp)) ) {
586 pinfo->pshm_flags &= ~PSHM_INCREATE;
587 pinfo->pshm_usecount++; /* extra reference for the new fd */
588 pnode->pinfo = pinfo;
610 mac_posixshm_label_destroy(pinfo);
612 FREE(pinfo, M_SHM);
626 struct pshminfo * pinfo;
645 if ((pinfo = pnode->pinfo) == PSHMINFO_NULL) {
649 if ((pinfo->pshm_flags & (PSHM_DEFINED | PSHM_ALLOCATED))
655 error = mac_posixshm_check_truncate(kauth_cred_get(), pinfo, size);
676 pinfo->pshm_flags &= ~PSHM_DEFINED;
677 pinfo->pshm_flags = PSHM_ALLOCATED;
678 pinfo->pshm_memobject = (void *)mem_object;
679 pinfo->pshm_length = size;
701 struct pshminfo *pinfo;
707 if ((pinfo = pnode->pinfo) == PSHMINFO_NULL){
713 error = mac_posixshm_check_stat(kauth_cred_get(), pinfo);
723 sb64->st_mode = pinfo->pshm_mode;
724 sb64->st_uid = pinfo->pshm_uid;
725 sb64->st_gid = pinfo->pshm_gid;
726 sb64->st_size = pinfo->pshm_length;
730 sb->st_mode = pinfo->pshm_mode;
731 sb->st_uid = pinfo->pshm_uid;
732 sb->st_gid = pinfo->pshm_gid;
733 sb->st_size = pinfo->pshm_length;
745 pshm_access(struct pshminfo *pinfo, int mode, kauth_cred_t cred, __unused proc_t p)
757 if (kauth_cred_getuid(cred) == pinfo->pshm_uid) {
762 return ((pinfo->pshm_mode & mask) == mask ? 0 : EACCES);
766 if (kauth_cred_ismember_gid(cred, pinfo->pshm_gid, &is_member) == 0 && is_member) {
771 return ((pinfo->pshm_mode & mask) == mask ? 0 : EACCES);
779 return ((pinfo->pshm_mode & mask) == mask ? 0 : EACCES);
794 struct pshminfo * pinfo;
816 if ((pinfo = pnode->pinfo) == PSHMINFO_NULL) {
821 if ((pinfo->pshm_flags & PSHM_ALLOCATED) != PSHM_ALLOCATED) {
825 if ((off_t)user_size > pinfo->pshm_length) {
829 if ((off_t)(user_size + file_pos) > pinfo->pshm_length) {
833 if ((mem_object = pinfo->pshm_memobject) == NULL) {
839 error = mac_posixshm_check_mmap(kauth_cred_get(), pinfo, prot, flags);
867 pinfo->pshm_memobject, file_pos, docow,
882 pinfo->pshm_flags |= (PSHM_MAPPED | PSHM_INUSE);
907 struct pshminfo *pinfo;
915 pinfo = PSHMINFO_NULL;
958 error = pshm_cache_search(&pinfo, &nd, &pcache);
973 if ((pinfo->pshm_flags & (PSHM_DEFINED | PSHM_ALLOCATED))==0) {
979 if (pinfo->pshm_flags & PSHM_INDELETE) {
985 error = mac_posixshm_check_unlink(kauth_cred_get(), pinfo, nameptr);
992 AUDIT_ARG(posix_ipc_perm, pinfo->pshm_uid, pinfo->pshm_gid,
993 pinfo->pshm_mode);
999 pinfo->pshm_flags |= PSHM_INDELETE;
1001 pinfo->pshm_flags |= PSHM_REMOVED;
1003 if (!--pinfo->pshm_usecount) {
1012 if (pinfo->pshm_memobject != NULL)
1013 mach_memory_entry_port_release(pinfo->pshm_memobject);
1015 FREE(pinfo,M_SHM);
1030 struct pshminfo *pinfo;
1032 if ((pinfo = pnode->pinfo) == PSHMINFO_NULL)
1035 if ((pinfo->pshm_flags & PSHM_ALLOCATED) != PSHM_ALLOCATED) {
1039 if(!pinfo->pshm_usecount) {
1043 pinfo->pshm_usecount--; /* release this fd's reference */
1045 if ((pinfo->pshm_flags & PSHM_REMOVED) && !pinfo->pshm_usecount) {
1051 if (pinfo->pshm_memobject != NULL)
1052 mach_memory_entry_port_release(pinfo->pshm_memobject);
1055 mac_posixshm_label_destroy(pinfo);
1057 FREE(pinfo,M_SHM);
1113 struct pshminfo *pinfo;
1117 if ((pinfo = pshm->pinfo) == PSHMINFO_NULL){
1125 sb->vst_mode = pinfo->pshm_mode;
1126 sb->vst_uid = pinfo->pshm_uid;
1127 sb->vst_gid = pinfo->pshm_gid;
1128 sb->vst_size = pinfo->pshm_length;
1131 bcopy(&pinfo->pshm_name[0], &info->pshm_name[0], PSHMNAMLEN+1);
1147 pshm = pnode->pinfo;