diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/inet/ip/ipsecah.c | 28 | ||||
-rw-r--r-- | usr/src/uts/common/inet/ip/ipsecesp.c | 26 | ||||
-rw-r--r-- | usr/src/uts/common/inet/ip/keysock.c | 37 | ||||
-rw-r--r-- | usr/src/uts/common/io/ib/clients/rds/rdsddi.c | 7 | ||||
-rw-r--r-- | usr/src/uts/common/os/sunmdi.c | 10 |
5 files changed, 68 insertions, 40 deletions
diff --git a/usr/src/uts/common/inet/ip/ipsecah.c b/usr/src/uts/common/inet/ip/ipsecah.c index 05e92c4fa4..455b9af72f 100644 --- a/usr/src/uts/common/inet/ip/ipsecah.c +++ b/usr/src/uts/common/inet/ip/ipsecah.c @@ -135,7 +135,8 @@ static void ah_outbound_finish(mblk_t *, ip_xmit_attr_t *); static int ipsecah_open(queue_t *, dev_t *, int, int, cred_t *); static int ipsecah_close(queue_t *, int, cred_t *); -static void ipsecah_wput(queue_t *, mblk_t *); +static int ipsecah_rput(queue_t *, mblk_t *); +static int ipsecah_wput(queue_t *, mblk_t *); static boolean_t ah_register_out(uint32_t, uint32_t, uint_t, ipsecah_stack_t *, cred_t *); static void *ipsecah_stack_init(netstackid_t stackid, netstack_t *ns); @@ -151,12 +152,12 @@ static struct module_info info = { }; static struct qinit rinit = { - (pfi_t)putnext, NULL, ipsecah_open, ipsecah_close, NULL, &info, + ipsecah_rput, NULL, ipsecah_open, ipsecah_close, NULL, &info, NULL }; static struct qinit winit = { - (pfi_t)ipsecah_wput, NULL, ipsecah_open, ipsecah_close, NULL, &info, + ipsecah_wput, NULL, ipsecah_open, ipsecah_close, NULL, &info, NULL }; @@ -1446,9 +1447,19 @@ ah_keysock_no_socket(mblk_t *mp, ipsecah_stack_t *ahstack) } /* + * AH module read put routine. + */ +static int +ipsecah_rput(queue_t *q, mblk_t *mp) +{ + putnext(q, mp); + return (0); +} + +/* * AH module write put routine. */ -static void +static int ipsecah_wput(queue_t *q, mblk_t *mp) { ipsec_info_t *ii; @@ -1498,7 +1509,7 @@ ipsecah_wput(queue_t *q, mblk_t *mp) case ND_GET: if (nd_getset(q, ahstack->ipsecah_g_nd, mp)) { qreply(q, mp); - return; + return (0); } else { iocp->ioc_error = ENOENT; } @@ -1512,7 +1523,7 @@ ipsecah_wput(queue_t *q, mblk_t *mp) iocp->ioc_count = 0; mp->b_datap->db_type = M_IOCACK; qreply(q, mp); - return; + return (0); } default: ah3dbg(ahstack, @@ -1520,6 +1531,7 @@ ipsecah_wput(queue_t *q, mblk_t *mp) mp->b_datap->db_type)); putnext(q, mp); } + return (0); } /* Refactor me */ @@ -2885,7 +2897,7 @@ ah_process_ip_options_v6(mblk_t *mp, ipsa_t *assoc, int *length_to_skip, { ip6_t *ip6h; ip6_t *oip6h; - mblk_t *phdr_mp; + mblk_t *phdr_mp; int option_length; uint_t ah_align_sz; uint_t ah_offset; @@ -3003,7 +3015,7 @@ ah_process_ip_options_v4(mblk_t *mp, ipsa_t *assoc, int *length_to_skip, uint32_t option_length; ipha_t *ipha; ipha_t *oipha; - mblk_t *phdr_mp; + mblk_t *phdr_mp; int size; uchar_t *optptr; uint8_t optval; diff --git a/usr/src/uts/common/inet/ip/ipsecesp.c b/usr/src/uts/common/inet/ip/ipsecesp.c index ce7a4d0f4f..8f6fa27487 100644 --- a/usr/src/uts/common/inet/ip/ipsecesp.c +++ b/usr/src/uts/common/inet/ip/ipsecesp.c @@ -107,7 +107,8 @@ static ipsecespparam_t lcl_param_arr[] = { static int ipsecesp_open(queue_t *, dev_t *, int, int, cred_t *); static int ipsecesp_close(queue_t *, int, cred_t *); -static void ipsecesp_wput(queue_t *, mblk_t *); +static int ipsecesp_rput(queue_t *, mblk_t *); +static int ipsecesp_wput(queue_t *, mblk_t *); static void *ipsecesp_stack_init(netstackid_t stackid, netstack_t *ns); static void ipsecesp_stack_fini(netstackid_t stackid, void *arg); @@ -132,12 +133,12 @@ static struct module_info info = { }; static struct qinit rinit = { - (pfi_t)putnext, NULL, ipsecesp_open, ipsecesp_close, NULL, &info, + ipsecesp_rput, NULL, ipsecesp_open, ipsecesp_close, NULL, &info, NULL }; static struct qinit winit = { - (pfi_t)ipsecesp_wput, NULL, ipsecesp_open, ipsecesp_close, NULL, &info, + ipsecesp_wput, NULL, ipsecesp_open, ipsecesp_close, NULL, &info, NULL }; @@ -1801,7 +1802,7 @@ esp_crypto_failed(mblk_t *data_mp, boolean_t is_inbound, int kef_rc, (data)->cd_offset = off; \ } else { \ (data)->cd_format = CRYPTO_DATA_MBLK; \ - (data)->cd_mp = mp; \ + (data)->cd_mp = mp; \ (data)->cd_offset = off; \ } \ (data)->cd_length = len; \ @@ -3839,9 +3840,19 @@ esp_keysock_no_socket(mblk_t *mp, ipsecesp_stack_t *espstack) } /* + * ESP module read put routine. + */ +static int +ipsecesp_rput(queue_t *q, mblk_t *mp) +{ + putnext(q, mp); + return (0); +} + +/* * ESP module write put routine. */ -static void +static int ipsecesp_wput(queue_t *q, mblk_t *mp) { ipsec_info_t *ii; @@ -3891,7 +3902,7 @@ ipsecesp_wput(queue_t *q, mblk_t *mp) case ND_GET: if (nd_getset(q, espstack->ipsecesp_g_nd, mp)) { qreply(q, mp); - return; + return (0); } else { iocp->ioc_error = ENOENT; } @@ -3905,7 +3916,7 @@ ipsecesp_wput(queue_t *q, mblk_t *mp) iocp->ioc_count = 0; mp->b_datap->db_type = M_IOCACK; qreply(q, mp); - return; + return (0); } default: esp3dbg(espstack, @@ -3913,6 +3924,7 @@ ipsecesp_wput(queue_t *q, mblk_t *mp) mp->b_datap->db_type)); putnext(q, mp); } + return (0); } /* diff --git a/usr/src/uts/common/inet/ip/keysock.c b/usr/src/uts/common/inet/ip/keysock.c index a01eeaa3c8..47435bb727 100644 --- a/usr/src/uts/common/inet/ip/keysock.c +++ b/usr/src/uts/common/inet/ip/keysock.c @@ -146,9 +146,9 @@ static keysockparam_t lcl_param_arr[] = { static int keysock_close(queue_t *, int, cred_t *); static int keysock_open(queue_t *, dev_t *, int, int, cred_t *); -static void keysock_wput(queue_t *, mblk_t *); -static void keysock_rput(queue_t *, mblk_t *); -static void keysock_rsrv(queue_t *); +static int keysock_wput(queue_t *, mblk_t *); +static int keysock_rput(queue_t *, mblk_t *); +static int keysock_rsrv(queue_t *); static void keysock_passup(mblk_t *, sadb_msg_t *, minor_t, keysock_consumer_t *, boolean_t, keysock_stack_t *); static void *keysock_stack_init(netstackid_t stackid, netstack_t *ns); @@ -159,12 +159,12 @@ static struct module_info info = { }; static struct qinit rinit = { - (pfi_t)keysock_rput, (pfi_t)keysock_rsrv, keysock_open, keysock_close, + keysock_rput, keysock_rsrv, keysock_open, keysock_close, NULL, &info }; static struct qinit winit = { - (pfi_t)keysock_wput, NULL, NULL, NULL, NULL, &info + keysock_wput, NULL, NULL, NULL, NULL, &info }; struct streamtab keysockinfo = { @@ -1916,7 +1916,7 @@ keysock_parse(queue_t *q, mblk_t *mp) * as PF_KEY sockets are concerned. I do some conversion, but not as much * as IP/rts does. */ -static void +static int keysock_wput(queue_t *q, mblk_t *mp) { uchar_t *rptr = mp->b_rptr; @@ -1937,7 +1937,7 @@ keysock_wput(queue_t *q, mblk_t *mp) ks1dbg(keystack, ("Huh? wput for an consumer instance (%d)?\n", kc->kc_sa_type)); putnext(q, mp); - return; + return (0); } ks = (keysock_t *)q->q_ptr; keystack = ks->keysock_keystack; @@ -1951,7 +1951,7 @@ keysock_wput(queue_t *q, mblk_t *mp) */ ks2dbg(keystack, ("raw M_DATA in keysock.\n")); freemsg(mp); - return; + return (0); case M_PROTO: case M_PCPROTO: if ((mp->b_wptr - rptr) >= sizeof (struct T_data_req)) { @@ -1961,7 +1961,7 @@ keysock_wput(queue_t *q, mblk_t *mp) ks2dbg(keystack, ("No data after DATA_REQ.\n")); freemsg(mp); - return; + return (0); } freeb(mp); mp = mp1; @@ -1974,11 +1974,12 @@ keysock_wput(queue_t *q, mblk_t *mp) ks3dbg(keystack, ("In default wput case (%d %d).\n", mp->b_datap->db_type, ((union T_primitives *)rptr)->type)); keysock_wput_other(q, mp); - return; + return (0); } /* I now have a PF_KEY message in an M_DATA block, pointed to by mp. */ keysock_parse(q, mp); + return (0); } /* BELOW THIS LINE ARE ROUTINES INCLUDING AND RELATED TO keysock_rput(). */ @@ -2329,7 +2330,7 @@ error: * Keysock's read service procedure is there only for PF_KEY reply * messages that really need to reach the top. */ -static void +static int keysock_rsrv(queue_t *q) { mblk_t *mp; @@ -2339,9 +2340,10 @@ keysock_rsrv(queue_t *q) putnext(q, mp); } else { (void) putbq(q, mp); - return; + return (0); } } + return (0); } /* @@ -2349,7 +2351,7 @@ keysock_rsrv(queue_t *q) * ESP, AH, etc. I should only see KEYSOCK_OUT and KEYSOCK_HELLO_ACK * messages on my read queues. */ -static void +static int keysock_rput(queue_t *q, mblk_t *mp) { keysock_consumer_t *kc = (keysock_consumer_t *)q->q_ptr; @@ -2374,7 +2376,7 @@ keysock_rput(queue_t *q, mblk_t *mp) ("Hmmm, a non M_CTL (%d, 0x%x) on keysock_rput.\n", mp->b_datap->db_type, mp->b_datap->db_type)); putnext(q, mp); - return; + return (0); } ii = (ipsec_info_t *)mp->b_rptr; @@ -2418,7 +2420,7 @@ keysock_rput(queue_t *q, mblk_t *mp) ("One flush/dump message back from %d," " more to go.\n", samsg->sadb_msg_satype)); freemsg(mp1); - return; + return (0); } samsg->sadb_msg_errno = @@ -2429,18 +2431,19 @@ keysock_rput(queue_t *q, mblk_t *mp) } keysock_passup(mp1, samsg, serial, kc, (samsg->sadb_msg_type == SADB_DUMP), keystack); - return; + return (0); case KEYSOCK_HELLO_ACK: /* Aha, now we can link in the consumer! */ ksa = (keysock_hello_ack_t *)ii; keysock_link_consumer(ksa->ks_hello_satype, kc); freemsg(mp); - return; + return (0); default: ks1dbg(keystack, ("Hmmm, an IPsec info I'm not used to, 0x%x\n", ii->ipsec_info_type)); putnext(q, mp); } + return (0); } /* diff --git a/usr/src/uts/common/io/ib/clients/rds/rdsddi.c b/usr/src/uts/common/io/ib/clients/rds/rdsddi.c index 35e7a55154..9ed6bdab8c 100644 --- a/usr/src/uts/common/io/ib/clients/rds/rdsddi.c +++ b/usr/src/uts/common/io/ib/clients/rds/rdsddi.c @@ -868,7 +868,7 @@ done: return (error); } -static void +static int rds_rsrv(queue_t *q) { rds_t *rds = (rds_t *)q->q_ptr; @@ -884,6 +884,7 @@ rds_rsrv(queue_t *q) /* No more messages in the q, unstall the socket */ rds_transport_ops->rds_transport_resume_port(ntohs(rds->rds_port)); + return (0); } int @@ -949,11 +950,11 @@ static struct module_info info = { }; static struct qinit rinit = { - NULL, (pfi_t)rds_rsrv, rds_open, rds_close, NULL, &info + NULL, rds_rsrv, rds_open, rds_close, NULL, &info }; static struct qinit winit = { - (pfi_t)rds_wput, NULL, rds_open, rds_close, NULL, &info, + rds_wput, NULL, rds_open, rds_close, NULL, &info, NULL, rds_wrw, NULL, STRUIOT_STANDARD }; diff --git a/usr/src/uts/common/os/sunmdi.c b/usr/src/uts/common/os/sunmdi.c index 5bbef59e9c..0905a0852b 100644 --- a/usr/src/uts/common/os/sunmdi.c +++ b/usr/src/uts/common/os/sunmdi.c @@ -21,6 +21,7 @@ /* * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014 Nexenta Systems Inc. All rights reserved. + * Copyright (c) 2018, Joyent, Inc. */ /* @@ -1478,11 +1479,10 @@ i_mdi_client_free(mdi_vhci_t *vh, mdi_client_t *ct) mutex_destroy(&ct->ct_mutex); kmem_free(ct, sizeof (*ct)); - if (cdip != NULL) { - MDI_VHCI_CLIENT_UNLOCK(vh); - (void) i_mdi_devinfo_remove(vdip, cdip, flags); - MDI_VHCI_CLIENT_LOCK(vh); - } + MDI_VHCI_CLIENT_UNLOCK(vh); + (void) i_mdi_devinfo_remove(vdip, cdip, flags); + MDI_VHCI_CLIENT_LOCK(vh); + return (rv); } |