Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
authorAlex Shi <alex.shi@linaro.org>
Tue, 10 Mar 2015 02:02:32 +0000 (10:02 +0800)
committerAlex Shi <alex.shi@linaro.org>
Tue, 10 Mar 2015 02:02:32 +0000 (10:02 +0800)
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

12 files changed:
1  2 
arch/arm64/kernel/setup.c
arch/arm64/kernel/signal32.c
drivers/gpio/gpiolib.c
include/net/ip.h
include/net/netns/ipv4.h
kernel/trace/trace.c
net/ipv4/ip_output.c
net/ipv4/ping.c
net/ipv4/route.c
net/ipv4/tcp_ipv4.c
net/ipv6/datagram.c
net/ipv6/route.c

index fdf3c5f4ce9103f7e7ebe78be2e68ca0e7f9a9e6,97676952b2699452a02f86135515ee7eedd61d5e..fedd56b36cf0e5c1150e5c734b6d7814f2bd35d6
@@@ -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;
  }
index e5cf0ab84bed04900212958addeb2ff3337ad5de,96f545cfbb70fdfe33e4833c47ac7fd7f1c295fb..b2b945dcbf60c46e2e0f7f2cb85c45127ba16f28
@@@ -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);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/ipv4/ping.c
index b1d680f27e31ed497167a9cc65363e0533ca425e,698f3a2ac5aea406ca13fd3e75705bc342d60594..9b405b8d1895d9ad122b030e0ad917f95812d203
@@@ -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;
        }
Simple merge
Simple merge
Simple merge
Simple merge