PERFORCE change 100175 for review
John Baldwin
jhb at FreeBSD.org
Tue Jun 27 21:39:50 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=100175
Change 100175 by jhb at jhb_mutex on 2006/06/27 21:39:30
Use kern_bind().
Affected files ...
.. //depot/projects/smpng/sys/compat/svr4/svr4_stream.c#28 edit
Differences ...
==== //depot/projects/smpng/sys/compat/svr4/svr4_stream.c#28 (text+ko) ====
@@ -989,8 +989,7 @@
struct svr4_strm *st = svr4_stream_get(fp);
struct sockaddr_in sain;
struct sockaddr_un saun;
- caddr_t sg;
- void *skp, *sup = NULL;
+ struct sockaddr *skp;
int sasize;
struct svr4_strmcmd bnd;
struct bind_args ba;
@@ -1017,7 +1016,7 @@
sasize = sizeof(sain);
if (bnd.offs == 0)
- goto reply;
+ goto error;
netaddr_to_sockaddr_in(&sain, &bnd);
@@ -1030,12 +1029,12 @@
skp = &saun;
sasize = sizeof(saun);
if (bnd.offs == 0)
- goto reply;
+ goto error;
netaddr_to_sockaddr_un(&saun, &bnd);
if (saun.sun_path[0] == '\0')
- goto reply;
+ goto error;
DPRINTF(("TI_BIND: fam %d, path %s\n",
saun.sun_family, saun.sun_path));
@@ -1052,29 +1051,20 @@
return ENOSYS;
}
- sg = stackgap_init();
- sup = stackgap_alloc(&sg, sasize);
-
- if ((error = copyout(skp, sup, sasize)) != 0)
- return error;
-
- ba.s = fd;
DPRINTF(("TI_BIND: fileno %d\n", fd));
- ba.name = (void *) sup;
- ba.namelen = sasize;
- if ((error = bind(td, &ba)) != 0) {
+ if ((error = kern_bind(td, fd, skp)) != 0) {
DPRINTF(("TI_BIND: bind failed %d\n", error));
return error;
}
+ goto reply;
+
+error:
+ memset(&bnd, 0, sizeof(bnd));
+ bnd.len = sasize + 4;
+ bnd.offs = 0x10; /* XXX */
reply:
- if (sup == NULL) {
- memset(&bnd, 0, sizeof(bnd));
- bnd.len = sasize + 4;
- bnd.offs = 0x10; /* XXX */
- }
-
bnd.cmd = SVR4_TI_BIND_REPLY;
if ((error = copyout(&bnd, ioc->buf, ioc->len)) != 0)
More information about the p4-projects
mailing list