Print this page
patch as-lock-macro-simplification
*** 1271,1286 ****
* If we have a very large segment, this may fail, so
* we have to check for that, even though we ignore
* other return values from as_setprot.
*/
! AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
seg = as_segat(curproc->p_as, (caddr_t)end);
if (seg != NULL)
SEGOP_GETPROT(seg, (caddr_t)end, zfoddiff - 1,
&zprot);
! AS_LOCK_EXIT(as, &as->a_lock);
if (seg != NULL && (zprot & PROT_WRITE) == 0) {
if (as_setprot(as, (caddr_t)end, zfoddiff - 1,
zprot | PROT_WRITE) == ENOMEM) {
error = ENOMEM;
--- 1271,1286 ----
* If we have a very large segment, this may fail, so
* we have to check for that, even though we ignore
* other return values from as_setprot.
*/
! AS_LOCK_ENTER(as, RW_READER);
seg = as_segat(curproc->p_as, (caddr_t)end);
if (seg != NULL)
SEGOP_GETPROT(seg, (caddr_t)end, zfoddiff - 1,
&zprot);
! AS_LOCK_EXIT(as);
if (seg != NULL && (zprot & PROT_WRITE) == 0) {
if (as_setprot(as, (caddr_t)end, zfoddiff - 1,
zprot | PROT_WRITE) == ENOMEM) {
error = ENOMEM;