summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@digeo.com>2002-09-19 08:37:17 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-09-19 08:37:17 -0700
commite19941e9cdc0c90910663e8d2b4abb498d3f04cd (patch)
tree841d29cb2b891a3de43580f8acd5a6473428d59d
parentfc1be578c53b27a70364f9c1854fd94263d3e05d (diff)
[PATCH] misc fixes
- Spell Jeremy's name correctly. - Fix compile warning in raw.c - Do a waitqueue_active() test before waking klogd in printk. Not only is is negligibly faster, but the wake_up() in there causes deadlocks when you try to print debug info out from inside scheduler code. This patch gives a delightfully obscure way of avoiding the deadlock: kill off klogd. - Fix a couple of compile warnings in the mtrr code.
-rw-r--r--arch/i386/kernel/cpu/mtrr/mtrr.h3
-rw-r--r--drivers/char/raw.c2
-rw-r--r--kernel/printk.c6
-rw-r--r--mm/mmap.c2
4 files changed, 8 insertions, 5 deletions
diff --git a/arch/i386/kernel/cpu/mtrr/mtrr.h b/arch/i386/kernel/cpu/mtrr/mtrr.h
index 363a5b14acdc..c59ccb1059f7 100644
--- a/arch/i386/kernel/cpu/mtrr/mtrr.h
+++ b/arch/i386/kernel/cpu/mtrr/mtrr.h
@@ -96,4 +96,7 @@ extern struct mtrr_ops * mtrr_if;
extern unsigned int num_var_ranges;
+void finalize_mtrr_state(void);
+void mtrr_state_warn(void);
+
extern char * mtrr_if_name[];
diff --git a/drivers/char/raw.c b/drivers/char/raw.c
index a2f05f72791d..2b08e77a18bb 100644
--- a/drivers/char/raw.c
+++ b/drivers/char/raw.c
@@ -241,7 +241,7 @@ raw_read(struct file *filp, char *buf, size_t size, loff_t *offp)
static ssize_t
raw_write(struct file *filp, const char *buf, size_t size, loff_t *offp)
{
- struct iovec local_iov = { .iov_base = buf, .iov_len = size};
+ struct iovec local_iov = { .iov_base = (char *)buf, .iov_len = size};
return rw_raw_dev(WRITE, filp, &local_iov, 1, offp);
}
diff --git a/kernel/printk.c b/kernel/printk.c
index ca1cd3fea625..a3d23302ae5b 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -525,11 +525,11 @@ void release_console_sem(void)
{
unsigned long flags;
unsigned long _con_start, _log_end;
- unsigned long must_wake_klogd = 0;
+ unsigned long wake_klogd = 0;
for ( ; ; ) {
spin_lock_irqsave(&logbuf_lock, flags);
- must_wake_klogd |= log_start - log_end;
+ wake_klogd |= log_start - log_end;
if (con_start == log_end)
break; /* Nothing to print */
_con_start = con_start;
@@ -541,7 +541,7 @@ void release_console_sem(void)
console_may_schedule = 0;
up(&console_sem);
spin_unlock_irqrestore(&logbuf_lock, flags);
- if (must_wake_klogd && !oops_in_progress)
+ if (wake_klogd && !oops_in_progress && waitqueue_active(&log_wait))
wake_up_interruptible(&log_wait);
}
diff --git a/mm/mmap.c b/mm/mmap.c
index 881bdc800782..b4b2403431c7 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1092,7 +1092,7 @@ static int splitvma(struct mm_struct *mm, struct vm_area_struct *mpnt, unsigned
/* Munmap is split into 2 main parts -- this part which finds
* what needs doing, and the areas themselves, which do the
* work. This now handles partial unmappings.
- * Jeremy Fitzhardine <jeremy@sw.oz.au>
+ * Jeremy Fitzhardinge <jeremy@goop.org>
*/
int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
{