Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm

Pull ARM fixes from Russell King:
"Three fixes this time around:

- fix a memory leak which occurs when probing performance monitoring
unit interrupts

- fix handling of non-PMD aligned end of RAM causing boot failures

- fix missing syscall trace exit path with syscall tracing enabled
causing a kernel oops in the audit code"

* 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
ARM: 8357/1: perf: fix memory leak when probing PMU PPIs
ARM: fix missing syscall trace exit
ARM: 8356/1: mm: handle non-pmd-aligned end of RAM

+18 -15
+3 -1
arch/arm/kernel/entry-common.S
··· 33 33 UNWIND(.fnstart ) 34 34 UNWIND(.cantunwind ) 35 35 disable_irq @ disable interrupts 36 - ldr r1, [tsk, #TI_FLAGS] 36 + ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing 37 + tst r1, #_TIF_SYSCALL_WORK 38 + bne __sys_trace_return 37 39 tst r1, #_TIF_WORK_MASK 38 40 bne fast_work_pending 39 41 asm_trace_hardirqs_on
+5 -4
arch/arm/kernel/perf_event_cpu.c
··· 304 304 static int of_pmu_irq_cfg(struct platform_device *pdev) 305 305 { 306 306 int i, irq; 307 - int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); 308 - 309 - if (!irqs) 310 - return -ENOMEM; 307 + int *irqs; 311 308 312 309 /* Don't bother with PPIs; they're already affine */ 313 310 irq = platform_get_irq(pdev, 0); 314 311 if (irq >= 0 && irq_is_percpu(irq)) 315 312 return 0; 313 + 314 + irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); 315 + if (!irqs) 316 + return -ENOMEM; 316 317 317 318 for (i = 0; i < pdev->num_resources; ++i) { 318 319 struct device_node *dn;
+10 -10
arch/arm/mm/mmu.c
··· 1112 1112 } 1113 1113 1114 1114 /* 1115 - * Find the first non-section-aligned page, and point 1115 + * Find the first non-pmd-aligned page, and point 1116 1116 * memblock_limit at it. This relies on rounding the 1117 - * limit down to be section-aligned, which happens at 1118 - * the end of this function. 1117 + * limit down to be pmd-aligned, which happens at the 1118 + * end of this function. 1119 1119 * 1120 1120 * With this algorithm, the start or end of almost any 1121 - * bank can be non-section-aligned. The only exception 1122 - * is that the start of the bank 0 must be section- 1121 + * bank can be non-pmd-aligned. The only exception is 1122 + * that the start of the bank 0 must be section- 1123 1123 * aligned, since otherwise memory would need to be 1124 1124 * allocated when mapping the start of bank 0, which 1125 1125 * occurs before any free memory is mapped. 1126 1126 */ 1127 1127 if (!memblock_limit) { 1128 - if (!IS_ALIGNED(block_start, SECTION_SIZE)) 1128 + if (!IS_ALIGNED(block_start, PMD_SIZE)) 1129 1129 memblock_limit = block_start; 1130 - else if (!IS_ALIGNED(block_end, SECTION_SIZE)) 1130 + else if (!IS_ALIGNED(block_end, PMD_SIZE)) 1131 1131 memblock_limit = arm_lowmem_limit; 1132 1132 } 1133 1133 ··· 1137 1137 high_memory = __va(arm_lowmem_limit - 1) + 1; 1138 1138 1139 1139 /* 1140 - * Round the memblock limit down to a section size. This 1140 + * Round the memblock limit down to a pmd size. This 1141 1141 * helps to ensure that we will allocate memory from the 1142 - * last full section, which should be mapped. 1142 + * last full pmd, which should be mapped. 1143 1143 */ 1144 1144 if (memblock_limit) 1145 - memblock_limit = round_down(memblock_limit, SECTION_SIZE); 1145 + memblock_limit = round_down(memblock_limit, PMD_SIZE); 1146 1146 if (!memblock_limit) 1147 1147 memblock_limit = arm_lowmem_limit; 1148 1148