diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/exit.c | 8 | ||||
| -rw-r--r-- | kernel/irq/manage.c | 4 | ||||
| -rw-r--r-- | kernel/relay.c | 15 | ||||
| -rw-r--r-- | kernel/watchdog.c | 2 |
4 files changed, 17 insertions, 12 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index b194febf5799..21aa7b3001fb 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -96,6 +96,14 @@ static void __exit_signal(struct task_struct *tsk) | |||
| 96 | sig->tty = NULL; | 96 | sig->tty = NULL; |
| 97 | } else { | 97 | } else { |
| 98 | /* | 98 | /* |
| 99 | * This can only happen if the caller is de_thread(). | ||
| 100 | * FIXME: this is the temporary hack, we should teach | ||
| 101 | * posix-cpu-timers to handle this case correctly. | ||
| 102 | */ | ||
| 103 | if (unlikely(has_group_leader_pid(tsk))) | ||
| 104 | posix_cpu_timers_exit_group(tsk); | ||
| 105 | |||
| 106 | /* | ||
| 99 | * If there is any task waiting for the group exit | 107 | * If there is any task waiting for the group exit |
| 100 | * then notify it: | 108 | * then notify it: |
| 101 | */ | 109 | */ |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 644e8d5fa367..5f92acc5f952 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -324,6 +324,10 @@ void enable_irq(unsigned int irq) | |||
| 324 | if (!desc) | 324 | if (!desc) |
| 325 | return; | 325 | return; |
| 326 | 326 | ||
| 327 | if (WARN(!desc->irq_data.chip || !desc->irq_data.chip->irq_enable, | ||
| 328 | KERN_ERR "enable_irq before setup/request_irq: irq %u\n", irq)) | ||
| 329 | return; | ||
| 330 | |||
| 327 | chip_bus_lock(desc); | 331 | chip_bus_lock(desc); |
| 328 | raw_spin_lock_irqsave(&desc->lock, flags); | 332 | raw_spin_lock_irqsave(&desc->lock, flags); |
| 329 | __enable_irq(desc, irq, false); | 333 | __enable_irq(desc, irq, false); |
diff --git a/kernel/relay.c b/kernel/relay.c index c7cf397fb929..859ea5a9605f 100644 --- a/kernel/relay.c +++ b/kernel/relay.c | |||
| @@ -70,17 +70,10 @@ static const struct vm_operations_struct relay_file_mmap_ops = { | |||
| 70 | */ | 70 | */ |
| 71 | static struct page **relay_alloc_page_array(unsigned int n_pages) | 71 | static struct page **relay_alloc_page_array(unsigned int n_pages) |
| 72 | { | 72 | { |
| 73 | struct page **array; | 73 | const size_t pa_size = n_pages * sizeof(struct page *); |
| 74 | size_t pa_size = n_pages * sizeof(struct page *); | 74 | if (pa_size > PAGE_SIZE) |
| 75 | 75 | return vzalloc(pa_size); | |
| 76 | if (pa_size > PAGE_SIZE) { | 76 | return kzalloc(pa_size, GFP_KERNEL); |
| 77 | array = vmalloc(pa_size); | ||
| 78 | if (array) | ||
| 79 | memset(array, 0, pa_size); | ||
| 80 | } else { | ||
| 81 | array = kzalloc(pa_size, GFP_KERNEL); | ||
| 82 | } | ||
| 83 | return array; | ||
| 84 | } | 77 | } |
| 85 | 78 | ||
| 86 | /* | 79 | /* |
diff --git a/kernel/watchdog.c b/kernel/watchdog.c index bafba687a6d8..6e3c41a4024c 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c | |||
| @@ -43,7 +43,7 @@ static DEFINE_PER_CPU(unsigned long, hrtimer_interrupts_saved); | |||
| 43 | static DEFINE_PER_CPU(struct perf_event *, watchdog_ev); | 43 | static DEFINE_PER_CPU(struct perf_event *, watchdog_ev); |
| 44 | #endif | 44 | #endif |
| 45 | 45 | ||
| 46 | static int __initdata no_watchdog; | 46 | static int no_watchdog; |
| 47 | 47 | ||
| 48 | 48 | ||
| 49 | /* boot commands */ | 49 | /* boot commands */ |
