diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-09-19 00:42:13 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-09-19 00:42:13 -0400 |
| commit | 4a3381feb823e06c8e2da7e283c17b0b6fdbddcf (patch) | |
| tree | e1bef4c3db854bb10fd13dc67415d77b5d999533 /kernel | |
| parent | fea63e38013ec628ab3f7fddc4c2148064b7910a (diff) | |
| parent | 47a5c6fa0e204a2b63309c648bb2fde36836c826 (diff) | |
Merge branch 'master' into upstream
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/irq/resend.c | 3 | ||||
| -rw-r--r-- | kernel/kmod.c | 5 | ||||
| -rw-r--r-- | kernel/lockdep_internals.h | 2 | ||||
| -rw-r--r-- | kernel/rcupdate.c | 6 |
4 files changed, 10 insertions, 6 deletions
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c index 872f91ba2ce8..35f10f7ff94a 100644 --- a/kernel/irq/resend.c +++ b/kernel/irq/resend.c | |||
| @@ -63,8 +63,7 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq) | |||
| 63 | desc->chip->enable(irq); | 63 | desc->chip->enable(irq); |
| 64 | 64 | ||
| 65 | if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) { | 65 | if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) { |
| 66 | desc->status &= ~IRQ_PENDING; | 66 | desc->status = (status & ~IRQ_PENDING) | IRQ_REPLAY; |
| 67 | desc->status = status | IRQ_REPLAY; | ||
| 68 | 67 | ||
| 69 | if (!desc->chip || !desc->chip->retrigger || | 68 | if (!desc->chip || !desc->chip->retrigger || |
| 70 | !desc->chip->retrigger(irq)) { | 69 | !desc->chip->retrigger(irq)) { |
diff --git a/kernel/kmod.c b/kernel/kmod.c index 1d32defa38ab..5c470c57fb57 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c | |||
| @@ -197,11 +197,12 @@ static void __call_usermodehelper(void *data) | |||
| 197 | { | 197 | { |
| 198 | struct subprocess_info *sub_info = data; | 198 | struct subprocess_info *sub_info = data; |
| 199 | pid_t pid; | 199 | pid_t pid; |
| 200 | int wait = sub_info->wait; | ||
| 200 | 201 | ||
| 201 | /* CLONE_VFORK: wait until the usermode helper has execve'd | 202 | /* CLONE_VFORK: wait until the usermode helper has execve'd |
| 202 | * successfully We need the data structures to stay around | 203 | * successfully We need the data structures to stay around |
| 203 | * until that is done. */ | 204 | * until that is done. */ |
| 204 | if (sub_info->wait) | 205 | if (wait) |
| 205 | pid = kernel_thread(wait_for_helper, sub_info, | 206 | pid = kernel_thread(wait_for_helper, sub_info, |
| 206 | CLONE_FS | CLONE_FILES | SIGCHLD); | 207 | CLONE_FS | CLONE_FILES | SIGCHLD); |
| 207 | else | 208 | else |
| @@ -211,7 +212,7 @@ static void __call_usermodehelper(void *data) | |||
| 211 | if (pid < 0) { | 212 | if (pid < 0) { |
| 212 | sub_info->retval = pid; | 213 | sub_info->retval = pid; |
| 213 | complete(sub_info->complete); | 214 | complete(sub_info->complete); |
| 214 | } else if (!sub_info->wait) | 215 | } else if (!wait) |
| 215 | complete(sub_info->complete); | 216 | complete(sub_info->complete); |
| 216 | } | 217 | } |
| 217 | 218 | ||
diff --git a/kernel/lockdep_internals.h b/kernel/lockdep_internals.h index 0d355f24fe04..eab043c83bb2 100644 --- a/kernel/lockdep_internals.h +++ b/kernel/lockdep_internals.h | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | * Stack-trace: tightly packed array of stack backtrace | 27 | * Stack-trace: tightly packed array of stack backtrace |
| 28 | * addresses. Protected by the hash_lock. | 28 | * addresses. Protected by the hash_lock. |
| 29 | */ | 29 | */ |
| 30 | #define MAX_STACK_TRACE_ENTRIES 131072UL | 30 | #define MAX_STACK_TRACE_ENTRIES 262144UL |
| 31 | 31 | ||
| 32 | extern struct list_head all_lock_classes; | 32 | extern struct list_head all_lock_classes; |
| 33 | 33 | ||
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index 436ab35f6fa7..523e46483b99 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
| @@ -241,12 +241,16 @@ static void rcu_do_batch(struct rcu_data *rdp) | |||
| 241 | next = rdp->donelist = list->next; | 241 | next = rdp->donelist = list->next; |
| 242 | list->func(list); | 242 | list->func(list); |
| 243 | list = next; | 243 | list = next; |
| 244 | rdp->qlen--; | ||
| 245 | if (++count >= rdp->blimit) | 244 | if (++count >= rdp->blimit) |
| 246 | break; | 245 | break; |
| 247 | } | 246 | } |
| 247 | |||
| 248 | local_irq_disable(); | ||
| 249 | rdp->qlen -= count; | ||
| 250 | local_irq_enable(); | ||
| 248 | if (rdp->blimit == INT_MAX && rdp->qlen <= qlowmark) | 251 | if (rdp->blimit == INT_MAX && rdp->qlen <= qlowmark) |
| 249 | rdp->blimit = blimit; | 252 | rdp->blimit = blimit; |
| 253 | |||
| 250 | if (!rdp->donelist) | 254 | if (!rdp->donelist) |
| 251 | rdp->donetail = &rdp->donelist; | 255 | rdp->donetail = &rdp->donelist; |
| 252 | else | 256 | else |
