OSDN Git Service

Merge 4.4.165 into android-4.4
authorGreg Kroah-Hartman <gregkh@google.com>
Tue, 27 Nov 2018 15:20:35 +0000 (16:20 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Tue, 27 Nov 2018 15:20:35 +0000 (16:20 +0100)
Changes in 4.4.165
flow_dissector: do not dissect l4 ports for fragments
ip_tunnel: don't force DF when MTU is locked
net-gro: reset skb->pkt_type in napi_reuse_skb()
tg3: Add PHY reset for 5717/5719/5720 in change ring and flow control paths
ipv6: Fix PMTU updates for UDP/raw sockets in presence of VRF
kbuild: Add better clang cross build support
kbuild: clang: add -no-integrated-as to KBUILD_[AC]FLAGS
kbuild: Consolidate header generation from ASM offset information
kbuild: consolidate redundant sed script ASM offset generation
kbuild: fix asm-offset generation to work with clang
kbuild: drop -Wno-unknown-warning-option from clang options
kbuild, LLVMLinux: Add -Werror to cc-option to support clang
kbuild: use -Oz instead of -Os when using clang
kbuild: Add support to generate LLVM assembly files
modules: mark __inittest/__exittest as __maybe_unused
kbuild: clang: Disable 'address-of-packed-member' warning
crypto: arm64/sha - avoid non-standard inline asm tricks
efi/libstub/arm64: Force 'hidden' visibility for section markers
efi/libstub/arm64: Set -fpie when building the EFI stub
kbuild: fix linker feature test macros when cross compiling with Clang
kbuild: Set KBUILD_CFLAGS before incl. arch Makefile
kbuild: move cc-option and cc-disable-warning after incl. arch Makefile
kbuild: clang: fix build failures with sparse check
kbuild: clang: remove crufty HOSTCFLAGS
kbuild: clang: disable unused variable warnings only when constant
kbuild: set no-integrated-as before incl. arch Makefile
kbuild: allow to use GCC toolchain not in Clang search path
arm64: Disable asm-operand-width warning for clang
x86/kbuild: Use cc-option to enable -falign-{jumps/loops}
crypto, x86: aesni - fix token pasting for clang
x86/mm/kaslr: Use the _ASM_MUL macro for multiplication to work around Clang incompatibility
kbuild: Add __cc-option macro
x86/build: Use __cc-option for boot code compiler options
x86/build: Specify stack alignment for clang
x86/boot: #undef memcpy() et al in string.c
x86/build: Fix stack alignment for CLang
x86/build: Use cc-option to validate stack alignment parameter
reiserfs: propagate errors from fill_with_dentries() properly
hfs: prevent btree data loss on root split
hfsplus: prevent btree data loss on root split
um: Give start_idle_thread() a return code
fs/exofs: fix potential memory leak in mount option parsing
clk: samsung: exynos5420: Enable PERIS clocks for suspend
platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307
arm64: percpu: Initialize ret in the default case
s390/vdso: add missing FORCE to build targets
netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net
s390/mm: Fix ERROR: "__node_distance" undefined!
netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment()
netfilter: xt_IDLETIMER: add sysfs filename checking routine
hwmon: (ibmpowernv) Remove bogus __init annotations
lib/raid6: Fix arm64 test build
zram: close udev startup race condition as default groups
SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer()
gfs2: Put bitmap buffers in put_super
btrfs: fix pinned underflow after transaction aborted
Revert "media: videobuf2-core: don't call memop 'finish' when queueing"
Revert "Bluetooth: h5: Fix missing dependency on BT_HCIUART_SERDEV"
media: v4l: event: Add subscription to list before calling "add" operation
uio: Fix an Oops on load
usb: cdc-acm: add entry for Hiro (Conexant) modem
USB: quirks: Add no-lpm quirk for Raydium touchscreens
usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB
misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data
USB: misc: appledisplay: add 20" Apple Cinema Display
drivers/misc/sgi-gru: fix Spectre v1 vulnerability
ACPI / platform: Add SMB0001 HID to forbidden_id_list
new helper: uaccess_kernel()
HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges
xhci: Fix USB3 NULL pointer dereference at logical disconnect.
Linux 4.4.165

Change-Id: I5bd20327e0c1139c46f74e8d5916fa0530a307d3
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
1  2 
Makefile
arch/arm64/include/asm/percpu.h
drivers/block/zram/zram_drv.c
drivers/hid/uhid.c
include/linux/uaccess.h
net/ipv6/route.c
net/netfilter/xt_IDLETIMER.c
scripts/Kbuild.include

diff --cc Makefile
Simple merge
Simple merge
@@@ -1718,20 -1269,13 +1723,14 @@@ static int zram_add(void
                zram->disk->queue->limits.discard_zeroes_data = 0;
        queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, zram->disk->queue);
  
 +      zram->disk->queue->backing_dev_info.capabilities |=
 +                                      BDI_CAP_STABLE_WRITES;
+       disk_to_dev(zram->disk)->groups = zram_disk_attr_groups;
        add_disk(zram->disk);
  
-       ret = sysfs_create_group(&disk_to_dev(zram->disk)->kobj,
-                               &zram_disk_attr_group);
-       if (ret < 0) {
-               pr_err("Error creating sysfs group for device %d\n",
-                               device_id);
-               goto out_free_disk;
-       }
        strlcpy(zram->compressor, default_compressor, sizeof(zram->compressor));
 -      zram->meta = NULL;
 -      zram->max_comp_streams = 1;
  
 +      zram_debugfs_register(zram);
        pr_info("Added device: %s\n", zram->disk->disk_name);
        return device_id;
  
@@@ -1765,17 -1306,6 +1761,8 @@@ static int zram_remove(struct zram *zra
        zram->claim = true;
        mutex_unlock(&bdev->bd_mutex);
  
-       /*
-        * Remove sysfs first, so no one will perform a disksize
-        * store while we destroy the devices. This also helps during
-        * hot_remove -- zram_reset_device() is the last holder of
-        * ->init_lock, no later/concurrent disksize_store() or any
-        * other sysfs handlers are possible.
-        */
-       sysfs_remove_group(&disk_to_dev(zram->disk)->kobj,
-                       &zram_disk_attr_group);
 +      zram_debugfs_unregister(zram);
 +
        /* Make sure all the pending I/O are finished */
        fsync_bdev(bdev);
        zram_reset_device(zram);
Simple merge
Simple merge
@@@ -1417,8 -1420,12 +1417,12 @@@ EXPORT_SYMBOL_GPL(ip6_update_pmtu)
  
  void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu)
  {
-       ip6_update_pmtu(skb, sock_net(sk), mtu,
-                       sk->sk_bound_dev_if, sk->sk_mark, sk->sk_uid);
+       int oif = sk->sk_bound_dev_if;
+       if (!oif && skb->dev)
+               oif = l3mdev_master_ifindex(skb->dev);
 -      ip6_update_pmtu(skb, sock_net(sk), mtu, oif, sk->sk_mark);
++      ip6_update_pmtu(skb, sock_net(sk), mtu, oif, sk->sk_mark, sk->sk_uid);
  }
  EXPORT_SYMBOL_GPL(ip6_sk_update_pmtu);
  
@@@ -226,57 -112,26 +226,73 @@@ static void idletimer_tg_expired(unsign
        struct idletimer_tg *timer = (struct idletimer_tg *) data;
  
        pr_debug("timer %s expired\n", timer->attr.attr.name);
 -
 +      spin_lock_bh(&timestamp_lock);
 +      timer->active = false;
 +      timer->work_pending = true;
        schedule_work(&timer->work);
 +      spin_unlock_bh(&timestamp_lock);
 +}
 +
 +static int idletimer_resume(struct notifier_block *notifier,
 +              unsigned long pm_event, void *unused)
 +{
 +      struct timespec ts;
 +      unsigned long time_diff, now = jiffies;
 +      struct idletimer_tg *timer = container_of(notifier,
 +                      struct idletimer_tg, pm_nb);
 +      if (!timer)
 +              return NOTIFY_DONE;
 +      switch (pm_event) {
 +      case PM_SUSPEND_PREPARE:
 +              get_monotonic_boottime(&timer->last_suspend_time);
 +              break;
 +      case PM_POST_SUSPEND:
 +              spin_lock_bh(&timestamp_lock);
 +              if (!timer->active) {
 +                      spin_unlock_bh(&timestamp_lock);
 +                      break;
 +              }
 +              /* since jiffies are not updated when suspended now represents
 +               * the time it would have suspended */
 +              if (time_after(timer->timer.expires, now)) {
 +                      get_monotonic_boottime(&ts);
 +                      ts = timespec_sub(ts, timer->last_suspend_time);
 +                      time_diff = timespec_to_jiffies(&ts);
 +                      if (timer->timer.expires > (time_diff + now)) {
 +                              mod_timer_pending(&timer->timer,
 +                                              (timer->timer.expires - time_diff));
 +                      } else {
 +                              del_timer(&timer->timer);
 +                              timer->timer.expires = 0;
 +                              timer->active = false;
 +                              timer->work_pending = true;
 +                              schedule_work(&timer->work);
 +                      }
 +              }
 +              spin_unlock_bh(&timestamp_lock);
 +              break;
 +      default:
 +              break;
 +      }
 +      return NOTIFY_DONE;
  }
  
+ static int idletimer_check_sysfs_name(const char *name, unsigned int size)
+ {
+       int ret;
+       ret = xt_check_proc_name(name, size);
+       if (ret < 0)
+               return ret;
+       if (!strcmp(name, "power") ||
+           !strcmp(name, "subsystem") ||
+           !strcmp(name, "uevent"))
+               return -EINVAL;
+       return 0;
+ }
  static int idletimer_tg_create(struct idletimer_tg_info *info)
  {
        int ret;
Simple merge