diff options
Diffstat (limited to 'usr')
| -rw-r--r-- | usr/src/cmd/dlmgmtd/dlmgmt_door.c | 4 | ||||
| -rw-r--r-- | usr/src/cmd/svc/shell/net_include.sh | 3 | ||||
| -rw-r--r-- | usr/src/uts/common/io/dls/dls_mgmt.c | 10 | ||||
| -rw-r--r-- | usr/src/uts/common/io/softmac/softmac_dev.c | 5 | ||||
| -rw-r--r-- | usr/src/uts/common/io/softmac/softmac_fp.c | 2 | ||||
| -rw-r--r-- | usr/src/uts/common/io/softmac/softmac_pkt.c | 46 | ||||
| -rw-r--r-- | usr/src/uts/common/sys/softmac_impl.h | 9 |
7 files changed, 21 insertions, 58 deletions
diff --git a/usr/src/cmd/dlmgmtd/dlmgmt_door.c b/usr/src/cmd/dlmgmtd/dlmgmt_door.c index c2c86ede72..68bfa82719 100644 --- a/usr/src/cmd/dlmgmtd/dlmgmt_door.c +++ b/usr/src/cmd/dlmgmtd/dlmgmt_door.c @@ -459,7 +459,6 @@ dlmgmt_upcall_getattr(void *argp, void *retp) dlmgmt_upcall_arg_getattr_t *getattr = argp; dlmgmt_getattr_retval_t *retvalp = retp; dlmgmt_link_t *linkp; - int err = 0; /* * Hold the reader lock to access the link @@ -469,7 +468,7 @@ dlmgmt_upcall_getattr(void *argp, void *retp) /* * The link does not exist. */ - err = ENOENT; + retvalp->lr_err = ENOENT; goto done; } @@ -477,7 +476,6 @@ dlmgmt_upcall_getattr(void *argp, void *retp) done: dlmgmt_table_unlock(); - retvalp->lr_err = err; } static void diff --git a/usr/src/cmd/svc/shell/net_include.sh b/usr/src/cmd/svc/shell/net_include.sh index 71dc6a8256..e8d1c75f62 100644 --- a/usr/src/cmd/svc/shell/net_include.sh +++ b/usr/src/cmd/svc/shell/net_include.sh @@ -667,7 +667,8 @@ net_reconfigure () # Is this a reconfigure boot? If not, then there's nothing # for us to do. # - reconfig=`svcprop -c -p system/reconfigure system/svc/restarter:default` + reconfig=`svcprop -c -p system/reconfigure \ + system/svc/restarter:default 2>/dev/null` if [ $? -ne 0 -o "$reconfig" = false ]; then return 0 fi diff --git a/usr/src/uts/common/io/dls/dls_mgmt.c b/usr/src/uts/common/io/dls/dls_mgmt.c index 576e13ac2c..9e509e163d 100644 --- a/usr/src/uts/common/io/dls/dls_mgmt.c +++ b/usr/src/uts/common/io/dls/dls_mgmt.c @@ -1300,17 +1300,19 @@ done: int dls_devnet_setzid(const char *link, zoneid_t zid) { - dls_devnet_t *ddp; - int err; - zoneid_t old_zid; + dls_devnet_t *ddp; + int err; + zoneid_t old_zid; mac_perim_handle_t mph; if ((err = dls_devnet_hold_by_name(link, &ddp)) != 0) return (err); err = mac_perim_enter_by_macname(ddp->dd_mac, &mph); - if (err != 0) + if (err != 0) { + dls_devnet_rele(ddp); return (err); + } if ((old_zid = ddp->dd_zid) == zid) { mac_perim_exit(mph); diff --git a/usr/src/uts/common/io/softmac/softmac_dev.c b/usr/src/uts/common/io/softmac/softmac_dev.c index 37c5740846..0a64e11a8a 100644 --- a/usr/src/uts/common/io/softmac/softmac_dev.c +++ b/usr/src/uts/common/io/softmac/softmac_dev.c @@ -254,8 +254,6 @@ softmac_cmn_open(queue_t *rq, dev_t *devp, int flag, int sflag, cred_t *credp) slp->sl_wq = WR(rq); cv_init(&slp->sl_cv, NULL, CV_DRIVER, NULL); mutex_init(&slp->sl_mutex, NULL, MUTEX_DRIVER, NULL); - cv_init(&slp->sl_ctl_cv, NULL, CV_DRIVER, NULL); - mutex_init(&slp->sl_ctl_mutex, NULL, MUTEX_DRIVER, NULL); slp->sl_pending_prim = DL_PRIM_INVAL; rq->q_ptr = WR(rq)->q_ptr = slp; qprocson(rq); @@ -289,14 +287,11 @@ softmac_mod_close(queue_t *rq) slp->sl_lh = NULL; ASSERT(slp->sl_ack_mp == NULL); - ASSERT(slp->sl_ctl_inprogress == B_FALSE); ASSERT(slp->sl_pending_prim == DL_PRIM_INVAL); ASSERT(slp->sl_pending_ioctl == B_FALSE); cv_destroy(&slp->sl_cv); mutex_destroy(&slp->sl_mutex); - cv_destroy(&slp->sl_ctl_cv); - mutex_destroy(&slp->sl_ctl_mutex); kmem_free(slp, sizeof (*slp)); return (0); diff --git a/usr/src/uts/common/io/softmac/softmac_fp.c b/usr/src/uts/common/io/softmac/softmac_fp.c index 9568de1332..4086007daf 100644 --- a/usr/src/uts/common/io/softmac/softmac_fp.c +++ b/usr/src/uts/common/io/softmac/softmac_fp.c @@ -671,6 +671,8 @@ softmac_wput_single_nondata(softmac_upper_t *sup, mblk_t *mp) */ if (dbtype == M_IOCTL) miocnak(sup->su_wq, mp, 0, EINVAL); + else + freemsg(mp); /* * This stream is either IP or ARP. See whether diff --git a/usr/src/uts/common/io/softmac/softmac_pkt.c b/usr/src/uts/common/io/softmac/softmac_pkt.c index b0d613b9be..01b8f70abc 100644 --- a/usr/src/uts/common/io/softmac/softmac_pkt.c +++ b/usr/src/uts/common/io/softmac/softmac_pkt.c @@ -92,38 +92,6 @@ failed: #define ACKTIMEOUT (10 * hz) -/* - * Serialize control message processing. - */ -static void -softmac_serialize_enter(softmac_lower_t *slp) -{ - mutex_enter(&slp->sl_ctl_mutex); - while (slp->sl_ctl_inprogress) - cv_wait(&slp->sl_ctl_cv, &slp->sl_ctl_mutex); - - ASSERT(!slp->sl_ctl_inprogress); - ASSERT(!slp->sl_pending_ioctl); - ASSERT(slp->sl_pending_prim == DL_PRIM_INVAL); - - slp->sl_ctl_inprogress = B_TRUE; - mutex_exit(&slp->sl_ctl_mutex); -} - -static void -softmac_serialize_exit(softmac_lower_t *slp) -{ - mutex_enter(&slp->sl_ctl_mutex); - - ASSERT(slp->sl_ctl_inprogress); - ASSERT(!slp->sl_pending_ioctl); - ASSERT(slp->sl_pending_prim == DL_PRIM_INVAL); - - slp->sl_ctl_inprogress = B_FALSE; - cv_broadcast(&slp->sl_ctl_cv); - mutex_exit(&slp->sl_ctl_mutex); -} - static int dlpi_get_errno(t_uscalar_t error, t_uscalar_t unix_errno) { @@ -135,9 +103,13 @@ softmac_output(softmac_lower_t *slp, mblk_t *mp, t_uscalar_t dl_prim, t_uscalar_t ack, mblk_t **mpp) { union DL_primitives *dlp; + mac_perim_handle_t mph; int err = 0; - softmac_serialize_enter(slp); + mac_perim_enter_by_mh(slp->sl_softmac->smac_mh, &mph); + + ASSERT(!slp->sl_pending_ioctl); + ASSERT(slp->sl_pending_prim == DL_PRIM_INVAL); /* * Record the pending DLPI primitive. @@ -185,14 +157,16 @@ softmac_output(softmac_lower_t *slp, mblk_t *mp, t_uscalar_t dl_prim, else freemsg(mp); - softmac_serialize_exit(slp); + mac_perim_exit(mph); return (err); } void softmac_ioctl_tx(softmac_lower_t *slp, mblk_t *mp, mblk_t **mpp) { - softmac_serialize_enter(slp); + mac_perim_handle_t mph; + + mac_perim_enter_by_mh(slp->sl_softmac->smac_mh, &mph); /* * Record that ioctl processing is currently in progress. @@ -213,7 +187,7 @@ softmac_ioctl_tx(softmac_lower_t *slp, mblk_t *mp, mblk_t **mpp) ASSERT(mpp != NULL && mp != NULL); *mpp = mp; - softmac_serialize_exit(slp); + mac_perim_exit(mph); } int diff --git a/usr/src/uts/common/sys/softmac_impl.h b/usr/src/uts/common/sys/softmac_impl.h index 83caa23c82..3e578fe38f 100644 --- a/usr/src/uts/common/sys/softmac_impl.h +++ b/usr/src/uts/common/sys/softmac_impl.h @@ -60,15 +60,6 @@ typedef struct softmac_lower_s { softmac_lower_rxinfo_t *sl_rxinfo; /* - * sl_ctl_inprogress is used to serialize the control path. It will - * be set when either an ioctl or an M_{PC,}PROTO message is received - * from the upper layer, and will be cleared when processing done. - */ - kmutex_t sl_ctl_mutex; - kcondvar_t sl_ctl_cv; - boolean_t sl_ctl_inprogress; - - /* * When a control message is processed, either sl_pending_prim or * sl_pending_ioctl will be set. They will be cleared when the * acknowledgement of the specific control message is received |
