Merge tag 'v5.2' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -5007,6 +5007,9 @@ static int perf_event_period(struct perf_event *event, u64 __user *arg)
|
||||
if (perf_event_check_period(event, value))
|
||||
return -EINVAL;
|
||||
|
||||
if (!event->attr.freq && (value & (1ULL << 63)))
|
||||
return -EINVAL;
|
||||
|
||||
event_function_call(event, __perf_event_period, &value);
|
||||
|
||||
return 0;
|
||||
@@ -5925,7 +5928,7 @@ static void perf_sample_regs_user(struct perf_regs *regs_user,
|
||||
if (user_mode(regs)) {
|
||||
regs_user->abi = perf_reg_abi(current);
|
||||
regs_user->regs = regs;
|
||||
} else if (current->mm) {
|
||||
} else if (!(current->flags & PF_KTHREAD)) {
|
||||
perf_get_regs_user(regs_user, regs, regs_user_copy);
|
||||
} else {
|
||||
regs_user->abi = PERF_SAMPLE_REGS_ABI_NONE;
|
||||
@@ -10041,6 +10044,12 @@ void perf_pmu_unregister(struct pmu *pmu)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(perf_pmu_unregister);
|
||||
|
||||
static inline bool has_extended_regs(struct perf_event *event)
|
||||
{
|
||||
return (event->attr.sample_regs_user & PERF_REG_EXTENDED_MASK) ||
|
||||
(event->attr.sample_regs_intr & PERF_REG_EXTENDED_MASK);
|
||||
}
|
||||
|
||||
static int perf_try_init_event(struct pmu *pmu, struct perf_event *event)
|
||||
{
|
||||
struct perf_event_context *ctx = NULL;
|
||||
@@ -10072,12 +10081,16 @@ static int perf_try_init_event(struct pmu *pmu, struct perf_event *event)
|
||||
perf_event_ctx_unlock(event->group_leader, ctx);
|
||||
|
||||
if (!ret) {
|
||||
if (!(pmu->capabilities & PERF_PMU_CAP_EXTENDED_REGS) &&
|
||||
has_extended_regs(event))
|
||||
ret = -EOPNOTSUPP;
|
||||
|
||||
if (pmu->capabilities & PERF_PMU_CAP_NO_EXCLUDE &&
|
||||
event_has_any_exclude_flag(event)) {
|
||||
if (event->destroy)
|
||||
event->destroy(event);
|
||||
event_has_any_exclude_flag(event))
|
||||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
if (ret && event->destroy)
|
||||
event->destroy(event);
|
||||
}
|
||||
|
||||
if (ret)
|
||||
|
Reference in New Issue
Block a user