Print this page
seg_inherit_notsup is redundant since segop_inherit checks for NULL properly


2381                                          * Find segment for current address
2382                                          * because current segment just got
2383                                          * split or concatenated
2384                                          */
2385                                         seg = as_segat(as, raddr);
2386                                         if (seg == NULL) {
2387                                                 AS_LOCK_EXIT(as, &as->a_lock);
2388                                                 return (ENOMEM);
2389                                         }
2390                                 } else {
2391                                         /*
2392                                          * Regular error
2393                                          */
2394                                         AS_LOCK_EXIT(as, &as->a_lock);
2395                                         return (error);
2396                                 }
2397                         }
2398                         break;
2399 
2400                 case MC_INHERIT_ZERO:
2401                         if (seg->s_ops->inherit == NULL) {
2402                                 error = ENOTSUP;
2403                         } else {
2404                                 error = segop_inherit(seg, raddr, ssize,
2405                                     SEGP_INH_ZERO);
2406                         }
2407                         if (error != 0) {
2408                                 AS_LOCK_EXIT(as, &as->a_lock);
2409                                 return (error);
2410                         }
2411                         break;
2412 
2413                 /*
2414                  * Can't happen.
2415                  */
2416                 default:
2417                         panic("as_ctl: bad operation %d", func);
2418                         /*NOTREACHED*/
2419                 }
2420 
2421                 rsize -= ssize;
2422                 raddr += ssize;
2423         }
2424 
2425         if (func == MC_LOCK)
2426                 kmem_free(mlock_map, mlock_size * sizeof (ulong_t));




2381                                          * Find segment for current address
2382                                          * because current segment just got
2383                                          * split or concatenated
2384                                          */
2385                                         seg = as_segat(as, raddr);
2386                                         if (seg == NULL) {
2387                                                 AS_LOCK_EXIT(as, &as->a_lock);
2388                                                 return (ENOMEM);
2389                                         }
2390                                 } else {
2391                                         /*
2392                                          * Regular error
2393                                          */
2394                                         AS_LOCK_EXIT(as, &as->a_lock);
2395                                         return (error);
2396                                 }
2397                         }
2398                         break;
2399 
2400                 case MC_INHERIT_ZERO:
2401                         error = segop_inherit(seg, raddr, ssize, SEGP_INH_ZERO);





2402                         if (error != 0) {
2403                                 AS_LOCK_EXIT(as, &as->a_lock);
2404                                 return (error);
2405                         }
2406                         break;
2407 
2408                 /*
2409                  * Can't happen.
2410                  */
2411                 default:
2412                         panic("as_ctl: bad operation %d", func);
2413                         /*NOTREACHED*/
2414                 }
2415 
2416                 rsize -= ssize;
2417                 raddr += ssize;
2418         }
2419 
2420         if (func == MC_LOCK)
2421                 kmem_free(mlock_map, mlock_size * sizeof (ulong_t));