Hi Mark,
Juste merged LTS from 3.10.60~3.10.71 into LSK and LSK android. Please review the conflict resolving.
git://git.linaro.org/kernel/linux-linaro-stable.git linux-linaro-lsk-android-test
------ commit c577a32260e3c74bd2ccf42273c2f5cdf981b9a0 Merge: e8f1caf 42f504e Author: Alex Shi alex.shi@linaro.org Date: Tue Mar 10 10:02:32 2015 +0800
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Most of cpu feature which hardcode in commit 3868e7f8d4799 are included in compat_hwcap_str[]. We don't need repeat them.
Conflicts: arch/arm64/kernel/setup.c
diff --cc arch/arm64/kernel/setup.c index fdf3c5f,9767695..fedd56b --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@@ -499,35 -540,37 +540,41 @@@ static int c_show(struct seq_file *m, v #ifdef CONFIG_SMP seq_printf(m, "processor\t: %d\n", i); #endif - }
- /* dump out the processor features */ - seq_puts(m, "Features\t: "); - - for (i = 0; hwcap_str[i]; i++) - if (elf_hwcap & (1 << i)) - seq_printf(m, "%s ", hwcap_str[i]); - #ifdef CONFIG_ARMV7_COMPAT_CPUINFO - if (is_compat_task()) { - /* Print out the non-optional ARMv8 HW capabilities */ - seq_printf(m, "wp half thumb fastmult vfp edsp neon vfpv3 tlsi "); - seq_printf(m, "vfpv4 idiva idivt "); - } - #endif + seq_printf(m, "BogoMIPS\t: %lu.%02lu\n", + loops_per_jiffy / (500000UL/HZ), + loops_per_jiffy / (5000UL/HZ) % 100); + + /* + * Dump out the common processor features in a single line. + * Userspace should read the hwcaps with getauxval(AT_HWCAP) + * rather than attempting to parse this, but there's a body of + * software which does already (at least for 32-bit). + */ + seq_puts(m, "Features\t:"); + if (personality(current->personality) == PER_LINUX32) { + #ifdef CONFIG_COMPAT + for (j = 0; compat_hwcap_str[j]; j++) + if (COMPAT_ELF_HWCAP & (1 << j)) + seq_printf(m, " %s", compat_hwcap_str[j]); + #endif /* CONFIG_COMPAT */ + } else { + for (j = 0; hwcap_str[j]; j++) + if (elf_hwcap & (1 << j)) + seq_printf(m, " %s", hwcap_str[j]); + } + seq_puts(m, "\n");
- seq_printf(m, "\nCPU implementer\t: 0x%02x\n", read_cpuid_id() >> 24); - seq_printf(m, "CPU architecture: %s\n", + seq_printf(m, "CPU implementer\t: 0x%02x\n", (midr >> 24)); - seq_printf(m, "CPU architecture: 8\n"); ++ seq_printf(m, "CPU architecture: %s\n", +#if IS_ENABLED(CONFIG_ARMV7_COMPAT_CPUINFO) - is_compat_task() ? "8" : ++ is_compat_task() ? "8" : +#endif - "AArch64"); - seq_printf(m, "CPU variant\t: 0x%x\n", (read_cpuid_id() >> 20) & 15); - seq_printf(m, "CPU part\t: 0x%03x\n", (read_cpuid_id() >> 4) & 0xfff); - seq_printf(m, "CPU revision\t: %d\n", read_cpuid_id() & 15); - - seq_puts(m, "\n"); - - seq_printf(m, "Hardware\t: %s\n", machine_name); ++ "AArch64"); + seq_printf(m, "CPU variant\t: 0x%x\n", ((midr >> 20) & 0xf)); + seq_printf(m, "CPU part\t: 0x%03x\n", ((midr >> 4) & 0xfff)); + seq_printf(m, "CPU revision\t: %d\n\n", (midr & 0xf)); + }
return 0; } diff --cc arch/arm64/kernel/signal32.c index e5cf0ab,96f545c..b2b945d --- a/arch/arm64/kernel/signal32.c +++ b/arch/arm64/kernel/signal32.c @@@ -181,16 -180,8 +180,16 @@@ int copy_siginfo_to_user32(compat_sigin case __SI_MESGQ: /* But this is */ err |= __put_user(from->si_pid, &to->si_pid); err |= __put_user(from->si_uid, &to->si_uid); - err |= __put_user((compat_uptr_t)(unsigned long)from->si_ptr, &to->si_ptr); + err |= __put_user(from->si_int, &to->si_int); break; +#ifdef __ARCH_SIGSYS + case __SI_SYS: + err |= __put_user((compat_uptr_t)(unsigned long) + from->si_call_addr, &to->si_call_addr); + err |= __put_user(from->si_syscall, &to->si_syscall); + err |= __put_user(from->si_arch, &to->si_arch); + break; +#endif default: /* this is just in case for now ... */ err |= __put_user(from->si_pid, &to->si_pid); err |= __put_user(from->si_uid, &to->si_uid); diff --cc net/ipv4/ping.c index b1d680f,698f3a2..9b405b8 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@@ -962,10 -717,14 +962,13 @@@ void ping_rcv(struct sk_buff *skb /* Push ICMP header back */ skb_push(skb, skb->data - (u8 *)icmph);
- sk = ping_v4_lookup(net, saddr, daddr, ntohs(icmph->un.echo.id), - skb->dev->ifindex); + sk = ping_lookup(net, skb, ntohs(icmph->un.echo.id)); if (sk != NULL) { + struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC); + pr_debug("rcv on socket %p\n", sk); - ping_queue_rcv_skb(sk, skb_get(skb)); + if (skb2) + ping_queue_rcv_skb(sk, skb2); sock_put(sk); return; }