mirror of https://gitee.com/openkylin/linux.git
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler fixes from Ingo Molnar: "A CONFIG_STACK_GROWSUP=y fix, and a hotplug llc CPU mask fix" * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched: Fix unreleased llc_shared_mask bit during CPU hotplug sched: Fix end_of_stack() and location of stack canary for architectures using CONFIG_STACK_GROWSUP
This commit is contained in:
commit
d2865c7d4e
|
@ -1284,6 +1284,9 @@ static void remove_siblinginfo(int cpu)
|
|||
|
||||
for_each_cpu(sibling, cpu_sibling_mask(cpu))
|
||||
cpumask_clear_cpu(cpu, cpu_sibling_mask(sibling));
|
||||
for_each_cpu(sibling, cpu_llc_shared_mask(cpu))
|
||||
cpumask_clear_cpu(cpu, cpu_llc_shared_mask(sibling));
|
||||
cpumask_clear(cpu_llc_shared_mask(cpu));
|
||||
cpumask_clear(cpu_sibling_mask(cpu));
|
||||
cpumask_clear(cpu_core_mask(cpu));
|
||||
c->phys_proc_id = 0;
|
||||
|
|
|
@ -2608,9 +2608,22 @@ static inline void setup_thread_stack(struct task_struct *p, struct task_struct
|
|||
task_thread_info(p)->task = p;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the address of the last usable long on the stack.
|
||||
*
|
||||
* When the stack grows down, this is just above the thread
|
||||
* info struct. Going any lower will corrupt the threadinfo.
|
||||
*
|
||||
* When the stack grows up, this is the highest address.
|
||||
* Beyond that position, we corrupt data on the next page.
|
||||
*/
|
||||
static inline unsigned long *end_of_stack(struct task_struct *p)
|
||||
{
|
||||
#ifdef CONFIG_STACK_GROWSUP
|
||||
return (unsigned long *)((unsigned long)task_thread_info(p) + THREAD_SIZE) - 1;
|
||||
#else
|
||||
return (unsigned long *)(task_thread_info(p) + 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue