aboutsummaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2005-09-19 16:51:43 +0000
committerRobert Watson <rwatson@FreeBSD.org>2005-09-19 16:51:43 +0000
commit84d2b7df26aaa4c58367dd2ba8a64bf84a7bb069 (patch)
treee3c313c0b77fbcc1f434ec162a95a06a9e05a773 /sys/kern
parenta56e23da23b802f32e54aa5dadb70caf48a147d2 (diff)
Notes
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/imgact_elf.c6
-rw-r--r--sys/kern/subr_prf.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
index b469898359cb..77ec406556d8 100644
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -380,7 +380,9 @@ __elfN(load_section)(struct proc *p, struct vmspace *vmspace,
*/
if ((off_t)filsz + offset > object->un_pager.vnp.vnp_size ||
filsz > memsz) {
+ mtx_lock(&Giant);
uprintf("elf_load_section: truncated ELF file\n");
+ mtx_unlock(&Giant);
return (ENOEXEC);
}
@@ -698,8 +700,10 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp)
brand_info = __elfN(get_brandinfo)(hdr, interp);
if (brand_info == NULL) {
+ mtx_lock(&Giant);
uprintf("ELF binary type \"%u\" not known.\n",
hdr->e_ident[EI_OSABI]);
+ mtx_unlock(&Giant);
error = ENOEXEC;
goto fail;
}
@@ -840,7 +844,9 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp)
error = __elfN(load_file)(imgp->proc, interp, &addr,
&imgp->entry_addr, sv->sv_pagesize);
if (error != 0) {
+ mtx_lock(&Giant);
uprintf("ELF interpreter %s not found\n", interp);
+ mtx_unlock(&Giant);
goto fail;
}
}
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c
index 91418229ae72..a457ee92c43e 100644
--- a/sys/kern/subr_prf.c
+++ b/sys/kern/subr_prf.c
@@ -129,6 +129,10 @@ uprintf(const char *fmt, ...)
struct putchar_arg pca;
int retval;
+ GIANT_REQUIRED;
+
+ WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "uprintf");
+
if (td == NULL || td == PCPU_GET(idlethread))
return (0);
@@ -165,6 +169,10 @@ tprintf(struct proc *p, int pri, const char *fmt, ...)
struct putchar_arg pca;
struct session *sess = NULL;
+ GIANT_REQUIRED;
+
+ WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "tprintf");
+
if (pri != -1)
flags |= TOLOG;
if (p != NULL) {