mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge branch 'linus' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
10c18c44a6
321 changed files with 3301 additions and 2492 deletions
|
|
@ -3183,6 +3183,16 @@ static int cgroup_enable_threaded(struct cgroup *cgrp)
|
|||
if (cgroup_is_threaded(cgrp))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* If @cgroup is populated or has domain controllers enabled, it
|
||||
* can't be switched. While the below cgroup_can_be_thread_root()
|
||||
* test can catch the same conditions, that's only when @parent is
|
||||
* not mixable, so let's check it explicitly.
|
||||
*/
|
||||
if (cgroup_is_populated(cgrp) ||
|
||||
cgrp->subtree_control & ~cgrp_dfl_threaded_ss_mask)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* we're joining the parent's domain, ensure its validity */
|
||||
if (!cgroup_is_valid_domain(dom_cgrp) ||
|
||||
!cgroup_can_be_thread_root(dom_cgrp))
|
||||
|
|
|
|||
|
|
@ -488,25 +488,6 @@ get_compat_sigset(sigset_t *set, const compat_sigset_t __user *compat)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(get_compat_sigset);
|
||||
|
||||
int
|
||||
put_compat_sigset(compat_sigset_t __user *compat, const sigset_t *set,
|
||||
unsigned int size)
|
||||
{
|
||||
/* size <= sizeof(compat_sigset_t) <= sizeof(sigset_t) */
|
||||
#ifdef __BIG_ENDIAN
|
||||
compat_sigset_t v;
|
||||
switch (_NSIG_WORDS) {
|
||||
case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
|
||||
case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
|
||||
case 2: v.sig[3] = (set->sig[1] >> 32); v.sig[2] = set->sig[1];
|
||||
case 1: v.sig[1] = (set->sig[0] >> 32); v.sig[0] = set->sig[0];
|
||||
}
|
||||
return copy_to_user(compat, &v, size) ? -EFAULT : 0;
|
||||
#else
|
||||
return copy_to_user(compat, set, size) ? -EFAULT : 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
COMPAT_SYSCALL_DEFINE6(move_pages, pid_t, pid, compat_ulong_t, nr_pages,
|
||||
compat_uptr_t __user *, pages32,
|
||||
|
|
|
|||
|
|
@ -2246,7 +2246,7 @@ static void ctx_resched(struct perf_cpu_context *cpuctx,
|
|||
struct perf_event_context *task_ctx,
|
||||
enum event_type_t event_type)
|
||||
{
|
||||
enum event_type_t ctx_event_type = event_type & EVENT_ALL;
|
||||
enum event_type_t ctx_event_type;
|
||||
bool cpu_event = !!(event_type & EVENT_CPU);
|
||||
|
||||
/*
|
||||
|
|
@ -2256,6 +2256,8 @@ static void ctx_resched(struct perf_cpu_context *cpuctx,
|
|||
if (event_type & EVENT_PINNED)
|
||||
event_type |= EVENT_FLEXIBLE;
|
||||
|
||||
ctx_event_type = event_type & EVENT_ALL;
|
||||
|
||||
perf_pmu_disable(cpuctx->ctx.pmu);
|
||||
if (task_ctx)
|
||||
task_ctx_sched_out(cpuctx, task_ctx, event_type);
|
||||
|
|
|
|||
|
|
@ -373,7 +373,8 @@ static void __jump_label_update(struct static_key *key,
|
|||
if (kernel_text_address(entry->code))
|
||||
arch_jump_label_transform(entry, jump_label_type(entry));
|
||||
else
|
||||
WARN_ONCE(1, "can't patch jump_label at %pS", (void *)entry->code);
|
||||
WARN_ONCE(1, "can't patch jump_label at %pS",
|
||||
(void *)(unsigned long)entry->code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1616,11 +1616,12 @@ bool __sched __rt_mutex_futex_unlock(struct rt_mutex *lock,
|
|||
void __sched rt_mutex_futex_unlock(struct rt_mutex *lock)
|
||||
{
|
||||
DEFINE_WAKE_Q(wake_q);
|
||||
unsigned long flags;
|
||||
bool postunlock;
|
||||
|
||||
raw_spin_lock_irq(&lock->wait_lock);
|
||||
raw_spin_lock_irqsave(&lock->wait_lock, flags);
|
||||
postunlock = __rt_mutex_futex_unlock(lock, &wake_q);
|
||||
raw_spin_unlock_irq(&lock->wait_lock);
|
||||
raw_spin_unlock_irqrestore(&lock->wait_lock, flags);
|
||||
|
||||
if (postunlock)
|
||||
rt_mutex_postunlock(&wake_q);
|
||||
|
|
|
|||
|
|
@ -640,7 +640,7 @@ device_initcall(register_warn_debugfs);
|
|||
*/
|
||||
__visible void __stack_chk_fail(void)
|
||||
{
|
||||
panic("stack-protector: Kernel stack is corrupted in: %p\n",
|
||||
panic("stack-protector: Kernel stack is corrupted in: %pB\n",
|
||||
__builtin_return_address(0));
|
||||
}
|
||||
EXPORT_SYMBOL(__stack_chk_fail);
|
||||
|
|
|
|||
|
|
@ -6733,13 +6733,18 @@ static int tg_cfs_schedulable_down(struct task_group *tg, void *data)
|
|||
parent_quota = parent_b->hierarchical_quota;
|
||||
|
||||
/*
|
||||
* Ensure max(child_quota) <= parent_quota, inherit when no
|
||||
* Ensure max(child_quota) <= parent_quota. On cgroup2,
|
||||
* always take the min. On cgroup1, only inherit when no
|
||||
* limit is set:
|
||||
*/
|
||||
if (quota == RUNTIME_INF)
|
||||
quota = parent_quota;
|
||||
else if (parent_quota != RUNTIME_INF && quota > parent_quota)
|
||||
return -EINVAL;
|
||||
if (cgroup_subsys_on_dfl(cpu_cgrp_subsys)) {
|
||||
quota = min(quota, parent_quota);
|
||||
} else {
|
||||
if (quota == RUNTIME_INF)
|
||||
quota = parent_quota;
|
||||
else if (parent_quota != RUNTIME_INF && quota > parent_quota)
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
cfs_b->hierarchical_quota = quota;
|
||||
|
||||
|
|
|
|||
|
|
@ -3018,14 +3018,6 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* See cancel_delayed_work()
|
||||
*/
|
||||
bool cancel_work(struct work_struct *work)
|
||||
{
|
||||
return __cancel_work(work, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* cancel_delayed_work - cancel a delayed work
|
||||
* @dwork: delayed_work to cancel
|
||||
|
|
@ -5337,7 +5329,7 @@ int workqueue_sysfs_register(struct workqueue_struct *wq)
|
|||
|
||||
ret = device_register(&wq_dev->dev);
|
||||
if (ret) {
|
||||
kfree(wq_dev);
|
||||
put_device(&wq_dev->dev);
|
||||
wq->wq_dev = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue