Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a282247 authored by Russell King's avatar Russell King
Browse files

Merge branch 'security-fixes' into fixes

parents 2103f6cb d9f96635
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -357,7 +357,8 @@ ENDPROC(__pabt_svc)
	.endm
	.endm


	.macro	kuser_cmpxchg_check
	.macro	kuser_cmpxchg_check
#if !defined(CONFIG_CPU_32v6K) && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
#if !defined(CONFIG_CPU_32v6K) && defined(CONFIG_KUSER_HELPERS) && \
    !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
#ifndef CONFIG_MMU
#ifndef CONFIG_MMU
#warning "NPTL on non MMU needs fixing"
#warning "NPTL on non MMU needs fixing"
#else
#else
+2 −6
Original line number Original line Diff line number Diff line
@@ -84,17 +84,13 @@ int show_fiq_list(struct seq_file *p, int prec)


void set_fiq_handler(void *start, unsigned int length)
void set_fiq_handler(void *start, unsigned int length)
{
{
#if defined(CONFIG_CPU_USE_DOMAINS)
	void *base = (void *)0xffff0000;
#else
	void *base = vectors_page;
	void *base = vectors_page;
#endif
	unsigned offset = FIQ_OFFSET;
	unsigned offset = FIQ_OFFSET;


	memcpy(base + offset, start, length);
	memcpy(base + offset, start, length);
	if (!cache_is_vipt_nonaliasing())
		flush_icache_range(base + offset, offset + length);
	flush_icache_range(0xffff0000 + offset, 0xffff0000 + offset + length);
	flush_icache_range(0xffff0000 + offset, 0xffff0000 + offset + length);
	if (!vectors_high())
		flush_icache_range(offset, offset + length);
}
}


int claim_fiq(struct fiq_handler *f)
int claim_fiq(struct fiq_handler *f)
+9 −1
Original line number Original line Diff line number Diff line
@@ -53,7 +53,12 @@ armpmu_map_cache_event(const unsigned (*cache_map)
static int
static int
armpmu_map_hw_event(const unsigned (*event_map)[PERF_COUNT_HW_MAX], u64 config)
armpmu_map_hw_event(const unsigned (*event_map)[PERF_COUNT_HW_MAX], u64 config)
{
{
	int mapping = (*event_map)[config];
	int mapping;

	if (config >= PERF_COUNT_HW_MAX)
		return -EINVAL;

	mapping = (*event_map)[config];
	return mapping == HW_OP_UNSUPPORTED ? -ENOENT : mapping;
	return mapping == HW_OP_UNSUPPORTED ? -ENOENT : mapping;
}
}


@@ -253,6 +258,9 @@ validate_event(struct pmu_hw_events *hw_events,
	struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
	struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
	struct pmu *leader_pmu = event->group_leader->pmu;
	struct pmu *leader_pmu = event->group_leader->pmu;


	if (is_software_event(event))
		return 1;

	if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF)
	if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF)
		return 1;
		return 1;


+1 −1
Original line number Original line Diff line number Diff line
@@ -462,7 +462,7 @@ int in_gate_area_no_mm(unsigned long addr)
{
{
	return in_gate_area(NULL, addr);
	return in_gate_area(NULL, addr);
}
}
#define is_gate_vma(vma)	((vma) = &gate_vma)
#define is_gate_vma(vma)	((vma) == &gate_vma)
#else
#else
#define is_gate_vma(vma)	0
#define is_gate_vma(vma)	0
#endif
#endif