From 746e5bf09b1bac72c432687fb613f5e9fbd4a6f2 Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Mon, 1 Mar 2004 03:14:23 +0000 Subject: [PATCH] Rename dup_sockaddr() to sodupsockaddr() for consistency with other functions in kern_socket.c. Rename the "canwait" field to "mflags" and pass M_WAITOK and M_NOWAIT in from the caller context rather than "1" or "0". Correct mflags pass into mac_init_socket() from previous commit to not include M_ZERO. Submitted by: sam --- sys/fs/portalfs/portal_vnops.c | 3 ++- sys/kern/uipc_sockbuf.c | 7 ++--- sys/kern/uipc_socket.c | 6 ++--- sys/kern/uipc_socket2.c | 7 ++--- sys/kern/uipc_usrreq.c | 26 +++++++++++-------- sys/net/raw_usrreq.c | 5 ++-- sys/netatalk/ddp_pcb.c | 2 +- sys/netatalk/ddp_usrreq.c | 2 +- .../bluetooth/socket/ng_btsocket_hci_raw.c | 2 +- .../bluetooth/socket/ng_btsocket_l2cap.c | 4 +-- .../bluetooth/socket/ng_btsocket_l2cap_raw.c | 4 +-- .../bluetooth/socket/ng_btsocket_rfcomm.c | 4 +-- sys/netipx/ipx_pcb.c | 4 +-- sys/netipx/spx_usrreq.c | 2 +- sys/netnatm/natm.c | 2 +- sys/netsmb/smb_conn.c | 4 +-- sys/netsmb/smb_trantcp.c | 4 +-- sys/nfsclient/nfs_vfsops.c | 2 +- sys/nfsserver/nfs_srvcache.c | 4 +-- sys/sys/socketvar.h | 2 +- 20 files changed, 48 insertions(+), 48 deletions(-) diff --git a/sys/fs/portalfs/portal_vnops.c b/sys/fs/portalfs/portal_vnops.c index 397f669b6392..a8c31c84dc7d 100644 --- a/sys/fs/portalfs/portal_vnops.c +++ b/sys/fs/portalfs/portal_vnops.c @@ -199,7 +199,8 @@ portal_connect(so, so2) unp3 = sotounpcb(so3); if (unp2->unp_addr) unp3->unp_addr = (struct sockaddr_un *) - dup_sockaddr((struct sockaddr *)unp2->unp_addr, 0); + sodupsockaddr((struct sockaddr *)unp2->unp_addr, + M_NOWAIT); so2 = so3; return (unp_connect2(so, so2)); diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index 16ee01e75d56..ca2752ef68e6 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -1061,14 +1061,11 @@ pru_sosetlabel_null(struct socket *so) * Make a copy of a sockaddr in a malloced buffer of type M_SONAME. */ struct sockaddr * -dup_sockaddr(sa, canwait) - struct sockaddr *sa; - int canwait; +sodupsockaddr(const struct sockaddr *sa, int mflags) { struct sockaddr *sa2; - MALLOC(sa2, struct sockaddr *, sa->sa_len, M_SONAME, - canwait ? M_WAITOK : M_NOWAIT); + sa2 = malloc(sa->sa_len, M_SONAME, mflags); if (sa2) bcopy(sa, sa2, sa->sa_len); return sa2; diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 70ef43ae1397..8bd487d57a90 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -138,7 +138,7 @@ soalloc(int mflags) so = uma_zalloc(socket_zone, mflags | M_ZERO); if (so) { #ifdef MAC - error = mac_init_socket(so, mflags | M_ZERO); + error = mac_init_socket(so, mflags); if (error != 0) { uma_zfree(socket_zone, so); so = NULL; @@ -908,8 +908,8 @@ soreceive(so, psa, uio, mp0, controlp, flagsp) ("m->m_type == %d", m->m_type)); orig_resid = 0; if (psa) - *psa = dup_sockaddr(mtod(m, struct sockaddr *), - mp0 == 0); + *psa = sodupsockaddr(mtod(m, struct sockaddr *), + mp0 == NULL ? M_WAITOK : M_NOWAIT); if (flags & MSG_PEEK) { m = m->m_next; } else { diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index 16ee01e75d56..ca2752ef68e6 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -1061,14 +1061,11 @@ pru_sosetlabel_null(struct socket *so) * Make a copy of a sockaddr in a malloced buffer of type M_SONAME. */ struct sockaddr * -dup_sockaddr(sa, canwait) - struct sockaddr *sa; - int canwait; +sodupsockaddr(const struct sockaddr *sa, int mflags) { struct sockaddr *sa2; - MALLOC(sa2, struct sockaddr *, sa->sa_len, M_SONAME, - canwait ? M_WAITOK : M_NOWAIT); + sa2 = malloc(sa->sa_len, M_SONAME, mflags); if (sa2) bcopy(sa, sa2, sa->sa_len); return sa2; diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index f6a5ea23e996..dad644d33727 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -127,10 +127,11 @@ uipc_accept(struct socket *so, struct sockaddr **nam) * (our peer may have closed already!). */ if (unp->unp_conn && unp->unp_conn->unp_addr) { - *nam = dup_sockaddr((struct sockaddr *)unp->unp_conn->unp_addr, - 1); + *nam = sodupsockaddr( + (struct sockaddr *)unp->unp_conn->unp_addr, M_WAITOK); } else { - *nam = dup_sockaddr((struct sockaddr *)&sun_noname, 1); + *nam = sodupsockaddr((struct sockaddr *)&sun_noname, + M_WAITOK); } return (0); } @@ -220,15 +221,16 @@ uipc_peeraddr(struct socket *so, struct sockaddr **nam) if (unp == 0) return (EINVAL); if (unp->unp_conn && unp->unp_conn->unp_addr) - *nam = dup_sockaddr((struct sockaddr *)unp->unp_conn->unp_addr, - 1); + *nam = sodupsockaddr( + (struct sockaddr *)unp->unp_conn->unp_addr, M_WAITOK); else { /* * XXX: It seems that this test always fails even when * connection is established. So, this else clause is * added as workaround to return PF_LOCAL sockaddr. */ - *nam = dup_sockaddr((struct sockaddr *)&sun_noname, 1); + *nam = sodupsockaddr((struct sockaddr *)&sun_noname, + M_WAITOK); } return (0); } @@ -441,9 +443,11 @@ uipc_sockaddr(struct socket *so, struct sockaddr **nam) if (unp == 0) return (EINVAL); if (unp->unp_addr) - *nam = dup_sockaddr((struct sockaddr *)unp->unp_addr, 1); + *nam = sodupsockaddr((struct sockaddr *)unp->unp_addr, + M_WAITOK); else - *nam = dup_sockaddr((struct sockaddr *)&sun_noname, 1); + *nam = sodupsockaddr((struct sockaddr *)&sun_noname, + M_WAITOK); return (0); } @@ -665,7 +669,7 @@ unp_bind(unp, nam, td) vp = nd.ni_vp; vp->v_socket = unp->unp_socket; unp->unp_vnode = vp; - unp->unp_addr = (struct sockaddr_un *)dup_sockaddr(nam, 1); + unp->unp_addr = (struct sockaddr_un *)sodupsockaddr(nam, M_WAITOK); VOP_UNLOCK(vp, 0, td); vn_finished_write(mp); free(buf, M_TEMP); @@ -724,8 +728,8 @@ unp_connect(so, nam, td) unp3 = sotounpcb(so3); if (unp2->unp_addr) unp3->unp_addr = (struct sockaddr_un *) - dup_sockaddr((struct sockaddr *) - unp2->unp_addr, 1); + sodupsockaddr((struct sockaddr *)unp2->unp_addr, + M_WAITOK); /* * unp_peercred management: diff --git a/sys/net/raw_usrreq.c b/sys/net/raw_usrreq.c index 1f4995982e18..2fff75cf2427 100644 --- a/sys/net/raw_usrreq.c +++ b/sys/net/raw_usrreq.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -216,7 +217,7 @@ raw_upeeraddr(struct socket *so, struct sockaddr **nam) if (rp->rcb_faddr == 0) { return ENOTCONN; } - *nam = dup_sockaddr(rp->rcb_faddr, 1); + *nam = sodupsockaddr(rp->rcb_faddr, M_WAITOK); return 0; } @@ -286,7 +287,7 @@ raw_usockaddr(struct socket *so, struct sockaddr **nam) return EINVAL; if (rp->rcb_laddr == 0) return EINVAL; - *nam = dup_sockaddr(rp->rcb_laddr, 1); + *nam = sodupsockaddr(rp->rcb_laddr, M_WAITOK); return 0; } diff --git a/sys/netatalk/ddp_pcb.c b/sys/netatalk/ddp_pcb.c index 1b91a05bb8ba..f548891bed7f 100644 --- a/sys/netatalk/ddp_pcb.c +++ b/sys/netatalk/ddp_pcb.c @@ -216,7 +216,7 @@ ddp_abort(struct socket *so) static void at_sockaddr(struct ddpcb *ddp, struct sockaddr **addr) { - *addr = dup_sockaddr((struct sockaddr *)&ddp->ddp_lsat, 0); + *addr = sodupsockaddr((struct sockaddr *)&ddp->ddp_lsat, M_NOWAIT); } static int diff --git a/sys/netatalk/ddp_usrreq.c b/sys/netatalk/ddp_usrreq.c index 1b91a05bb8ba..f548891bed7f 100644 --- a/sys/netatalk/ddp_usrreq.c +++ b/sys/netatalk/ddp_usrreq.c @@ -216,7 +216,7 @@ ddp_abort(struct socket *so) static void at_sockaddr(struct ddpcb *ddp, struct sockaddr **addr) { - *addr = dup_sockaddr((struct sockaddr *)&ddp->ddp_lsat, 0); + *addr = sodupsockaddr((struct sockaddr *)&ddp->ddp_lsat, M_NOWAIT); } static int diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c b/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c index dd46231ada61..25495ba26da8 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c @@ -1560,7 +1560,7 @@ ng_btsocket_hci_raw_sockaddr(struct socket *so, struct sockaddr **nam) sa.hci_family = AF_BLUETOOTH; strlcpy(sa.hci_node, pcb->addr.hci_node, sizeof(sa.hci_node)); - *nam = dup_sockaddr((struct sockaddr *) &sa, 0); + *nam = sodupsockaddr((struct sockaddr *) &sa, M_NOWAIT); return ((*nam == NULL)? ENOMEM : 0); } /* ng_btsocket_hci_raw_sockaddr */ diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c index f979966d29e8..380094a8edca 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c @@ -2435,7 +2435,7 @@ ng_btsocket_l2cap_peeraddr(struct socket *so, struct sockaddr **nam) sa.l2cap_len = sizeof(sa); sa.l2cap_family = AF_BLUETOOTH; - *nam = dup_sockaddr((struct sockaddr *) &sa, 0); + *nam = sodupsockaddr((struct sockaddr *) &sa, M_NOWAIT); return ((*nam == NULL)? ENOMEM : 0); } /* ng_btsocket_l2cap_peeraddr */ @@ -2588,7 +2588,7 @@ ng_btsocket_l2cap_sockaddr(struct socket *so, struct sockaddr **nam) sa.l2cap_len = sizeof(sa); sa.l2cap_family = AF_BLUETOOTH; - *nam = dup_sockaddr((struct sockaddr *) &sa, 0); + *nam = sodupsockaddr((struct sockaddr *) &sa, M_NOWAIT); return ((*nam == NULL)? ENOMEM : 0); } /* ng_btsocket_l2cap_sockaddr */ diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c index 28287bb57a7f..3bbfe4ba6dd3 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c @@ -1180,7 +1180,7 @@ ng_btsocket_l2cap_raw_peeraddr(struct socket *so, struct sockaddr **nam) sa.l2cap_len = sizeof(sa); sa.l2cap_family = AF_BLUETOOTH; - *nam = dup_sockaddr((struct sockaddr *) &sa, 0); + *nam = sodupsockaddr((struct sockaddr *) &sa, M_NOWAIT); return ((*nam == NULL)? ENOMEM : 0); } /* ng_btsocket_l2cap_raw_peeraddr */ @@ -1219,7 +1219,7 @@ ng_btsocket_l2cap_raw_sockaddr(struct socket *so, struct sockaddr **nam) sa.l2cap_len = sizeof(sa); sa.l2cap_family = AF_BLUETOOTH; - *nam = dup_sockaddr((struct sockaddr *) &sa, 0); + *nam = sodupsockaddr((struct sockaddr *) &sa, M_NOWAIT); return ((*nam == NULL)? ENOMEM : 0); } /* ng_btsocket_l2cap_raw_sockaddr */ diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c b/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c index 882721075ee3..5c20618478a3 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c @@ -879,7 +879,7 @@ ng_btsocket_rfcomm_peeraddr(struct socket *so, struct sockaddr **nam) sa.rfcomm_len = sizeof(sa); sa.rfcomm_family = AF_BLUETOOTH; - *nam = dup_sockaddr((struct sockaddr *) &sa, 0); + *nam = sodupsockaddr((struct sockaddr *) &sa, M_NOWAIT); return ((*nam == NULL)? ENOMEM : 0); } /* ng_btsocket_rfcomm_peeraddr */ @@ -945,7 +945,7 @@ ng_btsocket_rfcomm_sockaddr(struct socket *so, struct sockaddr **nam) sa.rfcomm_len = sizeof(sa); sa.rfcomm_family = AF_BLUETOOTH; - *nam = dup_sockaddr((struct sockaddr *) &sa, 0); + *nam = sodupsockaddr((struct sockaddr *) &sa, M_NOWAIT); return ((*nam == NULL)? ENOMEM : 0); } /* ng_btsocket_rfcomm_sockaddr */ diff --git a/sys/netipx/ipx_pcb.c b/sys/netipx/ipx_pcb.c index 0cd7880c86fd..f4f42f60ae10 100644 --- a/sys/netipx/ipx_pcb.c +++ b/sys/netipx/ipx_pcb.c @@ -288,7 +288,7 @@ ipx_setsockaddr(ipxp, nam) sipx->sipx_len = sizeof(*sipx); sipx->sipx_family = AF_IPX; sipx->sipx_addr = ipxp->ipxp_laddr; - *nam = dup_sockaddr((struct sockaddr *)sipx, 0); + *nam = sodupsockaddr((struct sockaddr *)sipx, M_NOWAIT); } void @@ -303,7 +303,7 @@ ipx_setpeeraddr(ipxp, nam) sipx->sipx_len = sizeof(*sipx); sipx->sipx_family = AF_IPX; sipx->sipx_addr = ipxp->ipxp_faddr; - *nam = dup_sockaddr((struct sockaddr *)sipx, 0); + *nam = sodupsockaddr((struct sockaddr *)sipx, M_NOWAIT); } /* diff --git a/sys/netipx/spx_usrreq.c b/sys/netipx/spx_usrreq.c index 1424754f74d0..ea47aba3d9b8 100644 --- a/sys/netipx/spx_usrreq.c +++ b/sys/netipx/spx_usrreq.c @@ -1302,7 +1302,7 @@ spx_accept(so, nam) sipx->sipx_len = sizeof *sipx; sipx->sipx_family = AF_IPX; sipx->sipx_addr = ipxp->ipxp_faddr; - *nam = dup_sockaddr((struct sockaddr *)sipx, 0); + *nam = sodupsockaddr((struct sockaddr *)sipx, M_NOWAIT); return (0); } diff --git a/sys/netnatm/natm.c b/sys/netnatm/natm.c index c1f9850d11fb..c2ddd481dbcf 100644 --- a/sys/netnatm/natm.c +++ b/sys/netnatm/natm.c @@ -338,7 +338,7 @@ natm_usr_peeraddr(struct socket *so, struct sockaddr **nam) sizeof(snatm->snatm_if)); snatm->snatm_vci = npcb->npcb_vci; snatm->snatm_vpi = npcb->npcb_vpi; - *nam = dup_sockaddr((struct sockaddr *)snatm, 0); + *nam = sodupsockaddr((struct sockaddr *)snatm, M_NOWAIT); out: splx(s); diff --git a/sys/netsmb/smb_conn.c b/sys/netsmb/smb_conn.c index 11d8a65277e9..84d70874536c 100644 --- a/sys/netsmb/smb_conn.c +++ b/sys/netsmb/smb_conn.c @@ -419,10 +419,10 @@ smb_vc_create(struct smb_vcspec *vcspec, smb_sl_init(&vcp->vc_stlock, "vcstlock"); error = ENOMEM; - vcp->vc_paddr = dup_sockaddr(vcspec->sap, 1); + vcp->vc_paddr = sodupsockaddr(vcspec->sap, M_WAITOK); if (vcp->vc_paddr == NULL) goto fail; - vcp->vc_laddr = dup_sockaddr(vcspec->lap, 1); + vcp->vc_laddr = sodupsockaddr(vcspec->lap, M_WAITOK); if (vcp->vc_laddr == NULL) goto fail; vcp->vc_pass = smb_strdup(vcspec->pass); diff --git a/sys/netsmb/smb_trantcp.c b/sys/netsmb/smb_trantcp.c index a8050cdec046..183238869703 100644 --- a/sys/netsmb/smb_trantcp.c +++ b/sys/netsmb/smb_trantcp.c @@ -564,7 +564,7 @@ smb_nbst_bind(struct smb_vc *vcp, struct sockaddr *sap, struct thread *td) slen = sap->sa_len; if (slen < NB_MINSALEN) break; - snb = (struct sockaddr_nb*)dup_sockaddr(sap, 1); + snb = (struct sockaddr_nb*)sodupsockaddr(sap, M_WAITOK); if (snb == NULL) { error = ENOMEM; break; @@ -597,7 +597,7 @@ smb_nbst_connect(struct smb_vc *vcp, struct sockaddr *sap, struct thread *td) free(nbp->nbp_paddr, M_SONAME); nbp->nbp_paddr = NULL; } - snb = (struct sockaddr_nb*)dup_sockaddr(sap, 1); + snb = (struct sockaddr_nb*)sodupsockaddr(sap, M_WAITOK); if (snb == NULL) return ENOMEM; nbp->nbp_paddr = snb; diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c index 8970a9c7dc54..95e8069efb84 100644 --- a/sys/nfsclient/nfs_vfsops.c +++ b/sys/nfsclient/nfs_vfsops.c @@ -503,7 +503,7 @@ nfs_mountdiskless(char *path, char *which, int mountflag, mp->mnt_kern_flag = 0; mp->mnt_flag = mountflag; - nam = dup_sockaddr((struct sockaddr *)sin, 1); + nam = sodupsockaddr((struct sockaddr *)sin, M_WAITOK); if ((error = mountnfs(args, mp, nam, which, path, vpp, td->td_ucred)) != 0) { printf("nfs_mountroot: mount %s on %s: %d", path, which, error); diff --git a/sys/nfsserver/nfs_srvcache.c b/sys/nfsserver/nfs_srvcache.c index 394fde752551..0cfcef7b2c5f 100644 --- a/sys/nfsserver/nfs_srvcache.c +++ b/sys/nfsserver/nfs_srvcache.c @@ -50,7 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include /* for dup_sockaddr */ +#include /* for sodupsockaddr */ #include #include @@ -244,7 +244,7 @@ nfsrv_getcache(struct nfsrv_descript *nd, struct mbuf **repp) /* case AF_ISO: */ default: rp->rc_flag |= RC_NAM; - rp->rc_nam = dup_sockaddr(nd->nd_nam, 1); + rp->rc_nam = sodupsockaddr(nd->nd_nam, M_WAITOK); break; }; rp->rc_proc = nd->nd_procnum; diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h index b1b9e16db42a..a687cc03541f 100644 --- a/sys/sys/socketvar.h +++ b/sys/sys/socketvar.h @@ -352,7 +352,6 @@ struct uio; /* * From uipc_socket and friends */ -struct sockaddr *dup_sockaddr(struct sockaddr *sa, int canwait); int sockargs(struct mbuf **mp, caddr_t buf, int buflen, int type); int getsockaddr(struct sockaddr **namp, caddr_t uaddr, size_t len); void sbappend(struct sockbuf *sb, struct mbuf *m); @@ -391,6 +390,7 @@ int socreate(int dom, struct socket **aso, int type, int proto, struct ucred *cred, struct thread *td); void sodealloc(struct socket *so); int sodisconnect(struct socket *so); +struct sockaddr *sodupsockaddr(const struct sockaddr *sa, int mflags); void sofree(struct socket *so); int sogetopt(struct socket *so, struct sockopt *sopt); void sohasoutofband(struct socket *so);