summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2008-08-10 13:18:07 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2008-08-10 13:18:07 +0000
commit948a2910a694392b49f23ec260dde0e44ae39c6c (patch)
treec78799f9d83d42808cb31e7f6a04a82c0c85655a
parentf428b23100fe6994fe87367d7e505b5fc0281c8f (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 0e20809b99ce..e32a0a41027e 100644
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -785,7 +785,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, td);
error = linker_load_dependencies(lf);
+ vn_lock(nd.ni_vp, LK_EXCLUSIVE | LK_RETRY, td);
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 b7c67ec7b140..af6defaef80a 100644
--- a/sys/kern/link_elf_obj.c
+++ b/sys/kern/link_elf_obj.c
@@ -774,7 +774,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, td);
error = linker_load_dependencies(lf);
+ vn_lock(nd.ni_vp, LK_EXCLUSIVE | LK_RETRY, td);
if (error)
goto out;