Skip to content

Commit 21acffc

Browse files
committed
Merge tag 'v4.9.82' into linux-4.9-at91
This is the 4.9.82 stable release
2 parents bd42b2c + 3e598a7 commit 21acffc

90 files changed

Lines changed: 1244 additions & 792 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 4
22
PATCHLEVEL = 9
3-
SUBLEVEL = 81
3+
SUBLEVEL = 82
44
EXTRAVERSION =
55
NAME = Roaring Lionus
66

arch/alpha/kernel/pci_impl.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ struct pci_iommu_arena
143143
};
144144

145145
#if defined(CONFIG_ALPHA_SRM) && \
146-
(defined(CONFIG_ALPHA_CIA) || defined(CONFIG_ALPHA_LCA))
146+
(defined(CONFIG_ALPHA_CIA) || defined(CONFIG_ALPHA_LCA) || \
147+
defined(CONFIG_ALPHA_AVANTI))
147148
# define NEED_SRM_SAVE_RESTORE
148149
#else
149150
# undef NEED_SRM_SAVE_RESTORE

arch/alpha/kernel/process.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,12 +265,13 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
265265
application calling fork. */
266266
if (clone_flags & CLONE_SETTLS)
267267
childti->pcb.unique = regs->r20;
268+
else
269+
regs->r20 = 0; /* OSF/1 has some strange fork() semantics. */
268270
childti->pcb.usp = usp ?: rdusp();
269271
*childregs = *regs;
270272
childregs->r0 = 0;
271273
childregs->r19 = 0;
272274
childregs->r20 = 1; /* OSF/1 has some strange fork() semantics. */
273-
regs->r20 = 0;
274275
stack = ((struct switch_stack *) regs) - 1;
275276
*childstack = *stack;
276277
childstack->r26 = (unsigned long) ret_from_fork;

arch/alpha/kernel/traps.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,16 @@ void show_stack(struct task_struct *task, unsigned long *sp)
158158
for(i=0; i < kstack_depth_to_print; i++) {
159159
if (((long) stack & (THREAD_SIZE-1)) == 0)
160160
break;
161-
if (i && ((i % 4) == 0))
162-
printk("\n ");
163-
printk("%016lx ", *stack++);
161+
if ((i % 4) == 0) {
162+
if (i)
163+
pr_cont("\n");
164+
printk(" ");
165+
} else {
166+
pr_cont(" ");
167+
}
168+
pr_cont("%016lx", *stack++);
164169
}
165-
printk("\n");
170+
pr_cont("\n");
166171
dik_show_trace(sp);
167172
}
168173

arch/arm/kvm/arm.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,6 +1165,7 @@ static int hyp_init_cpu_pm_notifier(struct notifier_block *self,
11651165
cpu_hyp_reset();
11661166

11671167
return NOTIFY_OK;
1168+
case CPU_PM_ENTER_FAILED:
11681169
case CPU_PM_EXIT:
11691170
if (__this_cpu_read(kvm_arm_hardware_enabled))
11701171
/* The hardware was enabled before suspend. */

arch/arm/kvm/handle_exit.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run)
3838

3939
ret = kvm_psci_call(vcpu);
4040
if (ret < 0) {
41-
kvm_inject_undefined(vcpu);
41+
vcpu_set_reg(vcpu, 0, ~0UL);
4242
return 1;
4343
}
4444

@@ -47,7 +47,16 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run)
4747

4848
static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run)
4949
{
50-
kvm_inject_undefined(vcpu);
50+
/*
51+
* "If an SMC instruction executed at Non-secure EL1 is
52+
* trapped to EL2 because HCR_EL2.TSC is 1, the exception is a
53+
* Trap exception, not a Secure Monitor Call exception [...]"
54+
*
55+
* We need to advance the PC after the trap, as it would
56+
* otherwise return to the same address...
57+
*/
58+
vcpu_set_reg(vcpu, 0, ~0UL);
59+
kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));
5160
return 1;
5261
}
5362

arch/mn10300/mm/misalignment.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code)
437437

438438
info.si_signo = SIGSEGV;
439439
info.si_errno = 0;
440-
info.si_code = 0;
440+
info.si_code = SEGV_MAPERR;
441441
info.si_addr = (void *) regs->pc;
442442
force_sig_info(SIGSEGV, &info, current);
443443
return;

arch/openrisc/kernel/traps.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -302,12 +302,12 @@ asmlinkage void do_unaligned_access(struct pt_regs *regs, unsigned long address)
302302
siginfo_t info;
303303

304304
if (user_mode(regs)) {
305-
/* Send a SIGSEGV */
306-
info.si_signo = SIGSEGV;
305+
/* Send a SIGBUS */
306+
info.si_signo = SIGBUS;
307307
info.si_errno = 0;
308-
/* info.si_code has been set above */
309-
info.si_addr = (void *)address;
310-
force_sig_info(SIGSEGV, &info, current);
308+
info.si_code = BUS_ADRALN;
309+
info.si_addr = (void __user *)address;
310+
force_sig_info(SIGBUS, &info, current);
311311
} else {
312312
printk("KERNEL: Unaligned Access 0x%.8lx\n", address);
313313
show_registers(regs);

arch/powerpc/include/asm/hvcall.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@
319319
#define H_CPU_BEHAV_BNDS_CHK_SPEC_BAR (1ull << 61) // IBM bit 2
320320

321321
#ifndef __ASSEMBLY__
322+
#include <linux/types.h>
322323

323324
/**
324325
* plpar_hcall_norets: - Make a pseries hypervisor call with no return arguments

arch/sh/kernel/traps_32.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,8 @@ asmlinkage void do_divide_error(unsigned long r4)
607607
break;
608608
}
609609

610-
force_sig_info(SIGFPE, &info, current);
610+
info.si_signo = SIGFPE;
611+
force_sig_info(info.si_signo, &info, current);
611612
}
612613
#endif
613614

0 commit comments

Comments
 (0)