Deleted Added
full compact
1c1
< /* $FreeBSD: head/sys/kern/sysv_shm.c 79224 2001-07-04 16:20:28Z dillon $ */
---
> /* $FreeBSD: head/sys/kern/sysv_shm.c 82607 2001-08-31 00:02:18Z dillon $ */
235a236,238
> /*
> * MPSAFE
> */
243c246
< int error;
---
> int error = 0;
245,246c248
< if (!jail_sysvipc_allowed && jailed(p->p_ucred))
< return (ENOSYS);
---
> mtx_lock(&Giant);
247a250,254
> if (!jail_sysvipc_allowed && jailed(p->p_ucred)) {
> error = ENOSYS;
> goto done2;
> }
>
249,251c256,260
< if (shmmap_s == NULL)
< return EINVAL;
< for (i = 0; i < shminfo.shmseg; i++, shmmap_s++)
---
> if (shmmap_s == NULL) {
> error = EINVAL;
> goto done2;
> }
> for (i = 0; i < shminfo.shmseg; i++, shmmap_s++) {
253c262
< shmmap_s->va == (vm_offset_t)uap->shmaddr)
---
> shmmap_s->va == (vm_offset_t)uap->shmaddr) {
255,256c264,269
< if (i == shminfo.shmseg)
< return EINVAL;
---
> }
> }
> if (i == shminfo.shmseg) {
> error = EINVAL;
> goto done2;
> }
258c271,273
< return error;
---
> done2:
> mtx_unlock(&Giant);
> return (error);
268a284,286
> /*
> * MPSAFE
> */
274c292
< int error, i, flags;
---
> int i, flags;
281a300
> int error = 0;
283c302
< GIANT_REQUIRED;
---
> mtx_lock(&Giant);
285,286c304,307
< if (!jail_sysvipc_allowed && jailed(p->p_ucred))
< return (ENOSYS);
---
> if (!jail_sysvipc_allowed && jailed(p->p_ucred)) {
> error = ENOSYS;
> goto done2;
> }
297,298c318,321
< if (shmseg == NULL)
< return EINVAL;
---
> if (shmseg == NULL) {
> error = EINVAL;
> goto done2;
> }
302c325
< return error;
---
> goto done2;
308,309c331,334
< if (i >= shminfo.shmseg)
< return EMFILE;
---
> if (i >= shminfo.shmseg) {
> error = EMFILE;
> goto done2;
> }
321c346
< if (uap->shmflg & SHM_RND)
---
> if (uap->shmflg & SHM_RND) {
323c348
< else if (((vm_offset_t)uap->shmaddr & (SHMLBA-1)) == 0)
---
> } else if (((vm_offset_t)uap->shmaddr & (SHMLBA-1)) == 0) {
325,326c350,353
< else
< return EINVAL;
---
> } else {
> error = EINVAL;
> goto done2;
> }
341c368,369
< return ENOMEM;
---
> error = ENOMEM;
> goto done2;
352c380,382
< return 0;
---
> done2:
> mtx_unlock(&Giant);
> return (error);
372a403,405
> /*
> * MPSAFE
> */
379c412
< int error;
---
> int error = 0;
383,384c416
< if (!jail_sysvipc_allowed && jailed(p->p_ucred))
< return (ENOSYS);
---
> mtx_lock(&Giant);
385a418,422
> if (!jail_sysvipc_allowed && jailed(p->p_ucred)) {
> error = ENOSYS;
> goto done2;
> }
>
387,388c424,427
< if (shmseg == NULL)
< return EINVAL;
---
> if (shmseg == NULL) {
> error = EINVAL;
> goto done2;
> }
393c432
< return error;
---
> goto done2;
405c444
< return error;
---
> goto done2;
409c448,449
< return ((sy_call_t *)shmctl)(p, uap);
---
> error = ((sy_call_t *)shmctl)(p, uap);
> break;
411c451,453
< return 0;
---
> done2:
> mtx_unlock(&Giant);
> return (error);
424a467,469
> /*
> * MPSAFE
> */
430c475
< int error;
---
> int error = 0;
434c479
< GIANT_REQUIRED;
---
> mtx_lock(&Giant);
436,437c481,484
< if (!jail_sysvipc_allowed && jailed(p->p_ucred))
< return (ENOSYS);
---
> if (!jail_sysvipc_allowed && jailed(p->p_ucred)) {
> error = ENOSYS;
> goto done2;
> }
440,441c487,490
< if (shmseg == NULL)
< return EINVAL;
---
> if (shmseg == NULL) {
> error = EINVAL;
> goto done2;
> }
446c495
< return error;
---
> goto done2;
449c498
< return error;
---
> goto done2;
454c503
< return error;
---
> goto done2;
457c506
< return error;
---
> goto done2;
468c517
< return error;
---
> goto done2;
481c530,531
< return EINVAL;
---
> error = EINVAL;
> break;
483c533,535
< return 0;
---
> done2:
> mtx_unlock(&Giant);
> return (error);
609a662,664
> /*
> * MPSAFE
> */
615c670,671
< int segnum, mode, error;
---
> int segnum, mode;
> int error;
617,618c673
< if (!jail_sysvipc_allowed && jailed(p->p_ucred))
< return (ENOSYS);
---
> mtx_lock(&Giant);
619a675,679
> if (!jail_sysvipc_allowed && jailed(p->p_ucred)) {
> error = ENOSYS;
> goto done2;
> }
>
628c688
< return error;
---
> goto done2;
630,631c690,693
< if ((uap->shmflg & IPC_CREAT) == 0)
< return ENOENT;
---
> if ((uap->shmflg & IPC_CREAT) == 0) {
> error = ENOENT;
> goto done2;
> }
633c695,698
< return shmget_allocate_segment(p, uap, mode);
---
> error = shmget_allocate_segment(p, uap, mode);
> done2:
> mtx_unlock(&Giant);
> return (error);
635a701,703
> /*
> * MPSAFE
> */
646a715
> int error;
648,649c717
< if (!jail_sysvipc_allowed && jailed(p->p_ucred))
< return (ENOSYS);
---
> mtx_lock(&Giant);
651,653c719,731
< if (uap->which >= sizeof(shmcalls)/sizeof(shmcalls[0]))
< return EINVAL;
< return ((*shmcalls[uap->which])(p, &uap->a2));
---
> if (!jail_sysvipc_allowed && jailed(p->p_ucred)) {
> error = ENOSYS;
> goto done2;
> }
>
> if (uap->which >= sizeof(shmcalls)/sizeof(shmcalls[0])) {
> error = EINVAL;
> goto done2;
> }
> error = (*shmcalls[uap->which])(p, &uap->a2);
> done2:
> mtx_unlock(&Giant);
> return (error);