aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2008-08-03 13:33:45 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2008-08-03 13:33:45 +0000
commit4f7afc20e052f2f5232375cb07916a1c21a5ef2d (patch)
tree7603ee0923284048aefc51b770a8cdbd676830f7
parent200d80cd74a8cb0a58383d0cbef063f2575c9f53 (diff)
Notes
-rw-r--r--sys/kern/link_elf.c2
-rw-r--r--sys/kern/link_elf_obj.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c
index 2664ba988946..52b3f8f0ba68 100644
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -802,7 +802,9 @@ link_elf_load_file(linker_class_t cls, const char* filename,
goto out;
link_elf_reloc_local(lf);
+ VOP_UNLOCK(nd.ni_vp, 0);
error = linker_load_dependencies(lf);
+ vn_lock(nd.ni_vp, LK_EXCLUSIVE | LK_RETRY);
if (error)
goto out;
#if 0 /* this will be more trouble than it's worth for now */
diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c
index d8e921921534..29165fe0fe9f 100644
--- a/sys/kern/link_elf_obj.c
+++ b/sys/kern/link_elf_obj.c
@@ -798,7 +798,9 @@ link_elf_load_file(linker_class_t cls, const char *filename,
link_elf_reloc_local(lf);
/* Pull in dependencies */
+ VOP_UNLOCK(nd.ni_vp, 0);
error = linker_load_dependencies(lf);
+ vn_lock(nd.ni_vp, LK_EXCLUSIVE | LK_RETRY);
if (error)
goto out;