Merge branches 'perf-urgent-for-linus' and 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf and timer fixes from Ingo Molnar: "Two small perf fixes: - kernel side context leak fix - tooling crash fix And two clocksource driver fixes" * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf: Fix context leak in put_event() perf annotate: Fix fallback to unparsed disassembler line * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: clockevents: sun5i: Fix setup_irq init sequence clocksource: efm32: Fix a NULL pointer dereference
This commit is contained in:
Коммит
13326e5a62
|
@ -225,12 +225,12 @@ static int __init efm32_clockevent_init(struct device_node *np)
|
|||
clock_event_ddata.base = base;
|
||||
clock_event_ddata.periodic_top = DIV_ROUND_CLOSEST(rate, 1024 * HZ);
|
||||
|
||||
setup_irq(irq, &efm32_clock_event_irq);
|
||||
|
||||
clockevents_config_and_register(&clock_event_ddata.evtdev,
|
||||
DIV_ROUND_CLOSEST(rate, 1024),
|
||||
0xf, 0xffff);
|
||||
|
||||
setup_irq(irq, &efm32_clock_event_irq);
|
||||
|
||||
return 0;
|
||||
|
||||
err_get_irq:
|
||||
|
|
|
@ -178,10 +178,6 @@ static void __init sun5i_timer_init(struct device_node *node)
|
|||
|
||||
ticks_per_jiffy = DIV_ROUND_UP(rate, HZ);
|
||||
|
||||
ret = setup_irq(irq, &sun5i_timer_irq);
|
||||
if (ret)
|
||||
pr_warn("failed to setup irq %d\n", irq);
|
||||
|
||||
/* Enable timer0 interrupt */
|
||||
val = readl(timer_base + TIMER_IRQ_EN_REG);
|
||||
writel(val | TIMER_IRQ_EN(0), timer_base + TIMER_IRQ_EN_REG);
|
||||
|
@ -191,6 +187,10 @@ static void __init sun5i_timer_init(struct device_node *node)
|
|||
|
||||
clockevents_config_and_register(&sun5i_clockevent, rate,
|
||||
TIMER_SYNC_TICKS, 0xffffffff);
|
||||
|
||||
ret = setup_irq(irq, &sun5i_timer_irq);
|
||||
if (ret)
|
||||
pr_warn("failed to setup irq %d\n", irq);
|
||||
}
|
||||
CLOCKSOURCE_OF_DECLARE(sun5i_a13, "allwinner,sun5i-a13-hstimer",
|
||||
sun5i_timer_init);
|
||||
|
|
|
@ -3591,7 +3591,7 @@ static void put_event(struct perf_event *event)
|
|||
ctx = perf_event_ctx_lock_nested(event, SINGLE_DEPTH_NESTING);
|
||||
WARN_ON_ONCE(ctx->parent_ctx);
|
||||
perf_remove_from_context(event, true);
|
||||
mutex_unlock(&ctx->mutex);
|
||||
perf_event_ctx_unlock(event, ctx);
|
||||
|
||||
_free_event(event);
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@ static int disasm_line__parse(char *line, char **namep, char **rawp);
|
|||
|
||||
static void ins__delete(struct ins_operands *ops)
|
||||
{
|
||||
if (ops == NULL)
|
||||
return;
|
||||
zfree(&ops->source.raw);
|
||||
zfree(&ops->source.name);
|
||||
zfree(&ops->target.raw);
|
||||
|
|
Загрузка…
Ссылка в новой задаче