Merge branch 'security-fixes' into fixes
commit
2a2822475d
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue