diff options
| author | Paul Mackerras <paulus@samba.org> | 2005-11-25 06:12:01 -0500 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2005-11-25 06:12:01 -0500 |
| commit | 26925c5910ab77fc95b4d8bb6d98780b50ab1e5a (patch) | |
| tree | 7d7506b3aedeea4db8b8659f046850db97503a89 /kernel | |
| parent | 55bb239e5464ecde046af3e45052ef06efda6444 (diff) | |
| parent | cd0cca7bf5e201dcea5632f78ad9b37cb419a5df (diff) | |
Merge ../linux-2.6
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/futex.c | 15 | ||||
| -rw-r--r-- | kernel/irq/manage.c | 15 | ||||
| -rw-r--r-- | kernel/printk.c | 2 |
3 files changed, 16 insertions, 16 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index aca8d10704f6..5872e3507f35 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
| @@ -201,21 +201,6 @@ static int get_futex_key(unsigned long uaddr, union futex_key *key) | |||
| 201 | * from swap. But that's a lot of code to duplicate here | 201 | * from swap. But that's a lot of code to duplicate here |
| 202 | * for a rare case, so we simply fetch the page. | 202 | * for a rare case, so we simply fetch the page. |
| 203 | */ | 203 | */ |
| 204 | |||
| 205 | /* | ||
| 206 | * Do a quick atomic lookup first - this is the fastpath. | ||
| 207 | */ | ||
| 208 | page = follow_page(mm, uaddr, FOLL_TOUCH|FOLL_GET); | ||
| 209 | if (likely(page != NULL)) { | ||
| 210 | key->shared.pgoff = | ||
| 211 | page->index << (PAGE_CACHE_SHIFT - PAGE_SHIFT); | ||
| 212 | put_page(page); | ||
| 213 | return 0; | ||
| 214 | } | ||
| 215 | |||
| 216 | /* | ||
| 217 | * Do it the general way. | ||
| 218 | */ | ||
| 219 | err = get_user_pages(current, mm, uaddr, 1, 0, 0, &page, NULL); | 204 | err = get_user_pages(current, mm, uaddr, 1, 0, 0, &page, NULL); |
| 220 | if (err >= 0) { | 205 | if (err >= 0) { |
| 221 | key->shared.pgoff = | 206 | key->shared.pgoff = |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 3bd7226d15fa..81c49a4d679e 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -36,6 +36,9 @@ void synchronize_irq(unsigned int irq) | |||
| 36 | { | 36 | { |
| 37 | struct irq_desc *desc = irq_desc + irq; | 37 | struct irq_desc *desc = irq_desc + irq; |
| 38 | 38 | ||
| 39 | if (irq >= NR_IRQS) | ||
| 40 | return; | ||
| 41 | |||
| 39 | while (desc->status & IRQ_INPROGRESS) | 42 | while (desc->status & IRQ_INPROGRESS) |
| 40 | cpu_relax(); | 43 | cpu_relax(); |
| 41 | } | 44 | } |
| @@ -60,6 +63,9 @@ void disable_irq_nosync(unsigned int irq) | |||
| 60 | irq_desc_t *desc = irq_desc + irq; | 63 | irq_desc_t *desc = irq_desc + irq; |
| 61 | unsigned long flags; | 64 | unsigned long flags; |
| 62 | 65 | ||
| 66 | if (irq >= NR_IRQS) | ||
| 67 | return; | ||
| 68 | |||
| 63 | spin_lock_irqsave(&desc->lock, flags); | 69 | spin_lock_irqsave(&desc->lock, flags); |
| 64 | if (!desc->depth++) { | 70 | if (!desc->depth++) { |
| 65 | desc->status |= IRQ_DISABLED; | 71 | desc->status |= IRQ_DISABLED; |
| @@ -86,6 +92,9 @@ void disable_irq(unsigned int irq) | |||
| 86 | { | 92 | { |
| 87 | irq_desc_t *desc = irq_desc + irq; | 93 | irq_desc_t *desc = irq_desc + irq; |
| 88 | 94 | ||
| 95 | if (irq >= NR_IRQS) | ||
| 96 | return; | ||
| 97 | |||
| 89 | disable_irq_nosync(irq); | 98 | disable_irq_nosync(irq); |
| 90 | if (desc->action) | 99 | if (desc->action) |
| 91 | synchronize_irq(irq); | 100 | synchronize_irq(irq); |
| @@ -108,6 +117,9 @@ void enable_irq(unsigned int irq) | |||
| 108 | irq_desc_t *desc = irq_desc + irq; | 117 | irq_desc_t *desc = irq_desc + irq; |
| 109 | unsigned long flags; | 118 | unsigned long flags; |
| 110 | 119 | ||
| 120 | if (irq >= NR_IRQS) | ||
| 121 | return; | ||
| 122 | |||
| 111 | spin_lock_irqsave(&desc->lock, flags); | 123 | spin_lock_irqsave(&desc->lock, flags); |
| 112 | switch (desc->depth) { | 124 | switch (desc->depth) { |
| 113 | case 0: | 125 | case 0: |
| @@ -163,6 +175,9 @@ int setup_irq(unsigned int irq, struct irqaction * new) | |||
| 163 | unsigned long flags; | 175 | unsigned long flags; |
| 164 | int shared = 0; | 176 | int shared = 0; |
| 165 | 177 | ||
| 178 | if (irq >= NR_IRQS) | ||
| 179 | return -EINVAL; | ||
| 180 | |||
| 166 | if (desc->handler == &no_irq_type) | 181 | if (desc->handler == &no_irq_type) |
| 167 | return -ENOSYS; | 182 | return -ENOSYS; |
| 168 | /* | 183 | /* |
diff --git a/kernel/printk.c b/kernel/printk.c index ac8a08f36207..5287be83e3e7 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
| @@ -956,7 +956,7 @@ int unregister_console(struct console *console) | |||
| 956 | if (console_drivers == console) { | 956 | if (console_drivers == console) { |
| 957 | console_drivers=console->next; | 957 | console_drivers=console->next; |
| 958 | res = 0; | 958 | res = 0; |
| 959 | } else { | 959 | } else if (console_drivers) { |
| 960 | for (a=console_drivers->next, b=console_drivers ; | 960 | for (a=console_drivers->next, b=console_drivers ; |
| 961 | a; b=a, a=b->next) { | 961 | a; b=a, a=b->next) { |
| 962 | if (a == console) { | 962 | if (a == console) { |
