OSDN Git Service

Merge 4.4.133 into android-4.4
authorGreg Kroah-Hartman <gregkh@google.com>
Sat, 26 May 2018 08:12:26 +0000 (10:12 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Sat, 26 May 2018 08:12:26 +0000 (10:12 +0200)
Changes in 4.4.133
8139too: Use disable_irq_nosync() in rtl8139_poll_controller()
bridge: check iface upper dev when setting master via ioctl
dccp: fix tasklet usage
ipv4: fix memory leaks in udp_sendmsg, ping_v4_sendmsg
llc: better deal with too small mtu
net: ethernet: sun: niu set correct packet size in skb
net/mlx4_en: Verify coalescing parameters are in range
net_sched: fq: take care of throttled flows before reuse
net: support compat 64-bit time in {s,g}etsockopt
openvswitch: Don't swap table in nlattr_set() after OVS_ATTR_NESTED is found
qmi_wwan: do not steal interfaces from class drivers
r8169: fix powering up RTL8168h
sctp: handle two v4 addrs comparison in sctp_inet6_cmp_addr
sctp: use the old asoc when making the cookie-ack chunk in dupcook_d
tg3: Fix vunmap() BUG_ON() triggered from tg3_free_consistent().
bonding: do not allow rlb updates to invalid mac
tcp: ignore Fast Open on repair mode
sctp: fix the issue that the cookie-ack with auth can't get processed
sctp: delay the authentication for the duplicated cookie-echo chunk
ALSA: timer: Call notifier in the same spinlock
audit: move calcs after alloc and check when logging set loginuid
arm64: introduce mov_q macro to move a constant into a 64-bit register
arm64: Add work around for Arm Cortex-A55 Erratum 1024718
futex: Remove unnecessary warning from get_futex_key
futex: Remove duplicated code and fix undefined behaviour
xfrm: fix xfrm_do_migrate() with AEAD e.g(AES-GCM)
lockd: lost rollback of set_grace_period() in lockd_down_net()
Revert "ARM: dts: imx6qdl-wandboard: Fix audio channel swap"
l2tp: revert "l2tp: fix missing print session offset info"
pipe: cap initial pipe capacity according to pipe-max-size limit
futex: futex_wake_op, fix sign_extend32 sign bits
kernel/exit.c: avoid undefined behaviour when calling wait4()
usbip: usbip_host: refine probe and disconnect debug msgs to be useful
usbip: usbip_host: delete device from busid_table after rebind
usbip: usbip_host: run rebind from exit when module is removed
usbip: usbip_host: fix NULL-ptr deref and use-after-free errors
usbip: usbip_host: fix bad unlock balance during stub_probe()
ALSA: usb: mixer: volume quirk for CM102-A+/102S+
ALSA: hda: Add Lenovo C50 All in one to the power_save blacklist
ALSA: control: fix a redundant-copy issue
spi: pxa2xx: Allow 64-bit DMA
powerpc/powernv: panic() on OPAL < V3
powerpc/powernv: Remove OPALv2 firmware define and references
powerpc/powernv: remove FW_FEATURE_OPALv3 and just use FW_FEATURE_OPAL
cpuidle: coupled: remove unused define cpuidle_coupled_lock
powerpc: Don't preempt_disable() in show_cpuinfo()
vmscan: do not force-scan file lru if its absolute size is small
proc: meminfo: estimate available memory more conservatively
mm: filemap: remove redundant code in do_read_cache_page
mm: filemap: avoid unnecessary calls to lock_page when waiting for IO to complete during a read
signals: avoid unnecessary taking of sighand->siglock
cpufreq: intel_pstate: Enable HWP by default
tracing/x86/xen: Remove zero data size trace events trace_xen_mmu_flush_tlb{_all}
proc read mm's {arg,env}_{start,end} with mmap semaphore taken.
procfs: fix pthread cross-thread naming if !PR_DUMPABLE
powerpc/powernv: Fix NVRAM sleep in invalid context when crashing
mm: don't allow deferred pages with NEED_PER_CPU_KM
s390/qdio: fix access to uninitialized qdio_q fields
s390/cpum_sf: ensure sample frequency of perf event attributes is non-zero
s390/qdio: don't release memory in qdio_setup_irq()
s390: remove indirect branch from do_softirq_own_stack
efi: Avoid potential crashes, fix the 'struct efi_pci_io_protocol_32' definition for mixed mode
ARM: 8771/1: kprobes: Prohibit kprobes on do_undefinstr
tick/broadcast: Use for_each_cpu() specially on UP kernels
ARM: 8769/1: kprobes: Fix to use get_kprobe_ctlblk after irq-disabed
ARM: 8770/1: kprobes: Prohibit probing on optimized_callback
ARM: 8772/1: kprobes: Prohibit kprobes on get_user functions
Btrfs: fix xattr loss after power failure
btrfs: fix crash when trying to resume balance without the resume flag
btrfs: fix reading stale metadata blocks after degraded raid1 mounts
net: test tailroom before appending to linear skb
packet: in packet_snd start writing at link layer allocation
sock_diag: fix use-after-free read in __sk_free
tcp: purge write queue in tcp_connect_init()
ext2: fix a block leak
s390: add assembler macros for CPU alternatives
s390: move expoline assembler macros to a header
s390/lib: use expoline for indirect branches
s390/kernel: use expoline for indirect branches
s390: move spectre sysfs attribute code
s390: extend expoline to BC instructions
s390: use expoline thunks in the BPF JIT
scsi: libsas: defer ata device eh commands to libata
scsi: sg: allocate with __GFP_ZERO in sg_build_indirect()
scsi: zfcp: fix infinite iteration on ERP ready list
dmaengine: ensure dmaengine helpers check valid callback
time: Fix CLOCK_MONOTONIC_RAW sub-nanosecond accounting
gpio: rcar: Add Runtime PM handling for interrupts
cfg80211: limit wiphy names to 128 bytes
hfsplus: stop workqueue when fill_super() failed
x86/kexec: Avoid double free_page() upon do_kexec_load() failure
Linux 4.4.133

Change-Id: I0554b12889bc91add2a444da95f18d59c6fb9cdb
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
18 files changed:
1  2 
Makefile
arch/arm64/Kconfig
arch/arm64/include/asm/assembler.h
arch/arm64/include/asm/cputype.h
arch/arm64/include/asm/futex.h
arch/arm64/mm/proc.S
fs/proc/base.c
include/linux/efi.h
kernel/auditsc.c
kernel/exit.c
mm/util.c
net/core/sock.c
net/ipv4/ip_output.c
net/ipv4/ping.c
net/ipv4/tcp.c
net/ipv4/tcp_output.c
net/ipv4/udp.c
net/xfrm/xfrm_state.c

diff --cc Makefile
Simple merge
Simple merge
  #ifndef __ASM_ASSEMBLER_H
  #define __ASM_ASSEMBLER_H
  
 +#include <asm/asm-offsets.h>
 +#include <asm/cpufeature.h>
 +#include <asm/page.h>
 +#include <asm/pgtable-hwdef.h>
+ #include <asm/cputype.h>
  #include <asm/ptrace.h>
  #include <asm/thread_info.h>
  
@@@ -392,10 -226,42 +393,49 @@@ alternative_endi
        .endm
  
  /*
 + * Return the current thread_info.
 + */
 +      .macro  get_thread_info, rd
 +      mrs     \rd, sp_el0
 +      .endm
 +
++/*
+  * Check the MIDR_EL1 of the current CPU for a given model and a range of
+  * variant/revision. See asm/cputype.h for the macros used below.
+  *
+  *    model:          MIDR_CPU_PART of CPU
+  *    rv_min:         Minimum of MIDR_CPU_VAR_REV()
+  *    rv_max:         Maximum of MIDR_CPU_VAR_REV()
+  *    res:            Result register.
+  *    tmp1, tmp2, tmp3: Temporary registers
+  *
+  * Corrupts: res, tmp1, tmp2, tmp3
+  * Returns:  0, if the CPU id doesn't match. Non-zero otherwise
+  */
+       .macro  cpu_midr_match model, rv_min, rv_max, res, tmp1, tmp2, tmp3
+       mrs             \res, midr_el1
+       mov_q           \tmp1, (MIDR_REVISION_MASK | MIDR_VARIANT_MASK)
+       mov_q           \tmp2, MIDR_CPU_PART_MASK
+       and             \tmp3, \res, \tmp2      // Extract model
+       and             \tmp1, \res, \tmp1      // rev & variant
+       mov_q           \tmp2, \model
+       cmp             \tmp3, \tmp2
+       cset            \res, eq
+       cbz             \res, .Ldone\@          // Model matches ?
+       .if (\rv_min != 0)                      // Skip min check if rv_min == 0
+       mov_q           \tmp3, \rv_min
+       cmp             \tmp1, \tmp3
+       cset            \res, ge
+       .endif                                  // \rv_min != 0
+       /* Skip rv_max check if rv_min == rv_max && rv_min != 0 */
+       .if ((\rv_min != \rv_max) || \rv_min == 0)
+       mov_q           \tmp2, \rv_max
+       cmp             \tmp1, \tmp2
+       cset            \tmp2, le
+       and             \res, \res, \tmp2
+       .endif
+ .Ldone\@:
+       .endm
  #endif        /* __ASM_ASSEMBLER_H */
  #define MIDR_IMPLEMENTOR(midr)        \
        (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT)
  
 -#define MIDR_CPU_PART(imp, partnum) \
+ #define MIDR_CPU_VAR_REV(var, rev) \
+       (((var) << MIDR_VARIANT_SHIFT) | (rev))
+ #define MIDR_CPU_PART_MASK      \
+       (MIDR_IMPLEMENTOR_MASK  | \
+        MIDR_ARCHITECTURE_MASK | \
+        MIDR_PARTNUM_MASK)
 +#define MIDR_CPU_MODEL(imp, partnum) \
        (((imp)                 << MIDR_IMPLEMENTOR_SHIFT) | \
        (0xf                    << MIDR_ARCHITECTURE_SHIFT) | \
        ((partnum)              << MIDR_PARTNUM_SHIFT))
  
  #define CAVIUM_CPU_PART_THUNDERX      0x0A1
  
 -#define MIDR_CORTEX_A55 MIDR_CPU_PART(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A55)
 +#define MIDR_CORTEX_A53 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53)
++#define MIDR_CORTEX_A55 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A55)
 +#define MIDR_CORTEX_A57 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57)
 +#define MIDR_THUNDERX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX)
  
  #ifndef __ASSEMBLY__
  
@@@ -39,29 -42,21 +39,19 @@@ do {                                                                       
  "4:   mov     %w0, %w5\n"                                             \
  "     b       3b\n"                                                   \
  "     .popsection\n"                                                  \
 -"     .pushsection __ex_table,\"a\"\n"                                \
 -"     .align  3\n"                                                    \
 -"     .quad   1b, 4b, 2b, 4b\n"                                       \
 -"     .popsection\n"                                                  \
 -      ALTERNATIVE("nop", SET_PSTATE_PAN(1), ARM64_HAS_PAN,            \
 -                  CONFIG_ARM64_PAN)                                   \
 +      _ASM_EXTABLE(1b, 4b)                                            \
 +      _ASM_EXTABLE(2b, 4b)                                            \
        : "=&r" (ret), "=&r" (oldval), "+Q" (*uaddr), "=&r" (tmp)       \
        : "r" (oparg), "Ir" (-EFAULT)                                   \
 -      : "memory")
 +      : "memory");                                                    \
 +      uaccess_disable();                                              \
 +} while (0)
  
  static inline int
futex_atomic_op_inuser(unsigned int encoded_op, u32 __user *uaddr)
arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *uaddr)
  {
-       int op = (encoded_op >> 28) & 7;
-       int cmp = (encoded_op >> 24) & 15;
-       int oparg = (int)(encoded_op << 8) >> 20;
-       int cmparg = (int)(encoded_op << 20) >> 20;
        int oldval = 0, ret, tmp;
  
-       if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
-               oparg = 1U << (oparg & 0x1f);
-       if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
-               return -EFAULT;
        pagefault_disable();
  
        switch (op) {
Simple merge
diff --cc fs/proc/base.c
Simple merge
Simple merge
@@@ -1986,10 -1990,7 +1990,7 @@@ static void audit_log_set_loginuid(kuid
        loginuid = from_kuid(&init_user_ns, kloginuid),
        tty = audit_get_tty(current);
  
-       ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_LOGIN);
-       if (!ab)
-               return;
 -      audit_log_format(ab, "pid=%d uid=%u", task_pid_nr(current), uid);
 +      audit_log_format(ab, "pid=%d uid=%u", task_tgid_nr(current), uid);
        audit_log_task_context(ab);
        audit_log_format(ab, " old-auid=%u auid=%u tty=%s old-ses=%u ses=%u res=%d",
                         oldloginuid, loginuid, tty ? tty_name(tty) : "(none)",
diff --cc kernel/exit.c
Simple merge
diff --cc mm/util.c
Simple merge
diff --cc net/core/sock.c
Simple merge
Simple merge
diff --cc net/ipv4/ping.c
Simple merge
diff --cc net/ipv4/tcp.c
Simple merge
Simple merge
diff --cc net/ipv4/udp.c
Simple merge
Simple merge