diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-09-19 08:37:17 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-09-19 08:37:17 -0700 |
| commit | e19941e9cdc0c90910663e8d2b4abb498d3f04cd (patch) | |
| tree | 841d29cb2b891a3de43580f8acd5a6473428d59d | |
| parent | fc1be578c53b27a70364f9c1854fd94263d3e05d (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.h | 3 | ||||
| -rw-r--r-- | drivers/char/raw.c | 2 | ||||
| -rw-r--r-- | kernel/printk.c | 6 | ||||
| -rw-r--r-- | mm/mmap.c | 2 |
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) { |
