aboutsummaryrefslogtreecommitdiff
path: root/sys/netgraph/ng_socket.c
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2006-06-13 21:36:23 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2006-06-13 21:36:23 +0000
commitedd32c2da270644caf802098bd2aaa5344dc5fe0 (patch)
tree6bdda3a80fe25172e30b3b25fc2a0ae45191cc84 /sys/netgraph/ng_socket.c
parentb21c9288cef919b48f4676955549ba697f17d224 (diff)
Notes
Diffstat (limited to 'sys/netgraph/ng_socket.c')
-rw-r--r--sys/netgraph/ng_socket.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/netgraph/ng_socket.c b/sys/netgraph/ng_socket.c
index c977c435b53a..72bff98f6da4 100644
--- a/sys/netgraph/ng_socket.c
+++ b/sys/netgraph/ng_socket.c
@@ -65,6 +65,7 @@
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <sys/sx.h>
+#include <sys/syscallsubr.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
#ifdef NOTYET
@@ -271,24 +272,22 @@ ngc_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
if ((type = ng_findtype(mkp->type)) == NULL) {
char filename[NG_TYPESIZ + 3];
- linker_file_t lf;
+ int fileid;
/* Not found, try to load it as a loadable module. */
snprintf(filename, sizeof(filename), "ng_%s",
mkp->type);
- mtx_lock(&Giant);
- error = linker_load_module(NULL, filename, NULL, NULL,
- &lf);
- mtx_unlock(&Giant);
+ error = kern_kldload(curthread, filename, &fileid);
if (error != 0) {
FREE(msg, M_NETGRAPH_MSG);
goto release;
}
- lf->userrefs++;
/* See if type has been loaded successfully. */
if ((type = ng_findtype(mkp->type)) == NULL) {
FREE(msg, M_NETGRAPH_MSG);
+ (void)kern_kldunload(curthread, fileid,
+ LINKER_UNLOAD_NORMAL);
error = ENXIO;
goto release;
}