diff options
Diffstat (limited to 'kernel')
48 files changed, 255 insertions, 153 deletions
diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c index 37b2bea170c8..e99dda04b126 100644 --- a/kernel/audit_tree.c +++ b/kernel/audit_tree.c | |||
| @@ -607,7 +607,7 @@ void audit_trim_trees(void) | |||
| 607 | spin_lock(&hash_lock); | 607 | spin_lock(&hash_lock); |
| 608 | list_for_each_entry(node, &tree->chunks, list) { | 608 | list_for_each_entry(node, &tree->chunks, list) { |
| 609 | struct audit_chunk *chunk = find_chunk(node); | 609 | struct audit_chunk *chunk = find_chunk(node); |
| 610 | /* this could be NULL if the watch is dieing else where... */ | 610 | /* this could be NULL if the watch is dying else where... */ |
| 611 | struct inode *inode = chunk->mark.i.inode; | 611 | struct inode *inode = chunk->mark.i.inode; |
| 612 | node->index |= 1U<<31; | 612 | node->index |= 1U<<31; |
| 613 | if (iterate_mounts(compare_root, inode, root_mnt)) | 613 | if (iterate_mounts(compare_root, inode, root_mnt)) |
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index f49a0318c2ed..b33513a08beb 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
| @@ -1011,7 +1011,7 @@ static int audit_log_pid_context(struct audit_context *context, pid_t pid, | |||
| 1011 | /* | 1011 | /* |
| 1012 | * to_send and len_sent accounting are very loose estimates. We aren't | 1012 | * to_send and len_sent accounting are very loose estimates. We aren't |
| 1013 | * really worried about a hard cap to MAX_EXECVE_AUDIT_LEN so much as being | 1013 | * really worried about a hard cap to MAX_EXECVE_AUDIT_LEN so much as being |
| 1014 | * within about 500 bytes (next page boundry) | 1014 | * within about 500 bytes (next page boundary) |
| 1015 | * | 1015 | * |
| 1016 | * why snprintf? an int is up to 12 digits long. if we just assumed when | 1016 | * why snprintf? an int is up to 12 digits long. if we just assumed when |
| 1017 | * logging that a[%d]= was going to be 16 characters long we would be wasting | 1017 | * logging that a[%d]= was going to be 16 characters long we would be wasting |
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index e31b220a743d..25c7eb52de1a 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c | |||
| @@ -157,7 +157,7 @@ struct css_id { | |||
| 157 | }; | 157 | }; |
| 158 | 158 | ||
| 159 | /* | 159 | /* |
| 160 | * cgroup_event represents events which userspace want to recieve. | 160 | * cgroup_event represents events which userspace want to receive. |
| 161 | */ | 161 | */ |
| 162 | struct cgroup_event { | 162 | struct cgroup_event { |
| 163 | /* | 163 | /* |
diff --git a/kernel/cpu.c b/kernel/cpu.c index c95fc4df0faa..12b7458f23b1 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c | |||
| @@ -126,7 +126,7 @@ static void cpu_hotplug_done(void) | |||
| 126 | #else /* #if CONFIG_HOTPLUG_CPU */ | 126 | #else /* #if CONFIG_HOTPLUG_CPU */ |
| 127 | static void cpu_hotplug_begin(void) {} | 127 | static void cpu_hotplug_begin(void) {} |
| 128 | static void cpu_hotplug_done(void) {} | 128 | static void cpu_hotplug_done(void) {} |
| 129 | #endif /* #esle #if CONFIG_HOTPLUG_CPU */ | 129 | #endif /* #else #if CONFIG_HOTPLUG_CPU */ |
| 130 | 130 | ||
| 131 | /* Need to know about CPUs going up/down? */ | 131 | /* Need to know about CPUs going up/down? */ |
| 132 | int __ref register_cpu_notifier(struct notifier_block *nb) | 132 | int __ref register_cpu_notifier(struct notifier_block *nb) |
diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c index cefd4a11f6d9..bad6786dee88 100644 --- a/kernel/debug/debug_core.c +++ b/kernel/debug/debug_core.c | |||
| @@ -538,7 +538,7 @@ return_normal: | |||
| 538 | 538 | ||
| 539 | /* | 539 | /* |
| 540 | * For single stepping, try to only enter on the processor | 540 | * For single stepping, try to only enter on the processor |
| 541 | * that was single stepping. To gaurd against a deadlock, the | 541 | * that was single stepping. To guard against a deadlock, the |
| 542 | * kernel will only try for the value of sstep_tries before | 542 | * kernel will only try for the value of sstep_tries before |
| 543 | * giving up and continuing on. | 543 | * giving up and continuing on. |
| 544 | */ | 544 | */ |
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 6bc6e3bc4f9c..be14779bcef6 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c | |||
| @@ -441,9 +441,9 @@ static int kdb_check_regs(void) | |||
| 441 | * symbol name, and offset to the caller. | 441 | * symbol name, and offset to the caller. |
| 442 | * | 442 | * |
| 443 | * The argument may consist of a numeric value (decimal or | 443 | * The argument may consist of a numeric value (decimal or |
| 444 | * hexidecimal), a symbol name, a register name (preceeded by the | 444 | * hexidecimal), a symbol name, a register name (preceded by the |
| 445 | * percent sign), an environment variable with a numeric value | 445 | * percent sign), an environment variable with a numeric value |
| 446 | * (preceeded by a dollar sign) or a simple arithmetic expression | 446 | * (preceded by a dollar sign) or a simple arithmetic expression |
| 447 | * consisting of a symbol name, +/-, and a numeric constant value | 447 | * consisting of a symbol name, +/-, and a numeric constant value |
| 448 | * (offset). | 448 | * (offset). |
| 449 | * Parameters: | 449 | * Parameters: |
| @@ -1335,7 +1335,7 @@ void kdb_print_state(const char *text, int value) | |||
| 1335 | * error The hardware-defined error code | 1335 | * error The hardware-defined error code |
| 1336 | * reason2 kdb's current reason code. | 1336 | * reason2 kdb's current reason code. |
| 1337 | * Initially error but can change | 1337 | * Initially error but can change |
| 1338 | * acording to kdb state. | 1338 | * according to kdb state. |
| 1339 | * db_result Result code from break or debug point. | 1339 | * db_result Result code from break or debug point. |
| 1340 | * regs The exception frame at time of fault/breakpoint. | 1340 | * regs The exception frame at time of fault/breakpoint. |
| 1341 | * should always be valid. | 1341 | * should always be valid. |
diff --git a/kernel/debug/kdb/kdb_support.c b/kernel/debug/kdb/kdb_support.c index 6b2485dcb050..5532dd37aa86 100644 --- a/kernel/debug/kdb/kdb_support.c +++ b/kernel/debug/kdb/kdb_support.c | |||
| @@ -545,7 +545,7 @@ int kdb_putword(unsigned long addr, unsigned long word, size_t size) | |||
| 545 | * Mask for process state. | 545 | * Mask for process state. |
| 546 | * Notes: | 546 | * Notes: |
| 547 | * The mask folds data from several sources into a single long value, so | 547 | * The mask folds data from several sources into a single long value, so |
| 548 | * be carefull not to overlap the bits. TASK_* bits are in the LSB, | 548 | * be careful not to overlap the bits. TASK_* bits are in the LSB, |
| 549 | * special cases like UNRUNNABLE are in the MSB. As of 2.6.10-rc1 there | 549 | * special cases like UNRUNNABLE are in the MSB. As of 2.6.10-rc1 there |
| 550 | * is no overlap between TASK_* and EXIT_* but that may not always be | 550 | * is no overlap between TASK_* and EXIT_* but that may not always be |
| 551 | * true, so EXIT_* bits are shifted left 16 bits before being stored in | 551 | * true, so EXIT_* bits are shifted left 16 bits before being stored in |
diff --git a/kernel/exit.c b/kernel/exit.c index 6a488ad2dce5..f5d2f63bae0b 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -841,7 +841,7 @@ static void exit_notify(struct task_struct *tsk, int group_dead) | |||
| 841 | /* Let father know we died | 841 | /* Let father know we died |
| 842 | * | 842 | * |
| 843 | * Thread signals are configurable, but you aren't going to use | 843 | * Thread signals are configurable, but you aren't going to use |
| 844 | * that to send signals to arbitary processes. | 844 | * that to send signals to arbitrary processes. |
| 845 | * That stops right now. | 845 | * That stops right now. |
| 846 | * | 846 | * |
| 847 | * If the parent exec id doesn't match the exec id we saved | 847 | * If the parent exec id doesn't match the exec id we saved |
diff --git a/kernel/futex.c b/kernel/futex.c index dfb924ffe65b..fe28dc282eae 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
| @@ -1886,7 +1886,7 @@ retry: | |||
| 1886 | restart->futex.val = val; | 1886 | restart->futex.val = val; |
| 1887 | restart->futex.time = abs_time->tv64; | 1887 | restart->futex.time = abs_time->tv64; |
| 1888 | restart->futex.bitset = bitset; | 1888 | restart->futex.bitset = bitset; |
| 1889 | restart->futex.flags = flags; | 1889 | restart->futex.flags = flags | FLAGS_HAS_TIMEOUT; |
| 1890 | 1890 | ||
| 1891 | ret = -ERESTART_RESTARTBLOCK; | 1891 | ret = -ERESTART_RESTARTBLOCK; |
| 1892 | 1892 | ||
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig index a69c333f78e4..c574f9a12c48 100644 --- a/kernel/irq/Kconfig +++ b/kernel/irq/Kconfig | |||
| @@ -10,9 +10,6 @@ menu "IRQ subsystem" | |||
| 10 | config GENERIC_HARDIRQS | 10 | config GENERIC_HARDIRQS |
| 11 | def_bool y | 11 | def_bool y |
| 12 | 12 | ||
| 13 | config GENERIC_HARDIRQS_NO_COMPAT | ||
| 14 | bool | ||
| 15 | |||
| 16 | # Options selectable by the architecture code | 13 | # Options selectable by the architecture code |
| 17 | 14 | ||
| 18 | # Make sparse irq Kconfig switch below available | 15 | # Make sparse irq Kconfig switch below available |
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 616ec1c6b06f..4af1e2b244cb 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
| @@ -415,7 +415,7 @@ out: | |||
| 415 | * @desc: the interrupt description structure for this irq | 415 | * @desc: the interrupt description structure for this irq |
| 416 | * | 416 | * |
| 417 | * Interrupt occures on the falling and/or rising edge of a hardware | 417 | * Interrupt occures on the falling and/or rising edge of a hardware |
| 418 | * signal. The occurence is latched into the irq controller hardware | 418 | * signal. The occurrence is latched into the irq controller hardware |
| 419 | * and must be acked in order to be reenabled. After the ack another | 419 | * and must be acked in order to be reenabled. After the ack another |
| 420 | * interrupt can happen on the same source even before the first one | 420 | * interrupt can happen on the same source even before the first one |
| 421 | * is handled by the associated event handler. If this happens it | 421 | * is handled by the associated event handler. If this happens it |
| @@ -514,7 +514,7 @@ void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc) | |||
| 514 | } while ((desc->istate & IRQS_PENDING) && | 514 | } while ((desc->istate & IRQS_PENDING) && |
| 515 | !irqd_irq_disabled(&desc->irq_data)); | 515 | !irqd_irq_disabled(&desc->irq_data)); |
| 516 | 516 | ||
| 517 | out_unlock: | 517 | out_eoi: |
| 518 | chip->irq_eoi(&desc->irq_data); | 518 | chip->irq_eoi(&desc->irq_data); |
| 519 | raw_spin_unlock(&desc->lock); | 519 | raw_spin_unlock(&desc->lock); |
| 520 | } | 520 | } |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 12a80fdae11c..07c1611f3899 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -1051,6 +1051,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) | |||
| 1051 | register_irq_proc(irq, desc); | 1051 | register_irq_proc(irq, desc); |
| 1052 | new->dir = NULL; | 1052 | new->dir = NULL; |
| 1053 | register_handler_proc(irq, new); | 1053 | register_handler_proc(irq, new); |
| 1054 | free_cpumask_var(mask); | ||
| 1054 | 1055 | ||
| 1055 | return 0; | 1056 | return 0; |
| 1056 | 1057 | ||
diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c index bc6194698dfd..47420908fba0 100644 --- a/kernel/irq/migration.c +++ b/kernel/irq/migration.c | |||
| @@ -35,7 +35,7 @@ void irq_move_masked_irq(struct irq_data *idata) | |||
| 35 | * do the disable, re-program, enable sequence. | 35 | * do the disable, re-program, enable sequence. |
| 36 | * This is *not* particularly important for level triggered | 36 | * This is *not* particularly important for level triggered |
| 37 | * but in a edge trigger case, we might be setting rte | 37 | * but in a edge trigger case, we might be setting rte |
| 38 | * when an active trigger is comming in. This could | 38 | * when an active trigger is coming in. This could |
| 39 | * cause some ioapics to mal-function. | 39 | * cause some ioapics to mal-function. |
| 40 | * Being paranoid i guess! | 40 | * Being paranoid i guess! |
| 41 | * | 41 | * |
diff --git a/kernel/kexec.c b/kernel/kexec.c index ec19b92c7ebd..55936f9cb251 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c | |||
| @@ -144,7 +144,7 @@ static int do_kimage_alloc(struct kimage **rimage, unsigned long entry, | |||
| 144 | /* Initialize the list of destination pages */ | 144 | /* Initialize the list of destination pages */ |
| 145 | INIT_LIST_HEAD(&image->dest_pages); | 145 | INIT_LIST_HEAD(&image->dest_pages); |
| 146 | 146 | ||
| 147 | /* Initialize the list of unuseable pages */ | 147 | /* Initialize the list of unusable pages */ |
| 148 | INIT_LIST_HEAD(&image->unuseable_pages); | 148 | INIT_LIST_HEAD(&image->unuseable_pages); |
| 149 | 149 | ||
| 150 | /* Read in the segments */ | 150 | /* Read in the segments */ |
| @@ -454,7 +454,7 @@ static struct page *kimage_alloc_normal_control_pages(struct kimage *image, | |||
| 454 | /* Deal with the destination pages I have inadvertently allocated. | 454 | /* Deal with the destination pages I have inadvertently allocated. |
| 455 | * | 455 | * |
| 456 | * Ideally I would convert multi-page allocations into single | 456 | * Ideally I would convert multi-page allocations into single |
| 457 | * page allocations, and add everyting to image->dest_pages. | 457 | * page allocations, and add everything to image->dest_pages. |
| 458 | * | 458 | * |
| 459 | * For now it is simpler to just free the pages. | 459 | * For now it is simpler to just free the pages. |
| 460 | */ | 460 | */ |
| @@ -602,7 +602,7 @@ static void kimage_free_extra_pages(struct kimage *image) | |||
| 602 | /* Walk through and free any extra destination pages I may have */ | 602 | /* Walk through and free any extra destination pages I may have */ |
| 603 | kimage_free_page_list(&image->dest_pages); | 603 | kimage_free_page_list(&image->dest_pages); |
| 604 | 604 | ||
| 605 | /* Walk through and free any unuseable pages I have cached */ | 605 | /* Walk through and free any unusable pages I have cached */ |
| 606 | kimage_free_page_list(&image->unuseable_pages); | 606 | kimage_free_page_list(&image->unuseable_pages); |
| 607 | 607 | ||
| 608 | } | 608 | } |
| @@ -1099,7 +1099,8 @@ size_t crash_get_memory_size(void) | |||
| 1099 | return size; | 1099 | return size; |
| 1100 | } | 1100 | } |
| 1101 | 1101 | ||
| 1102 | static void free_reserved_phys_range(unsigned long begin, unsigned long end) | 1102 | void __weak crash_free_reserved_phys_range(unsigned long begin, |
| 1103 | unsigned long end) | ||
| 1103 | { | 1104 | { |
| 1104 | unsigned long addr; | 1105 | unsigned long addr; |
| 1105 | 1106 | ||
| @@ -1135,7 +1136,7 @@ int crash_shrink_memory(unsigned long new_size) | |||
| 1135 | start = roundup(start, PAGE_SIZE); | 1136 | start = roundup(start, PAGE_SIZE); |
| 1136 | end = roundup(start + new_size, PAGE_SIZE); | 1137 | end = roundup(start + new_size, PAGE_SIZE); |
| 1137 | 1138 | ||
| 1138 | free_reserved_phys_range(end, crashk_res.end); | 1139 | crash_free_reserved_phys_range(end, crashk_res.end); |
| 1139 | 1140 | ||
| 1140 | if ((start == end) && (crashk_res.parent != NULL)) | 1141 | if ((start == end) && (crashk_res.parent != NULL)) |
| 1141 | release_resource(&crashk_res); | 1142 | release_resource(&crashk_res); |
diff --git a/kernel/kthread.c b/kernel/kthread.c index 684ab3f7dd72..3b34d2732bce 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c | |||
| @@ -139,7 +139,7 @@ static void create_kthread(struct kthread_create_info *create) | |||
| 139 | * in @node, to get NUMA affinity for kthread stack, or else give -1. | 139 | * in @node, to get NUMA affinity for kthread stack, or else give -1. |
| 140 | * When woken, the thread will run @threadfn() with @data as its | 140 | * When woken, the thread will run @threadfn() with @data as its |
| 141 | * argument. @threadfn() can either call do_exit() directly if it is a | 141 | * argument. @threadfn() can either call do_exit() directly if it is a |
| 142 | * standalone thread for which noone will call kthread_stop(), or | 142 | * standalone thread for which no one will call kthread_stop(), or |
| 143 | * return when 'kthread_should_stop()' is true (which means | 143 | * return when 'kthread_should_stop()' is true (which means |
| 144 | * kthread_stop() has been called). The return value should be zero | 144 | * kthread_stop() has been called). The return value should be zero |
| 145 | * or a negative error number; it will be passed to kthread_stop(). | 145 | * or a negative error number; it will be passed to kthread_stop(). |
diff --git a/kernel/latencytop.c b/kernel/latencytop.c index ee74b35e528d..376066e10413 100644 --- a/kernel/latencytop.c +++ b/kernel/latencytop.c | |||
| @@ -153,7 +153,7 @@ static inline void store_stacktrace(struct task_struct *tsk, | |||
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | /** | 155 | /** |
| 156 | * __account_scheduler_latency - record an occured latency | 156 | * __account_scheduler_latency - record an occurred latency |
| 157 | * @tsk - the task struct of the task hitting the latency | 157 | * @tsk - the task struct of the task hitting the latency |
| 158 | * @usecs - the duration of the latency in microseconds | 158 | * @usecs - the duration of the latency in microseconds |
| 159 | * @inter - 1 if the sleep was interruptible, 0 if uninterruptible | 159 | * @inter - 1 if the sleep was interruptible, 0 if uninterruptible |
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 0d2058da80f5..53a68956f131 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
| @@ -2309,7 +2309,7 @@ void trace_hardirqs_on_caller(unsigned long ip) | |||
| 2309 | if (unlikely(curr->hardirqs_enabled)) { | 2309 | if (unlikely(curr->hardirqs_enabled)) { |
| 2310 | /* | 2310 | /* |
| 2311 | * Neither irq nor preemption are disabled here | 2311 | * Neither irq nor preemption are disabled here |
| 2312 | * so this is racy by nature but loosing one hit | 2312 | * so this is racy by nature but losing one hit |
| 2313 | * in a stat is not a big deal. | 2313 | * in a stat is not a big deal. |
| 2314 | */ | 2314 | */ |
| 2315 | __debug_atomic_inc(redundant_hardirqs_on); | 2315 | __debug_atomic_inc(redundant_hardirqs_on); |
| @@ -2620,7 +2620,7 @@ static int mark_lock(struct task_struct *curr, struct held_lock *this, | |||
| 2620 | if (!graph_lock()) | 2620 | if (!graph_lock()) |
| 2621 | return 0; | 2621 | return 0; |
| 2622 | /* | 2622 | /* |
| 2623 | * Make sure we didnt race: | 2623 | * Make sure we didn't race: |
| 2624 | */ | 2624 | */ |
| 2625 | if (unlikely(hlock_class(this)->usage_mask & new_mask)) { | 2625 | if (unlikely(hlock_class(this)->usage_mask & new_mask)) { |
| 2626 | graph_unlock(); | 2626 | graph_unlock(); |
diff --git a/kernel/module.c b/kernel/module.c index 1f9f7bc56ca1..d5938a5c19c4 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
| @@ -809,7 +809,7 @@ SYSCALL_DEFINE2(delete_module, const char __user *, name_user, | |||
| 809 | wait_for_zero_refcount(mod); | 809 | wait_for_zero_refcount(mod); |
| 810 | 810 | ||
| 811 | mutex_unlock(&module_mutex); | 811 | mutex_unlock(&module_mutex); |
| 812 | /* Final destruction now noone is using it. */ | 812 | /* Final destruction now no one is using it. */ |
| 813 | if (mod->exit != NULL) | 813 | if (mod->exit != NULL) |
| 814 | mod->exit(); | 814 | mod->exit(); |
| 815 | blocking_notifier_call_chain(&module_notify_list, | 815 | blocking_notifier_call_chain(&module_notify_list, |
| @@ -2777,7 +2777,7 @@ static struct module *load_module(void __user *umod, | |||
| 2777 | mod->state = MODULE_STATE_COMING; | 2777 | mod->state = MODULE_STATE_COMING; |
| 2778 | 2778 | ||
| 2779 | /* Now sew it into the lists so we can get lockdep and oops | 2779 | /* Now sew it into the lists so we can get lockdep and oops |
| 2780 | * info during argument parsing. Noone should access us, since | 2780 | * info during argument parsing. No one should access us, since |
| 2781 | * strong_try_module_get() will fail. | 2781 | * strong_try_module_get() will fail. |
| 2782 | * lockdep/oops can run asynchronous, so use the RCU list insertion | 2782 | * lockdep/oops can run asynchronous, so use the RCU list insertion |
| 2783 | * function to insert in a way safe to concurrent readers. | 2783 | * function to insert in a way safe to concurrent readers. |
| @@ -2971,7 +2971,7 @@ static const char *get_ksymbol(struct module *mod, | |||
| 2971 | else | 2971 | else |
| 2972 | nextval = (unsigned long)mod->module_core+mod->core_text_size; | 2972 | nextval = (unsigned long)mod->module_core+mod->core_text_size; |
| 2973 | 2973 | ||
| 2974 | /* Scan for closest preceeding symbol, and next symbol. (ELF | 2974 | /* Scan for closest preceding symbol, and next symbol. (ELF |
| 2975 | starts real symbols at 1). */ | 2975 | starts real symbols at 1). */ |
| 2976 | for (i = 1; i < mod->num_symtab; i++) { | 2976 | for (i = 1; i < mod->num_symtab; i++) { |
| 2977 | if (mod->symtab[i].st_shndx == SHN_UNDEF) | 2977 | if (mod->symtab[i].st_shndx == SHN_UNDEF) |
diff --git a/kernel/mutex.c b/kernel/mutex.c index a5889fb28ecf..c4195fa98900 100644 --- a/kernel/mutex.c +++ b/kernel/mutex.c | |||
| @@ -245,7 +245,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, | |||
| 245 | } | 245 | } |
| 246 | __set_task_state(task, state); | 246 | __set_task_state(task, state); |
| 247 | 247 | ||
| 248 | /* didnt get the lock, go to sleep: */ | 248 | /* didn't get the lock, go to sleep: */ |
| 249 | spin_unlock_mutex(&lock->wait_lock, flags); | 249 | spin_unlock_mutex(&lock->wait_lock, flags); |
| 250 | preempt_enable_no_resched(); | 250 | preempt_enable_no_resched(); |
| 251 | schedule(); | 251 | schedule(); |
diff --git a/kernel/padata.c b/kernel/padata.c index 751019415d23..b91941df5e63 100644 --- a/kernel/padata.c +++ b/kernel/padata.c | |||
| @@ -262,7 +262,7 @@ static void padata_reorder(struct parallel_data *pd) | |||
| 262 | /* | 262 | /* |
| 263 | * This cpu has to do the parallel processing of the next | 263 | * This cpu has to do the parallel processing of the next |
| 264 | * object. It's waiting in the cpu's parallelization queue, | 264 | * object. It's waiting in the cpu's parallelization queue, |
| 265 | * so exit imediately. | 265 | * so exit immediately. |
| 266 | */ | 266 | */ |
| 267 | if (PTR_ERR(padata) == -ENODATA) { | 267 | if (PTR_ERR(padata) == -ENODATA) { |
| 268 | del_timer(&pd->timer); | 268 | del_timer(&pd->timer); |
| @@ -284,7 +284,7 @@ static void padata_reorder(struct parallel_data *pd) | |||
| 284 | /* | 284 | /* |
| 285 | * The next object that needs serialization might have arrived to | 285 | * The next object that needs serialization might have arrived to |
| 286 | * the reorder queues in the meantime, we will be called again | 286 | * the reorder queues in the meantime, we will be called again |
| 287 | * from the timer function if noone else cares for it. | 287 | * from the timer function if no one else cares for it. |
| 288 | */ | 288 | */ |
| 289 | if (atomic_read(&pd->reorder_objects) | 289 | if (atomic_read(&pd->reorder_objects) |
| 290 | && !(pinst->flags & PADATA_RESET)) | 290 | && !(pinst->flags & PADATA_RESET)) |
| @@ -515,7 +515,7 @@ static void __padata_stop(struct padata_instance *pinst) | |||
| 515 | put_online_cpus(); | 515 | put_online_cpus(); |
| 516 | } | 516 | } |
| 517 | 517 | ||
| 518 | /* Replace the internal control stucture with a new one. */ | 518 | /* Replace the internal control structure with a new one. */ |
| 519 | static void padata_replace(struct padata_instance *pinst, | 519 | static void padata_replace(struct padata_instance *pinst, |
| 520 | struct parallel_data *pd_new) | 520 | struct parallel_data *pd_new) |
| 521 | { | 521 | { |
| @@ -768,7 +768,7 @@ static int __padata_remove_cpu(struct padata_instance *pinst, int cpu) | |||
| 768 | } | 768 | } |
| 769 | 769 | ||
| 770 | /** | 770 | /** |
| 771 | * padata_remove_cpu - remove a cpu from the one or both(serial and paralell) | 771 | * padata_remove_cpu - remove a cpu from the one or both(serial and parallel) |
| 772 | * padata cpumasks. | 772 | * padata cpumasks. |
| 773 | * | 773 | * |
| 774 | * @pinst: padata instance | 774 | * @pinst: padata instance |
diff --git a/kernel/params.c b/kernel/params.c index 0da1411222b9..7ab388a48a2e 100644 --- a/kernel/params.c +++ b/kernel/params.c | |||
| @@ -95,7 +95,7 @@ static int parse_one(char *param, | |||
| 95 | /* Find parameter */ | 95 | /* Find parameter */ |
| 96 | for (i = 0; i < num_params; i++) { | 96 | for (i = 0; i < num_params; i++) { |
| 97 | if (parameq(param, params[i].name)) { | 97 | if (parameq(param, params[i].name)) { |
| 98 | /* Noone handled NULL, so do it here. */ | 98 | /* No one handled NULL, so do it here. */ |
| 99 | if (!val && params[i].ops->set != param_set_bool) | 99 | if (!val && params[i].ops->set != param_set_bool) |
| 100 | return -EINVAL; | 100 | return -EINVAL; |
| 101 | DEBUGP("They are equal! Calling %p\n", | 101 | DEBUGP("They are equal! Calling %p\n", |
diff --git a/kernel/perf_event.c b/kernel/perf_event.c index c75925c4d1e2..8e81a9860a0d 100644 --- a/kernel/perf_event.c +++ b/kernel/perf_event.c | |||
| @@ -145,8 +145,8 @@ static struct srcu_struct pmus_srcu; | |||
| 145 | */ | 145 | */ |
| 146 | int sysctl_perf_event_paranoid __read_mostly = 1; | 146 | int sysctl_perf_event_paranoid __read_mostly = 1; |
| 147 | 147 | ||
| 148 | /* Minimum for 128 pages + 1 for the user control page */ | 148 | /* Minimum for 512 kiB + 1 user control page */ |
| 149 | int sysctl_perf_event_mlock __read_mostly = 516; /* 'free' kb per user */ | 149 | int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ |
| 150 | 150 | ||
| 151 | /* | 151 | /* |
| 152 | * max perf event sample rate | 152 | * max perf event sample rate |
| @@ -364,6 +364,7 @@ void perf_cgroup_switch(struct task_struct *task, int mode) | |||
| 364 | } | 364 | } |
| 365 | 365 | ||
| 366 | if (mode & PERF_CGROUP_SWIN) { | 366 | if (mode & PERF_CGROUP_SWIN) { |
| 367 | WARN_ON_ONCE(cpuctx->cgrp); | ||
| 367 | /* set cgrp before ctxsw in to | 368 | /* set cgrp before ctxsw in to |
| 368 | * allow event_filter_match() to not | 369 | * allow event_filter_match() to not |
| 369 | * have to pass task around | 370 | * have to pass task around |
| @@ -2423,6 +2424,14 @@ static void perf_event_enable_on_exec(struct perf_event_context *ctx) | |||
| 2423 | if (!ctx || !ctx->nr_events) | 2424 | if (!ctx || !ctx->nr_events) |
| 2424 | goto out; | 2425 | goto out; |
| 2425 | 2426 | ||
| 2427 | /* | ||
| 2428 | * We must ctxsw out cgroup events to avoid conflict | ||
| 2429 | * when invoking perf_task_event_sched_in() later on | ||
| 2430 | * in this function. Otherwise we end up trying to | ||
| 2431 | * ctxswin cgroup events which are already scheduled | ||
| 2432 | * in. | ||
| 2433 | */ | ||
| 2434 | perf_cgroup_sched_out(current); | ||
| 2426 | task_ctx_sched_out(ctx, EVENT_ALL); | 2435 | task_ctx_sched_out(ctx, EVENT_ALL); |
| 2427 | 2436 | ||
| 2428 | raw_spin_lock(&ctx->lock); | 2437 | raw_spin_lock(&ctx->lock); |
| @@ -2447,6 +2456,9 @@ static void perf_event_enable_on_exec(struct perf_event_context *ctx) | |||
| 2447 | 2456 | ||
| 2448 | raw_spin_unlock(&ctx->lock); | 2457 | raw_spin_unlock(&ctx->lock); |
| 2449 | 2458 | ||
| 2459 | /* | ||
| 2460 | * Also calls ctxswin for cgroup events, if any: | ||
| 2461 | */ | ||
| 2450 | perf_event_context_sched_in(ctx, ctx->task); | 2462 | perf_event_context_sched_in(ctx, ctx->task); |
| 2451 | out: | 2463 | out: |
| 2452 | local_irq_restore(flags); | 2464 | local_irq_restore(flags); |
| @@ -6531,6 +6543,11 @@ SYSCALL_DEFINE5(perf_event_open, | |||
| 6531 | goto err_alloc; | 6543 | goto err_alloc; |
| 6532 | } | 6544 | } |
| 6533 | 6545 | ||
| 6546 | if (task) { | ||
| 6547 | put_task_struct(task); | ||
| 6548 | task = NULL; | ||
| 6549 | } | ||
| 6550 | |||
| 6534 | /* | 6551 | /* |
| 6535 | * Look up the group leader (we will attach this event to it): | 6552 | * Look up the group leader (we will attach this event to it): |
| 6536 | */ | 6553 | */ |
diff --git a/kernel/pid.c b/kernel/pid.c index 02f221274265..57a8346a270e 100644 --- a/kernel/pid.c +++ b/kernel/pid.c | |||
| @@ -217,11 +217,14 @@ static int alloc_pidmap(struct pid_namespace *pid_ns) | |||
| 217 | return -1; | 217 | return -1; |
| 218 | } | 218 | } |
| 219 | 219 | ||
| 220 | int next_pidmap(struct pid_namespace *pid_ns, int last) | 220 | int next_pidmap(struct pid_namespace *pid_ns, unsigned int last) |
| 221 | { | 221 | { |
| 222 | int offset; | 222 | int offset; |
| 223 | struct pidmap *map, *end; | 223 | struct pidmap *map, *end; |
| 224 | 224 | ||
| 225 | if (last >= PID_MAX_LIMIT) | ||
| 226 | return -1; | ||
| 227 | |||
| 225 | offset = (last + 1) & BITS_PER_PAGE_MASK; | 228 | offset = (last + 1) & BITS_PER_PAGE_MASK; |
| 226 | map = &pid_ns->pidmap[(last + 1)/BITS_PER_PAGE]; | 229 | map = &pid_ns->pidmap[(last + 1)/BITS_PER_PAGE]; |
| 227 | end = &pid_ns->pidmap[PIDMAP_ENTRIES]; | 230 | end = &pid_ns->pidmap[PIDMAP_ENTRIES]; |
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index 67fea9d25d55..0791b13df7bf 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
| @@ -1347,7 +1347,7 @@ void run_posix_cpu_timers(struct task_struct *tsk) | |||
| 1347 | 1347 | ||
| 1348 | /* | 1348 | /* |
| 1349 | * Now that all the timers on our list have the firing flag, | 1349 | * Now that all the timers on our list have the firing flag, |
| 1350 | * noone will touch their list entries but us. We'll take | 1350 | * no one will touch their list entries but us. We'll take |
| 1351 | * each timer's lock before clearing its firing flag, so no | 1351 | * each timer's lock before clearing its firing flag, so no |
| 1352 | * timer call will interfere. | 1352 | * timer call will interfere. |
| 1353 | */ | 1353 | */ |
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index 4c0124919f9a..e5498d7405c3 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c | |||
| @@ -313,7 +313,7 @@ static void schedule_next_timer(struct k_itimer *timr) | |||
| 313 | * restarted (i.e. we have flagged this in the sys_private entry of the | 313 | * restarted (i.e. we have flagged this in the sys_private entry of the |
| 314 | * info block). | 314 | * info block). |
| 315 | * | 315 | * |
| 316 | * To protect aginst the timer going away while the interrupt is queued, | 316 | * To protect against the timer going away while the interrupt is queued, |
| 317 | * we require that the it_requeue_pending flag be set. | 317 | * we require that the it_requeue_pending flag be set. |
| 318 | */ | 318 | */ |
| 319 | void do_schedule_next_timer(struct siginfo *info) | 319 | void do_schedule_next_timer(struct siginfo *info) |
diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig index 4603f08dc47b..6de9a8fc3417 100644 --- a/kernel/power/Kconfig +++ b/kernel/power/Kconfig | |||
| @@ -18,9 +18,13 @@ config SUSPEND_FREEZER | |||
| 18 | 18 | ||
| 19 | Turning OFF this setting is NOT recommended! If in doubt, say Y. | 19 | Turning OFF this setting is NOT recommended! If in doubt, say Y. |
| 20 | 20 | ||
| 21 | config HIBERNATE_CALLBACKS | ||
| 22 | bool | ||
| 23 | |||
| 21 | config HIBERNATION | 24 | config HIBERNATION |
| 22 | bool "Hibernation (aka 'suspend to disk')" | 25 | bool "Hibernation (aka 'suspend to disk')" |
| 23 | depends on SWAP && ARCH_HIBERNATION_POSSIBLE | 26 | depends on SWAP && ARCH_HIBERNATION_POSSIBLE |
| 27 | select HIBERNATE_CALLBACKS | ||
| 24 | select LZO_COMPRESS | 28 | select LZO_COMPRESS |
| 25 | select LZO_DECOMPRESS | 29 | select LZO_DECOMPRESS |
| 26 | ---help--- | 30 | ---help--- |
| @@ -85,7 +89,7 @@ config PM_STD_PARTITION | |||
| 85 | 89 | ||
| 86 | config PM_SLEEP | 90 | config PM_SLEEP |
| 87 | def_bool y | 91 | def_bool y |
| 88 | depends on SUSPEND || HIBERNATION || XEN_SAVE_RESTORE | 92 | depends on SUSPEND || HIBERNATE_CALLBACKS |
| 89 | 93 | ||
| 90 | config PM_SLEEP_SMP | 94 | config PM_SLEEP_SMP |
| 91 | def_bool y | 95 | def_bool y |
diff --git a/kernel/power/main.c b/kernel/power/main.c index 8eaba5f27b10..de9aef8742f4 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
| @@ -224,7 +224,7 @@ power_attr(state); | |||
| 224 | * writing to 'state'. It first should read from 'wakeup_count' and store | 224 | * writing to 'state'. It first should read from 'wakeup_count' and store |
| 225 | * the read value. Then, after carrying out its own preparations for the system | 225 | * the read value. Then, after carrying out its own preparations for the system |
| 226 | * transition to a sleep state, it should write the stored value to | 226 | * transition to a sleep state, it should write the stored value to |
| 227 | * 'wakeup_count'. If that fails, at least one wakeup event has occured since | 227 | * 'wakeup_count'. If that fails, at least one wakeup event has occurred since |
| 228 | * 'wakeup_count' was read and 'state' should not be written to. Otherwise, it | 228 | * 'wakeup_count' was read and 'state' should not be written to. Otherwise, it |
| 229 | * is allowed to write to 'state', but the transition will be aborted if there | 229 | * is allowed to write to 'state', but the transition will be aborted if there |
| 230 | * are any wakeup events detected after 'wakeup_count' was written to. | 230 | * are any wakeup events detected after 'wakeup_count' was written to. |
diff --git a/kernel/sched.c b/kernel/sched.c index f592ce6f8616..312f8b95c2d4 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -2309,7 +2309,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) | |||
| 2309 | * Cause a process which is running on another CPU to enter | 2309 | * Cause a process which is running on another CPU to enter |
| 2310 | * kernel-mode, without any delay. (to get signals handled.) | 2310 | * kernel-mode, without any delay. (to get signals handled.) |
| 2311 | * | 2311 | * |
| 2312 | * NOTE: this function doesnt have to take the runqueue lock, | 2312 | * NOTE: this function doesn't have to take the runqueue lock, |
| 2313 | * because all it wants to ensure is that the remote task enters | 2313 | * because all it wants to ensure is that the remote task enters |
| 2314 | * the kernel. If the IPI races and the task has been migrated | 2314 | * the kernel. If the IPI races and the task has been migrated |
| 2315 | * to another CPU then no harm is done and the purpose has been | 2315 | * to another CPU then no harm is done and the purpose has been |
| @@ -4111,20 +4111,20 @@ need_resched: | |||
| 4111 | try_to_wake_up_local(to_wakeup); | 4111 | try_to_wake_up_local(to_wakeup); |
| 4112 | } | 4112 | } |
| 4113 | deactivate_task(rq, prev, DEQUEUE_SLEEP); | 4113 | deactivate_task(rq, prev, DEQUEUE_SLEEP); |
| 4114 | |||
| 4115 | /* | ||
| 4116 | * If we are going to sleep and we have plugged IO queued, make | ||
| 4117 | * sure to submit it to avoid deadlocks. | ||
| 4118 | */ | ||
| 4119 | if (blk_needs_flush_plug(prev)) { | ||
| 4120 | raw_spin_unlock(&rq->lock); | ||
| 4121 | blk_schedule_flush_plug(prev); | ||
| 4122 | raw_spin_lock(&rq->lock); | ||
| 4123 | } | ||
| 4114 | } | 4124 | } |
| 4115 | switch_count = &prev->nvcsw; | 4125 | switch_count = &prev->nvcsw; |
| 4116 | } | 4126 | } |
| 4117 | 4127 | ||
| 4118 | /* | ||
| 4119 | * If we are going to sleep and we have plugged IO queued, make | ||
| 4120 | * sure to submit it to avoid deadlocks. | ||
| 4121 | */ | ||
| 4122 | if (prev->state != TASK_RUNNING && blk_needs_flush_plug(prev)) { | ||
| 4123 | raw_spin_unlock(&rq->lock); | ||
| 4124 | blk_flush_plug(prev); | ||
| 4125 | raw_spin_lock(&rq->lock); | ||
| 4126 | } | ||
| 4127 | |||
| 4128 | pre_schedule(rq, prev); | 4128 | pre_schedule(rq, prev); |
| 4129 | 4129 | ||
| 4130 | if (unlikely(!rq->nr_running)) | 4130 | if (unlikely(!rq->nr_running)) |
| @@ -4997,7 +4997,7 @@ recheck: | |||
| 4997 | */ | 4997 | */ |
| 4998 | raw_spin_lock_irqsave(&p->pi_lock, flags); | 4998 | raw_spin_lock_irqsave(&p->pi_lock, flags); |
| 4999 | /* | 4999 | /* |
| 5000 | * To be able to change p->policy safely, the apropriate | 5000 | * To be able to change p->policy safely, the appropriate |
| 5001 | * runqueue lock must be held. | 5001 | * runqueue lock must be held. |
| 5002 | */ | 5002 | */ |
| 5003 | rq = __task_rq_lock(p); | 5003 | rq = __task_rq_lock(p); |
| @@ -5011,6 +5011,17 @@ recheck: | |||
| 5011 | return -EINVAL; | 5011 | return -EINVAL; |
| 5012 | } | 5012 | } |
| 5013 | 5013 | ||
| 5014 | /* | ||
| 5015 | * If not changing anything there's no need to proceed further: | ||
| 5016 | */ | ||
| 5017 | if (unlikely(policy == p->policy && (!rt_policy(policy) || | ||
| 5018 | param->sched_priority == p->rt_priority))) { | ||
| 5019 | |||
| 5020 | __task_rq_unlock(rq); | ||
| 5021 | raw_spin_unlock_irqrestore(&p->pi_lock, flags); | ||
| 5022 | return 0; | ||
| 5023 | } | ||
| 5024 | |||
| 5014 | #ifdef CONFIG_RT_GROUP_SCHED | 5025 | #ifdef CONFIG_RT_GROUP_SCHED |
| 5015 | if (user) { | 5026 | if (user) { |
| 5016 | /* | 5027 | /* |
| @@ -5705,7 +5716,7 @@ void show_state_filter(unsigned long state_filter) | |||
| 5705 | do_each_thread(g, p) { | 5716 | do_each_thread(g, p) { |
| 5706 | /* | 5717 | /* |
| 5707 | * reset the NMI-timeout, listing all files on a slow | 5718 | * reset the NMI-timeout, listing all files on a slow |
| 5708 | * console might take alot of time: | 5719 | * console might take a lot of time: |
| 5709 | */ | 5720 | */ |
| 5710 | touch_nmi_watchdog(); | 5721 | touch_nmi_watchdog(); |
| 5711 | if (!state_filter || (p->state & state_filter)) | 5722 | if (!state_filter || (p->state & state_filter)) |
| @@ -6320,6 +6331,9 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) | |||
| 6320 | break; | 6331 | break; |
| 6321 | #endif | 6332 | #endif |
| 6322 | } | 6333 | } |
| 6334 | |||
| 6335 | update_max_interval(); | ||
| 6336 | |||
| 6323 | return NOTIFY_OK; | 6337 | return NOTIFY_OK; |
| 6324 | } | 6338 | } |
| 6325 | 6339 | ||
diff --git a/kernel/sched_autogroup.c b/kernel/sched_autogroup.c index 5946ac515602..429242f3c484 100644 --- a/kernel/sched_autogroup.c +++ b/kernel/sched_autogroup.c | |||
| @@ -179,7 +179,7 @@ void sched_autogroup_create_attach(struct task_struct *p) | |||
| 179 | struct autogroup *ag = autogroup_create(); | 179 | struct autogroup *ag = autogroup_create(); |
| 180 | 180 | ||
| 181 | autogroup_move_group(p, ag); | 181 | autogroup_move_group(p, ag); |
| 182 | /* drop extra refrence added by autogroup_create() */ | 182 | /* drop extra reference added by autogroup_create() */ |
| 183 | autogroup_kref_put(ag); | 183 | autogroup_kref_put(ag); |
| 184 | } | 184 | } |
| 185 | EXPORT_SYMBOL(sched_autogroup_create_attach); | 185 | EXPORT_SYMBOL(sched_autogroup_create_attach); |
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 3f7ec9e27ee1..6fa833ab2cb8 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | 22 | ||
| 23 | #include <linux/latencytop.h> | 23 | #include <linux/latencytop.h> |
| 24 | #include <linux/sched.h> | 24 | #include <linux/sched.h> |
| 25 | #include <linux/cpumask.h> | ||
| 25 | 26 | ||
| 26 | /* | 27 | /* |
| 27 | * Targeted preemption latency for CPU-bound tasks: | 28 | * Targeted preemption latency for CPU-bound tasks: |
| @@ -2103,21 +2104,20 @@ balance_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest, | |||
| 2103 | enum cpu_idle_type idle, int *all_pinned, | 2104 | enum cpu_idle_type idle, int *all_pinned, |
| 2104 | int *this_best_prio, struct cfs_rq *busiest_cfs_rq) | 2105 | int *this_best_prio, struct cfs_rq *busiest_cfs_rq) |
| 2105 | { | 2106 | { |
| 2106 | int loops = 0, pulled = 0, pinned = 0; | 2107 | int loops = 0, pulled = 0; |
| 2107 | long rem_load_move = max_load_move; | 2108 | long rem_load_move = max_load_move; |
| 2108 | struct task_struct *p, *n; | 2109 | struct task_struct *p, *n; |
| 2109 | 2110 | ||
| 2110 | if (max_load_move == 0) | 2111 | if (max_load_move == 0) |
| 2111 | goto out; | 2112 | goto out; |
| 2112 | 2113 | ||
| 2113 | pinned = 1; | ||
| 2114 | |||
| 2115 | list_for_each_entry_safe(p, n, &busiest_cfs_rq->tasks, se.group_node) { | 2114 | list_for_each_entry_safe(p, n, &busiest_cfs_rq->tasks, se.group_node) { |
| 2116 | if (loops++ > sysctl_sched_nr_migrate) | 2115 | if (loops++ > sysctl_sched_nr_migrate) |
| 2117 | break; | 2116 | break; |
| 2118 | 2117 | ||
| 2119 | if ((p->se.load.weight >> 1) > rem_load_move || | 2118 | if ((p->se.load.weight >> 1) > rem_load_move || |
| 2120 | !can_migrate_task(p, busiest, this_cpu, sd, idle, &pinned)) | 2119 | !can_migrate_task(p, busiest, this_cpu, sd, idle, |
| 2120 | all_pinned)) | ||
| 2121 | continue; | 2121 | continue; |
| 2122 | 2122 | ||
| 2123 | pull_task(busiest, p, this_rq, this_cpu); | 2123 | pull_task(busiest, p, this_rq, this_cpu); |
| @@ -2152,9 +2152,6 @@ out: | |||
| 2152 | */ | 2152 | */ |
| 2153 | schedstat_add(sd, lb_gained[idle], pulled); | 2153 | schedstat_add(sd, lb_gained[idle], pulled); |
| 2154 | 2154 | ||
| 2155 | if (all_pinned) | ||
| 2156 | *all_pinned = pinned; | ||
| 2157 | |||
| 2158 | return max_load_move - rem_load_move; | 2155 | return max_load_move - rem_load_move; |
| 2159 | } | 2156 | } |
| 2160 | 2157 | ||
| @@ -3061,7 +3058,7 @@ static inline void calculate_imbalance(struct sd_lb_stats *sds, int this_cpu, | |||
| 3061 | 3058 | ||
| 3062 | /* | 3059 | /* |
| 3063 | * if *imbalance is less than the average load per runnable task | 3060 | * if *imbalance is less than the average load per runnable task |
| 3064 | * there is no gaurantee that any tasks will be moved so we'll have | 3061 | * there is no guarantee that any tasks will be moved so we'll have |
| 3065 | * a think about bumping its value to force at least one task to be | 3062 | * a think about bumping its value to force at least one task to be |
| 3066 | * moved | 3063 | * moved |
| 3067 | */ | 3064 | */ |
| @@ -3126,6 +3123,8 @@ find_busiest_group(struct sched_domain *sd, int this_cpu, | |||
| 3126 | if (!sds.busiest || sds.busiest_nr_running == 0) | 3123 | if (!sds.busiest || sds.busiest_nr_running == 0) |
| 3127 | goto out_balanced; | 3124 | goto out_balanced; |
| 3128 | 3125 | ||
| 3126 | sds.avg_load = (SCHED_LOAD_SCALE * sds.total_load) / sds.total_pwr; | ||
| 3127 | |||
| 3129 | /* | 3128 | /* |
| 3130 | * If the busiest group is imbalanced the below checks don't | 3129 | * If the busiest group is imbalanced the below checks don't |
| 3131 | * work because they assumes all things are equal, which typically | 3130 | * work because they assumes all things are equal, which typically |
| @@ -3150,7 +3149,6 @@ find_busiest_group(struct sched_domain *sd, int this_cpu, | |||
| 3150 | * Don't pull any tasks if this group is already above the domain | 3149 | * Don't pull any tasks if this group is already above the domain |
| 3151 | * average load. | 3150 | * average load. |
| 3152 | */ | 3151 | */ |
| 3153 | sds.avg_load = (SCHED_LOAD_SCALE * sds.total_load) / sds.total_pwr; | ||
| 3154 | if (sds.this_load >= sds.avg_load) | 3152 | if (sds.this_load >= sds.avg_load) |
| 3155 | goto out_balanced; | 3153 | goto out_balanced; |
| 3156 | 3154 | ||
| @@ -3339,6 +3337,7 @@ redo: | |||
| 3339 | * still unbalanced. ld_moved simply stays zero, so it is | 3337 | * still unbalanced. ld_moved simply stays zero, so it is |
| 3340 | * correctly treated as an imbalance. | 3338 | * correctly treated as an imbalance. |
| 3341 | */ | 3339 | */ |
| 3340 | all_pinned = 1; | ||
| 3342 | local_irq_save(flags); | 3341 | local_irq_save(flags); |
| 3343 | double_rq_lock(this_rq, busiest); | 3342 | double_rq_lock(this_rq, busiest); |
| 3344 | ld_moved = move_tasks(this_rq, this_cpu, busiest, | 3343 | ld_moved = move_tasks(this_rq, this_cpu, busiest, |
| @@ -3819,6 +3818,17 @@ void select_nohz_load_balancer(int stop_tick) | |||
| 3819 | 3818 | ||
| 3820 | static DEFINE_SPINLOCK(balancing); | 3819 | static DEFINE_SPINLOCK(balancing); |
| 3821 | 3820 | ||
| 3821 | static unsigned long __read_mostly max_load_balance_interval = HZ/10; | ||
| 3822 | |||
| 3823 | /* | ||
| 3824 | * Scale the max load_balance interval with the number of CPUs in the system. | ||
| 3825 | * This trades load-balance latency on larger machines for less cross talk. | ||
| 3826 | */ | ||
| 3827 | static void update_max_interval(void) | ||
| 3828 | { | ||
| 3829 | max_load_balance_interval = HZ*num_online_cpus()/10; | ||
| 3830 | } | ||
| 3831 | |||
| 3822 | /* | 3832 | /* |
| 3823 | * It checks each scheduling domain to see if it is due to be balanced, | 3833 | * It checks each scheduling domain to see if it is due to be balanced, |
| 3824 | * and initiates a balancing operation if so. | 3834 | * and initiates a balancing operation if so. |
| @@ -3848,10 +3858,7 @@ static void rebalance_domains(int cpu, enum cpu_idle_type idle) | |||
| 3848 | 3858 | ||
| 3849 | /* scale ms to jiffies */ | 3859 | /* scale ms to jiffies */ |
| 3850 | interval = msecs_to_jiffies(interval); | 3860 | interval = msecs_to_jiffies(interval); |
| 3851 | if (unlikely(!interval)) | 3861 | interval = clamp(interval, 1UL, max_load_balance_interval); |
| 3852 | interval = 1; | ||
| 3853 | if (interval > HZ*NR_CPUS/10) | ||
| 3854 | interval = HZ*NR_CPUS/10; | ||
| 3855 | 3862 | ||
| 3856 | need_serialize = sd->flags & SD_SERIALIZE; | 3863 | need_serialize = sd->flags & SD_SERIALIZE; |
| 3857 | 3864 | ||
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c index db308cb08b75..e7cebdc65f82 100644 --- a/kernel/sched_rt.c +++ b/kernel/sched_rt.c | |||
| @@ -1378,7 +1378,7 @@ retry: | |||
| 1378 | task = pick_next_pushable_task(rq); | 1378 | task = pick_next_pushable_task(rq); |
| 1379 | if (task_cpu(next_task) == rq->cpu && task == next_task) { | 1379 | if (task_cpu(next_task) == rq->cpu && task == next_task) { |
| 1380 | /* | 1380 | /* |
| 1381 | * If we get here, the task hasnt moved at all, but | 1381 | * If we get here, the task hasn't moved at all, but |
| 1382 | * it has failed to push. We will not try again, | 1382 | * it has failed to push. We will not try again, |
| 1383 | * since the other cpus will pull from us when they | 1383 | * since the other cpus will pull from us when they |
| 1384 | * are ready. | 1384 | * are ready. |
| @@ -1488,7 +1488,7 @@ static int pull_rt_task(struct rq *this_rq) | |||
| 1488 | /* | 1488 | /* |
| 1489 | * We continue with the search, just in | 1489 | * We continue with the search, just in |
| 1490 | * case there's an even higher prio task | 1490 | * case there's an even higher prio task |
| 1491 | * in another runqueue. (low likelyhood | 1491 | * in another runqueue. (low likelihood |
| 1492 | * but possible) | 1492 | * but possible) |
| 1493 | */ | 1493 | */ |
| 1494 | } | 1494 | } |
diff --git a/kernel/signal.c b/kernel/signal.c index 1186cf7fac77..7165af5f1b11 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
| @@ -226,7 +226,7 @@ static inline void print_dropped_signal(int sig) | |||
| 226 | /* | 226 | /* |
| 227 | * allocate a new signal queue record | 227 | * allocate a new signal queue record |
| 228 | * - this may be called without locks if and only if t == current, otherwise an | 228 | * - this may be called without locks if and only if t == current, otherwise an |
| 229 | * appopriate lock must be held to stop the target task from exiting | 229 | * appropriate lock must be held to stop the target task from exiting |
| 230 | */ | 230 | */ |
| 231 | static struct sigqueue * | 231 | static struct sigqueue * |
| 232 | __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimit) | 232 | __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimit) |
| @@ -375,15 +375,15 @@ int unhandled_signal(struct task_struct *tsk, int sig) | |||
| 375 | return !tracehook_consider_fatal_signal(tsk, sig); | 375 | return !tracehook_consider_fatal_signal(tsk, sig); |
| 376 | } | 376 | } |
| 377 | 377 | ||
| 378 | 378 | /* | |
| 379 | /* Notify the system that a driver wants to block all signals for this | 379 | * Notify the system that a driver wants to block all signals for this |
| 380 | * process, and wants to be notified if any signals at all were to be | 380 | * process, and wants to be notified if any signals at all were to be |
| 381 | * sent/acted upon. If the notifier routine returns non-zero, then the | 381 | * sent/acted upon. If the notifier routine returns non-zero, then the |
| 382 | * signal will be acted upon after all. If the notifier routine returns 0, | 382 | * signal will be acted upon after all. If the notifier routine returns 0, |
| 383 | * then then signal will be blocked. Only one block per process is | 383 | * then then signal will be blocked. Only one block per process is |
| 384 | * allowed. priv is a pointer to private data that the notifier routine | 384 | * allowed. priv is a pointer to private data that the notifier routine |
| 385 | * can use to determine if the signal should be blocked or not. */ | 385 | * can use to determine if the signal should be blocked or not. |
| 386 | 386 | */ | |
| 387 | void | 387 | void |
| 388 | block_all_signals(int (*notifier)(void *priv), void *priv, sigset_t *mask) | 388 | block_all_signals(int (*notifier)(void *priv), void *priv, sigset_t *mask) |
| 389 | { | 389 | { |
| @@ -434,9 +434,10 @@ still_pending: | |||
| 434 | copy_siginfo(info, &first->info); | 434 | copy_siginfo(info, &first->info); |
| 435 | __sigqueue_free(first); | 435 | __sigqueue_free(first); |
| 436 | } else { | 436 | } else { |
| 437 | /* Ok, it wasn't in the queue. This must be | 437 | /* |
| 438 | a fast-pathed signal or we must have been | 438 | * Ok, it wasn't in the queue. This must be |
| 439 | out of queue space. So zero out the info. | 439 | * a fast-pathed signal or we must have been |
| 440 | * out of queue space. So zero out the info. | ||
| 440 | */ | 441 | */ |
| 441 | info->si_signo = sig; | 442 | info->si_signo = sig; |
| 442 | info->si_errno = 0; | 443 | info->si_errno = 0; |
| @@ -468,7 +469,7 @@ static int __dequeue_signal(struct sigpending *pending, sigset_t *mask, | |||
| 468 | } | 469 | } |
| 469 | 470 | ||
| 470 | /* | 471 | /* |
| 471 | * Dequeue a signal and return the element to the caller, which is | 472 | * Dequeue a signal and return the element to the caller, which is |
| 472 | * expected to free it. | 473 | * expected to free it. |
| 473 | * | 474 | * |
| 474 | * All callers have to hold the siglock. | 475 | * All callers have to hold the siglock. |
| @@ -490,7 +491,7 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) | |||
| 490 | * itimers are process shared and we restart periodic | 491 | * itimers are process shared and we restart periodic |
| 491 | * itimers in the signal delivery path to prevent DoS | 492 | * itimers in the signal delivery path to prevent DoS |
| 492 | * attacks in the high resolution timer case. This is | 493 | * attacks in the high resolution timer case. This is |
| 493 | * compliant with the old way of self restarting | 494 | * compliant with the old way of self-restarting |
| 494 | * itimers, as the SIGALRM is a legacy signal and only | 495 | * itimers, as the SIGALRM is a legacy signal and only |
| 495 | * queued once. Changing the restart behaviour to | 496 | * queued once. Changing the restart behaviour to |
| 496 | * restart the timer in the signal dequeue path is | 497 | * restart the timer in the signal dequeue path is |
| @@ -923,14 +924,15 @@ static int __send_signal(int sig, struct siginfo *info, struct task_struct *t, | |||
| 923 | if (info == SEND_SIG_FORCED) | 924 | if (info == SEND_SIG_FORCED) |
| 924 | goto out_set; | 925 | goto out_set; |
| 925 | 926 | ||
| 926 | /* Real-time signals must be queued if sent by sigqueue, or | 927 | /* |
| 927 | some other real-time mechanism. It is implementation | 928 | * Real-time signals must be queued if sent by sigqueue, or |
| 928 | defined whether kill() does so. We attempt to do so, on | 929 | * some other real-time mechanism. It is implementation |
| 929 | the principle of least surprise, but since kill is not | 930 | * defined whether kill() does so. We attempt to do so, on |
| 930 | allowed to fail with EAGAIN when low on memory we just | 931 | * the principle of least surprise, but since kill is not |
| 931 | make sure at least one signal gets delivered and don't | 932 | * allowed to fail with EAGAIN when low on memory we just |
| 932 | pass on the info struct. */ | 933 | * make sure at least one signal gets delivered and don't |
| 933 | 934 | * pass on the info struct. | |
| 935 | */ | ||
| 934 | if (sig < SIGRTMIN) | 936 | if (sig < SIGRTMIN) |
| 935 | override_rlimit = (is_si_special(info) || info->si_code >= 0); | 937 | override_rlimit = (is_si_special(info) || info->si_code >= 0); |
| 936 | else | 938 | else |
| @@ -1201,8 +1203,7 @@ retry: | |||
| 1201 | return error; | 1203 | return error; |
| 1202 | } | 1204 | } |
| 1203 | 1205 | ||
| 1204 | int | 1206 | int kill_proc_info(int sig, struct siginfo *info, pid_t pid) |
| 1205 | kill_proc_info(int sig, struct siginfo *info, pid_t pid) | ||
| 1206 | { | 1207 | { |
| 1207 | int error; | 1208 | int error; |
| 1208 | rcu_read_lock(); | 1209 | rcu_read_lock(); |
| @@ -1299,8 +1300,7 @@ static int kill_something_info(int sig, struct siginfo *info, pid_t pid) | |||
| 1299 | * These are for backward compatibility with the rest of the kernel source. | 1300 | * These are for backward compatibility with the rest of the kernel source. |
| 1300 | */ | 1301 | */ |
| 1301 | 1302 | ||
| 1302 | int | 1303 | int send_sig_info(int sig, struct siginfo *info, struct task_struct *p) |
| 1303 | send_sig_info(int sig, struct siginfo *info, struct task_struct *p) | ||
| 1304 | { | 1304 | { |
| 1305 | /* | 1305 | /* |
| 1306 | * Make sure legacy kernel users don't send in bad values | 1306 | * Make sure legacy kernel users don't send in bad values |
| @@ -1368,7 +1368,7 @@ EXPORT_SYMBOL(kill_pid); | |||
| 1368 | * These functions support sending signals using preallocated sigqueue | 1368 | * These functions support sending signals using preallocated sigqueue |
| 1369 | * structures. This is needed "because realtime applications cannot | 1369 | * structures. This is needed "because realtime applications cannot |
| 1370 | * afford to lose notifications of asynchronous events, like timer | 1370 | * afford to lose notifications of asynchronous events, like timer |
| 1371 | * expirations or I/O completions". In the case of Posix Timers | 1371 | * expirations or I/O completions". In the case of POSIX Timers |
| 1372 | * we allocate the sigqueue structure from the timer_create. If this | 1372 | * we allocate the sigqueue structure from the timer_create. If this |
| 1373 | * allocation fails we are able to report the failure to the application | 1373 | * allocation fails we are able to report the failure to the application |
| 1374 | * with an EAGAIN error. | 1374 | * with an EAGAIN error. |
| @@ -1553,7 +1553,7 @@ static void do_notify_parent_cldstop(struct task_struct *tsk, int why) | |||
| 1553 | info.si_signo = SIGCHLD; | 1553 | info.si_signo = SIGCHLD; |
| 1554 | info.si_errno = 0; | 1554 | info.si_errno = 0; |
| 1555 | /* | 1555 | /* |
| 1556 | * see comment in do_notify_parent() abot the following 3 lines | 1556 | * see comment in do_notify_parent() about the following 4 lines |
| 1557 | */ | 1557 | */ |
| 1558 | rcu_read_lock(); | 1558 | rcu_read_lock(); |
| 1559 | info.si_pid = task_pid_nr_ns(tsk, parent->nsproxy->pid_ns); | 1559 | info.si_pid = task_pid_nr_ns(tsk, parent->nsproxy->pid_ns); |
| @@ -1611,7 +1611,7 @@ static inline int may_ptrace_stop(void) | |||
| 1611 | } | 1611 | } |
| 1612 | 1612 | ||
| 1613 | /* | 1613 | /* |
| 1614 | * Return nonzero if there is a SIGKILL that should be waking us up. | 1614 | * Return non-zero if there is a SIGKILL that should be waking us up. |
| 1615 | * Called with the siglock held. | 1615 | * Called with the siglock held. |
| 1616 | */ | 1616 | */ |
| 1617 | static int sigkill_pending(struct task_struct *tsk) | 1617 | static int sigkill_pending(struct task_struct *tsk) |
| @@ -1735,7 +1735,7 @@ void ptrace_notify(int exit_code) | |||
| 1735 | /* | 1735 | /* |
| 1736 | * This performs the stopping for SIGSTOP and other stop signals. | 1736 | * This performs the stopping for SIGSTOP and other stop signals. |
| 1737 | * We have to stop all threads in the thread group. | 1737 | * We have to stop all threads in the thread group. |
| 1738 | * Returns nonzero if we've actually stopped and released the siglock. | 1738 | * Returns non-zero if we've actually stopped and released the siglock. |
| 1739 | * Returns zero if we didn't stop and still hold the siglock. | 1739 | * Returns zero if we didn't stop and still hold the siglock. |
| 1740 | */ | 1740 | */ |
| 1741 | static int do_signal_stop(int signr) | 1741 | static int do_signal_stop(int signr) |
| @@ -1823,10 +1823,12 @@ static int ptrace_signal(int signr, siginfo_t *info, | |||
| 1823 | 1823 | ||
| 1824 | current->exit_code = 0; | 1824 | current->exit_code = 0; |
| 1825 | 1825 | ||
| 1826 | /* Update the siginfo structure if the signal has | 1826 | /* |
| 1827 | changed. If the debugger wanted something | 1827 | * Update the siginfo structure if the signal has |
| 1828 | specific in the siginfo structure then it should | 1828 | * changed. If the debugger wanted something |
| 1829 | have updated *info via PTRACE_SETSIGINFO. */ | 1829 | * specific in the siginfo structure then it should |
| 1830 | * have updated *info via PTRACE_SETSIGINFO. | ||
| 1831 | */ | ||
| 1830 | if (signr != info->si_signo) { | 1832 | if (signr != info->si_signo) { |
| 1831 | info->si_signo = signr; | 1833 | info->si_signo = signr; |
| 1832 | info->si_errno = 0; | 1834 | info->si_errno = 0; |
| @@ -1885,7 +1887,7 @@ relock: | |||
| 1885 | for (;;) { | 1887 | for (;;) { |
| 1886 | struct k_sigaction *ka; | 1888 | struct k_sigaction *ka; |
| 1887 | /* | 1889 | /* |
| 1888 | * Tracing can induce an artifical signal and choose sigaction. | 1890 | * Tracing can induce an artificial signal and choose sigaction. |
| 1889 | * The return value in @signr determines the default action, | 1891 | * The return value in @signr determines the default action, |
| 1890 | * but @info->si_signo is the signal number we will report. | 1892 | * but @info->si_signo is the signal number we will report. |
| 1891 | */ | 1893 | */ |
| @@ -2034,7 +2036,8 @@ void exit_signals(struct task_struct *tsk) | |||
| 2034 | if (!signal_pending(tsk)) | 2036 | if (!signal_pending(tsk)) |
| 2035 | goto out; | 2037 | goto out; |
| 2036 | 2038 | ||
| 2037 | /* It could be that __group_complete_signal() choose us to | 2039 | /* |
| 2040 | * It could be that __group_complete_signal() choose us to | ||
| 2038 | * notify about group-wide signal. Another thread should be | 2041 | * notify about group-wide signal. Another thread should be |
| 2039 | * woken now to take the signal since we will not. | 2042 | * woken now to take the signal since we will not. |
| 2040 | */ | 2043 | */ |
| @@ -2072,6 +2075,9 @@ EXPORT_SYMBOL(unblock_all_signals); | |||
| 2072 | * System call entry points. | 2075 | * System call entry points. |
| 2073 | */ | 2076 | */ |
| 2074 | 2077 | ||
| 2078 | /** | ||
| 2079 | * sys_restart_syscall - restart a system call | ||
| 2080 | */ | ||
| 2075 | SYSCALL_DEFINE0(restart_syscall) | 2081 | SYSCALL_DEFINE0(restart_syscall) |
| 2076 | { | 2082 | { |
| 2077 | struct restart_block *restart = ¤t_thread_info()->restart_block; | 2083 | struct restart_block *restart = ¤t_thread_info()->restart_block; |
| @@ -2125,6 +2131,13 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset) | |||
| 2125 | return error; | 2131 | return error; |
| 2126 | } | 2132 | } |
| 2127 | 2133 | ||
| 2134 | /** | ||
| 2135 | * sys_rt_sigprocmask - change the list of currently blocked signals | ||
| 2136 | * @how: whether to add, remove, or set signals | ||
| 2137 | * @set: stores pending signals | ||
| 2138 | * @oset: previous value of signal mask if non-null | ||
| 2139 | * @sigsetsize: size of sigset_t type | ||
| 2140 | */ | ||
| 2128 | SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set, | 2141 | SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set, |
| 2129 | sigset_t __user *, oset, size_t, sigsetsize) | 2142 | sigset_t __user *, oset, size_t, sigsetsize) |
| 2130 | { | 2143 | { |
| @@ -2183,8 +2196,14 @@ long do_sigpending(void __user *set, unsigned long sigsetsize) | |||
| 2183 | 2196 | ||
| 2184 | out: | 2197 | out: |
| 2185 | return error; | 2198 | return error; |
| 2186 | } | 2199 | } |
| 2187 | 2200 | ||
| 2201 | /** | ||
| 2202 | * sys_rt_sigpending - examine a pending signal that has been raised | ||
| 2203 | * while blocked | ||
| 2204 | * @set: stores pending signals | ||
| 2205 | * @sigsetsize: size of sigset_t type or larger | ||
| 2206 | */ | ||
| 2188 | SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize) | 2207 | SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize) |
| 2189 | { | 2208 | { |
| 2190 | return do_sigpending(set, sigsetsize); | 2209 | return do_sigpending(set, sigsetsize); |
| @@ -2233,9 +2252,9 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from) | |||
| 2233 | err |= __put_user(from->si_trapno, &to->si_trapno); | 2252 | err |= __put_user(from->si_trapno, &to->si_trapno); |
| 2234 | #endif | 2253 | #endif |
| 2235 | #ifdef BUS_MCEERR_AO | 2254 | #ifdef BUS_MCEERR_AO |
| 2236 | /* | 2255 | /* |
| 2237 | * Other callers might not initialize the si_lsb field, | 2256 | * Other callers might not initialize the si_lsb field, |
| 2238 | * so check explicitely for the right codes here. | 2257 | * so check explicitly for the right codes here. |
| 2239 | */ | 2258 | */ |
| 2240 | if (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO) | 2259 | if (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO) |
| 2241 | err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb); | 2260 | err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb); |
| @@ -2264,6 +2283,14 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from) | |||
| 2264 | 2283 | ||
| 2265 | #endif | 2284 | #endif |
| 2266 | 2285 | ||
| 2286 | /** | ||
| 2287 | * sys_rt_sigtimedwait - synchronously wait for queued signals specified | ||
| 2288 | * in @uthese | ||
| 2289 | * @uthese: queued signals to wait for | ||
| 2290 | * @uinfo: if non-null, the signal's siginfo is returned here | ||
| 2291 | * @uts: upper bound on process time suspension | ||
| 2292 | * @sigsetsize: size of sigset_t type | ||
| 2293 | */ | ||
| 2267 | SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, | 2294 | SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, |
| 2268 | siginfo_t __user *, uinfo, const struct timespec __user *, uts, | 2295 | siginfo_t __user *, uinfo, const struct timespec __user *, uts, |
| 2269 | size_t, sigsetsize) | 2296 | size_t, sigsetsize) |
| @@ -2280,7 +2307,7 @@ SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, | |||
| 2280 | 2307 | ||
| 2281 | if (copy_from_user(&these, uthese, sizeof(these))) | 2308 | if (copy_from_user(&these, uthese, sizeof(these))) |
| 2282 | return -EFAULT; | 2309 | return -EFAULT; |
| 2283 | 2310 | ||
| 2284 | /* | 2311 | /* |
| 2285 | * Invert the set of allowed signals to get those we | 2312 | * Invert the set of allowed signals to get those we |
| 2286 | * want to block. | 2313 | * want to block. |
| @@ -2305,9 +2332,11 @@ SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, | |||
| 2305 | + (ts.tv_sec || ts.tv_nsec)); | 2332 | + (ts.tv_sec || ts.tv_nsec)); |
| 2306 | 2333 | ||
| 2307 | if (timeout) { | 2334 | if (timeout) { |
| 2308 | /* None ready -- temporarily unblock those we're | 2335 | /* |
| 2336 | * None ready -- temporarily unblock those we're | ||
| 2309 | * interested while we are sleeping in so that we'll | 2337 | * interested while we are sleeping in so that we'll |
| 2310 | * be awakened when they arrive. */ | 2338 | * be awakened when they arrive. |
| 2339 | */ | ||
| 2311 | current->real_blocked = current->blocked; | 2340 | current->real_blocked = current->blocked; |
| 2312 | sigandsets(¤t->blocked, ¤t->blocked, &these); | 2341 | sigandsets(¤t->blocked, ¤t->blocked, &these); |
| 2313 | recalc_sigpending(); | 2342 | recalc_sigpending(); |
| @@ -2339,6 +2368,11 @@ SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, | |||
| 2339 | return ret; | 2368 | return ret; |
| 2340 | } | 2369 | } |
| 2341 | 2370 | ||
| 2371 | /** | ||
| 2372 | * sys_kill - send a signal to a process | ||
| 2373 | * @pid: the PID of the process | ||
| 2374 | * @sig: signal to be sent | ||
| 2375 | */ | ||
| 2342 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) | 2376 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
| 2343 | { | 2377 | { |
| 2344 | struct siginfo info; | 2378 | struct siginfo info; |
| @@ -2414,7 +2448,11 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig) | |||
| 2414 | return do_tkill(tgid, pid, sig); | 2448 | return do_tkill(tgid, pid, sig); |
| 2415 | } | 2449 | } |
| 2416 | 2450 | ||
| 2417 | /* | 2451 | /** |
| 2452 | * sys_tkill - send signal to one specific task | ||
| 2453 | * @pid: the PID of the task | ||
| 2454 | * @sig: signal to be sent | ||
| 2455 | * | ||
| 2418 | * Send a signal to only one task, even if it's a CLONE_THREAD task. | 2456 | * Send a signal to only one task, even if it's a CLONE_THREAD task. |
| 2419 | */ | 2457 | */ |
| 2420 | SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) | 2458 | SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) |
| @@ -2426,6 +2464,12 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) | |||
| 2426 | return do_tkill(0, pid, sig); | 2464 | return do_tkill(0, pid, sig); |
| 2427 | } | 2465 | } |
| 2428 | 2466 | ||
| 2467 | /** | ||
| 2468 | * sys_rt_sigqueueinfo - send signal information to a signal | ||
| 2469 | * @pid: the PID of the thread | ||
| 2470 | * @sig: signal to be sent | ||
| 2471 | * @uinfo: signal info to be sent | ||
| 2472 | */ | ||
| 2429 | SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig, | 2473 | SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig, |
| 2430 | siginfo_t __user *, uinfo) | 2474 | siginfo_t __user *, uinfo) |
| 2431 | { | 2475 | { |
| @@ -2553,12 +2597,11 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s | |||
| 2553 | 2597 | ||
| 2554 | error = -EINVAL; | 2598 | error = -EINVAL; |
| 2555 | /* | 2599 | /* |
| 2556 | * | 2600 | * Note - this code used to test ss_flags incorrectly: |
| 2557 | * Note - this code used to test ss_flags incorrectly | ||
| 2558 | * old code may have been written using ss_flags==0 | 2601 | * old code may have been written using ss_flags==0 |
| 2559 | * to mean ss_flags==SS_ONSTACK (as this was the only | 2602 | * to mean ss_flags==SS_ONSTACK (as this was the only |
| 2560 | * way that worked) - this fix preserves that older | 2603 | * way that worked) - this fix preserves that older |
| 2561 | * mechanism | 2604 | * mechanism. |
| 2562 | */ | 2605 | */ |
| 2563 | if (ss_flags != SS_DISABLE && ss_flags != SS_ONSTACK && ss_flags != 0) | 2606 | if (ss_flags != SS_DISABLE && ss_flags != SS_ONSTACK && ss_flags != 0) |
| 2564 | goto out; | 2607 | goto out; |
| @@ -2592,6 +2635,10 @@ out: | |||
| 2592 | 2635 | ||
| 2593 | #ifdef __ARCH_WANT_SYS_SIGPENDING | 2636 | #ifdef __ARCH_WANT_SYS_SIGPENDING |
| 2594 | 2637 | ||
| 2638 | /** | ||
| 2639 | * sys_sigpending - examine pending signals | ||
| 2640 | * @set: where mask of pending signal is returned | ||
| 2641 | */ | ||
| 2595 | SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set) | 2642 | SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set) |
| 2596 | { | 2643 | { |
| 2597 | return do_sigpending(set, sizeof(*set)); | 2644 | return do_sigpending(set, sizeof(*set)); |
| @@ -2600,8 +2647,15 @@ SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set) | |||
| 2600 | #endif | 2647 | #endif |
| 2601 | 2648 | ||
| 2602 | #ifdef __ARCH_WANT_SYS_SIGPROCMASK | 2649 | #ifdef __ARCH_WANT_SYS_SIGPROCMASK |
| 2603 | /* Some platforms have their own version with special arguments others | 2650 | /** |
| 2604 | support only sys_rt_sigprocmask. */ | 2651 | * sys_sigprocmask - examine and change blocked signals |
| 2652 | * @how: whether to add, remove, or set signals | ||
| 2653 | * @set: signals to add or remove (if non-null) | ||
| 2654 | * @oset: previous value of signal mask if non-null | ||
| 2655 | * | ||
| 2656 | * Some platforms have their own version with special arguments; | ||
| 2657 | * others support only sys_rt_sigprocmask. | ||
| 2658 | */ | ||
| 2605 | 2659 | ||
| 2606 | SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set, | 2660 | SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set, |
| 2607 | old_sigset_t __user *, oset) | 2661 | old_sigset_t __user *, oset) |
| @@ -2654,6 +2708,13 @@ out: | |||
| 2654 | #endif /* __ARCH_WANT_SYS_SIGPROCMASK */ | 2708 | #endif /* __ARCH_WANT_SYS_SIGPROCMASK */ |
| 2655 | 2709 | ||
| 2656 | #ifdef __ARCH_WANT_SYS_RT_SIGACTION | 2710 | #ifdef __ARCH_WANT_SYS_RT_SIGACTION |
| 2711 | /** | ||
| 2712 | * sys_rt_sigaction - alter an action taken by a process | ||
| 2713 | * @sig: signal to be sent | ||
| 2714 | * @act: new sigaction | ||
| 2715 | * @oact: used to save the previous sigaction | ||
| 2716 | * @sigsetsize: size of sigset_t type | ||
| 2717 | */ | ||
| 2657 | SYSCALL_DEFINE4(rt_sigaction, int, sig, | 2718 | SYSCALL_DEFINE4(rt_sigaction, int, sig, |
| 2658 | const struct sigaction __user *, act, | 2719 | const struct sigaction __user *, act, |
| 2659 | struct sigaction __user *, oact, | 2720 | struct sigaction __user *, oact, |
| @@ -2740,6 +2801,12 @@ SYSCALL_DEFINE0(pause) | |||
| 2740 | #endif | 2801 | #endif |
| 2741 | 2802 | ||
| 2742 | #ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND | 2803 | #ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND |
| 2804 | /** | ||
| 2805 | * sys_rt_sigsuspend - replace the signal mask for a value with the | ||
| 2806 | * @unewset value until a signal is received | ||
| 2807 | * @unewset: new signal mask value | ||
| 2808 | * @sigsetsize: size of sigset_t type | ||
| 2809 | */ | ||
| 2743 | SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize) | 2810 | SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize) |
| 2744 | { | 2811 | { |
| 2745 | sigset_t newset; | 2812 | sigset_t newset; |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 735d87095172..174f976c2874 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
| @@ -567,7 +567,7 @@ static void __tasklet_hrtimer_trampoline(unsigned long data) | |||
| 567 | /** | 567 | /** |
| 568 | * tasklet_hrtimer_init - Init a tasklet/hrtimer combo for softirq callbacks | 568 | * tasklet_hrtimer_init - Init a tasklet/hrtimer combo for softirq callbacks |
| 569 | * @ttimer: tasklet_hrtimer which is initialized | 569 | * @ttimer: tasklet_hrtimer which is initialized |
| 570 | * @function: hrtimer callback funtion which gets called from softirq context | 570 | * @function: hrtimer callback function which gets called from softirq context |
| 571 | * @which_clock: clock id (CLOCK_MONOTONIC/CLOCK_REALTIME) | 571 | * @which_clock: clock id (CLOCK_MONOTONIC/CLOCK_REALTIME) |
| 572 | * @mode: hrtimer mode (HRTIMER_MODE_ABS/HRTIMER_MODE_REL) | 572 | * @mode: hrtimer mode (HRTIMER_MODE_ABS/HRTIMER_MODE_REL) |
| 573 | */ | 573 | */ |
diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c index b2fa506667c0..a470154e0408 100644 --- a/kernel/time/jiffies.c +++ b/kernel/time/jiffies.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | * inaccuracies caused by missed or lost timer | 34 | * inaccuracies caused by missed or lost timer |
| 35 | * interrupts and the inability for the timer | 35 | * interrupts and the inability for the timer |
| 36 | * interrupt hardware to accuratly tick at the | 36 | * interrupt hardware to accuratly tick at the |
| 37 | * requested HZ value. It is also not reccomended | 37 | * requested HZ value. It is also not recommended |
| 38 | * for "tick-less" systems. | 38 | * for "tick-less" systems. |
| 39 | */ | 39 | */ |
| 40 | #define NSEC_PER_JIFFY ((u32)((((u64)NSEC_PER_SEC)<<8)/ACTHZ)) | 40 | #define NSEC_PER_JIFFY ((u32)((((u64)NSEC_PER_SEC)<<8)/ACTHZ)) |
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index 5f1bb8e2008f..f6117a4c7cb8 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c | |||
| @@ -652,6 +652,8 @@ int do_adjtimex(struct timex *txc) | |||
| 652 | struct timespec delta; | 652 | struct timespec delta; |
| 653 | delta.tv_sec = txc->time.tv_sec; | 653 | delta.tv_sec = txc->time.tv_sec; |
| 654 | delta.tv_nsec = txc->time.tv_usec; | 654 | delta.tv_nsec = txc->time.tv_usec; |
| 655 | if (!capable(CAP_SYS_TIME)) | ||
| 656 | return -EPERM; | ||
| 655 | if (!(txc->modes & ADJ_NANO)) | 657 | if (!(txc->modes & ADJ_NANO)) |
| 656 | delta.tv_nsec *= 1000; | 658 | delta.tv_nsec *= 1000; |
| 657 | result = timekeeping_inject_offset(&delta); | 659 | result = timekeeping_inject_offset(&delta); |
diff --git a/kernel/time/timer_stats.c b/kernel/time/timer_stats.c index 2f3b585b8d7d..a5d0a3a85dd8 100644 --- a/kernel/time/timer_stats.c +++ b/kernel/time/timer_stats.c | |||
| @@ -236,7 +236,7 @@ void timer_stats_update_stats(void *timer, pid_t pid, void *startf, | |||
| 236 | unsigned int timer_flag) | 236 | unsigned int timer_flag) |
| 237 | { | 237 | { |
| 238 | /* | 238 | /* |
| 239 | * It doesnt matter which lock we take: | 239 | * It doesn't matter which lock we take: |
| 240 | */ | 240 | */ |
| 241 | raw_spinlock_t *lock; | 241 | raw_spinlock_t *lock; |
| 242 | struct entry *entry, input; | 242 | struct entry *entry, input; |
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 7aa40f8e182d..6957aa298dfa 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c | |||
| @@ -850,29 +850,21 @@ static void blk_add_trace_plug(void *ignore, struct request_queue *q) | |||
| 850 | __blk_add_trace(bt, 0, 0, 0, BLK_TA_PLUG, 0, 0, NULL); | 850 | __blk_add_trace(bt, 0, 0, 0, BLK_TA_PLUG, 0, 0, NULL); |
| 851 | } | 851 | } |
| 852 | 852 | ||
| 853 | static void blk_add_trace_unplug_io(void *ignore, struct request_queue *q) | 853 | static void blk_add_trace_unplug(void *ignore, struct request_queue *q, |
| 854 | unsigned int depth, bool explicit) | ||
| 854 | { | 855 | { |
| 855 | struct blk_trace *bt = q->blk_trace; | 856 | struct blk_trace *bt = q->blk_trace; |
| 856 | 857 | ||
| 857 | if (bt) { | 858 | if (bt) { |
| 858 | unsigned int pdu = q->rq.count[READ] + q->rq.count[WRITE]; | 859 | __be64 rpdu = cpu_to_be64(depth); |
| 859 | __be64 rpdu = cpu_to_be64(pdu); | 860 | u32 what; |
| 860 | 861 | ||
| 861 | __blk_add_trace(bt, 0, 0, 0, BLK_TA_UNPLUG_IO, 0, | 862 | if (explicit) |
| 862 | sizeof(rpdu), &rpdu); | 863 | what = BLK_TA_UNPLUG_IO; |
| 863 | } | 864 | else |
| 864 | } | 865 | what = BLK_TA_UNPLUG_TIMER; |
| 865 | |||
| 866 | static void blk_add_trace_unplug_timer(void *ignore, struct request_queue *q) | ||
| 867 | { | ||
| 868 | struct blk_trace *bt = q->blk_trace; | ||
| 869 | |||
| 870 | if (bt) { | ||
| 871 | unsigned int pdu = q->rq.count[READ] + q->rq.count[WRITE]; | ||
| 872 | __be64 rpdu = cpu_to_be64(pdu); | ||
| 873 | 866 | ||
| 874 | __blk_add_trace(bt, 0, 0, 0, BLK_TA_UNPLUG_TIMER, 0, | 867 | __blk_add_trace(bt, 0, 0, 0, what, 0, sizeof(rpdu), &rpdu); |
| 875 | sizeof(rpdu), &rpdu); | ||
| 876 | } | 868 | } |
| 877 | } | 869 | } |
| 878 | 870 | ||
| @@ -1015,9 +1007,7 @@ static void blk_register_tracepoints(void) | |||
| 1015 | WARN_ON(ret); | 1007 | WARN_ON(ret); |
| 1016 | ret = register_trace_block_plug(blk_add_trace_plug, NULL); | 1008 | ret = register_trace_block_plug(blk_add_trace_plug, NULL); |
| 1017 | WARN_ON(ret); | 1009 | WARN_ON(ret); |
| 1018 | ret = register_trace_block_unplug_timer(blk_add_trace_unplug_timer, NULL); | 1010 | ret = register_trace_block_unplug(blk_add_trace_unplug, NULL); |
| 1019 | WARN_ON(ret); | ||
| 1020 | ret = register_trace_block_unplug_io(blk_add_trace_unplug_io, NULL); | ||
| 1021 | WARN_ON(ret); | 1011 | WARN_ON(ret); |
| 1022 | ret = register_trace_block_split(blk_add_trace_split, NULL); | 1012 | ret = register_trace_block_split(blk_add_trace_split, NULL); |
| 1023 | WARN_ON(ret); | 1013 | WARN_ON(ret); |
| @@ -1032,8 +1022,7 @@ static void blk_unregister_tracepoints(void) | |||
| 1032 | unregister_trace_block_rq_remap(blk_add_trace_rq_remap, NULL); | 1022 | unregister_trace_block_rq_remap(blk_add_trace_rq_remap, NULL); |
| 1033 | unregister_trace_block_bio_remap(blk_add_trace_bio_remap, NULL); | 1023 | unregister_trace_block_bio_remap(blk_add_trace_bio_remap, NULL); |
| 1034 | unregister_trace_block_split(blk_add_trace_split, NULL); | 1024 | unregister_trace_block_split(blk_add_trace_split, NULL); |
| 1035 | unregister_trace_block_unplug_io(blk_add_trace_unplug_io, NULL); | 1025 | unregister_trace_block_unplug(blk_add_trace_unplug, NULL); |
| 1036 | unregister_trace_block_unplug_timer(blk_add_trace_unplug_timer, NULL); | ||
| 1037 | unregister_trace_block_plug(blk_add_trace_plug, NULL); | 1026 | unregister_trace_block_plug(blk_add_trace_plug, NULL); |
| 1038 | unregister_trace_block_sleeprq(blk_add_trace_sleeprq, NULL); | 1027 | unregister_trace_block_sleeprq(blk_add_trace_sleeprq, NULL); |
| 1039 | unregister_trace_block_getrq(blk_add_trace_getrq, NULL); | 1028 | unregister_trace_block_getrq(blk_add_trace_getrq, NULL); |
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index c075f4ea6b94..ee24fa1935ac 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -1268,7 +1268,7 @@ static int ftrace_update_code(struct module *mod) | |||
| 1268 | p->flags = 0L; | 1268 | p->flags = 0L; |
| 1269 | 1269 | ||
| 1270 | /* | 1270 | /* |
| 1271 | * Do the initial record convertion from mcount jump | 1271 | * Do the initial record conversion from mcount jump |
| 1272 | * to the NOP instructions. | 1272 | * to the NOP instructions. |
| 1273 | */ | 1273 | */ |
| 1274 | if (!ftrace_code_disable(mod, p)) { | 1274 | if (!ftrace_code_disable(mod, p)) { |
| @@ -3425,7 +3425,7 @@ graph_init_task(struct task_struct *t, struct ftrace_ret_stack *ret_stack) | |||
| 3425 | atomic_set(&t->tracing_graph_pause, 0); | 3425 | atomic_set(&t->tracing_graph_pause, 0); |
| 3426 | atomic_set(&t->trace_overrun, 0); | 3426 | atomic_set(&t->trace_overrun, 0); |
| 3427 | t->ftrace_timestamp = 0; | 3427 | t->ftrace_timestamp = 0; |
| 3428 | /* make curr_ret_stack visable before we add the ret_stack */ | 3428 | /* make curr_ret_stack visible before we add the ret_stack */ |
| 3429 | smp_wmb(); | 3429 | smp_wmb(); |
| 3430 | t->ret_stack = ret_stack; | 3430 | t->ret_stack = ret_stack; |
| 3431 | } | 3431 | } |
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index d9c8bcafb120..0ef7b4b2a1f7 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
| @@ -1478,7 +1478,7 @@ static inline unsigned long rb_page_entries(struct buffer_page *bpage) | |||
| 1478 | return local_read(&bpage->entries) & RB_WRITE_MASK; | 1478 | return local_read(&bpage->entries) & RB_WRITE_MASK; |
| 1479 | } | 1479 | } |
| 1480 | 1480 | ||
| 1481 | /* Size is determined by what has been commited */ | 1481 | /* Size is determined by what has been committed */ |
| 1482 | static inline unsigned rb_page_size(struct buffer_page *bpage) | 1482 | static inline unsigned rb_page_size(struct buffer_page *bpage) |
| 1483 | { | 1483 | { |
| 1484 | return rb_page_commit(bpage); | 1484 | return rb_page_commit(bpage); |
| @@ -2932,7 +2932,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) | |||
| 2932 | /* | 2932 | /* |
| 2933 | * cpu_buffer->pages just needs to point to the buffer, it | 2933 | * cpu_buffer->pages just needs to point to the buffer, it |
| 2934 | * has no specific buffer page to point to. Lets move it out | 2934 | * has no specific buffer page to point to. Lets move it out |
| 2935 | * of our way so we don't accidently swap it. | 2935 | * of our way so we don't accidentally swap it. |
| 2936 | */ | 2936 | */ |
| 2937 | cpu_buffer->pages = reader->list.prev; | 2937 | cpu_buffer->pages = reader->list.prev; |
| 2938 | 2938 | ||
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 9541c27c1cf2..d38c16a06a6f 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
| @@ -3239,7 +3239,7 @@ waitagain: | |||
| 3239 | trace_seq_init(&iter->seq); | 3239 | trace_seq_init(&iter->seq); |
| 3240 | 3240 | ||
| 3241 | /* | 3241 | /* |
| 3242 | * If there was nothing to send to user, inspite of consuming trace | 3242 | * If there was nothing to send to user, in spite of consuming trace |
| 3243 | * entries, go back to wait for more entries. | 3243 | * entries, go back to wait for more entries. |
| 3244 | */ | 3244 | */ |
| 3245 | if (sret == -EBUSY) | 3245 | if (sret == -EBUSY) |
diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c index 685a67d55db0..6302747a1398 100644 --- a/kernel/trace/trace_clock.c +++ b/kernel/trace/trace_clock.c | |||
| @@ -46,7 +46,7 @@ u64 notrace trace_clock_local(void) | |||
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | /* | 48 | /* |
| 49 | * trace_clock(): 'inbetween' trace clock. Not completely serialized, | 49 | * trace_clock(): 'between' trace clock. Not completely serialized, |
| 50 | * but not completely incorrect when crossing CPUs either. | 50 | * but not completely incorrect when crossing CPUs either. |
| 51 | * | 51 | * |
| 52 | * This is based on cpu_clock(), which will allow at most ~1 jiffy of | 52 | * This is based on cpu_clock(), which will allow at most ~1 jiffy of |
diff --git a/kernel/trace/trace_entries.h b/kernel/trace/trace_entries.h index 1516cb3ec549..e32744c84d94 100644 --- a/kernel/trace/trace_entries.h +++ b/kernel/trace/trace_entries.h | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | * in the structure. | 27 | * in the structure. |
| 28 | * | 28 | * |
| 29 | * * for structures within structures, the format of the internal | 29 | * * for structures within structures, the format of the internal |
| 30 | * structure is layed out. This allows the internal structure | 30 | * structure is laid out. This allows the internal structure |
| 31 | * to be deciphered for the format file. Although these macros | 31 | * to be deciphered for the format file. Although these macros |
| 32 | * may become out of sync with the internal structure, they | 32 | * may become out of sync with the internal structure, they |
| 33 | * will create a compile error if it happens. Since the | 33 | * will create a compile error if it happens. Since the |
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index 76b05980225c..962cdb24ed81 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c | |||
| @@ -905,7 +905,7 @@ print_graph_prologue(struct trace_iterator *iter, struct trace_seq *s, | |||
| 905 | * | 905 | * |
| 906 | * returns 1 if | 906 | * returns 1 if |
| 907 | * - we are inside irq code | 907 | * - we are inside irq code |
| 908 | * - we just extered irq code | 908 | * - we just entered irq code |
| 909 | * | 909 | * |
| 910 | * retunns 0 if | 910 | * retunns 0 if |
| 911 | * - funcgraph-interrupts option is set | 911 | * - funcgraph-interrupts option is set |
diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c index 92b6e1e12d98..a4969b47afc1 100644 --- a/kernel/trace/trace_irqsoff.c +++ b/kernel/trace/trace_irqsoff.c | |||
| @@ -80,7 +80,7 @@ static struct tracer_flags tracer_flags = { | |||
| 80 | * skip the latency if the sequence has changed - some other section | 80 | * skip the latency if the sequence has changed - some other section |
| 81 | * did a maximum and could disturb our measurement with serial console | 81 | * did a maximum and could disturb our measurement with serial console |
| 82 | * printouts, etc. Truly coinciding maximum latencies should be rare | 82 | * printouts, etc. Truly coinciding maximum latencies should be rare |
| 83 | * and what happens together happens separately as well, so this doesnt | 83 | * and what happens together happens separately as well, so this doesn't |
| 84 | * decrease the validity of the maximum found: | 84 | * decrease the validity of the maximum found: |
| 85 | */ | 85 | */ |
| 86 | static __cacheline_aligned_in_smp unsigned long max_sequence; | 86 | static __cacheline_aligned_in_smp unsigned long max_sequence; |
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index 8435b43b1782..35d55a386145 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c | |||
| @@ -1839,7 +1839,7 @@ static void unregister_probe_event(struct trace_probe *tp) | |||
| 1839 | kfree(tp->call.print_fmt); | 1839 | kfree(tp->call.print_fmt); |
| 1840 | } | 1840 | } |
| 1841 | 1841 | ||
| 1842 | /* Make a debugfs interface for controling probe points */ | 1842 | /* Make a debugfs interface for controlling probe points */ |
| 1843 | static __init int init_kprobe_trace(void) | 1843 | static __init int init_kprobe_trace(void) |
| 1844 | { | 1844 | { |
| 1845 | struct dentry *d_tracer; | 1845 | struct dentry *d_tracer; |
diff --git a/kernel/user-return-notifier.c b/kernel/user-return-notifier.c index eb27fd3430a2..92cb706c7fc8 100644 --- a/kernel/user-return-notifier.c +++ b/kernel/user-return-notifier.c | |||
| @@ -20,7 +20,7 @@ EXPORT_SYMBOL_GPL(user_return_notifier_register); | |||
| 20 | 20 | ||
| 21 | /* | 21 | /* |
| 22 | * Removes a registered user return notifier. Must be called from atomic | 22 | * Removes a registered user return notifier. Must be called from atomic |
| 23 | * context, and from the same cpu registration occured in. | 23 | * context, and from the same cpu registration occurred in. |
| 24 | */ | 24 | */ |
| 25 | void user_return_notifier_unregister(struct user_return_notifier *urn) | 25 | void user_return_notifier_unregister(struct user_return_notifier *urn) |
| 26 | { | 26 | { |
diff --git a/kernel/wait.c b/kernel/wait.c index b0310eb6cc1e..f45ea8d2a1ce 100644 --- a/kernel/wait.c +++ b/kernel/wait.c | |||
| @@ -142,7 +142,7 @@ EXPORT_SYMBOL(finish_wait); | |||
| 142 | * woken up through the queue. | 142 | * woken up through the queue. |
| 143 | * | 143 | * |
| 144 | * This prevents waiter starvation where an exclusive waiter | 144 | * This prevents waiter starvation where an exclusive waiter |
| 145 | * aborts and is woken up concurrently and noone wakes up | 145 | * aborts and is woken up concurrently and no one wakes up |
| 146 | * the next waiter. | 146 | * the next waiter. |
| 147 | */ | 147 | */ |
| 148 | void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait, | 148 | void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait, |
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 04ef830690ec..8859a41806dd 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
| @@ -1291,7 +1291,7 @@ __acquires(&gcwq->lock) | |||
| 1291 | return true; | 1291 | return true; |
| 1292 | spin_unlock_irq(&gcwq->lock); | 1292 | spin_unlock_irq(&gcwq->lock); |
| 1293 | 1293 | ||
| 1294 | /* CPU has come up inbetween, retry migration */ | 1294 | /* CPU has come up in between, retry migration */ |
| 1295 | cpu_relax(); | 1295 | cpu_relax(); |
| 1296 | } | 1296 | } |
| 1297 | } | 1297 | } |
