Commit Graph

550 Commits

Author SHA1 Message Date
Greg Kroah-Hartman
8ba8cea1c9 Merge 4.4.134 into android-msm-wahoo-4.4-lts
Linux 4.4.134
    s390/ftrace: use expoline for indirect branches
    kdb: make "mdr" command repeat
    Bluetooth: btusb: Add device ID for RTL8822BE
    ASoC: samsung: i2s: Ensure the RCLK rate is properly determined
  * regulator: of: Add a missing 'of_node_put()' in an error handling path of 'of_regulator_match()'
      drivers/regulator/of_regulator.c
    scsi: lpfc: Fix frequency of Release WQE CQEs
    scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing
    scsi: lpfc: Fix issue_lip if link is disabled
  * netlabel: If PF_INET6, check sk_buff ip header version
      net/netlabel/netlabel_unlabeled.c
    selftests/net: fixes psock_fanout eBPF test case
    perf report: Fix memory corruption in --branch-history mode --branch-history
    perf tests: Use arch__compare_symbol_names to compare symbols
    x86/apic: Set up through-local-APIC mode on the boot CPU if 'noapic' specified
    drm/rockchip: Respect page offset for PRIME mmap calls
    MIPS: Octeon: Fix logging messages with spurious periods after newlines
  * audit: return on memory error to avoid null pointer dereference
      kernel/audit.c
    crypto: sunxi-ss - Add MODULE_ALIAS to sun4i-ss
    clk: samsung: exynos3250: Fix PLL rates
    clk: samsung: exynos5250: Fix PLL rates
    clk: samsung: exynos5433: Fix PLL rates
    clk: samsung: exynos5260: Fix PLL rates
    clk: samsung: s3c2410: Fix PLL rates
    media: cx25821: prevent out-of-bounds read on array card
  * udf: Provide saner default for invalid uid / gid
      fs/udf/super.c
  * PCI: Add function 1 DMA alias quirk for Marvell 88SE9220
      drivers/pci/quirks.c
    serial: arc_uart: Fix out-of-bounds access through DT alias
    serial: fsl_lpuart: Fix out-of-bounds access through DT alias
  * serial: imx: Fix out-of-bounds access through serial port index
      drivers/tty/serial/imx.c
    serial: mxs-auart: Fix out-of-bounds access through serial port index
  * serial: samsung: Fix out-of-bounds access through serial port index
      drivers/tty/serial/samsung.c
    serial: xuartps: Fix out-of-bounds access through DT alias
    rtc: tx4939: avoid unintended sign extension on a 24 bit shift
    staging: rtl8192u: return -ENOMEM on failed allocation of priv->oldaddr
    hwrng: stm32 - add reset during probe
    enic: enable rq before updating rq descriptors
    clk: rockchip: Prevent calculating mmc phase if clock rate is zero
    media: em28xx: USB bulk packet size fix
    dmaengine: pl330: fix a race condition in case of threaded irqs
    media: s3c-camif: fix out-of-bounds array access
    media: cx23885: Set subdev host data to clk_freq pointer
    media: cx23885: Override 888 ImpactVCBe crystal frequency
    ALSA: vmaster: Propagate slave error
    x86/devicetree: Fix device IRQ settings in DT
    x86/devicetree: Initialize device tree before using it
  * usb: gadget: composite: fix incorrect handling of OS desc requests
      drivers/usb/gadget/composite.c
      include/linux/usb/composite.h
    usb: gadget: udc: change comparison to bitshift when dealing with a mask
  * gfs2: Fix fallocate chunk size
      fs/gfs2/file.c
    cdrom: do not call check_disk_change() inside cdrom_open()
    hwmon: (pmbus/adm1275) Accept negative page register values
    hwmon: (pmbus/max8688) Accept negative page register values
  * perf/core: Fix perf_output_read_group()
      kernel/events/core.c
  * ASoC: topology: create TLV data for dapm widgets
      sound/soc/soc-topology.c
    powerpc: Add missing prototype for arch_irq_work_raise()
  * usb: gadget: ffs: Execute copy_to_user() with USER_DS set
      drivers/usb/gadget/function/f_fs.c
  * usb: gadget: ffs: Let setup() return USB_GADGET_DELAYED_STATUS
      drivers/usb/gadget/function/f_fs.c
    usb: dwc2: Fix interval type issue
    ipmi_ssif: Fix kernel panic at msg_done_handler
  * PCI: Restore config space on runtime resume despite being unbound
      drivers/pci/pci-driver.c
    MIPS: ath79: Fix AR724X_PLL_REG_PCIE_CONFIG offset
  * xhci: zero usb device slot_id member when disabling and freeing a xhci slot
      drivers/usb/host/xhci-mem.c
    KVM: lapic: stop advertising DIRECTED_EOI when in-kernel IOAPIC is in use
    i2c: mv64xxx: Apply errata delay only in standard mode
  * ACPICA: acpi: acpica: fix acpi operand cache leak in nseval.c
      drivers/acpi/acpica/nseval.c
  * ACPICA: Events: add a return on failure from acpi_hw_register_read
      drivers/acpi/acpica/evevent.c
    bcache: quit dc->writeback_thread when BCACHE_DEV_DETACHING is set
    zorro: Set up z->dev.dma_mask for the DMA API
  * clk: Don't show the incorrect clock phase
      drivers/clk/clk.c
    cpufreq: cppc_cpufreq: Fix cppc_cpufreq_init() failure path
  * usb: dwc3: Update DWC_usb31 GTXFIFOSIZ reg fields
      drivers/usb/dwc3/core.h
    arm: dts: socfpga: fix GIC PPI warning
    virtio-net: Fix operstate for virtio when no VIRTIO_NET_F_STATUS
  * ima: Fallback to the builtin hash algorithm
      security/integrity/ima/ima_main.c
  * ima: Fix Kconfig to select TPM 2.0 CRB interface
      security/integrity/ima/Kconfig
    ath10k: Fix kernel panic while using worker (ath10k_sta_rc_update_wk)
    net/mlx5: Protect from command bit overflow
    selftests: Print the test we're running to /dev/kmsg
    tools/thermal: tmon: fix for segfault
    powerpc/perf: Fix kernel address leak via sampling registers
    powerpc/perf: Prevent kernel address leak to userspace via BHRB buffer
  * rtc: hctosys: Ensure system time doesn't overflow time_t
      drivers/rtc/hctosys.c
    hwmon: (nct6775) Fix writing pwmX_mode
    parisc/pci: Switch LBA PCI bus from Hard Fail to Soft Fail mode
    m68k: set dma and coherent masks for platform FEC ethernets
    powerpc/mpic: Check if cpu_possible() in mpic_physmask()
    ACPI: acpi_pad: Fix memory leak in power saving threads
  * xen/acpi: off by one in read_acpi_id()
      drivers/xen/xen-acpi-processor.c
    btrfs: fix lockdep splat in btrfs_alloc_subvolume_writers
    Btrfs: fix copy_items() return value when logging an inode
    btrfs: tests/qgroup: Fix wrong tree backref level
    Bluetooth: btusb: Add USB ID 7392:a611 for Edimax EW-7611ULB
    net: bgmac: Fix endian access in bgmac_dma_tx_ring_free()
    rtc: snvs: Fix usage of snvs_rtc_enable
    sparc64: Make atomic_xchg() an inline function rather than a macro.
    fscache: Fix hanging wait on page discarded by writeback
    KVM: VMX: raise internal error for exception during invalid protected mode state
  * sched/rt: Fix rq->clock_update_flags < RQCF_ACT_SKIP warning
      kernel/sched/rt.c
    ocfs2/dlm: don't handle migrate lockres if already in shutdown
  * btrfs: Fix possible softlock on single core machines
      fs/btrfs/extent-tree.c
    Btrfs: fix NULL pointer dereference in log_dir_items
    Btrfs: bail out on error during replay_dir_deletes
  * mm: fix races between address_space dereference and free in page_evicatable
      mm/vmscan.c
    mm/ksm: fix interaction with THP
    dp83640: Ensure against premature access to PHY registers after reset
    scsi: aacraid: Insure command thread is not recursively stopped
    cpufreq: CPPC: Initialize shared perf capabilities of CPUs
    Force log to disk before reading the AGF during a fstrim
    sr: get/drop reference to device in revalidate and check_events
  * swap: divide-by-zero when zero length swap file on ssd
      mm/swapfile.c
  * fs/proc/proc_sysctl.c: fix potential page fault while unregistering sysctl table
      fs/proc/proc_sysctl.c
    x86/pgtable: Don't set huge PUD/PMD on non-leaf entries
    sh: fix debug trap failure to process signals before return to user
    net: mvneta: fix enable of all initialized RXQs
  * net: Fix untag for vlan packets without ethernet header
      net/core/skbuff.c
  * mm/kmemleak.c: wait for scan completion before disabling free
      mm/kmemleak.c
    llc: properly handle dev_queue_xmit() return value
    net-usb: add qmi_wwan if on lte modem wistron neweb d18q1
    net/usb/qmi_wwan.c: Add USB id for lt4120 modem
    net: qmi_wwan: add BroadMobi BM806U 2020:2033
    ARM: 8748/1: mm: Define vdso_start, vdso_end as array
    batman-adv: fix packet loss for broadcasted DHCP packets to a server
    batman-adv: fix multicast-via-unicast transmission with AP isolation
    selftests: ftrace: Add a testcase for probepoint
    selftests: ftrace: Add a testcase for string type with kprobe_event
    selftests: ftrace: Add probe event argument syntax testcase
  * mm/mempolicy.c: avoid use uninitialized preferred_node
      mm/mempolicy.c
    RDMA/ucma: Correct option size check using optlen
  * perf/cgroup: Fix child event counting bug
      kernel/events/core.c
  * vti4: Don't override MTU passed on link creation via IFLA_MTU
      net/ipv4/ip_vti.c
  * vti4: Don't count header length twice on tunnel setup
      net/ipv4/ip_vti.c
    batman-adv: fix header size check in batadv_dbg_arp()
  * net: Fix vlan untag for bridge and vlan_dev with reorder_hdr off
      include/uapi/linux/if_ether.h
      net/core/skbuff.c
    sunvnet: does not support GSO for sctp
  * ipv4: lock mtu in fnhe when received PMTU < net.ipv4.route.min_pmtu
      include/net/ip.h
      include/net/ip_fib.h
      include/net/route.h
      net/ipv4/route.c
      net/ipv4/xfrm4_policy.c
  * workqueue: use put_device() instead of kfree()
      kernel/workqueue.c
    bnxt_en: Check valid VNIC ID in bnxt_hwrm_vnic_set_tpa().
  * netfilter: ebtables: fix erroneous reject of last rule
      net/bridge/netfilter/ebtables.c
    USB: OHCI: Fix NULL dereference in HCDs using HCD_LOCAL_MEM
    xen: xenbus: use put_device() instead of kfree()
    fbdev: Fixing arbitrary kernel leak in case FBIOGETCMAP_SPARC in sbusfb_ioctl_helper().
  * scsi: sd: Keep disk read-only when re-reading partition
      drivers/scsi/sd.c
    scsi: mpt3sas: Do not mark fw_event workqueue as WQ_MEM_RECLAIM
  * usb: musb: call pm_runtime_{get,put}_sync before reading vbus registers
      drivers/usb/musb/musb_core.c
    e1000e: allocate ring descriptors with dma_zalloc_coherent
    e1000e: Fix check_for_link return value with autoneg off
    watchdog: f71808e_wdt: Fix magic close handling
    KVM: PPC: Book3S HV: Fix VRMA initialization with 2MB or 1GB memory backing
    selftests/powerpc: Skip the subpage_prot tests if the syscall is unavailable
  * Btrfs: send, fix issuing write op when processing hole in no data mode
      fs/btrfs/send.c
    xen/pirq: fix error path cleanup when binding MSIs
    net/tcp/illinois: replace broken algorithm reference link
    gianfar: Fix Rx byte accounting for ndev stats
  * sit: fix IFLA_MTU ignored on NEWLINK
      net/ipv6/sit.c
    bcache: fix kcrashes with fio in RAID5 backend dev
    dmaengine: rcar-dmac: fix max_chunk_size for R-Car Gen3
    virtio-gpu: fix ioctl and expose the fixed status to userspace.
  * r8152: fix tx packets accounting
      drivers/net/usb/r8152.c
    clocksource/drivers/fsl_ftm_timer: Fix error return checking
    nvme-pci: Fix nvme queue cleanup if IRQ setup fails
  * netfilter: ebtables: convert BUG_ONs to WARN_ONs
      net/bridge/netfilter/ebtables.c
    batman-adv: invalidate checksum on fragment reassembly
    batman-adv: fix packet checksum in receive path
    md/raid1: fix NULL pointer dereference
    media: dmxdev: fix error code for invalid ioctls
    x86/topology: Update the 'cpu cores' field in /proc/cpuinfo correctly across CPU hotplug operations
    locking/xchg/alpha: Fix xchg() and cmpxchg() memory ordering bugs
  * regulatory: add NUL to request alpha2
      include/net/regulatory.h
    smsc75xx: fix smsc75xx_set_features()
    ARM: OMAP: Fix dmtimer init for omap1
    s390/cio: clear timer when terminating driver I/O
    s390/cio: fix return code after missing interrupt
    powerpc/bpf/jit: Fix 32-bit JIT for seccomp_data access
  * kernel/relay.c: limit kmalloc size to KMALLOC_MAX_SIZE
      kernel/relay.c
    md: raid5: avoid string overflow warning
    locking/xchg/alpha: Add unconditional memory barrier to cmpxchg()
  * usb: musb: fix enumeration after resume
      drivers/usb/musb/musb_core.c
    drm/exynos: fix comparison to bitshift when dealing with a mask
    md raid10: fix NULL deference in handle_write_completed()
  * mac80211: round IEEE80211_TX_STATUS_HEADROOM up to multiple of 4
      include/net/mac80211.h
  * NFC: llcp: Limit size of SDP URI
      net/nfc/netlink.c
    ARM: OMAP1: clock: Fix debugfs_create_*() usage
    ARM: OMAP3: Fix prm wake interrupt for resume
    ARM: OMAP2+: timer: fix a kmemleak caused in omap_get_timer_dt
    scsi: qla4xxx: skip error recovery in case of register disconnect.
    scsi: aacraid: fix shutdown crash when init fails
    scsi: storvsc: Increase cmd_per_lun for higher speed devices
    selftests: memfd: add config fragment for fuse
    usb: dwc2: Fix dwc2_hsotg_core_init_disconnected()
    usb: gadget: fsl_udc_core: fix ep valid checks
    usb: gadget: f_uac2: fix bFirstInterface in composite gadget
    ARC: Fix malformed ARC_EMUL_UNALIGNED default
    scsi: qla2xxx: Avoid triggering undefined behavior in qla2x00_mbx_completion()
    scsi: mptfusion: Add bounds check in mptctl_hp_targetinfo()
    scsi: sym53c8xx_2: iterator underflow in sym_getsync()
    scsi: bnx2fc: Fix check in SCSI completion handler for timed out request
  * scsi: ufs: Enable quirk to ignore sending WRITE_SAME command
      drivers/scsi/ufs/ufshcd.c
  * irqchip/gic-v3: Change pr_debug message to pr_devel
      drivers/irqchip/irq-gic-v3.c
    locking/qspinlock: Ensure node->count is updated before initialising node
    tools/libbpf: handle issues with bpf ELF objects containing .eh_frames
    bcache: return attach error when no cache set exist
    bcache: fix for data collapse after re-attaching an attached device
    bcache: fix for allocator and register thread race
    bcache: properly set task state in bch_writeback_thread()
  * cifs: silence compiler warnings showing up with gcc-8.0.0
      fs/cifs/cifssmb.c
  * proc: fix /proc/*/map_files lookup
      fs/proc/base.c
  * arm64: spinlock: Fix theoretical trylock() A-B-A with LSE atomics
      arch/arm64/include/asm/spinlock.h
    RDS: IB: Fix null pointer issue
    xen/grant-table: Use put_page instead of free_page
    xen-netfront: Fix race between device setup and open
    MIPS: TXx9: use IS_BUILTIN() for CONFIG_LEDS_CLASS
  * bpf: fix selftests/bpf test_kmod.sh failure when CONFIG_BPF_JIT_ALWAYS_ON=y
      lib/test_bpf.c
  * ACPI: processor_perflib: Do not send _PPC change notification if not ready
      drivers/acpi/processor_perflib.c
  * firmware: dmi_scan: Fix handling of empty DMI strings
      drivers/firmware/dmi_scan.c
  * x86/power: Fix swsusp_arch_resume prototype
      include/linux/suspend.h
      kernel/power/power.h
    IB/ipoib: Fix for potential no-carrier state
  * mm: pin address_space before dereferencing it while isolating an LRU page
      mm/vmscan.c
  * asm-generic: provide generic_pmdp_establish()
      include/asm-generic/pgtable.h
  * mm/mempolicy: add nodes_empty check in SYSC_migrate_pages
      mm/mempolicy.c
  * mm/mempolicy: fix the check of nodemask from user
      mm/mempolicy.c
    ocfs2: return error when we attempt to access a dirty bh in jbd2
    ocfs2/acl: use 'ip_xattr_sem' to protect getting extended attribute
    ocfs2: return -EROFS to mount.ocfs2 if inode block is invalid
    ntb_transport: Fix bug with max_mw_size parameter
    RDMA/mlx5: Avoid memory leak in case of XRCD dealloc failure
    powerpc/numa: Ensure nodes initialized for hotplug
    powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes
    jffs2: Fix use-after-free bug in jffs2_iget()'s error handling path
  * HID: roccat: prevent an out of bounds read in kovaplus_profile_activated()
      drivers/hid/hid-roccat-kovaplus.c
    scsi: fas216: fix sense buffer initialization
  * Btrfs: fix scrub to repair raid6 corruption
      fs/btrfs/volumes.c
    btrfs: Fix out of bounds access in btrfs_search_slot
  * Btrfs: set plug for fsync
      fs/btrfs/file.c
    ipmi/powernv: Fix error return code in ipmi_powernv_probe()
    mac80211_hwsim: fix possible memory leak in hwsim_new_radio_nl()
  * kconfig: Fix expr_free() E_NOT leak
      scripts/kconfig/expr.c
  * kconfig: Fix automatic menu creation mem leak
      scripts/kconfig/menu.c
    kconfig: Don't leak main menus during parsing
    watchdog: sp5100_tco: Fix watchdog disable bit
    nfs: Do not convert nfs_idmap_cache_timeout to jiffies
    dm thin: fix documentation relative to low water mark threshold
    tools lib traceevent: Fix get_field_str() for dynamic strings
    perf callchain: Fix attr.sample_max_stack setting
    tools lib traceevent: Simplify pointer print logic and fix %pF
  * PCI: Add function 1 DMA alias quirk for Marvell 9128
      drivers/pci/quirks.c
  * tracing/hrtimer: Fix tracing bugs by taking all clock bases and modes into account
      include/trace/events/timer.h
    kvm: x86: fix KVM_XEN_HVM_CONFIG ioctl
    ASoC: au1x: Fix timeout tests in au1xac97c_ac97_read()
  * ALSA: hda - Use IS_REACHABLE() for dependency on input
      sound/pci/hda/Kconfig
      sound/pci/hda/patch_realtek.c
  * NFSv4: always set NFS_LOCK_LOST when a lock is lost.
      fs/nfs/nfs4proc.c
      fs/nfs/nfs4state.c
    firewire-ohci: work around oversized DMA reads on JMicron controllers
  * do d_instantiate/unlock_new_inode combinations safely
      fs/btrfs/inode.c
      fs/dcache.c
      fs/ext4/namei.c
      fs/f2fs/namei.c
      include/linux/dcache.h
    xfs: remove racy hasattr check from attr ops
  * kernel/signal.c: avoid undefined behaviour in kill_something_info
      kernel/signal.c
  * kernel/sys.c: fix potential Spectre v1 issue
      kernel/sys.c
    kasan: fix memory hotplug during boot
    ipc/shm: fix shmat() nil address after round-down when remapping
    Revert "ipc/shm: Fix shmat mmap nil-page protection"
  * xen-swiotlb: fix the check condition for xen_swiotlb_free_coherent
      drivers/xen/swiotlb-xen.c
    libata: blacklist Micron 500IT SSD with MU01 firmware
    libata: Blacklist some Sandisk SSDs for NCQ
    mmc: sdhci-iproc: fix 32bit writes for TRANSFER_MODE register
  * ALSA: timer: Fix pause event notification
      sound/core/timer.c
  * aio: fix io_destroy(2) vs. lookup_ioctx() race
      fs/aio.c
    affs_lookup(): close a race with affs_remove_link()
    KVM: Fix spelling mistake: "cop_unsuable" -> "cop_unusable"
    MIPS: Fix ptrace(2) PTRACE_PEEKUSR and PTRACE_POKEUSR accesses to o32 FGRs
    MIPS: ptrace: Expose FIR register through FP regset

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2018-07-30 07:07:21 -07:00
Greg Kroah-Hartman
a73edca916 Merge 4.4.122 into android-msm-wahoo-4.4-lts
Linux 4.4.122
    fixup: sctp: verify size of a new chunk in _sctp_make_chunk()
  * serial: 8250_pci: Add Brainboxes UC-260 4 port serial device
      drivers/tty/serial/8250/8250_pci.c
  * usb: gadget: f_fs: Fix use-after-free in ffs_fs_kill_sb()
      drivers/usb/gadget/function/f_fs.c
    usb: usbmon: Read text within supplied buffer size
    USB: usbmon: remove assignment from IS_ERR argument
  * usb: quirks: add control message delay for 1b1c:1b20
      drivers/usb/core/message.c
      drivers/usb/core/quirks.c
      include/linux/usb/quirks.h
  * USB: storage: Add JMicron bridge 152d:2567 to unusual_devs.h
      drivers/usb/storage/unusual_devs.h
  * staging: android: ashmem: Fix lockdep issue during llseek
      drivers/staging/android/ashmem.c
    staging: comedi: fix comedi_nsamples_left.
  * uas: fix comparison for error code
      drivers/usb/storage/uas.c
  * tty/serial: atmel: add new version check for usart
      drivers/tty/serial/atmel_serial.c
  * serial: sh-sci: prevent lockup on full TTY buffers
      drivers/tty/serial/sh-sci.c
    x86: Treat R_X86_64_PLT32 as R_X86_64_PC32
    x86/module: Detect and skip invalid relocations
    Revert "ARM: dts: LogicPD Torpedo: Fix I2C1 pinmux"
  * NFS: Fix an incorrect type in struct nfs_direct_req
      fs/nfs/direct.c
    scsi: qla2xxx: Replace fcport alloc with qla2x00_alloc_fcport
    ubi: Fix race condition between ubi volume creation and udev
  * ext4: inplace xattr block update fails to deduplicate blocks
      fs/ext4/xattr.c
  * netfilter: x_tables: pack percpu counter allocations
      include/linux/netfilter/x_tables.h
      net/ipv4/netfilter/arp_tables.c
      net/ipv4/netfilter/ip_tables.c
      net/ipv6/netfilter/ip6_tables.c
      net/netfilter/x_tables.c
  * netfilter: x_tables: pass xt_counters struct to counter allocator
      include/linux/netfilter/x_tables.h
      net/ipv4/netfilter/arp_tables.c
      net/ipv4/netfilter/ip_tables.c
      net/ipv6/netfilter/ip6_tables.c
      net/netfilter/x_tables.c
  * netfilter: x_tables: pass xt_counters struct instead of packet counter
      include/linux/netfilter/x_tables.h
      net/ipv4/netfilter/arp_tables.c
      net/ipv4/netfilter/ip_tables.c
      net/ipv6/netfilter/ip6_tables.c
      net/netfilter/x_tables.c
  * netfilter: use skb_to_full_sk in ip_route_me_harder
      net/ipv4/netfilter.c
    netfilter: ipv6: fix use-after-free Write in nf_nat_ipv6_manip_pkt
    netfilter: bridge: ebt_among: add missing match size checks
  * netfilter: ebtables: CONFIG_COMPAT: don't trust userland offsets
      net/bridge/netfilter/ebtables.c
  * netfilter: IDLETIMER: be syzkaller friendly
      net/netfilter/xt_IDLETIMER.c
  * netfilter: nat: cope with negative port range
      net/netfilter/nf_nat_proto_common.c
    netfilter: x_tables: fix missing timer initialization in xt_LED
  * netfilter: add back stackpointer size checks
      net/ipv4/netfilter/arp_tables.c
      net/ipv4/netfilter/ip_tables.c
      net/ipv6/netfilter/ip6_tables.c
    tc358743: fix register i2c_rd/wr function fix
    Input: tca8418_keypad - remove double read of key event register
    ARM: omap2: hide omap3_save_secure_ram on non-OMAP3 builds
  * netfilter: nfnetlink_queue: fix timestamp attribute
      net/netfilter/nfnetlink_queue.c
    watchdog: hpwdt: fix unused variable warning
    watchdog: hpwdt: Check source of NMI
    watchdog: hpwdt: SMBIOS check
    nospec: Include <asm/barrier.h> dependency
  * ALSA: hda: add dock and led support for HP ProBook 640 G2
      sound/pci/hda/patch_conexant.c
  * ALSA: hda: add dock and led support for HP EliteBook 820 G3
      sound/pci/hda/patch_conexant.c
  * ALSA: seq: More protection for concurrent write and ioctl races
      sound/core/seq/seq_clientmgr.c
      sound/core/seq/seq_fifo.c
      sound/core/seq/seq_memory.c
      sound/core/seq/seq_memory.h
  * ALSA: seq: Don't allow resizing pool in use
      sound/core/seq/seq_clientmgr.c
  * ALSA: hda/realtek - Fix dock line-out volume on Dell Precision 7520
      sound/pci/hda/patch_realtek.c
    x86/MCE: Serialize sysfs changes
    bcache: don't attach backing with duplicate UUID
  * kbuild: Handle builtin dtb file names containing hyphens
      scripts/Makefile.lib
  * loop: Fix lost writes caused by missing flag
      drivers/block/loop.c
    Input: matrix_keypad - fix race when disabling interrupts
    MIPS: OCTEON: irq: Check for null return on kzalloc allocation
    MIPS: ath25: Check for kzalloc allocation failure
    MIPS: BMIPS: Do not mask IPIs during suspend
    drm/amdgpu: fix KV harvesting
    drm/radeon: fix KV harvesting
    drm/amdgpu: Notify sbios device ready before send request
    drm/amdgpu: Fix deadlock on runtime suspend
    drm/radeon: Fix deadlock on runtime suspend
    drm/nouveau: Fix deadlock on runtime suspend
    drm: Allow determining if current task is output poll worker
  * workqueue: Allow retrieval of current task's work struct
      include/linux/workqueue.h
      kernel/workqueue.c
    scsi: qla2xxx: Fix NULL pointer crash due to active timer for ABTS
    RDMA/mlx5: Fix integer overflow while resizing CQ
    RDMA/ucma: Check that user doesn't overflow QP state
    RDMA/ucma: Limit possible option size

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2018-07-23 08:12:08 -07:00
Arvind Yadav
b29cfb8ae0 workqueue: use put_device() instead of kfree()
[ Upstream commit 537f4146c53c95aac977852b371bafb9c6755ee1 ]

Never directly free @dev after calling device_register(), even
if it returned an error! Always use put_device() to give up the
reference initialized in this function instead.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-05-30 07:49:04 +02:00
Lukas Wunner
e235f151a3 workqueue: Allow retrieval of current task's work struct
commit 27d4ee03078aba88c5e07dcc4917e8d01d046f38 upstream.

Introduce a helper to retrieve the current task's work struct if it is
a workqueue worker.

This allows us to fix a long-standing deadlock in several DRM drivers
wherein the ->runtime_suspend callback waits for a specific worker to
finish and that worker in turn calls a function which waits for runtime
suspend to finish.  That function is invoked from multiple call sites
and waiting for runtime suspend to finish is the correct thing to do
except if it's executing in the context of the worker.

Cc: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Link: https://patchwork.freedesktop.org/patch/msgid/2d8f603074131eb87e588d2b803a71765bd3a2fd.1518338788.git.lukas@wunner.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-18 11:17:48 +01:00
Thierry Strudel
5308266998 Merge 4.4.116 into android-msm-wahoo-4.4
Linux 4.4.116
    ftrace: Remove incorrect setting of glob search field
    mn10300/misalignment: Use SIGSEGV SEGV_MAPERR to report a failed user copy
    ovl: fix failure to fsync lower dir
    ACPI: sbshc: remove raw pointer from printk() message
    nvme: Fix managing degraded controllers
    btrfs: Handle btrfs_set_extent_delalloc failure in fixup worker
    pktcdvd: Fix pkt_setup_dev() error path
    EDAC, octeon: Fix an uninitialized variable warning
    xtensa: fix futex_atomic_cmpxchg_inatomic
    alpha: fix reboot on Avanti platform
    alpha: fix crash if pthread_create races with signal delivery
    signal/sh: Ensure si_signo is initialized in do_divide_error
    signal/openrisc: Fix do_unaligned_access to send the proper signal
    Bluetooth: btusb: Restore QCA Rome suspend/resume fix with a "rewritten" version
    Revert "Bluetooth: btusb: fix QCA Rome suspend/resume"
    Bluetooth: btsdio: Do not bind to non-removable BCM43341
  * HID: quirks: Fix keyboard + touchpad on Toshiba Click Mini not working
  * kernel/async.c: revert "async: simplify lowest_in_progress()"
    media: cxusb, dib0700: ignore XC2028_I2C_FLUSH
    media: ts2020: avoid integer overflows on 32 bit machines
    watchdog: imx2_wdt: restore previous timeout after suspend+resume
    KVM: nVMX: Fix races when sending nested PI while dest enters/leaves L2
    arm: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls
    crypto: caam - fix endless loop when DECO acquire fails
  * media: v4l2-compat-ioctl32.c: refactor compat ioctl32 logic
  * media: v4l2-compat-ioctl32.c: don't copy back the result for certain errors
  * media: v4l2-compat-ioctl32.c: drop pr_info for unknown buffer type
  * media: v4l2-compat-ioctl32.c: copy clip list in put_v4l2_window32
  * media: v4l2-compat-ioctl32: Copy v4l2_window->global_alpha
  * media: v4l2-compat-ioctl32.c: make ctrl_is_pointer work for subdevs
  * media: v4l2-compat-ioctl32.c: fix ctrl_is_pointer
  * media: v4l2-compat-ioctl32.c: copy m.userptr in put_v4l2_plane32
  * media: v4l2-compat-ioctl32.c: avoid sizeof(type)
  * media: v4l2-compat-ioctl32.c: move 'helper' functions to __get/put_v4l2_format32
  * media: v4l2-compat-ioctl32.c: fix the indentation
  * media: v4l2-compat-ioctl32.c: add missing VIDIOC_PREPARE_BUF
  * vb2: V4L2_BUF_FLAG_DONE is set after DQBUF
  * media: v4l2-ioctl.c: don't copy back the result for -ENOTTY
  * nsfs: mark dentry with DCACHE_RCUACCESS
    crypto: poly1305 - remove ->setkey() method
  * crypto: cryptd - pass through absence of ->setkey()
  * crypto: hash - introduce crypto_hash_alg_has_setkey()
    ahci: Add Intel Cannon Lake PCH-H PCI ID
    ahci: Add PCI ids for Intel Bay Trail, Cherry Trail and Apollo Lake AHCI
    ahci: Annotate PCI ids for mobile Intel chipsets as such
  * kernfs: fix regression in kernfs_fop_write caused by wrong type
    NFS: reject request for id_legacy key without auxdata
    NFS: commit direct writes even if they fail partially
    NFS: Add a cond_resched() to nfs_commit_release_pages()
    nfs/pnfs: fix nfs_direct_req ref leak when i/o falls back to the mds
    ubi: block: Fix locking for idr_alloc/idr_remove
    mtd: nand: sunxi: Fix ECC strength choice
    mtd: nand: Fix nand_do_read_oob() return value
    mtd: nand: brcmnand: Disable prefetch by default
    mtd: cfi: convert inline functions to macros
    media: dvb-usb-v2: lmedm04: move ts2020 attach to dm04_lme2510_tuner
    media: dvb-usb-v2: lmedm04: Improve logic checking of warm start
    dccp: CVE-2017-8824: use-after-free in DCCP code
  * sched/rt: Up the root domain ref count when passing it around via IPIs
  * sched/rt: Use container_of() to get root domain in rto_push_irq_work_func()
    usb: gadget: uvc: Missing files for configfs interface
  * posix-timer: Properly check sigevent->sigev_notify
  * netfilter: nf_queue: Make the queue_handler pernet
    kaiser: fix compile error without vsyscall
    x86/kaiser: fix build error with KASAN && !FUNCTION_GRAPH_TRACER
    dmaengine: dmatest: fix container_of member in dmatest_callback
    CIFS: zero sensitive data when freeing
    cifs: Fix autonegotiate security settings mismatch
    cifs: Fix missing put_xid in cifs_file_strict_mmap
    powerpc/pseries: include linux/types.h in asm/hvcall.h
    x86/microcode: Do the family check first
    x86/microcode/AMD: Do not load when running on a hypervisor
    crypto: tcrypt - fix S/G table for test_aead_speed()
  * don't put symlink bodies in pagecache into highmem
    KEYS: encrypted: fix buffer overread in valid_master_desc()
    media: soc_camera: soc_scale_crop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
    vhost_net: stop device during reset owner
  * tcp: release sk_frag.page in tcp_disconnect
    r8169: fix RTL8168EP take too long to complete driver initialization.
    qlcnic: fix deadlock bug
  * net: igmp: add a missing rcu locking section
    ip6mr: fix stale iterator
    x86/asm: Fix inline asm call constraints for GCC 4.4
    drm: rcar-du: Fix race condition when disabling planes at CRTC stop
    drm: rcar-du: Use the VBK interrupt for vblank events
    ASoC: rsnd: avoid duplicate free_irq()
    ASoC: rsnd: don't call free_irq() on Parent SSI
    ASoC: simple-card: Fix misleading error message
  * net: cdc_ncm: initialize drvflags before usage
    usbip: fix 3eee23c3ec14 tcp_socket address still in the status file
    usbip: vhci_hcd: clear just the USB_PORT_STAT_POWER bit
    ASoC: pcm512x: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
    powerpc/64s: Allow control of RFI flush via debugfs
    powerpc/64s: Wire up cpu_show_meltdown()
    powerpc/powernv: Check device-tree for RFI flush settings
    powerpc/pseries: Query hypervisor for RFI flush settings
    powerpc/64s: Support disabling RFI flush with no_rfi_flush and nopti
    powerpc/64s: Add support for RFI flush of L1-D cache
    powerpc/64s: Convert slb_miss_common to use RFI_TO_USER/KERNEL
    powerpc/64: Convert the syscall exit path to use RFI_TO_USER/KERNEL
    powerpc/64: Convert fast_exception_return to use RFI_TO_USER/KERNEL
    powerpc/64s: Simple RFI macro conversions
    powerpc/64: Add macros for annotating the destination of rfid/hrfid
    powerpc/pseries: Add H_GET_CPU_CHARACTERISTICS flags & wrapper
  * powerpc: Simplify module TOC handling
    powerpc: Fix VSX enabling/flushing to also test MSR_FP and MSR_VEC
    powerpc/64: Fix flush_(d|i)cache_range() called from modules
    powerpc/bpf/jit: Disable classic BPF JIT on ppc64le
Linux 4.4.115
    spi: imx: do not access registers while clocks disabled
    serial: imx: Only wakeup via RTSDEN bit if the system has RTS/CTS
  * selinux: general protection fault in sock_has_perm
    usb: uas: unconditionally bring back host after reset
  * usb: f_fs: Prevent gadget unbind if it is already unbound
  * USB: serial: simple: add Motorola Tetra driver
    usbip: list: don't list devices attached to vhci_hcd
    usbip: prevent bind loops on devices attached to vhci_hcd
    USB: serial: io_edgeport: fix possible sleep-in-atomic
    CDC-ACM: apply quirk for card reader
    USB: cdc-acm: Do not log urb submission errors on disconnect
    USB: serial: pl2303: new device id for Chilitag
    usb: option: Add support for FS040U modem
    staging: rtl8188eu: Fix incorrect response to SIOCGIWESSID
  * usb: gadget: don't dereference g until after it has been null checked
    media: usbtv: add a new usbid
  * scsi: ufs: ufshcd: fix potential NULL pointer dereference in ufshcd_config_vreg
    scsi: aacraid: Prevent crash in case of free interrupt during scsi EH path
    xfs: ubsan fixes
    drm/omap: Fix error handling path in 'omap_dmm_probe()'
    kmemleak: add scheduling point to kmemleak_scan()
    SUNRPC: Allow connect to return EHOSTUNREACH
  * quota: Check for register_shrinker() failure.
  * net: ethernet: xilinx: Mark XILINX_LL_TEMAC broken on 64-bit
    hwmon: (pmbus) Use 64bit math for DIRECT format values
    lockd: fix "list_add double add" caused by legacy signal interface
    nfsd: check for use of the closed special stateid
    grace: replace BUG_ON by WARN_ONCE in exit_net hook
    nfsd: Ensure we check stateid validity in the seqid operation checks
    nfsd: CLOSE SHOULD return the invalid special stateid for NFSv4.x (x>0)
    xen-netfront: remove warning when unloading module
    KVM: VMX: Fix rflags cache during vCPU reset
    btrfs: fix deadlock when writing out space cache
    mac80211: fix the update of path metric for RANN frame
    openvswitch: fix the incorrect flow action alloc size
    drm/amdkfd: Fix SDMA oversubsription handling
    drm/amdkfd: Fix SDMA ring buffer size calculation
    drm/amdgpu: Fix SDMA load/unload sequence on HWS disabled mode
    bcache: check return value of register_shrinker
  * cpufreq: Add Loongson machine dependencies
  * ACPI / bus: Leave modalias empty for devices which are not present
    KVM: x86: ioapic: Preserve read-only values in the redirection table
    KVM: x86: ioapic: Clear Remote IRR when entry is switched to edge-triggered
    KVM: x86: ioapic: Fix level-triggered EOI and IOAPIC reconfigure race
    KVM: X86: Fix operand/address-size during instruction decoding
    KVM: x86: Don't re-execute instruction when not passing CR2 value
    KVM: x86: emulator: Return to user-mode on L1 CPL=0 emulation failure
    igb: Free IRQs when device is hotplugged
    mtd: nand: denali_pci: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
    gpio: ath79: add missing MODULE_DESCRIPTION/LICENSE
    gpio: iop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
    power: reset: zx-reboot: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
    crypto: af_alg - whitelist mask and type
    crypto: aesni - handle zero length dst buffer
    ALSA: seq: Make ioctls race-free
    kaiser: fix intel_bts perf crashes
    x86/pti: Make unpoison of pgd for trusted boot work for real
    bpf: reject stores into ctx via st and xadd
  * bpf: fix 32-bit divide by zero
  * bpf: fix divides by zero
  * bpf: avoid false sharing of map refcount with max_entries
    bpf: arsh is not supported in 32 bit alu thus reject it
  * bpf: introduce BPF_JIT_ALWAYS_ON config
  * bpf: fix bpf_tail_call() x64 JIT
    x86: bpf_jit: small optimization in emit_bpf_tail_call()
    bpf: fix branch pruning logic
  * loop: fix concurrent lo_open/lo_release
Linux 4.4.114
    nfsd: auth: Fix gid sorting when rootsquash enabled
  * net: tcp: close sock if net namespace is exiting
  * flow_dissector: properly cap thoff field
  * ipv4: Make neigh lookup keys for loopback/point-to-point devices be INADDR_ANY
  * net: Allow neigh contructor functions ability to modify the primary_key
    vmxnet3: repair memory leak
    sctp: return error if the asoc has been peeled off in sctp_wait_for_sndbuf
    sctp: do not allow the v4 socket to bind a v4mapped v6 address
    r8169: fix memory corruption on retrieval of hardware statistics.
  * pppoe: take ->needed_headroom of lower device into account on xmit
  * net: qdisc_pkt_len_init() should be more robust
  * tcp: __tcp_hdrlen() helper
  * net: igmp: fix source address check for IGMPv3 reports
    lan78xx: Fix failure in USB Full Speed
  * ipv6: ip6_make_skb() needs to clear cork.base.dst
  * ipv6: fix udpv6 sendmsg crash caused by too small MTU
  * ipv6: Fix getsockopt() for sockets with default IPV6_AUTOFLOWLABEL
    dccp: don't restart ccid2_hc_tx_rto_expire() if sk in closed state
  * hrtimer: Reset hrtimer cpu base proper on CPU hotplug
    x86/microcode/intel: Extend BDW late-loading further with LLC size check
  * eventpoll.h: add missing epoll event masks
    vsyscall: Fix permissions for emulate mode with KAISER/PTI
    um: link vmlinux with -no-pie
    usbip: prevent leaking socket pointer address in messages
    usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input
    usbip: fix stub_rx: get_pipe() to validate endpoint number
    usb: usbip: Fix possible deadlocks reported by lockdep
    Input: trackpoint - force 3 buttons if 0 button is reported
  * Revert "module: Add retpoline tag to VERMAGIC"
    scsi: libiscsi: fix shifting of DID_REQUEUE host byte
  * fs/fcntl: f_setown, avoid undefined behaviour
    reiserfs: Don't clear SGID when inheriting ACLs
    reiserfs: don't preallocate blocks for extended attributes
    reiserfs: fix race in prealloc discard
    ext2: Don't clear SGID when inheriting ACLs
    netfilter: xt_osf: Add missing permission checks
    netfilter: nfnetlink_cthelper: Add missing permission checks
  * netfilter: fix IS_ERR_VALUE usage
  * netfilter: use fwmark_reflect in nf_send_reset
    netfilter: nf_conntrack_sip: extend request line validation
  * netfilter: restart search if moved to other chain
  * netfilter: nfnetlink_queue: reject verdict request from different portid
  * netfilter: nf_ct_expect: remove the redundant slash when policy name is empty
  * netfilter: nf_dup_ipv6: set again FLOWI_FLAG_KNOWN_NH at flowi6_flags
  * netfilter: arp_tables: fix invoking 32bit "iptable -P INPUT ACCEPT" failed in 64bit kernel
  * netfilter: x_tables: speed up jump target validation
  * ACPICA: Namespace: fix operand cache leak
  * ACPI / scan: Prefer devices without _HID/_CID for _ADR matching
  * ACPI / processor: Avoid reserving IO regions too early
    x86/ioapic: Fix incorrect pointers in ioapic_setup_resources()
    ipc: msg, make msgrcv work with LONG_MIN
  * mm, page_alloc: fix potential false positive in __zone_watermark_ok
  * cma: fix calculation of aligned offset
    hwpoison, memcg: forcibly uncharge LRU pages
  * mm/mmap.c: do not blow on PROT_NONE MAP_FIXED holes in the stack
  * fs/select: add vmalloc fallback for select(2)
    mmc: sdhci-of-esdhc: add/remove some quirks according to vendor version
    PCI: layerscape: Fix MSG TLP drop setting
    PCI: layerscape: Add "fsl,ls2085a-pcie" compatible ID
  * drivers: base: cacheinfo: fix boot error message when acpi is enabled
  * drivers: base: cacheinfo: fix x86 with CONFIG_OF enabled
    Prevent timer value 0 for MWAITX
  * timers: Plug locking race vs. timer migration
  * time: Avoid undefined behaviour in ktime_add_safe()
    PM / sleep: declare __tracedata symbols as char[] rather than char
    can: af_can: canfd_rcv(): replace WARN_ONCE by pr_warn_once
    can: af_can: can_rcv(): replace WARN_ONCE by pr_warn_once
  * sched/deadline: Use the revised wakeup rule for suspending constrained dl tasks
    x86/retpoline: Fill RSB on context switch for affected CPUs
    x86/cpu/intel: Introduce macros for Intel family numbers
    x86/microcode/intel: Fix BDW late-loading revision check
    usbip: Fix potential format overflow in userspace tools
    usbip: Fix implicit fallthrough warning
    usbip: prevent vhci_hcd driver from leaking a socket pointer address
    x86/asm/32: Make sync_core() handle missing CPUID on all 32-bit kernels
Linux 4.4.113
    MIPS: AR7: ensure the port type's FCR value is used
    x86/retpoline: Optimize inline assembler for vmexit_fill_RSB
    x86/pti: Document fix wrong index
    kprobes/x86: Disable optimizing on the function jumps to indirect thunk
    kprobes/x86: Blacklist indirect thunk functions for kprobes
    retpoline: Introduce start/end markers of indirect thunk
    x86/mce: Make machine check speculation protected
  * kbuild: modversions for EXPORT_SYMBOL() for asm
    x86/cpu, x86/pti: Do not enable PTI on AMD processors
    arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls
    dm thin metadata: THIN_MAX_CONCURRENT_LOCKS should be 6
    dm btree: fix serious bug in btree_split_beneath()
    libata: apply MAX_SEC_1024 to all LITEON EP1 series devices
    can: peak: fix potential bug in packet fragmentation
    ARM: dts: kirkwood: fix pin-muxing of MPP7 on OpenBlocks A7
  * phy: work around 'phys' references to usb-nop-xceiv devices
  * tracing: Fix converting enum's from the map in trace_event_eval_update()
    Input: twl4030-vibra - fix sibling-node lookup
    Input: twl6040-vibra - fix child-node lookup
    Input: twl6040-vibra - fix DT node memory management
    Input: 88pm860x-ts - fix child-node lookup
    x86/apic/vector: Fix off by one in error path
  * pipe: avoid round_pipe_size() nr_pages overflow on 32-bit
  * module: Add retpoline tag to VERMAGIC
    x86/retpoline: Add LFENCE to the retpoline/RSB filling RSB macros
  * sched/deadline: Zero out positive runtime after throttling constrained tasks
    scsi: hpsa: fix volume offline state
  * af_key: fix buffer overread in parse_exthdrs()
  * af_key: fix buffer overread in verify_address_len()
    ALSA: hda - Apply the existing quirk to iMac 14,1
    ALSA: hda - Apply headphone noise quirk for another Dell XPS 13 variant
  * ALSA: pcm: Remove yet superfluous WARN_ON()
  * futex: Prevent overflow by strengthen input validation
  * scsi: sg: disable SET_FORCE_LOW_DMA
    x86/retpoline: Remove compile time warning
    x86/retpoline: Fill return stack buffer on vmexit
    x86/retpoline/irq32: Convert assembler indirect jumps
    x86/retpoline/checksum32: Convert assembler indirect jumps
    x86/retpoline/xen: Convert Xen hypercall indirect jumps
    x86/retpoline/hyperv: Convert assembler indirect jumps
    x86/retpoline/ftrace: Convert ftrace assembler indirect jumps
    x86/retpoline/entry: Convert entry assembler indirect jumps
    x86/retpoline/crypto: Convert crypto assembler indirect jumps
    x86/spectre: Add boot time option to select Spectre v2 mitigation
    x86/retpoline: Add initial retpoline support
  * kconfig.h: use __is_defined() to check if MODULE is defined
    EXPORT_SYMBOL() for asm
    x86/asm: Make asm/alternative.h safe from assembly
    x86/kbuild: enable modversions for symbols exported from asm
    x86/asm: Use register variable to get stack pointer value
    x86/mm/32: Move setup_clear_cpu_cap(X86_FEATURE_PCID) earlier
    x86/cpu/AMD: Use LFENCE_RDTSC in preference to MFENCE_RDTSC
    x86/cpu/AMD: Make LFENCE a serializing instruction
  * gcov: disable for COMPILE_TEST
Linux 4.4.112
    selftests/x86: Add test_vsyscall
    x86/alternatives: Add missing '\n' at end of ALTERNATIVE inline asm
    x86/alternatives: Fix optimize_nops() checking
    sysfs/cpu: Fix typos in vulnerability documentation
    x86/cpu: Implement CPU vulnerabilites sysfs functions
  * sysfs/cpu: Add vulnerability folder
    x86/cpu: Merge bugs.c and bugs_64.c
    x86/cpufeatures: Add X86_BUG_SPECTRE_V[12]
    x86/pti: Rename BUG_CPU_INSECURE to BUG_CPU_MELTDOWN
    x86/cpufeatures: Add X86_BUG_CPU_INSECURE
    x86/cpufeatures: Make CPU bugs sticky
    x86/cpu: Factor out application of forced CPU caps
    x86/Documentation: Add PTI description
    e1000e: Fix e1000_check_for_copper_link_ich8lan return value.
    uas: ignore UAS for Norelsys NS1068(X) chips
  * Bluetooth: Prevent stack info leak from the EFS element.
  * staging: android: ashmem: fix a race condition in ASHMEM_SET_SIZE ioctl
    usbip: remove kernel addresses from usb device and urb debug msgs
    USB: fix usbmon BUG trigger
    usb: misc: usb3503: make sure reset is low for at least 100us
    USB: serial: cp210x: add new device ID ELV ALC 8xxx
    USB: serial: cp210x: add IDs for LifeScan OneTouch Verio IQ
    target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK
    iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref
    bpf, array: fix overflow in max_entries and undefined behavior in index_mask
  * bpf: prevent out-of-bounds speculation
    bpf: adjust insn_aux_data when patching insns
    bpf: refactor fixup_bpf_calls()
    bpf: move fixup_bpf_calls() function
    bpf: don't (ab)use instructions to store state
  * bpf: add bpf_patch_insn_single helper
    kaiser: Set _PAGE_NX only if supported
    drm/vmwgfx: Potential off by one in vmw_view_add()
    KVM: x86: Add memory barrier on vmcs field lookup
    x86/microcode/intel: Extend BDW late-loading with a revision check
    rbd: set max_segments to USHRT_MAX
  * crypto: algapi - fix NULL dereference in crypto_remove_spawns()
  * ipv6: fix possible mem leaks in ipv6_make_skb()
  * net: stmmac: enable EEE in MII, GMII or RGMII only
    sh_eth: fix SH7757 GEther initialization
    sh_eth: fix TSU resource handling
    RDS: null pointer dereference in rds_atomic_free_op
    RDS: Heap OOB write in rds_message_alloc_sgs()
  * net: core: fix module type in sock_diag_bind
  * ip6_tunnel: disable dst caching if tunnel is dual-stack
    8021q: fix a memory leak for VLAN 0 device
    x86/pti/efi: broken conversion from efi to kernel page table
    Revert "userfaultfd: selftest: vm: allow to build in vm/ directory"
  * xhci: Fix ring leak in failure path of xhci_alloc_virt_device()
  * sysrq: Fix warning in sysrq generated crash.
  * hwrng: core - sleep interruptible in read
  * x86/mm/pat, /dev/mem: Remove superfluous error message
    cx82310_eth: use skb_cow_head() to deal with cloned skbs
    smsc75xx: use skb_cow_head() to deal with cloned skbs
    sr9700: use skb_cow_head() to deal with cloned skbs
    lan78xx: use skb_cow_head() to deal with cloned skbs
  * r8152: adjust ALDPS function
  * r8152: use test_and_clear_bit
  * r8152: fix the wake event
    usb: musb: ux500: Fix NULL pointer dereference at system PM
    usbvision fix overflow of interfaces array
  * locking/mutex: Allow next waiter lockless wakeup
  * futex: Replace barrier() in unqueue_me() with READ_ONCE()
  * locks: don't check for race with close when setting OFD lock
    zswap: don't param_set_charp while holding spinlock
    mm/zswap: use workqueue to destroy pool
  * mm/page-writeback: fix dirty_ratelimit calculation
  * mm/compaction: pass only pageblock aligned range to pageblock_pfn_to_page
  * mm/compaction: fix invalid free_pfn and compact_cached_free_pfn
    x86/acpi: Reduce code duplication in mp_override_legacy_irq()
    ALSA: aloop: Fix racy hw constraints adjustment
    ALSA: aloop: Fix inconsistent format due to incomplete rule
    ALSA: aloop: Release cable upon open error path
    ALSA: pcm: Allow aborting mutex lock at OSS read/write loops
    ALSA: pcm: Abort properly at pending signal in OSS read/write loops
    ALSA: pcm: Add missing error checks in OSS emulation plugin builder
  * ALSA: pcm: Remove incorrect snd_BUG_ON() usages
    iommu/arm-smmu-v3: Don't free page table ops twice
    x86/acpi: Handle SCI interrupts above legacy space gracefully
    x86/vsdo: Fix build on PARAVIRT_CLOCK=y, KVM_GUEST=n
    kvm: vmx: Scrub hardware GPRs at VM-exit
    net/mac80211/debugfs.c: prevent build failure with CONFIG_UBSAN=y
    MIPS: Disallow outsized PTRACE_SETREGSET NT_PRFPREG regset accesses
    MIPS: Also verify sizeof `elf_fpreg_t' with PTRACE_SETREGSET
    MIPS: Fix an FCSR access API regression with NT_PRFPREG and MSA
    MIPS: Consistently handle buffer counter with PTRACE_SETREGSET
    MIPS: Guard against any partial write attempt with PTRACE_SETREGSET
    MIPS: Factor out NT_PRFPREG regset access helpers
    MIPS: Validate PR_SET_FP_MODE prctl(2) requests against the ABI of the task
    IB/srpt: Disable RDMA access by the initiator
    can: gs_usb: fix return value of the "set_bittiming" callback
    KVM: Fix stack-out-of-bounds read in write_mmio
  * dm bufio: fix shrinker scans when (nr_to_scan < retain_target)
Linux 4.4.111
    Fix build error in vma.c
    Map the vsyscall page with _PAGE_USER
  * proc: much faster /proc/vmstat
  * module: Issue warnings when tainting kernel
  * module: keep percpu symbols in module's symtab
  * genksyms: Handle string literals with spaces in reference files
    x86/tlb: Drop the _GPL from the cpu_tlbstate export
    parisc: Fix alignment of pa_tlb_lock in assembly on 32-bit SMP kernel
    x86/microcode/AMD: Add support for fam17h microcode loading
    Input: elantech - add new icbody type 15
    ARC: uaccess: dont use "l" gcc inline asm constraint modifier
  * kernel/signal.c: remove the no longer needed SIGNAL_UNKILLABLE check in complete_signal()
  * kernel/signal.c: protect the SIGNAL_UNKILLABLE tasks from !sig_kernel_only() signals
  * kernel/signal.c: protect the traced SIGNAL_UNKILLABLE tasks from SIGKILL
  * kernel: make groups_sort calling a responsibility group_info allocators
    fscache: Fix the default for fscache_maybe_release_page()
    sunxi-rsb: Include OF based modalias in device uevent
    crypto: pcrypt - fix freeing pcrypt instances
    crypto: chacha20poly1305 - validate the digest size
    crypto: n2 - cure use after free
    kernel/acct.c: fix the acct->needcheck check in check_free_space()
    x86/kasan: Write protect kasan zero shadow
Linux 4.4.110
    kaiser: Set _PAGE_NX only if supported
    x86/kasan: Clear kasan_zero_page after TLB flush
    x86/vdso: Get pvclock data from the vvar VMA instead of the fixmap
    x86, vdso, pvclock: Simplify and speed up the vdso pvclock reader
    KPTI: Report when enabled
  * KPTI: Rename to PAGE_TABLE_ISOLATION
    x86/kaiser: Move feature detection up
    kaiser: disabled on Xen PV
  * x86/kaiser: Reenable PARAVIRT
    x86/paravirt: Dont patch flush_tlb_single
    kaiser: kaiser_flush_tlb_on_return_to_user() check PCID
    kaiser: asm/tlbflush.h handle noPGE at lower level
    kaiser: drop is_atomic arg to kaiser_pagetable_walk()
    kaiser: use ALTERNATIVE instead of x86_cr3_pcid_noflush
    x86/kaiser: Check boottime cmdline params
    x86/kaiser: Rename and simplify X86_FEATURE_KAISER handling
    kaiser: add "nokaiser" boot option, using ALTERNATIVE
    kaiser: fix unlikely error in alloc_ldt_struct()
    kaiser: _pgd_alloc() without __GFP_REPEAT to avoid stalls
    kaiser: paranoid_entry pass cr3 need to paranoid_exit
    kaiser: x86_cr3_pcid_noflush and x86_cr3_pcid_user
    kaiser: PCID 0 for kernel and 128 for user
    kaiser: load_new_mm_cr3() let SWITCH_USER_CR3 flush user
    kaiser: enhanced by kernel and user PCIDs
  * kaiser: vmstat show NR_KAISERTABLE as nr_overhead
  * kaiser: delete KAISER_REAL_SWITCH option
    kaiser: name that 0x1000 KAISER_SHADOW_PGD_OFFSET
  * kaiser: cleanups while trying for gold link
    kaiser: kaiser_remove_mapping() move along the pgd
    kaiser: tidied up kaiser_add/remove_mapping slightly
    kaiser: tidied up asm/kaiser.h somewhat
    kaiser: ENOMEM if kaiser_pagetable_walk() NULL
    kaiser: fix perf crashes
    kaiser: fix regs to do_nmi() ifndef CONFIG_KAISER
  * kaiser: KAISER depends on SMP
    kaiser: fix build and FIXME in alloc_ldt_struct()
  * kaiser: stack map PAGE_SIZE at THREAD_SIZE-PAGE_SIZE
    kaiser: do not set _PAGE_NX on pgd_none
  * kaiser: merged update
  * KAISER: Kernel Address Isolation
    x86/boot: Add early cmdline parsing for options with arguments
Linux 4.4.109
  * mm/vmstat: Make NR_TLB_REMOTE_FLUSH_RECEIVED available even on UP
  * n_tty: fix EXTPROC vs ICANON interaction with TIOCINQ (aka FIONREAD)
    x86/smpboot: Remove stale TLB flush invocations
  * nohz: Prevent a timer interrupt storm in tick_nohz_stop_sched_tick()
  * usb: xhci: Add XHCI_TRUST_TX_LENGTH for Renesas uPD720201
  * USB: Fix off by one in type-specific length check of BOS SSP capability
  * usb: add RESET_RESUME for ELSA MicroLink 56K
  * usb: Add device quirk for Logitech HD Pro Webcam C925e
    USB: serial: option: adding support for YUGA CLM920-NC5
    USB: serial: option: add support for Telit ME910 PID 0x1101
    USB: serial: qcserial: add Sierra Wireless EM7565
    USB: serial: ftdi_sio: add id for Airbus DS P8GR
    usbip: vhci: stop printing kernel pointer addresses in messages
    usbip: stub: stop printing kernel pointer addresses in messages
    usbip: fix usbip bind writing random string after command in match_busid
  * sock: free skb in skb_complete_tx_timestamp on error
    net: phy: micrel: ksz9031: reconfigure autoneg after phy autoneg workaround
  * net: Fix double free and memory corruption in get_net_ns_by_id()
  * net: bridge: fix early call to br_stp_change_bridge_id and plug newlink leaks
  * ipv4: Fix use-after-free when flushing FIB tables
    sctp: Replace use of sockets_allocated with specified macro.
    net: mvmdio: disable/unprepare clocks in EPROBE_DEFER case
  * net: ipv4: fix for a race condition in raw_sendmsg
    tg3: Fix rx hang on MTU change with 5717/5719
  * tcp md5sig: Use skb's saddr when replying to an incoming segment
  * net: reevalulate autoflowlabel setting after sysctl setting
    net: qmi_wwan: add Sierra EM7565 1199:9091
  * netlink: Add netns check on taps
  * net: igmp: Use correct source address on IGMPv3 reports
  * ipv6: mcast: better catch silly mtu values
  * ipv4: igmp: guard against silly MTU values
  * kbuild: add '-fno-stack-check' to kernel build options
    x86/mm/64: Fix reboot interaction with CR4.PCIDE
    x86/mm: Enable CR4.PCIDE on supported systems
    x86/mm: Add the 'nopcid' boot option to turn off PCID
    x86/mm: Disable PCID on 32-bit kernels
    x86/mm: Remove the UP asm/tlbflush.h code, always use the (formerly) SMP code
    x86/mm: Reimplement flush_tlb_page() using flush_tlb_mm_range()
    x86/mm: Make flush_tlb_mm_range() more predictable
    x86/mm: Remove flush_tlb() and flush_tlb_current_task()
    x86/vm86/32: Switch to flush_tlb_mm_range() in mark_screen_rdonly()
    ALSA: hda - fix headset mic detection issue on a Dell machine
    ALSA: hda: Drop useless WARN_ON()
    ASoC: twl4030: fix child-node lookup
    ASoC: fsl_ssi: AC'97 ops need regmap, clock and cleaning up on failure
    iw_cxgb4: Only validate the MSN for successful completions
  * ring-buffer: Mask out the info bits when returning buffer page length
  * tracing: Fix crash when it fails to alloc ring buffer
  * tracing: Fix possible double free on failure of allocating trace buffer
  * tracing: Remove extra zeroing out of the ring buffer page
    net: mvneta: clear interface link status on port disable
    powerpc/perf: Dereference BHRB entries safely
    kvm: x86: fix RSM when PCID is non-zero
    KVM: X86: Fix load RFLAGS w/o the fixed bit
    spi: xilinx: Detect stall with Unknown commands
    parisc: Hide Diva-built-in serial aux and graphics card
  * PCI / PM: Force devices to D0 in pci_pm_thaw_noirq()
  * ALSA: usb-audio: Fix the missing ctl name suffix at parsing SU
  * ALSA: rawmidi: Avoid racy info ioctl via ctl device
    mfd: twl6040: Fix child-node lookup
    mfd: twl4030-audio: Fix sibling-node lookup
    mfd: cros ec: spi: Don't send first message too soon
    crypto: mcryptd - protect the per-CPU queue with a lock
    ACPI: APEI / ERST: Fix missing error handling in erst_reader()
Linux 4.4.108
    alpha: fix build failures
    ALSA: hda - Fix yet another i915 pointer leftover in error path
    ALSA: hda - Degrade i915 binding failure message
    ALSA: hda - Clear the leftover component assignment at snd_hdac_i915_exit()
    Revert "Bluetooth: btusb: driver to enable the usb-wakeup feature"
    MIPS: math-emu: Fix final emulation phase for certain instructions
    thermal: hisilicon: Handle return value of clk_prepare_enable
  * cpuidle: fix broadcast control when broadcast can not be entered
  * rtc: set the alarm to the next expiring timer
    tcp: fix under-evaluated ssthresh in TCP Vegas
    fm10k: ensure we process SM mbx when processing VF mbx
    scsi: lpfc: PLOGI failures during NPIV testing
    scsi: lpfc: Fix secure firmware updates
    PCI/AER: Report non-fatal errors only to the affected endpoint
    ixgbe: fix use of uninitialized padding
    igb: check memory allocation failure
    PCI: Create SR-IOV virtfn/physfn links before attaching driver
    scsi: mpt3sas: Fix IO error occurs on pulling out a drive from RAID1 volume created on two SATA drive
    scsi: cxgb4i: fix Tx skb leak
  * PCI: Avoid bus reset if bridge itself is broken
    net: phy: at803x: Change error to EINVAL for invalid MAC
    rtc: pl031: make interrupt optional
    crypto: crypto4xx - increase context and scatter ring buffer elements
    backlight: pwm_bl: Fix overflow condition
    bnxt_en: Fix NULL pointer dereference in reopen failure path
    cpuidle: powernv: Pass correct drv->cpumask for registration
    ARM: dma-mapping: disallow dma_get_sgtable() for non-kernel managed memory
  * netfilter: nfnetlink_queue: fix secctx memory leak
  * xhci: plat: Register shutdown for xhci_plat
    isdn: kcapi: avoid uninitialized data
    KVM: pci-assign: do not map smm memory slot pages in vt-d page tables
    ARM: dts: am335x-evmsk: adjust mmc2 param to allow suspend
    netfilter: nf_nat_snmp: Fix panic when snmp_trap_helper fails to register
    netfilter: nfnl_cthelper: fix a race when walk the nf_ct_helper_hash table
    irda: vlsi_ir: fix check for DMA mapping errors
    RDMA/iser: Fix possible mr leak on device removal event
    i40e: Do not enable NAPI on q_vectors that have no rings
  * net: Do not allow negative values for busy_read and busy_poll sysctl interfaces
    bna: avoid writing uninitialized data into hw registers
    s390/qeth: no ETH header for outbound AF_IUCV
  * r8152: prevent the driver from transmitting packets with carrier off
  * HID: xinmo: fix for out of range for THT 2P arcade controller.
    hwmon: (asus_atk0110) fix uninitialized data access
    ARM: dts: ti: fix PCI bus dtc warnings
    KVM: VMX: Fix enable VPID conditions
    KVM: x86: correct async page present tracepoint
    scsi: lpfc: Fix PT2PT PRLI reject
    pinctrl: st: add irq_request/release_resources callbacks
  * inet: frag: release spinlock before calling icmp_send()
    netfilter: nfnl_cthelper: Fix memory leak
    netfilter: nfnl_cthelper: fix runtime expectation policy updates
    usb: gadget: udc: remove pointer dereference after free
    usb: gadget: f_uvc: Sanity check wMaxPacketSize for SuperSpeed
    net: qmi_wwan: Add USB IDs for MDM6600 modem on Motorola Droid 4
    bna: integer overflow bug in debugfs
    sch_dsmark: fix invalid skb_cow() usage
  * crypto: deadlock between crypto_alg_sem/rtnl_mutex/genl_mutex
  * r8152: fix the list rx_done may be used without initialization
  * cpuidle: Validate cpu_dev in cpuidle_add_sysfs()
    arm: kprobes: Align stack to 8-bytes in test code
    arm: kprobes: Fix the return address of multiple kretprobes
    ALSA: hda - add support for docking station for HP 840 G3
    ALSA: hda - add support for docking station for HP 820 G2
    x86/irq: Do not substract irq_tlb_count from irq_call_count
  * sched/core: Idle_task_exit() shouldn't use switch_mm_irqs_off()
    ARM: Hide finish_arch_post_lock_switch() from modules
    x86/mm, sched/core: Turn off IRQs in switch_mm()
    x86/mm, sched/core: Uninline switch_mm()
    x86/mm: Build arch/x86/mm/tlb.c even on !SMP
  * sched/core: Add switch_mm_irqs_off() and use it in the scheduler
  * mm/mmu_context, sched/core: Fix mmu_context.h assumption
  * mm/rmap: batched invalidations should use existing api
    x86/mm: If INVPCID is available, use it to flush global mappings
    x86/mm: Add a 'noinvpcid' boot option to turn off INVPCID
    x86/mm: Fix INVPCID asm constraint
    x86/mm: Add INVPCID helpers
    cxl: Check if vphb exists before iterating over AFU devices
  * arm64: Initialise high_memory global variable earlier
Linux 4.4.107
    ath9k: fix tx99 potential info leak
    IB/ipoib: Grab rtnl lock on heavy flush when calling ndo_open/stop
    RDMA/cma: Avoid triggering undefined behavior
    macvlan: Only deliver one copy of the frame to the macvlan interface
    udf: Avoid overflow when session starts at large offset
    scsi: bfa: integer overflow in debugfs
  * scsi: sd: change allow_restart to bool in sysfs interface
  * scsi: sd: change manage_start_stop to bool in sysfs interface
    vt6655: Fix a possible sleep-in-atomic bug in vt6655_suspend
  * scsi: scsi_devinfo: Add REPORTLUN2 to EMC SYMMETRIX blacklist entry
    raid5: Set R5_Expanded on parity devices as well as data.
  * pinctrl: adi2: Fix Kconfig build problem
    usb: musb: da8xx: fix babble condition handling
  * tty fix oops when rmmod 8250
    powerpc/perf/hv-24x7: Fix incorrect comparison in memord
    scsi: hpsa: destroy sas transport properties before scsi_host
    scsi: hpsa: cleanup sas_phy structures in sysfs when unloading
  * PCI: Detach driver before procfs & sysfs teardown on device remove
    xfs: fix incorrect extent state in xfs_bmap_add_extent_unwritten_real
    xfs: fix log block underflow during recovery cycle verification
  * l2tp: cleanup l2tp_tunnel_delete calls
    bcache: fix wrong cache_misses statistics
    bcache: explicitly destroy mutex while exiting
    GFS2: Take inode off order_write list when setting jdata flag
  * thermal/drivers/step_wise: Fix temperature regulation misbehavior
  * ppp: Destroy the mutex when cleanup
    clk: tegra: Fix cclk_lp divisor register
    clk: imx6: refine hdmi_isfr's parent to make HDMI work on i.MX6 SoCs w/o VPU
    clk: mediatek: add the option for determining PLL source clock
  * mm: Handle 0 flags in _calc_vm_trans() macro
    crypto: tcrypt - fix buffer lengths in test_aead_speed()
    arm-ccn: perf: Prevent module unload while PMU is in use
    target/file: Do not return error for UNMAP if length is zero
    target:fix condition return in core_pr_dump_initiator_port()
    iscsi-target: fix memory leak in lio_target_tiqn_addtpg()
    target/iscsi: Fix a race condition in iscsit_add_reject_from_cmd()
    powerpc/ipic: Fix status get and status clear
    powerpc/opal: Fix EBUSY bug in acquiring tokens
    netfilter: ipvs: Fix inappropriate output of procfs
    powerpc/powernv/cpufreq: Fix the frequency read by /proc/cpuinfo
    PCI/PME: Handle invalid data when reading Root Status
    dmaengine: ti-dma-crossbar: Correct am335x/am43xx mux value type
    rtc: pcf8563: fix output clock rate
    video: fbdev: au1200fb: Return an error code if a memory allocation fails
    video: fbdev: au1200fb: Release some resources if a memory allocation fails
    video: udlfb: Fix read EDID timeout
    fbdev: controlfb: Add missing modes to fix out of bounds access
    sfc: don't warn on successful change of MAC
    target: fix race during implicit transition work flushes
    target: fix ALUA transition timeout handling
    target: Use system workqueue for ALUA transitions
    btrfs: add missing memset while reading compressed inline extents
    NFSv4.1 respect server's max size in CREATE_SESSION
  * efi/esrt: Cleanup bad memory map log messages
    perf symbols: Fix symbols__fixup_end heuristic for corner cases
    net/mlx4_core: Avoid delays during VF driver device shutdown
    afs: Fix afs_kill_pages()
    afs: Fix page leak in afs_write_begin()
    afs: Populate and use client modification time
    afs: Fix the maths in afs_fs_store_data()
    afs: Prevent callback expiry timer overflow
    afs: Migrate vlocation fields to 64-bit
    afs: Flush outstanding writes when an fd is closed
    afs: Adjust mode bits processing
    afs: Populate group ID from vnode status
    afs: Fix missing put_page()
    drm/radeon: reinstate oland workaround for sclk
    mmc: mediatek: Fixed bug where clock frequency could be set wrong
  * sched/deadline: Use deadline instead of period when calculating overflow
  * sched/deadline: Throttle a constrained deadline task activated after the deadline
  * sched/deadline: Make sure the replenishment timer fires in the next period
    drm/radeon/si: add dpm quirk for Oland
    fjes: Fix wrong netdevice feature flags
    scsi: hpsa: limit outstanding rescans
    scsi: hpsa: update check for logical volume status
    openrisc: fix issue handling 8 byte get_user calls
    intel_th: pci: Add Gemini Lake support
    mlxsw: reg: Fix SPVMLR max record count
    mlxsw: reg: Fix SPVM max record count
  * net: Resend IGMP memberships upon peer notification.
  * dmaengine: Fix array index out of bounds warning in __get_unmap_pool()
    net: wimax/i2400m: fix NULL-deref at probe
  * writeback: fix memory leak in wb_queue_work()
    netfilter: bridge: honor frag_max_size when refragmenting
    drm/omap: fix dmabuf mmap for dma_alloc'ed buffers
    Input: i8042 - add TUXEDO BU1406 (N24_25BU) to the nomux list
    NFSD: fix nfsd_reset_versions for NFSv4.
    NFSD: fix nfsd_minorversion(.., NFSD_AVAIL)
    net: bcmgenet: Power up the internal PHY before probing the MII
    net: bcmgenet: power down internal phy if open or resume fails
    net: bcmgenet: reserved phy revisions must be checked first
    net: bcmgenet: correct MIB access of UniMAC RUNT counters
    net: bcmgenet: correct the RBUF_OVFL_CNT and RBUF_ERR_CNT MIB values
  * net: initialize msg.msg_flags in recvfrom
    userfaultfd: selftest: vm: allow to build in vm/ directory
    userfaultfd: shmem: __do_fault requires VM_FAULT_NOPAGE
    md-cluster: free md_cluster_info if node leave cluster
    usb: phy: isp1301: Add OF device ID table
    mac80211: Fix addition of mesh configuration element
  * KEYS: add missing permission check for request_key() destination
  * ext4: fix crash when a directory's i_size is too small
  * ext4: fix fdatasync(2) after fallocate(2) operation
    dmaengine: dmatest: move callback wait queue to thread context
  * sched/rt: Do not pull from current CPU if only one CPU to pull
  * xhci: Don't add a virt_dev to the devs array before it's fully allocated
    Bluetooth: btusb: driver to enable the usb-wakeup feature
    ceph: drop negative child dentries before try pruning inode's alias
    usbip: fix stub_send_ret_submit() vulnerability to null transfer_buffer
  * USB: core: prevent malicious bNumInterfaces overflow
  * USB: uas and storage: Add US_FL_BROKEN_FUA for another JMicron JMS567 ID
  * tracing: Allocate mask_str buffer dynamically
    autofs: fix careless error in recent commit
    crypto: salsa20 - fix blkcipher_walk API usage
  * crypto: hmac - require that the underlying hash algorithm is unkeyed
Linux 4.4.106
  * usb: gadget: ffs: Forbid usb_ep_alloc_request from sleeping
    arm: KVM: Fix VTTBR_BADDR_MASK BUG_ON off-by-one
    Revert "x86/mm/pat: Ensure cpa->pfn only contains page frame numbers"
    Revert "x86/efi: Hoist page table switching code into efi_call_virt()"
    Revert "x86/efi: Build our own page table structures"
  * net/packet: fix a race in packet_bind() and packet_notifier()
  * packet: fix crash in fanout_demux_rollover()
  * sit: update frag_off info
    rds: Fix NULL pointer dereference in __rds_rdma_map
    tipc: fix memory leak in tipc_accept_from_sock()
  * more bio_map_user_iov() leak fixes
    s390: always save and restore all registers on context switch
    ipmi: Stop timers before cleaning up the module
  * audit: ensure that 'audit=1' actually enables audit for PID 1
    ipvlan: fix ipv6 outbound device
    afs: Connect up the CB.ProbeUuid
    IB/mlx5: Assign send CQ and recv CQ of UMR QP
    IB/mlx4: Increase maximal message size under UD QP
  * xfrm: Copy policy family in clone_policy
  * jump_label: Invoke jump_label_test() via early_initcall()
    atm: horizon: Fix irq release error
    sctp: use the right sk after waking up from wait_buf sleep
    sctp: do not free asoc when it is already dead in sctp_sendmsg
    sparc64/mm: set fields in deferred pages
  * block: wake up all tasks blocked in get_request()
    sunrpc: Fix rpc_task_begin trace point
    NFS: Fix a typo in nfs_rename()
  * dynamic-debug-howto: fix optional/omitted ending line number to be LARGE instead of 0
  * lib/genalloc.c: make the avail variable an atomic_long_t
  * route: update fnhe_expires for redirect when the fnhe exists
  * route: also update fnhe_genid when updating a route cache
    mac80211_hwsim: Fix memory leak in hwsim_new_radio_nl()
  * kbuild: pkg: use --transform option to prefix paths in tar
    EDAC, i5000, i5400: Fix definition of NRECMEMB register
    EDAC, i5000, i5400: Fix use of MTR_DRAM_WIDTH macro
    powerpc/powernv/ioda2: Gracefully fail if too many TCE levels requested
    drm/amd/amdgpu: fix console deadlock if late init failed
    axonram: Fix gendisk handling
  * netfilter: don't track fragmented packets
  * zram: set physical queue limits to avoid array out of bounds accesses
    i2c: riic: fix restart condition
    crypto: s5p-sss - Fix completing crypto request in IRQ handler
  * ipv6: reorder icmpv6_init() and ip6_mr_init()
    bnx2x: do not rollback VF MAC/VLAN filters we did not configure
    bnx2x: fix possible overrun of VFPF multicast addresses array
    bnx2x: prevent crash when accessing PTP with interface down
    spi_ks8995: fix "BUG: key accdaa28 not in .data!"
    arm64: KVM: Survive unknown traps from guests
    arm: KVM: Survive unknown traps from guests
    KVM: nVMX: reset nested_run_pending if the vCPU is going to be reset
    irqchip/crossbar: Fix incorrect type of register size
    scsi: lpfc: Fix crash during Hardware error recovery on SLI3 adapters
  * workqueue: trigger WARN if queue_delayed_work() is called with NULL @wq
    libata: drop WARN from protocol error in ata_sff_qc_issue()
    kvm: nVMX: VMCLEAR should not cause the vCPU to shut down
    USB: gadgetfs: Fix a potential memory leak in 'dev_config()'
  * usb: gadget: configs: plug memory leak
  * HID: chicony: Add support for another ASUS Zen AiO keyboard
    gpio: altera: Use handle_level_irq when configured as a level_high
    ARM: OMAP2+: Release device node after it is no longer needed.
    ARM: OMAP2+: Fix device node reference counts
  * module: set __jump_table alignment to 8
    selftest/powerpc: Fix false failures for skipped tests
    x86/hpet: Prevent might sleep splat on resume
    ARM: OMAP2+: gpmc-onenand: propagate error on initialization failure
  * vti6: Don't report path MTU below IPV6_MIN_MTU.
    Revert "s390/kbuild: enable modversions for symbols exported from asm"
  * Revert "spi: SPI_FSL_DSPI should depend on HAS_DMA"
  * Revert "drm/armada: Fix compile fail"
  * mm: drop unused pmdp_huge_get_and_clear_notify()
    thp: fix MADV_DONTNEED vs. numa balancing race
    thp: reduce indentation level in change_huge_pmd()
    scsi: storvsc: Workaround for virtual DVD SCSI version
    ARM: avoid faulting on qemu
    ARM: BUG if jumping to usermode address in kernel mode
  * arm64: fpsimd: Prevent registers leaking from dead tasks
    KVM: VMX: remove I/O port 0x80 bypass on Intel hosts
  * arm64: KVM: fix VTTBR_BADDR_MASK BUG_ON off-by-one
    media: dvb: i2c transfers over usb cannot be done from stack
    drm/exynos: gem: Drop NONCONTIG flag for buffers allocated without IOMMU
    drm: extra printk() wrapper macros
    kdb: Fix handling of kallsyms_symbol_next() return value
    s390: fix compat system call table
    iommu/vt-d: Fix scatterlist offset handling
  * ALSA: usb-audio: Add check return value for usb_string()
  * ALSA: usb-audio: Fix out-of-bound error
    ALSA: seq: Remove spurious WARN_ON() at timer check
  * ALSA: pcm: prevent UAF in snd_pcm_info
    x86/PCI: Make broadcom_postcore_init() check acpi_disabled
  * X.509: reject invalid BIT STRING for subjectPublicKey
  * ASN.1: check for error from ASN1_OP_END__ACT actions
  * ASN.1: fix out-of-bounds read when parsing indefinite length item
  * efi: Move some sysfs files to be read-only by root
    scsi: libsas: align sata_device's rps_resp on a cacheline
    isa: Prevent NULL dereference in isa_bus driver callbacks
    hv: kvp: Avoid reading past allocated blocks from KVP file
    virtio: release virtio index when fail to device_register
    can: usb_8dev: cancel urb on -EPIPE and -EPROTO
    can: esd_usb2: cancel urb on -EPIPE and -EPROTO
    can: ems_usb: cancel urb on -EPIPE and -EPROTO
    can: kvaser_usb: cancel urb on -EPIPE and -EPROTO
    can: kvaser_usb: ratelimit errors if incomplete messages are received
    can: kvaser_usb: Fix comparison bug in kvaser_usb_read_bulk_callback()
    can: kvaser_usb: free buf in error paths
    can: ti_hecc: Fix napi poll return value for repoll
Linux 4.4.105
    xen-netfront: avoid crashing on resume after a failure in talk_to_netback()
    usb: host: fix incorrect updating of offset
  * USB: usbfs: Filter flags passed in from user space
  * USB: devio: Prevent integer overflow in proc_do_submiturb()
  * USB: Increase usbfs transfer limit
  * USB: core: Add type-specific length check of BOS descriptors
  * usb: ch9: Add size macro for SSP dev cap descriptor
  * usb: Add USB 3.1 Precision time measurement capability descriptor support
  * usb: xhci: fix panic in xhci_free_virt_devices_depth_first
  * usb: hub: Cycle HUB power when initialization fails
    Revert "ocfs2: should wait dio before inode lock in ocfs2_setattr()"
    net: fec: fix multicast filtering hardware setup
    xen-netfront: Improve error handling during initialization
  * mm: avoid returning VM_FAULT_RETRY from ->page_mkwrite handlers
  * tcp: correct memory barrier usage in tcp_check_space()
    dmaengine: pl330: fix double lock
    tipc: fix cleanup at module unload
    net: sctp: fix array overrun read on sctp_timer_tbl
    drm/exynos/decon5433: set STANDALONE_UPDATE_F on output enablement
    NFSv4: Fix client recovery when server reboots multiple times
    KVM: arm/arm64: Fix occasional warning from the timer work function
    nfs: Don't take a reference on fl->fl_file for LOCK operation
    ravb: Remove Rx overflow log messages
    net/appletalk: Fix kernel memory disclosure
  * vti6: fix device register to report IFLA_INFO_KIND
    ARM: OMAP1: DMA: Correct the number of logical channels
    net: systemport: Pad packet before inserting TSB
    net: systemport: Utilize skb_put_padto()
    kprobes/x86: Disable preemption in ftrace-based jprobes
    perf test attr: Fix ignored test case result
  * sysrq : fix Show Regs call trace on ARM
    EDAC, sb_edac: Fix missing break in switch
    x86/entry: Use SYSCALL_DEFINE() macros for sys_modify_ldt()
    serial: 8250: Preserve DLD[7:4] for PORT_XR17V35X
    usb: phy: tahvo: fix error handling in tahvo_usb_probe()
    spi: sh-msiof: Fix DMA transfer size check
    serial: 8250_fintek: Fix rs485 disablement on invalid ioctl()
    selftests/x86/ldt_get: Add a few additional tests for limits
    s390/pci: do not require AIS facility
    ima: fix hash algorithm initialization
    USB: serial: option: add Quectel BG96 id
    s390/runtime instrumentation: simplify task exit handling
    serial: 8250_pci: Add Amazon PCI serial device ID
  * usb: quirks: Add no-lpm quirk for KY-688 USB 3.1 Type-C Hub
    uas: Always apply US_FL_NO_ATA_1X quirk to Seagate devices
    bcache: recover data from backing when data is clean
    bcache: only permit to recovery read error when cache device is clean
Linux 4.4.104
    nfsd: Fix another OPEN stateid race
    nfsd: Fix stateid races between OPEN and CLOSE
    nfsd: Make init_open_stateid() a bit more whole
    drm/i915: Prevent zero length "index" write
    drm/i915: Don't try indexed reads to alternate slave addresses
    NFS: revalidate "." etc correctly on "open".
    mtd: nand: Fix writing mtdoops to nand flash.
    drm/panel: simple: Add missing panel_simple_unprepare() calls
    drm/radeon: fix atombios on big endian
    Revert "drm/radeon: dont switch vt on suspend"
    bcache: Fix building error on MIPS
    eeprom: at24: check at24_read/write arguments
    mmc: core: Do not leave the block driver in a suspended state
    KVM: x86: inject exceptions produced by x86_decode_insn
    KVM: x86: Exit to user-mode on #UD intercept when emulator requires
    KVM: x86: pvclock: Handle first-time write to pvclock-page contains random junk
    btrfs: clear space cache inode generation always
  * mm/madvise.c: fix madvise() infinite loop under special circumstances
    mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d()
    x86/efi-bgrt: Replace early_memremap() with memremap()
  * x86/efi-bgrt: Fix kernel panic when mapping BGRT data
    ARM: dts: omap3: logicpd-torpedo-37xx-devkit: Fix MMC1 cd-gpio
    x86/efi: Build our own page table structures
    x86/efi: Hoist page table switching code into efi_call_virt()
    x86/mm/pat: Ensure cpa->pfn only contains page frame numbers
  * ipsec: Fix aborted xfrm policy dump crash
  * netlink: add a start callback for starting a netlink dump
Linux 4.4.103
    Revert "sctp: do not peel off an assoc from one netns to another one"
    xen: xenbus driver must not accept invalid transaction ids
    s390/kbuild: enable modversions for symbols exported from asm
    ASoC: wm_adsp: Don't overrun firmware file buffer when reading region data
    btrfs: return the actual error value from from btrfs_uuid_tree_iterate
    ASoC: rsnd: don't double free kctrl
    netfilter: nf_tables: fix oob access
    netfilter: nft_queue: use raw_smp_processor_id()
  * spi: SPI_FSL_DSPI should depend on HAS_DMA
    staging: iio: cdc: fix improper return value
    iio: light: fix improper return value
    mac80211: Suppress NEW_PEER_CANDIDATE event if no room
    mac80211: Remove invalid flag operations in mesh TSF synchronization
    drm: Apply range restriction after color adjustment when allocation
    ALSA: hda - Apply ALC269_FIXUP_NO_SHUTUP on HDA_FIXUP_ACT_PROBE
    ath10k: set CTS protection VDEV param only if VDEV is up
    ath10k: fix potential memory leak in ath10k_wmi_tlv_op_pull_fw_stats()
    ath10k: ignore configuring the incorrect board_id
    ath10k: fix incorrect txpower set by P2P_DEVICE interface
  * drm/armada: Fix compile fail
    net: 3com: typhoon: typhoon_init_one: fix incorrect return values
    net: 3com: typhoon: typhoon_init_one: make return values more specific
  * net: Allow IP_MULTICAST_IF to set index to L3 slave
    dmaengine: zx: set DMA_CYCLIC cap_mask bit
  * PCI: Apply _HPX settings only to relevant devices
    RDS: RDMA: return appropriate error on rdma map failures
    e1000e: Separate signaling for link check/link up
    e1000e: Fix return value test
    e1000e: Fix error path in link detection
  * PM / OPP: Add missing of_node_put(np)
    net/9p: Switch to wait_event_killable()
  * fscrypt: lock mutex before checking for bounce page pool
  * sched/rt: Simplify the IPI based RT balancing logic
  * media: v4l2-ctrl: Fix flags field on Control events
    cx231xx-cards: fix NULL-deref on missing association descriptor
    media: rc: check for integer overflow
    media: Don't do DMA on stack for firmware upload in the AS102 driver
    powerpc/signal: Properly handle return value from uprobe_deny_signal()
    parisc: Fix validity check of pointer size argument in new CAS implementation
    ixgbe: Fix skb list corruption on Power systems
    fm10k: Use smp_rmb rather than read_barrier_depends
    i40evf: Use smp_rmb rather than read_barrier_depends
    ixgbevf: Use smp_rmb rather than read_barrier_depends
    igbvf: Use smp_rmb rather than read_barrier_depends
    igb: Use smp_rmb rather than read_barrier_depends
    i40e: Use smp_rmb rather than read_barrier_depends
    NFC: fix device-allocation error return
    IB/srp: Avoid that a cable pull can trigger a kernel crash
    IB/srpt: Do not accept invalid initiator port names
    libnvdimm, namespace: make 'resource' attribute only readable by root
    libnvdimm, namespace: fix label initialization to use valid seq numbers
    clk: ti: dra7-atl-clock: fix child-node lookups
    clk: ti: dra7-atl-clock: Fix of_node reference counting
    SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status
    KVM: SVM: obey guest PAT
    KVM: nVMX: set IDTR and GDTR limits when loading L1 host state
    target: Fix QUEUE_FULL + SCSI task attribute handling
    iscsi-target: Fix non-immediate TMR reference leak
    fs/9p: Compare qid.path in v9fs_test_inode
    fix a page leak in vhost_scsi_iov_to_sgl() error recovery
    ALSA: hda/realtek - Fix ALC700 family no sound issue
  * ALSA: timer: Remove kernel warning at compat ioctl error paths
  * ALSA: usb-audio: Add sanity checks in v2 clock parsers
  * ALSA: usb-audio: Fix potential out-of-bound access at parsing SU
  * ALSA: usb-audio: Add sanity checks to FE parser
  * ALSA: pcm: update tstamp only if audio_tstamp changed
  * ext4: fix interaction between i_size, fallocate, and delalloc after a crash
    ata: fixes kernel crash while tracing ata_eh_link_autopsy event
    rtlwifi: fix uninitialized rtlhal->last_suspend_sec time
    rtlwifi: rtl8192ee: Fix memory leak when loading firmware
    nfsd: deal with revoked delegations appropriately
    nfs: Fix ugly referral attributes
    NFS: Fix typo in nomigration mount option
    isofs: fix timestamps beyond 2027
    bcache: check ca->alloc_thread initialized before wake up it
    eCryptfs: use after free in ecryptfs_release_messaging()
    nilfs2: fix race condition that causes file system corruption
    autofs: don't fail mount for transient error
    MIPS: BCM47XX: Fix LED inversion for WRT54GSv1
    MIPS: Fix an n32 core file generation regset support regression
  * dm: fix race between dm_get_from_kobject() and __dm_destroy()
  * dm bufio: fix integer overflow when limiting maximum cache size
    ALSA: hda: Add Raven PCI ID
    MIPS: ralink: Fix typo in mt7628 pinmux function
    MIPS: ralink: Fix MT7628 pinmux
    ARM: 8721/1: mm: dump: check hardware RO bit for LPAE
    ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE
    x86/decoder: Add new TEST instruction pattern
  * lib/mpi: call cond_resched() from mpi_powm() loop
  * sched: Make resched_cpu() unconditional
    vsock: use new wait API for vsock_stream_sendmsg()
    AF_VSOCK: Shrink the area influenced by prepare_to_wait
  * ipv6: only call ip6_route_dev_notify() once for NETDEV_UNREGISTER
    s390/disassembler: increase show_code buffer size
    s390/disassembler: add missing end marker for e7 table
    s390/runtime instrumention: fix possible memory corruption
    s390: fix transactional execution control register handling
Linux 4.4.102
    mm, hwpoison: fixup "mm: check the return value of lookup_page_ext for all call sites"
Linux 4.4.101
  * mm/pagewalk.c: report holes in hugetlb ranges
    mm/page_ext.c: check if page_ext is not prepared
  * mm: check the return value of lookup_page_ext for all call sites
    coda: fix 'kernel memory exposure attempt' in fsync
  * mm/page_alloc.c: broken deferred calculation
    ipmi: fix unsigned long underflow
    ocfs2: should wait dio before inode lock in ocfs2_setattr()
    nvme: Fix memory order on async queue deletion
  * arm64: fix dump_instr when PAN and UAO are in use
    serial: omap: Fix EFR write on RTS deassertion
    ima: do not update security.ima if appraisal status is not INTEGRITY_PASS
    net/sctp: Always set scope_id in sctp_inet6_skb_msgname
    fealnx: Fix building error on MIPS
    sctp: do not peel off an assoc from one netns to another one
  * af_netlink: ensure that NLMSG_DONE never fails in dumps
    vlan: fix a use-after-free in vlan_device_event()
  * bonding: discard lowest hash bit for 802.3ad layer3+4
  * netfilter/ipvs: clear ipvs_property flag when SKB net namespace changed
  * tcp: do not mangle skb->cb[] in tcp_make_synack()
Linux 4.4.100
    USB: serial: garmin_gps: fix memory leak on probe errors
    USB: serial: garmin_gps: fix I/O after failed probe and remove
    USB: serial: qcserial: add pid/vid for Sierra Wireless EM7355 fw update
  * USB: Add delay-init quirk for Corsair K70 LUX keyboards
  * USB: usbfs: compute urb->actual_length for isochronous
    uapi: fix linux/rds.h userspace compilation errors
    uapi: fix linux/rds.h userspace compilation error
    Revert "uapi: fix linux/rds.h userspace compilation errors"
  * Revert "crypto: xts - Add ECB dependency"
    MIPS: Netlogic: Exclude netlogic,xlp-pic code from XLR builds
    MIPS: init: Ensure reserved memory regions are not added to bootmem
    MIPS: init: Ensure bootmem does not corrupt reserved memory
  * mm: add PHYS_PFN, use it in __phys_to_pfn()
    MIPS: End asm function prologue macros with .insn
    staging: rtl8712: fixed little endian problem
    ixgbe: do not disable FEC from the driver
    ixgbe: add mask for 64 RSS queues
    ixgbe: Reduce I2C retry count on X550 devices
    ixgbe: handle close/suspend race with netif_device_detach/present
    ixgbe: fix AER error handling
    arm64: dts: NS2: reserve memory for Nitro firmware
    ALSA: hda/realtek - Add new codec ID ALC299
    gpu: drm: mgag200: mgag200_main:- Handle error from pci_iomap
    backlight: adp5520: Fix error handling in adp5520_bl_probe()
    backlight: lcd: Fix race condition during register
    ALSA: vx: Fix possible transfer overflow
    ALSA: vx: Don't try to update capture stream before running
    scsi: lpfc: Clear the VendorVersion in the PLOGI/PLOGI ACC payload
    scsi: lpfc: Correct issue leading to oops during link reset
    scsi: lpfc: Correct host name in symbolic_name field
    scsi: lpfc: FCoE VPort enable-disable does not bring up the VPort
    scsi: lpfc: Add missing memory barrier
    staging: rtl8188eu: fix incorrect ERROR tags from logs
  * scsi: ufs: add capability to keep auto bkops always enabled
  * scsi: ufs-qcom: Fix module autoload
    igb: Fix hw_dbg logging in igb_update_flash_i210
    igb: close/suspend race in netif_device_detach
    igb: reset the PHY before reading the PHY ID
    drm/sti: sti_vtg: Handle return NULL error from devm_ioremap_nocache
  * ata: SATA_MV should depend on HAS_DMA
  * ata: SATA_HIGHBANK should depend on HAS_DMA
  * ata: ATA_BMDMA should depend on HAS_DMA
    ARM: dts: Fix omap3 off mode pull defines
    ARM: OMAP2+: Fix init for multiple quirks for the same SoC
    ARM: dts: Fix am335x and dm814x scm syscon to probe children
    ARM: dts: Fix compatible for ti81xx uarts for 8250
    fm10k: request reset when mbx->state changes
    extcon: palmas: Check the parent instance to prevent the NULL
    dmaengine: dmatest: warn user when dma test times out
    Bluetooth: btusb: fix QCA Rome suspend/resume
    arm: crypto: reduce priority of bit-sliced AES cipher
    net: qmi_wwan: fix divide by 0 on bad descriptors
  * net: cdc_ether: fix divide by 0 on bad descriptors
    sctp: do not peel off an assoc from one netns to another one
    xen-blkback: don't leak stack data via response ring
    bpf: don't let ldimm64 leak map addresses on unprivileged
    KVM: x86: fix singlestepping over syscall
  * ext4: fix data exposure after a crash
    media: dib0700: fix invalid dvb_detach argument
    media: imon: Fix null-ptr-deref in imon_probe
Linux 4.4.99
    misc: panel: properly restore atomic counter on error path
    target: Fix node_acl demo-mode + uncached dynamic shutdown regression
    target/iscsi: Fix iSCSI task reassignment handling
    brcmfmac: remove setting IBSS mode when stopping AP
    tipc: fix link attribute propagation bug
  * security/keys: add CONFIG_KEYS_COMPAT to Kconfig
  * tcp/dccp: fix other lockdep splats accessing ireq_opt
  * tcp/dccp: fix lockdep splat in inet_csk_route_req()
  * tcp/dccp: fix ireq->opt races
    ipip: only increase err_count for some certain type icmp in ipip_err
  * ppp: fix race in ppp device destruction
    sctp: reset owner sk for data chunks on out queues when migrating a sock
  * tun: allow positive return values on dev_get_valid_name() call
    ip6_gre: only increase err_count for some certain type icmpv6 in ip6gre_err
    net/unix: don't show information about sockets from other namespaces
  * ipv6: flowlabel: do not leave opt->tot_len with garbage
  * packet: avoid panic in packet_getsockopt()
    sctp: add the missing sock_owned_by_user check in sctp_icmp_redirect
  * tun: call dev_get_valid_name() before register_netdevice()
  * l2tp: check ps->sock before running pppol2tp_session_ioctl()
  * tcp: fix tcp_mtu_probe() vs highest_sack
  * tun/tap: sanitize TUNSETSNDBUF input
    ALSA: seq: Cancel pending autoload work at unbinding device
    Input: ims-psu - check if CDC union descriptor is sane
    usb: usbtest: fix NULL pointer dereference
    mac80211: don't compare TKIP TX MIC key in reinstall prevention
    mac80211: use constant time comparison with keys
    mac80211: accept key reinstall without changing anything
Linux 4.4.98
  * PKCS#7: fix unitialized boolean 'want'
    x86/oprofile/ppro: Do not use __this_cpu*() in preemptible context
    can: c_can: don't indicate triple sampling support for D_CAN
    can: sun4i: handle overrun in RX FIFO
    rbd: use GFP_NOIO for parent stat and data requests
    drm/vmwgfx: Fix Ubuntu 17.10 Wayland black screen issue
    Input: elan_i2c - add ELAN060C to the ACPI table
    MIPS: AR7: Ensure that serial ports are properly set up
    MIPS: AR7: Defer registration of GPIO
    tools: firmware: check for distro fallback udev cancel rule
    selftests: firmware: send expected errors to /dev/null
    selftests: firmware: add empty string and async tests
    test: firmware_class: report errors properly on failure
    MIPS: SMP: Fix deadlock & online race
    MIPS: Fix race on setting and getting cpu_online_mask
    MIPS: SMP: Use a completion event to signal CPU up
    MIPS: Fix CM region target definitions
    MIPS: microMIPS: Fix incorrect mask in insn_table_MM
    ALSA: seq: Avoid invalid lockdep class warning
    ALSA: seq: Fix OSS sysex delivery in OSS emulation
    ARM: 8720/1: ensure dump_instr() checks addr_limit
  * KEYS: fix NULL pointer dereference during ASN.1 parsing [ver #2]
    crypto: x86/sha1-mb - fix panic due to unaligned access
  * workqueue: Fix NULL pointer dereference
  * x86/uaccess, sched/preempt: Verify access_ok() context
    platform/x86: hp-wmi: Do not shadow error values
    platform/x86: hp-wmi: Fix error value for hp_wmi_tablet_state
    KEYS: trusted: fix writing past end of buffer in trusted_read()
    KEYS: trusted: sanitize all key material
  * cdc_ncm: Set NTB format again after altsetting switch for Huawei devices
    platform/x86: hp-wmi: Fix detection for dock and tablet mode
  * net: dsa: select NET_SWITCHDEV
    s390/qeth: issue STARTLAN as first IPA command
    IB/ipoib: Change list_del to list_del_init in the tx object
    Input: mpr121 - set missing event capability
    Input: mpr121 - handle multiple bits change of status register
  * IPsec: do not ignore crypto err in ah4 input
    netfilter: nft_meta: deal with PACKET_LOOPBACK in netdev family
  * usb: hcd: initialize hcd->flags to 0 when rm hcd
    serial: sh-sci: Fix register offsets for the IRDA serial port
  * phy: increase size of MII_BUS_ID_SIZE and bus_id
    iio: trigger: free trigger resource correctly
    crypto: vmx - disable preemption to enable vsx in aes_ctr.c
    ARM: omap2plus_defconfig: Fix probe errors on UARTs 5 and 6
    powerpc/corenet: explicitly disable the SDHC controller on kmcoge4
    iommu/arm-smmu-v3: Clear prior settings when updating STEs
    KVM: PPC: Book 3S: XICS: correct the real mode ICP rejecting counter
    drm: drm_minor_register(): Clean up debugfs on failure
    xen/netback: set default upper limit of tx/rx queues to 8
    PCI: mvebu: Handle changes to the bridge windows while enabled
    video: fbdev: pmag-ba-fb: Remove bad `__init' annotation
    adv7604: Initialize drive strength to default when using DT
Linux 4.4.97
    staging: r8712u: Fix Sparse warning in rtl871x_xmit.c
    xen: don't print error message in case of missing Xenstore entry
    bt8xx: fix memory leak
    s390/dasd: check for device error pointer within state change interrupts
    mei: return error on notification request to a disconnected client
    exynos4-is: fimc-is: Unmap region obtained by of_iomap()
    staging: lustre: ptlrpc: skip lock if export failed
    staging: lustre: hsm: stack overrun in hai_dump_data_field
    staging: lustre: llite: don't invoke direct_IO for the EOF case
    platform/x86: intel_mid_thermal: Fix module autoload
    scsi: aacraid: Process Error for response I/O
    xen/manage: correct return value check on xenbus_scanf()
    cx231xx: Fix I2C on Internal Master 3 Bus
    perf tools: Only increase index if perf_evsel__new_idx() succeeds
    drm/amdgpu: when dpm disabled, also need to stop/start vce.
    i2c: riic: correctly finish transfers
  * ext4: do not use stripe_width if it is not set
  * ext4: fix stripe-unaligned allocations
    staging: rtl8712u: Fix endian settings for structs describing network packets
    mfd: axp20x: Fix axp288 PEK_DBR and PEK_DBF irqs being swapped
    mfd: ab8500-sysctrl: Handle probe deferral
    ARM: pxa: Don't rely on public mmc header to include leds.h
    mmc: s3cmci: include linux/interrupt.h for tasklet_struct
  * PM / wakeirq: report a wakeup_event on dedicated wekup irq
    Fix tracing sample code warning.
    tracing/samples: Fix creation and deletion of simple_thread_fn creation
    drm/msm: fix an integer overflow test
    drm/msm: Fix potential buffer overflow issue
    perf tools: Fix build failure on perl script context
    ocfs2: fstrim: Fix start offset of first cluster group during fstrim
    ARM: 8715/1: add a private asm/unaligned.h
    ARM: dts: mvebu: pl310-cache disable double-linefill
  * arm64: ensure __dump_instr() checks addr_limit
    ASoC: adau17x1: Workaround for noise bug in ADC
  * KEYS: fix out-of-bounds read during ASN.1 parsing
  * KEYS: return full count in keyring_read() if buffer is too small
    cifs: check MaxPathNameComponentLength != 0 before using it
    ALSA: seq: Fix nested rwsem annotation for lockdep splat
  * ALSA: timer: Add missing mutex lock for compat ioctls
Linux 4.4.96
    Revert "drm: bridge: add DT bindings for TI ths8135"
  * ecryptfs: fix dereference of NULL user_key_payload
    x86/microcode/intel: Disable late loading on model 79
    regulator: fan53555: fix I2C device ids
    can: kvaser_usb: Ignore CMD_FLUSH_QUEUE_REPLY messages
    can: kvaser_usb: Correct return value in printout
    can: sun4i: fix loopback mode
  * scsi: sg: Re-fix off by one in sg_fill_request_table()
    scsi: zfcp: fix erp_action use-before-initialize in REC action trace
  * assoc_array: Fix a buggy node-splitting case
    Input: gtco - fix potential out-of-bound access
    Input: elan_i2c - add ELAN0611 to the ACPI table
    xen/gntdev: avoid out of bounds access in case of partial gntdev_mmap()
  * fuse: fix READDIRPLUS skipping an entry
  * spi: uapi: spidev: add missing ioctl header
  * usb: xhci: Handle error condition in xhci_stop_device()
    ceph: unlock dangling spinlock in try_flush_caps()
    ALSA: hda - fix headset mic problem for Dell machines with alc236
    ALSA: hda/realtek - Add support for ALC236/ALC3204
  * workqueue: replace pool->manager_arb mutex with a flag
Linux 4.4.95
    FS-Cache: fix dereference of NULL user_key_payload
    fscrypto: require write access to mount to set encryption policy
  * KEYS: Fix race between updating and finding a negative key
  * fscrypt: fix dereference of NULL user_key_payload
    f2fs crypto: add missing locking for keyring_key access
    f2fs crypto: replace some BUG_ON()'s with error checks
    sched/autogroup: Fix autogroup_move_group() to never skip sched_move_task()
    parisc: Fix double-word compare and exchange in LWS code on 32-bit kernels
    parisc: Avoid trashing sr2 and sr3 in LWS code
  * pkcs7: Prevent NULL pointer dereference, since sinfo is not always set.
  * KEYS: don't let add_key() update an uninstantiated key
    lib/digsig: fix dereference of NULL user_key_payload
    KEYS: encrypted: fix dereference of NULL user_key_payload
    rtlwifi: rtl8821ae: Fix connection lost problem
    clockevents/drivers/cs5535: Improve resilience to spurious interrupts
    bus: mbus: fix window size calculation for 4GB windows
    brcmsmac: make some local variables 'static const' to reduce stack size
    i2c: ismt: Separate I2C block read from SMBus block read
    ALSA: hda: Remove superfluous '-' added by printk conversion
    ALSA: seq: Enable 'use' locking in all configurations
    drm/nouveau/mmu: flush tlbs before deleting page tables
    drm/nouveau/bsp/g92: disable by default
    can: esd_usb2: Fix can_dlc value for received RTR, frames
    usb: musb: Check for host-mode using is_host_active() on reset interrupt
    usb: musb: sunxi: Explicitly release USB PHY on exit
    can: gs_usb: fix busy loop if no more TX context is available
  * ALSA: usb-audio: Add native DSD support for Pro-Ject Pre Box S2 Digital
  * usb: hub: Allow reset retry for USB2 devices on connect bounce
  * usb: quirks: add quirk for WORLDE MINI MIDI keyboard
    usb: cdc_acm: Add quirk for Elatec TWN3
    USB: serial: metro-usb: add MS7820 device id
  * USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor()
  * USB: devio: Revert "USB: devio: Don't corrupt user memory"
Linux 4.4.94
    Revert "tty: goldfish: Fix a parameter of a call to free_irq"
  * cpufreq: CPPC: add ACPI_PROCESSOR dependency
    nfsd/callback: Cleanup callback cred on shutdown
    target/iscsi: Fix unsolicited data seq_end_offset calculation
  * uapi: fix linux/mroute6.h userspace compilation errors
    uapi: fix linux/rds.h userspace compilation errors
    ceph: clean up unsafe d_parent accesses in build_dentry_path
    i2c: at91: ensure state is restored after suspending
    net: mvpp2: release reference to txq_cpu[] entry after unmapping
    scsi: scsi_dh_emc: return success in clariion_std_inquiry()
  * slub: do not merge cache if slub_debug contains a never-merge flag
    ocfs2/dlmglue: prepare tracking logic to avoid recursive cluster lock
  * crypto: xts - Add ECB dependency
    net/mlx4_core: Fix VF overwrite of module param which disables DMFS on new probed PFs
    sparc64: Migrate hvcons irq to panicked cpu
  * md/linear: shutup lockdep warnning
    f2fs: do not wait for writeback in write_begin
    Btrfs: send, fix failure to rename top level inode due to name collision
    iio: adc: xilinx: Fix error handling
  * netfilter: nf_ct_expect: Change __nf_ct_expect_check() return value.
    net/mlx4_en: fix overflow in mlx4_en_init_timestamp()
    mac80211: fix power saving clients handling in iwlwifi
    mac80211_hwsim: check HWSIM_ATTR_RADIO_NAME length
    irqchip/crossbar: Fix incorrect type of local variables
    watchdog: kempld: fix gcc-4.3 build
    locking/lockdep: Add nest_lock integrity test
    Revert "bsg-lib: don't free job in bsg_prepare_job"
    tipc: use only positive error codes in messages
  * net: Set sk_prot_creator when cloning sockets to the right proto
  * packet: only test po->has_vnet_hdr once in packet_snd
  * packet: in packet_do_bind, test fanout with bind_lock held
  * tun: bail out from tun_get_user() if the skb is empty
  * l2tp: fix race condition in l2tp_tunnel_delete
  * l2tp: Avoid schedule while atomic in exit_net
  * vti: fix use after free in vti_tunnel_xmit/vti6_tnl_xmit
    isdn/i4l: fetch the ppp_write buffer in one shot
  * bpf: one perf event close won't free bpf program attached by another perf event
  * packet: hold bind lock when rebinding to fanout hook
    net: emac: Fix napi poll list corruption
    ip6_gre: skb_push ipv6hdr before packing the header in ip6gre_header
  * udpv6: Fix the checksum computation when HW checksum does not apply
    bpf/verifier: reject BPF_ALU64|BPF_END
  * sctp: potential read out of bounds in sctp_ulpevent_type_enabled()
    MIPS: Fix minimum alignment requirement of IRQ stack
    drm/dp/mst: save vcpi with payloads
  * percpu: make this_cpu_generic_read() atomic w.r.t. interrupts
Linux 4.4.93
    x86/alternatives: Fix alt_max_short macro to really be a max()
    USB: serial: console: fix use-after-free after failed setup
    USB: serial: qcserial: add Dell DW5818, DW5819
    USB: serial: option: add support for TP-Link LTE module
    USB: serial: cp210x: add support for ELV TFD500
    USB: serial: ftdi_sio: add id for Cypress WICED dev board
  * fix unbalanced page refcounting in bio_map_user_iov
  * direct-io: Prevent NULL pointer access in submit_page_section
  * usb: gadget: composite: Fix use-after-free in usb_composite_overwrite_options
    ALSA: line6: Fix leftover URB at error-path during probe
    ALSA: caiaq: Fix stray URB at probe error path
    ALSA: seq: Fix copy_from_user() call inside lock
    ALSA: seq: Fix use-after-free at creating a port
  * ALSA: usb-audio: Kill stray URB at exiting
    iommu/amd: Finish TLB flush in amd_iommu_unmap()
    usb: renesas_usbhs: Fix DMAC sequence for receiving zero-length packet
    KVM: nVMX: fix guest CR4 loading when emulating L2 to L1 exit
  * crypto: shash - Fix zero-length shash ahash digest crash
  * HID: usbhid: fix out-of-bounds bug
    dmaengine: edma: Align the memcpy acnt array size with the transfer
    MIPS: math-emu: Remove pr_err() calls from fpu_emu()
    USB: dummy-hcd: Fix deadlock caused by disconnect detection
  * rcu: Allow for page faults in NMI handlers
    iwlwifi: mvm: use IWL_HCMD_NOCOPY for MCAST_FILTER_CMD
  * nl80211: Define policy for packet pattern attributes
    CIFS: Reconnect expired SMB sessions
  * ext4: in ext4_seek_{hole,data}, return -ENXIO for negative offsets
    brcmfmac: add length check in brcmf_cfg80211_escan_handler()
Linux 4.4.92
  * ext4: don't allow encrypted operations without keys
    ext4: Don't clear SGID when inheriting ACLs
  * ext4: fix data corruption for mmap writes
  * sched/cpuset/pm: Fix cpuset vs. suspend-resume bugs
    nvme: protect against simultaneous shutdown invocations
    drm/i915/bios: ignore HDMI on port A
    brcmfmac: setup passive scan if requested by user-space
    uwb: ensure that endpoint is interrupt
    uwb: properly check kthread_run return value
    iio: adc: mcp320x: Fix oops on module unload
    iio: adc: mcp320x: Fix readout of negative voltages
    iio: ad7793: Fix the serial interface reset
  * iio: core: Return error for failed read_reg
    staging: iio: ad7192: Fix - use the dedicated reset function avoiding dma from stack.
    iio: ad_sigma_delta: Implement a dedicated reset function
    iio: adc: twl4030: Disable the vusb3v1 rugulator in the error handling path of 'twl4030_madc_probe()'
    iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()'
  * xhci: fix finding correct bus_state structure for USB 3.1 hosts
  * USB: fix out-of-bounds in usb_set_configuration
  * usb: Increase quirk delay for USB devices
  * USB: core: harden cdc_parse_cdc_header
    USB: uas: fix bug in handling of alternate settings
  * scsi: sd: Do not override max_sectors_kb sysfs setting
    iwlwifi: add workaround to disable wide channels in 5GHz
    HID: i2c-hid: allocate hid buffers for real worst case
    ftrace: Fix kmemleak in unregister_ftrace_graph
    stm class: Fix a use-after-free
    Drivers: hv: fcopy: restore correct transfer length
  * driver core: platform: Don't read past the end of "driver_override" buffer
    ALSA: usx2y: Suppress kernel warning at page allocation failures
  * ALSA: compress: Remove unused variable
  * lsm: fix smack_inode_removexattr and xattr_getsecurity memleak
  * USB: g_mass_storage: Fix deadlock when driver is unbound
    usb: gadget: mass_storage: set msg_registered after msg registered
  * USB: devio: Don't corrupt user memory
    USB: dummy-hcd: Fix erroneous synchronization change
    USB: dummy-hcd: fix infinite-loop resubmission bug
    USB: dummy-hcd: fix connection failures (wrong speed)
  * usb: pci-quirks.c: Corrected timeout values used in handshake
  * ALSA: usb-audio: Check out-of-bounds access by corrupted buffer descriptor
    usb: renesas_usbhs: fix usbhsf_fifo_clear() for RX direction
    usb: renesas_usbhs: fix the BCLR setting condition for non-DCP pipe
  * usb-storage: unusual_devs entry to fix write-access regression for Seagate external drives
    usb: gadget: udc: atmel: set vbus irqflags explicitly
    USB: gadgetfs: fix copy_to_user while holding spinlock
    USB: gadgetfs: Fix crash caused by inadequate synchronization
    usb: gadget: inode.c: fix unbalanced spin_lock in ep0_write
Linux 4.4.91
    ttpci: address stringop overflow warning
    ALSA: au88x0: avoid theoretical uninitialized access
    ARM: remove duplicate 'const' annotations'
    IB/qib: fix false-postive maybe-uninitialized warning
  * drivers: firmware: psci: drop duplicate const from psci_of_match
    libata: transport: Remove circular dependency at free time
    xfs: remove kmem_zalloc_greedy
    i2c: meson: fix wrong variable usage in meson_i2c_put_data
    md/raid10: submit bio directly to replacement disk
    rds: ib: add error handle
  * iommu/io-pgtable-arm: Check for leaf entry before dereferencing it
    parisc: perf: Fix potential NULL pointer dereference
    netfilter: nfnl_cthelper: fix incorrect helper->expect_class_max
    exynos-gsc: Do not swap cb/cr for semi planar formats
    MIPS: IRQ Stack: Unwind IRQ stack onto task stack
  * netfilter: invoke synchronize_rcu after set the _hook_ to NULL
  * bridge: netlink: register netdevice before executing changelink
  * mmc: sdio: fix alignment issue in struct sdio_func
  * usb: plusb: Add support for PL-27A1
    team: fix memory leaks
  * net/packet: check length in getsockopt() called with PACKET_HDRLEN
  * net: core: Prevent from dereferencing null pointer when releasing SKB
    MIPS: Lantiq: Fix another request_mem_region() return code check
  * ASoC: dapm: fix some pointer error handling
    usb: chipidea: vbus event may exist before starting gadget
  * audit: log 32-bit socketcalls
  * ASoC: dapm: handle probe deferrals
  * partitions/efi: Fix integer overflow in GPT size calculation
    USB: serial: mos7840: fix control-message error handling
    USB: serial: mos7720: fix control-message error handling
    drm/amdkfd: fix improper return value on error
    IB/ipoib: Replace list_del of the neigh->list with list_del_init
    IB/ipoib: rtnl_unlock can not come after free_netdev
    IB/ipoib: Fix deadlock over vlan_mutex
    tty: goldfish: Fix a parameter of a call to free_irq
    ARM: 8635/1: nommu: allow enabling REMAP_VECTORS_TO_RAM
    iio: adc: hx711: Add DT binding for avia,hx711
    iio: adc: axp288: Drop bogus AXP288_ADC_TS_PIN_CTRL register modifications
    hwmon: (gl520sm) Fix overflows and crash seen when writing into limit attributes
    sh_eth: use correct name for ECMR_MPDE bit
    extcon: axp288: Use vbus-valid instead of -present to determine cable presence
    igb: re-assign hw address pointer on reset after PCI error
    MIPS: ralink: Fix incorrect assignment on ralink_soc
    MIPS: Ensure bss section ends on a long-aligned address
    ARM: dts: r8a7790: Use R-Car Gen 2 fallback binding for msiof nodes
    RDS: RDMA: Fix the composite message user notification
    GFS2: Fix reference to ERR_PTR in gfs2_glock_iter_next
    drm: bridge: add DT bindings for TI ths8135
    drm_fourcc: Fix DRM_FORMAT_MOD_LINEAR #define
Linux 4.4.90
    fix xen_swiotlb_dma_mmap prototype
    swiotlb-xen: implement xen_swiotlb_dma_mmap callback
    video: fbdev: aty: do not leak uninitialized padding in clk to userspace
    KVM: VMX: use cmpxchg64
    ARM: pxa: fix the number of DMA requestor lines
    ARM: pxa: add the number of DMA requestor lines
    dmaengine: mmp-pdma: add number of requestors
    cxl: Fix driver use count
    KVM: VMX: remove WARN_ON_ONCE in kvm_vcpu_trigger_posted_interrupt
    KVM: VMX: do not change SN bit in vmx_update_pi_irte()
  * timer/sysclt: Restrict timer migration sysctl values to 0 and 1
    gfs2: Fix debugfs glocks dump
    x86/fpu: Don't let userspace set bogus xcomp_bv
    btrfs: prevent to set invalid default subvolid
    btrfs: propagate error to btrfs_cmp_data_prepare caller
    btrfs: fix NULL pointer dereference from free_reloc_roots()
  * PCI: Fix race condition with driver_override
    kvm: nVMX: Don't allow L2 to access the hardware CR8
    KVM: VMX: Do not BUG() on out-of-bounds guest IRQ
  * arm64: fault: Route pte translation faults via do_translation_fault
  * arm64: Make sure SPsel is always set
  * seccomp: fix the usage of get/put_seccomp_filter() in seccomp_get_filter()
    bsg-lib: don't free job in bsg_prepare_job
  * nl80211: check for the required netlink attributes presence
  * vfs: Return -ENXIO for negative SEEK_HOLE / SEEK_DATA offsets
    SMB3: Don't ignore O_SYNC/O_DSYNC and O_DIRECT flags
    SMB: Validate negotiate (to protect against downgrade) even if signing off
    Fix SMB3.1.1 guest authentication to Samba
    powerpc/pseries: Fix parent_dn reference leak in add_dt_node()
  * KEYS: prevent KEYCTL_READ on negative key
  * KEYS: prevent creating a different user's keyrings
  * KEYS: fix writing past end of user-supplied buffer in keyring_read()
    crypto: talitos - fix sha224
    crypto: talitos - Don't provide setkey for non hmac hashing algs.
    scsi: scsi_transport_iscsi: fix the issue that iscsi_if_rx doesn't parse nlmsg properly
    md/raid5: preserve STRIPE_ON_UNPLUG_LIST in break_stripe_batch_list
    md/raid5: fix a race condition in stripe batch
  * tracing: Erase irqsoff trace with empty write
  * tracing: Fix trace_pipe behavior for instance traces
    KVM: PPC: Book3S: Fix race and leak in kvm_vm_ioctl_create_spapr_tce()
    mac80211: flush hw_roc_start work before cancelling the ROC
    cifs: release auth_key.response for reconnect.
Linux 4.4.89
    ftrace: Fix memleak when unregistering dynamic ops when tracing disabled
    bcache: fix bch_hprint crash and improve output
    bcache: fix for gc and write-back race
    bcache: Correct return value for sysfs attach errors
    bcache: correct cache_dirty_target in __update_writeback_rate()
    bcache: do not subtract sectors_to_gc for bypassed IO
    bcache: Fix leak of bdev reference
    bcache: initialize dirty stripes in flash_dev_run()
    media: uvcvideo: Prevent heap overflow when accessing mapped controls
  * media: v4l2-compat-ioctl32: Fix timespec conversion
    PCI: shpchp: Enable bridge bus mastering if MSI is enabled
    ARC: Re-enable MMU upon Machine Check exception
  * tracing: Apply trace_clock changes to instance max buffer
    ftrace: Fix selftest goto location on error
    scsi: qla2xxx: Fix an integer overflow in sysfs code
  * scsi: sg: fixup infoleak when using SG_GET_REQUEST_TABLE
  * scsi: sg: factor out sg_fill_request_table()
  * scsi: sg: off by one in sg_ioctl()
  * scsi: sg: use standard lists for sg_requests
  * scsi: sg: remove 'save_scat_len'
    scsi: storvsc: fix memory leak on ring buffer busy
    scsi: megaraid_sas: Return pended IOCTLs with cmd_status MFI_STAT_WRONG_STATE in case adapter is dead
    scsi: megaraid_sas: Check valid aen class range to avoid kernel panic
    scsi: zfcp: trace high part of "new" 64 bit SCSI LUN
    scsi: zfcp: trace HBA FSF response by default on dismiss or timedout late response
    scsi: zfcp: fix payload with full FCP_RSP IU in SCSI trace records
    scsi: zfcp: fix missing trace records for early returns in TMF eh handlers
    scsi: zfcp: fix passing fsf_req to SCSI trace on TMF to correlate with HBA
    scsi: zfcp: fix capping of unsuccessful GPN_FT SAN response trace records
    scsi: zfcp: add handling for FCP_RESID_OVER to the fcp ingress path
    scsi: zfcp: fix queuecommand for scsi_eh commands when DIX enabled
    skd: Submit requests to firmware before triggering the doorbell
    skd: Avoid that module unloading triggers a use-after-free
  * md/bitmap: disable bitmap_resize for file-backed bitmaps.
  * block: Relax a check in blk_start_queue()
    powerpc: Fix DAR reporting when alignment handler faults
  * ext4: fix quota inconsistency during orphan cleanup for read-only mounts
  * ext4: fix incorrect quotaoff if the quota feature is enabled
    crypto: AF_ALG - remove SGL terminator indicator when chaining
    MIPS: math-emu: MINA.<D|S>: Fix some cases of infinity and zero inputs
    MIPS: math-emu: <MAXA|MINA>.<D|S>: Fix cases of both infinite inputs
    MIPS: math-emu: <MAXA|MINA>.<D|S>: Fix cases of input values with opposite signs
    MIPS: math-emu: <MAX|MIN>.<D|S>: Fix cases of both inputs negative
    MIPS: math-emu: <MAX|MAXA|MIN|MINA>.<D|S>: Fix cases of both inputs zero
    MIPS: math-emu: <MAX|MAXA|MIN|MINA>.<D|S>: Fix quiet NaN propagation
    Input: i8042 - add Gigabyte P57 to the keyboard reset table
  * tty: fix __tty_insert_flip_char regression
  * tty: improve tty_insert_flip_char() slow path
  * tty: improve tty_insert_flip_char() fast path
  * mm: prevent double decrease of nr_reserved_highatomic
    nfsd: Fix general protection fault in release_lock_stateid()
    md/raid5: release/flush io in raid5_do_work()
    x86/fsgsbase/64: Report FSBASE and GSBASE correctly in core dumps
    f2fs: check hot_data for roll-forward recovery
  * ipv6: fix typo in fib6_net_exit()
  * ipv6: fix memory leak with multiple tables during netns destruction
    gianfar: Fix Tx flow control deactivation
  * Revert "net: fix percpu memory leaks"
  * Revert "net: use lib/percpu_counter API for fragmentation mem accounting"
  * tcp: initialize rcv_mss to TCP_MIN_MSS instead of 0
  * Revert "net: phy: Correctly process PHY_HALTED in phy_stop_machine()"
    qlge: avoid memcpy buffer overflow
  * ipv6: fix sparse warning on rt6i_node
  * ipv6: add rcu grace period before freeing fib6_node
  * ipv6: accept 64k - 1 packet length in ip6_find_1stfragopt()

Conflicts:
	arch/arm/include/asm/kvm_arm.h
	arch/x86/include/asm/thread_info.h
	drivers/gpu/drm/msm/msm_gem_submit.c
	drivers/md/dm-bufio.c
	drivers/media/v4l2-core/v4l2-compat-ioctl32.c
	drivers/mmc/core/bus.c
	drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
	drivers/scsi/sg.c
	drivers/scsi/ufs/ufshcd.h
	drivers/usb/gadget/function/f_fs.c
	drivers/usb/host/xhci-hub.c
	kernel/fork.c
	kernel/power/process.c
	net/ipv4/raw.c
	net/wireless/nl80211.c
	scripts/Makefile.build
	security/keys/keyctl.c
	sound/usb/card.c
	sound/usb/mixer.c

Change-Id: Ia5c1e792a3f23d9035d9843e7d520c67da04b03e
Signed-off-by: Thierry Strudel <tstrudel@google.com>
2018-02-23 10:03:32 -08:00
Tejun Heo
d9d47a6d68 workqueue: trigger WARN if queue_delayed_work() is called with NULL @wq
[ Upstream commit 637fdbae60d6cb9f6e963c1079d7e0445c86ff7d ]

If queue_delayed_work() gets called with NULL @wq, the kernel will
oops asynchronuosly on timer expiration which isn't too helpful in
tracking down the offender.  This actually happened with smc.

__queue_delayed_work() already does several input sanity checks
synchronously.  Add NULL @wq check.

Reported-by: Dave Jones <davej@codemonkey.org.uk>
Link: http://lkml.kernel.org/r/20170227171439.jshx3qplflyrgcv7@codemonkey.org.uk
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-12-16 10:33:52 +01:00
Tejun Heo
fce67b31c7 workqueue: replace pool->manager_arb mutex with a flag
commit 692b48258dda7c302e777d7d5f4217244478f1f6 upstream.

Josef reported a HARDIRQ-safe -> HARDIRQ-unsafe lock order detected by
lockdep:

 [ 1270.472259] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
 [ 1270.472783] 4.14.0-rc1-xfstests-12888-g76833e8 #110 Not tainted
 [ 1270.473240] -----------------------------------------------------
 [ 1270.473710] kworker/u5:2/5157 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
 [ 1270.474239]  (&(&lock->wait_lock)->rlock){+.+.}, at: [<ffffffff8da253d2>] __mutex_unlock_slowpath+0xa2/0x280
 [ 1270.474994]
 [ 1270.474994] and this task is already holding:
 [ 1270.475440]  (&pool->lock/1){-.-.}, at: [<ffffffff8d2992f6>] worker_thread+0x366/0x3c0
 [ 1270.476046] which would create a new lock dependency:
 [ 1270.476436]  (&pool->lock/1){-.-.} -> (&(&lock->wait_lock)->rlock){+.+.}
 [ 1270.476949]
 [ 1270.476949] but this new dependency connects a HARDIRQ-irq-safe lock:
 [ 1270.477553]  (&pool->lock/1){-.-.}
 ...
 [ 1270.488900] to a HARDIRQ-irq-unsafe lock:
 [ 1270.489327]  (&(&lock->wait_lock)->rlock){+.+.}
 ...
 [ 1270.494735]  Possible interrupt unsafe locking scenario:
 [ 1270.494735]
 [ 1270.495250]        CPU0                    CPU1
 [ 1270.495600]        ----                    ----
 [ 1270.495947]   lock(&(&lock->wait_lock)->rlock);
 [ 1270.496295]                                local_irq_disable();
 [ 1270.496753]                                lock(&pool->lock/1);
 [ 1270.497205]                                lock(&(&lock->wait_lock)->rlock);
 [ 1270.497744]   <Interrupt>
 [ 1270.497948]     lock(&pool->lock/1);

, which will cause a irq inversion deadlock if the above lock scenario
happens.

The root cause of this safe -> unsafe lock order is the
mutex_unlock(pool->manager_arb) in manage_workers() with pool->lock
held.

Unlocking mutex while holding an irq spinlock was never safe and this
problem has been around forever but it never got noticed because the
only time the mutex is usually trylocked while holding irqlock making
actual failures very unlikely and lockdep annotation missed the
condition until the recent b9c16a0e1f73 ("locking/mutex: Fix
lockdep_assert_held() fail").

Using mutex for pool->manager_arb has always been a bit of stretch.
It primarily is an mechanism to arbitrate managership between workers
which can easily be done with a pool flag.  The only reason it became
a mutex is that pool destruction path wants to exclude parallel
managing operations.

This patch replaces the mutex with a new pool flag POOL_MANAGER_ACTIVE
and make the destruction path wait for the current manager on a wait
queue.

v2: Drop unnecessary flag clearing before pool destruction as
    suggested by Boqun.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-02 09:40:48 +01:00
Thierry Strudel
a73c81554f Merged linux-4.4.88 into android-msm-wahoo-4.4
Linux 4.4.88
    xfs: XFS_IS_REALTIME_INODE() should be false if no rt device present
    NFS: Fix 2 use after free issues in the I/O code
    ARM: 8692/1: mm: abort uaccess retries upon fatal signal
    Bluetooth: Properly check L2CAP config option output buffer length
    ALSA: msnd: Optimize / harden DSP and MIDI loops
    locktorture: Fix potential memory leak with rw lock test
    btrfs: resume qgroup rescan on rw remount
    drm/bridge: adv7511: Re-write the i2c address before EDID probing
    drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event()
    drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context
    drm/bridge: adv7511: Fix mutex deadlock when interrupts are disabled
    drm: adv7511: really enable interrupts for EDID detection
    scsi: sg: recheck MMAP_IO request length with lock held
    scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE
    cs5536: add support for IDE controller variant
    workqueue: Fix flag collision
    drm/nouveau/pci/msi: disable MSI on big-endian platforms by default
    mwifiex: correct channel stat buffer overflows
    dlm: avoid double-free on error path in dlm_device_{register,unregister}
    Bluetooth: Add support of 13d3:3494 RTL8723BE device
    rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter
    Input: trackpoint - assume 3 buttons when buttons detection fails
    ath10k: fix memory leak in rx ring buffer allocation
    intel_th: pci: Add Cannon Lake PCH-LP support
    intel_th: pci: Add Cannon Lake PCH-H support
    driver core: bus: Fix a potential double free
    staging/rts5208: fix incorrect shift to extract upper nybble
    USB: core: Avoid race of async_completed() w/ usbdev_release()
    usb:xhci:Fix regression when ATI chipsets detected
    usb: Add device quirk for Logitech HD Pro Webcam C920-C
    USB: serial: option: add support for D-Link DWM-157 C1
    usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard
Linux 4.4.87
    crypto: algif_skcipher - only call put_page on referenced and used pages
    epoll: fix race between ep_poll_callback(POLLFREE) and ep_free()/ep_remove()
    kvm: arm/arm64: Force reading uncached stage2 PGD
    kvm: arm/arm64: Fix race in resetting stage2 PGD
    drm/ttm: Fix accounting error when fail to get pages for pool
    xfrm: policy: check policy direction value
    wl1251: add a missing spin_lock_init()
    CIFS: remove endian related sparse warning
    CIFS: Fix maximum SMB2 header size
    alpha: uapi: Add support for __SANE_USERSPACE_TYPES__
    cpuset: Fix incorrect memory_pressure control file mapping
    cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
    ceph: fix readpage from fscache
    i2c: ismt: Return EMSGSIZE for block reads with bogus length
    i2c: ismt: Don't duplicate the receive length for block reads
    irqchip: mips-gic: SYNC after enabling GIC region
Linux 4.4.86
    drm/i915: fix compiler warning in drivers/gpu/drm/i915/intel_uncore.c
    scsi: sg: reset 'res_in_use' after unlinking reserved array
    scsi: sg: protect accesses to 'reserved' page array
    arm64: fpsimd: Prevent registers leaking across exec
    x86/io: Add "memory" clobber to insb/insw/insl/outsb/outsw/outsl
    arm64: mm: abort uaccess retries upon fatal signal
    lpfc: Fix Device discovery failures during switch reboot test.
    p54: memset(0) whole array
    lightnvm: initialize ppa_addr in dev_to_generic_addr()
    gcov: support GCC 7.1
    gcov: add support for gcc version >= 6
    i2c: jz4780: drop superfluous init
    btrfs: remove duplicate const specifier
    ALSA: au88x0: Fix zero clear of stream->resources
    scsi: isci: avoid array subscript warning
Linux 4.4.85
    ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal
    ACPI: ioapic: Clear on-stack resource before using it
    ntb_transport: fix bug calculating num_qps_mw
    ntb_transport: fix qp count bug
    ASoC: rsnd: don't call update callback if it was NULL
    ASoC: rsnd: ssi: 24bit data needs right-aligned settings
    ASoC: rsnd: Add missing initialization of ADG req_rate
    ASoC: rsnd: avoid pointless loop in rsnd_mod_interrupt()
    ASoC: rsnd: disable SRC.out only when stop timing
    ASoC: simple-card: don't fail if sysclk setting is not supported
    staging: rtl8188eu: add RNX-N150NUB support
    iio: hid-sensor-trigger: Fix the race with user space powering up sensors
    iio: imu: adis16480: Fix acceleration scale factor for adis16480
    ANDROID: binder: fix proc->tsk check.
    binder: Use wake up hint for synchronous transactions.
    binder: use group leader instead of open thread
    Bluetooth: bnep: fix possible might sleep error in bnep_session
    Bluetooth: cmtp: fix possible might sleep error in cmtp_session
    Bluetooth: hidp: fix possible might sleep error in hidp_session_thread
    perf/core: Fix group {cpu,task} validation
    nfsd: Limit end of page list when decoding NFSv4 WRITE
    cifs: return ENAMETOOLONG for overlong names in cifs_open()/cifs_lookup()
    cifs: Fix df output for users with quota limits
    tracing: Fix freeing of filter in create_filter() when set_str is false
    drm: rcar-du: Fix H/V sync signal polarity configuration
    drm: rcar-du: Fix display timing controller parameter
    drm: rcar-du: Fix crash in encoder failure error path
    drm: rcar-du: lvds: Rename PLLEN bit to PLLON
    drm: rcar-du: lvds: Fix PLL frequency-related configuration
    drm/atomic: If the atomic check fails, return its value first
    drm: Release driver tracking before making the object available again
    i2c: designware: Fix system suspend
    ARCv2: PAE40: Explicitly set MSB counterpart of SLC region ops addresses
    ALSA: hda - Add stereo mic quirk for Lenovo G50-70 (17aa:3978)
    ALSA: core: Fix unexpected error at replacing user TLV
    Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310
    Input: trackpoint - add new trackpoint firmware ID
    mei: me: add lewisburg device ids
    mei: me: add broxton pci device ids
    net_sched: fix order of queue length updates in qdisc_replace()
    net: sched: fix NULL pointer dereference when action calls some targets
    irda: do not leak initialized list.dev to userspace
    tcp: when rearming RTO, if RTO time is in past then fire RTO ASAP
    ipv6: repair fib6 tree in failure case
    ipv6: reset fn->rr_ptr when replacing route
    tipc: fix use-after-free
    sctp: fully initialize the IPv6 address in sctp_v6_to_addr()
    ipv4: better IP_MAX_MTU enforcement
    net_sched/sfq: update hierarchical backlog when drop packet
    ipv4: fix NULL dereference in free_fib_info_rcu()
    dccp: defer ccid_hc_tx_delete() at dismantle time
    dccp: purge write queue in dccp_destroy_sock()
    af_key: do not use GFP_KERNEL in atomic contexts
Linux 4.4.84
    usb: qmi_wwan: add D-Link DWM-222 device ID
    usb: optimize acpi companion search for usb port devices
    perf/x86: Fix LBR related crashes on Intel Atom
    pids: make task_tgid_nr_ns() safe
    Sanitize 'move_pages()' permission checks
    irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
    irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
    x86/asm/64: Clear AC on NMI entries
    xen: fix bio vec merging
    mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes
    mm/mempolicy: fix use after free when calling get_mempolicy
    ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices
    ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset
    ALSA: seq: 2nd attempt at fixing race creating a queue
    Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB
    Input: elan_i2c - add ELAN0608 to the ACPI table
    crypto: x86/sha1 - Fix reads beyond the number of blocks passed
    parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo
    audit: Fix use after free in audit_remove_watch_rule()
    netfilter: nf_ct_ext: fix possible panic after nf_ct_extend_unregister
Linux 4.4.83
    pinctrl: samsung: Remove bogus irq_[un]mask from resource management
    pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
    pnfs/blocklayout: require 64-bit sector_t
    iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
    usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
    usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
    usb: core: unlink urbs from the tail of the endpoint's urb_list
    USB: Check for dropped connection before switching to full speed
    uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
    iio: light: tsl2563: use correct event code
    iio: accel: bmc150: Always restore device to normal mode after suspend-resume
    staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
    USB: hcd: Mark secondary HCD as dead if the primary one died
    usb: musb: fix tx fifo flush handling again
    USB: serial: pl2303: add new ATEN device id
    USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
    USB: serial: option: add D-Link DWM-222 device ID
    nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
    fuse: initialize the flock flag in fuse_file on allocation
    iscsi-target: Fix iscsi_np reset hung task during parallel delete
    iscsi-target: fix memory leak in iscsit_setup_text_cmd()
    mm: ratelimit PFNs busy info message
    cpuset: fix a deadlock due to incomplete patching of cpusets_enabled()
Linux 4.4.82
    net: account for current skb length when deciding about UFO
    ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
    mm/mempool: avoid KASAN marking mempool poison checks as use-after-free
    KVM: arm/arm64: Handle hva aging while destroying the vm
    sparc64: Prevent perf from running during super critical sections
    udp: consistently apply ufo or fragmentation
    revert "ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output"
    revert "net: account for current skb length when deciding about UFO"
    packet: fix tp_reserve race in packet_set_ring
    net: avoid skb_warn_bad_offload false positives on UFO
    tcp: fastopen: tcp_connect() must refresh the route
    net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target
    bpf, s390: fix jit branch offset related to ldimm64
    net: fix keepalive code vs TCP_FASTOPEN_CONNECT
    tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
Linux 4.4.81
    workqueue: implicit ordered attribute should be overridable
    net: account for current skb length when deciding about UFO
    ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
    mm: don't dereference struct page fields of invalid pages
    signal: protect SIGNAL_UNKILLABLE from unintentional clearing.
    lib/Kconfig.debug: fix frv build failure
    mm, slab: make sure that KMALLOC_MAX_SIZE will fit into MAX_ORDER
    ARM: 8632/1: ftrace: fix syscall name matching
    virtio_blk: fix panic in initialization error path
    drm/virtio: fix framebuffer sparse warning
    scsi: qla2xxx: Get mutex lock before checking optrom_state
    phy state machine: failsafe leave invalid RUNNING state
    x86/boot: Add missing declaration of string functions
    tg3: Fix race condition in tg3_get_stats64().
    net: phy: dp83867: fix irq generation
    sh_eth: R8A7740 supports packet shecksumming
    wext: handle NULL extra data in iwe_stream_add_point better
    sparc64: Measure receiver forward progress to avoid send mondo timeout
    xen-netback: correctly schedule rate-limited queues
    net: phy: Fix PHY unbind crash
    net: phy: Correctly process PHY_HALTED in phy_stop_machine()
    net/mlx5: Fix command bad flow on command entry allocation failure
    sctp: fix the check for _sctp_walk_params and _sctp_walk_errors
    sctp: don't dereference ptr before leaving _sctp_walk_{params, errors}()
    dccp: fix a memleak for dccp_feat_init err process
    dccp: fix a memleak that dccp_ipv4 doesn't put reqsk properly
    dccp: fix a memleak that dccp_ipv6 doesn't put reqsk properly
    net: ethernet: nb8800: Handle all 4 RGMII modes identically
    ipv6: Don't increase IPSTATS_MIB_FRAGFAILS twice in ip6_fragment()
    packet: fix use-after-free in prb_retire_rx_blk_timer_expired()
    openvswitch: fix potential out of bound access in parse_ct
    mcs7780: Fix initialization when CONFIG_VMAP_STACK is enabled
    rtnetlink: allocate more memory for dev_set_mac_address()
    ipv4: initialize fib_trie prior to register_netdev_notifier call.
    ipv6: avoid overflow of offset in ip6_find_1stfragopt
    net: Zero terminate ifr_name in dev_ifname().
    ipv4: ipv6: initialize treq->txhash in cookie_v[46]_check()
    saa7164: fix double fetch PCIe access condition
    drm: rcar-du: fix backport bug
    f2fs: sanity check checkpoint segno and blkoff
    media: lirc: LIRC_GET_REC_RESOLUTION should return microseconds
    mm, mprotect: flush TLB if potentially racing with a parallel reclaim leaving stale TLB entries
    iser-target: Avoid isert_conn->cm_id dereference in isert_login_recv_done
    iscsi-target: Fix delayed logout processing greater than SECONDS_FOR_LOGOUT_COMP
    iscsi-target: Fix initial login PDU asynchronous socket close OOPs
    iscsi-target: Fix early sk_data_ready LOGIN_FLAGS_READY race
    iscsi-target: Always wait for kthread_should_stop() before kthread exit
    target: Avoid mappedlun symlink creation during lun shutdown
    media: platform: davinci: return -EINVAL for VPFE_CMD_S_CCDC_RAW_PARAMS ioctl
    ARM: dts: armada-38x: Fix irq type for pca955
    ext4: fix overflow caused by missing cast in ext4_resize_fs()
    ext4: fix SEEK_HOLE/SEEK_DATA for blocksize < pagesize
    mm/page_alloc: Remove kernel address exposure in free_reserved_area()
    KVM: async_pf: make rcu irq exit if not triggered from idle task
    ASoC: do not close shared backend dailink
    ALSA: hda - Fix speaker output from VAIO VPCL14M1R
    workqueue: restore WQ_UNBOUND/max_active==1 to be ordered
    libata: array underflow in ata_find_dev()

Bug: 62730977
Change-Id: I08905b35c8abf614055051b789f2114c2157dab9
Signed-off-by: Thierry Strudel <tstrudel@google.com>
2017-09-21 13:31:24 -07:00
Tejun Heo
34a08ae493 workqueue: implicit ordered attribute should be overridable
commit 0a94efb5acbb6980d7c9ab604372d93cd507e4d8 upstream.

5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be
ordered") automatically enabled ordered attribute for unbound
workqueues w/ max_active == 1.  Because ordered workqueues reject
max_active and some attribute changes, this implicit ordered mode
broke cases where the user creates an unbound workqueue w/ max_active
== 1 and later explicitly changes the related attributes.

This patch distinguishes explicit and implicit ordered setting and
overrides from attribute changes if implict.

Signed-off-by: Tejun Heo <tj@kernel.org>
Fixes: 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered")
Cc: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-08-11 09:09:00 -07:00
Tejun Heo
c59eec4dad workqueue: restore WQ_UNBOUND/max_active==1 to be ordered
commit 5c0338c68706be53b3dc472e4308961c36e4ece1 upstream.

The combination of WQ_UNBOUND and max_active == 1 used to imply
ordered execution.  After NUMA affinity 4c16bd327c ("workqueue:
implement NUMA affinity for unbound workqueues"), this is no longer
true due to per-node worker pools.

While the right way to create an ordered workqueue is
alloc_ordered_workqueue(), the documentation has been misleading for a
long time and people do use WQ_UNBOUND and max_active == 1 for ordered
workqueues which can lead to subtle bugs which are very difficult to
trigger.

It's unlikely that we'd see noticeable performance impact by enforcing
ordering on WQ_UNBOUND / max_active == 1 workqueues.  Let's
automatically set __WQ_ORDERED for those workqueues.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Christoph Hellwig <hch@infradead.org>
Reported-by: Alexei Potashnik <alexei@purestorage.com>
Fixes: 4c16bd327c ("workqueue: implement NUMA affinity for unbound workqueues")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-08-11 09:08:46 -07:00
Pavankumar Kondeti
d1f21a7e9c workqueue: fix possible livelock with concurrent mod_delayed_work()
When mod_delayed_work() is concurrently executed, there a potential
live lock scenario due to pool->lock contention.

Lets say both CPU#0 and CPU#4 calls mod_delayed_work() on the same
work item with 0 delay on a bounded workqueue. This workitem has
run on CPU#4 previously. CPU#0 wins the work item PENDING bit race
and proceeds to queueing. As this work has previously run on CPU#4,
it tries to acquire the corresponding pool->lock to check if it is
still running there. In the meantime, CPU#4 loops in
try_to_grab_pending() for the workitem to be linked with a pwq so
that it can steal it from pwq->pool->worklist. The CPU#4 essentially
acquires and releases the pool->lock in a busy loop and CPU#0 may
never gets this lock.

----------------                        --------------------
    CPU#0                                          CPU#4
---------------                         --------------------

blk_run_queue_async()

mod_delayed_work_on()                  queue_unplugged()

--> try_to_grab_pending() returns      blk_run_queue_async()
0 indicating PENDING bit is set
now.

__queue_delayed_work()                 mod_delayed_work_on()

__queue_work()                         try_to_grab_pending()

                                       {

--> waiting for the CPU#4's               acquire pool->lock()
pool->lock                                release pool->lock()

                                       }

Change-Id: I9aeab111f55a19478a9d045c8e3576bce3b7a7c5
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
2017-01-11 11:53:39 +05:30
Runmin Wang
617229a3e9 Merge remote-tracking branch 'msm-4.4/tmp-510d0a3f' into msm-4.4
* msm-4.4/tmp-510d0a3f:
  Linux 4.4.11
  nf_conntrack: avoid kernel pointer value leak in slab name
  drm/radeon: fix DP link training issue with second 4K monitor
  drm/i915/bdw: Add missing delay during L3 SQC credit programming
  drm/i915: Bail out of pipe config compute loop on LPT
  drm/radeon: fix PLL sharing on DCE6.1 (v2)
  Revert "[media] videobuf2-v4l2: Verify planes array in buffer dequeueing"
  Input: max8997-haptic - fix NULL pointer dereference
  get_rock_ridge_filename(): handle malformed NM entries
  tools lib traceevent: Do not reassign parg after collapse_tree()
  qla1280: Don't allocate 512kb of host tags
  atomic_open(): fix the handling of create_error
  regulator: axp20x: Fix axp22x ldo_io voltage ranges
  regulator: s2mps11: Fix invalid selector mask and voltages for buck9
  workqueue: fix rebind bound workers warning
  ARM: dts: at91: sam9x5: Fix the memory range assigned to the PMC
  vfs: rename: check backing inode being equal
  vfs: add vfs_select_inode() helper
  perf/core: Disable the event on a truncated AUX record
  regmap: spmi: Fix regmap_spmi_ext_read in multi-byte case
  pinctrl: at91-pio4: fix pull-up/down logic
  spi: spi-ti-qspi: Handle truncated frames properly
  spi: spi-ti-qspi: Fix FLEN and WLEN settings if bits_per_word is overridden
  spi: pxa2xx: Do not detect number of enabled chip selects on Intel SPT
  ALSA: hda - Fix broken reconfig
  ALSA: hda - Fix white noise on Asus UX501VW headset
  ALSA: hda - Fix subwoofer pin on ASUS N751 and N551
  ALSA: usb-audio: Yet another Phoneix Audio device quirk
  ALSA: usb-audio: Quirk for yet another Phoenix Audio devices (v2)
  crypto: testmgr - Use kmalloc memory for RSA input
  crypto: hash - Fix page length clamping in hash walk
  crypto: qat - fix invalid pf2vf_resp_wq logic
  s390/mm: fix asce_bits handling with dynamic pagetable levels
  zsmalloc: fix zs_can_compact() integer overflow
  ocfs2: fix posix_acl_create deadlock
  ocfs2: revert using ocfs2_acl_chmod to avoid inode cluster lock hang
  net/route: enforce hoplimit max value
  tcp: refresh skb timestamp at retransmit time
  net: thunderx: avoid exposing kernel stack
  net: fix a kernel infoleak in x25 module
  uapi glibc compat: fix compile errors when glibc net/if.h included before linux/if.h MIME-Version: 1.0
  bridge: fix igmp / mld query parsing
  net: bridge: fix old ioctl unlocked net device walk
  VSOCK: do not disconnect socket when peer has shutdown SEND only
  net/mlx4_en: Fix endianness bug in IPV6 csum calculation
  net: fix infoleak in rtnetlink
  net: fix infoleak in llc
  net: fec: only clear a queue's work bit if the queue was emptied
  netem: Segment GSO packets on enqueue
  sch_dsmark: update backlog as well
  sch_htb: update backlog as well
  net_sched: update hierarchical backlog too
  net_sched: introduce qdisc_replace() helper
  gre: do not pull header in ICMP error processing
  net: Implement net_dbg_ratelimited() for CONFIG_DYNAMIC_DEBUG case
  samples/bpf: fix trace_output example
  bpf: fix check_map_func_compatibility logic
  bpf: fix refcnt overflow
  bpf: fix double-fdput in replace_map_fd_with_map_ptr()
  net/mlx4_en: fix spurious timestamping callbacks
  ipv4/fib: don't warn when primary address is missing if in_dev is dead
  net/mlx5e: Fix minimum MTU
  net/mlx5e: Device's mtu field is u16 and not int
  openvswitch: use flow protocol when recalculating ipv6 checksums
  atl2: Disable unimplemented scatter/gather feature
  vlan: pull on __vlan_insert_tag error path and fix csum correction
  net: use skb_postpush_rcsum instead of own implementations
  cdc_mbim: apply "NDP to end" quirk to all Huawei devices
  bpf/verifier: reject invalid LD_ABS | BPF_DW instruction
  net: sched: do not requeue a NULL skb
  packet: fix heap info leak in PACKET_DIAG_MCLIST sock_diag interface
  route: do not cache fib route info on local routes with oif
  decnet: Do not build routes to devices without decnet private data.
  parisc: Use generic extable search and sort routines
  arm64: kasan: Use actual memory node when populating the kernel image shadow
  arm64: mm: treat memstart_addr as a signed quantity
  arm64: lse: deal with clobbered IP registers after branch via PLT
  arm64: mm: check at build time that PAGE_OFFSET divides the VA space evenly
  arm64: kasan: Fix zero shadow mapping overriding kernel image shadow
  arm64: consistently use p?d_set_huge
  arm64: fix KASLR boot-time I-cache maintenance
  arm64: hugetlb: partial revert of 66b3923a1a0f
  arm64: make irq_stack_ptr more robust
  arm64: efi: invoke EFI_RNG_PROTOCOL to supply KASLR randomness
  efi: stub: use high allocation for converted command line
  efi: stub: add implementation of efi_random_alloc()
  efi: stub: implement efi_get_random_bytes() based on EFI_RNG_PROTOCOL
  arm64: kaslr: randomize the linear region
  arm64: add support for kernel ASLR
  arm64: add support for building vmlinux as a relocatable PIE binary
  arm64: switch to relative exception tables
  extable: add support for relative extables to search and sort routines
  scripts/sortextable: add support for ET_DYN binaries
  arm64: futex.h: Add missing PAN toggling
  arm64: make asm/elf.h available to asm files
  arm64: avoid dynamic relocations in early boot code
  arm64: avoid R_AARCH64_ABS64 relocations for Image header fields
  arm64: add support for module PLTs
  arm64: move brk immediate argument definitions to separate header
  arm64: mm: use bit ops rather than arithmetic in pa/va translations
  arm64: mm: only perform memstart_addr sanity check if DEBUG_VM
  arm64: User die() instead of panic() in do_page_fault()
  arm64: allow kernel Image to be loaded anywhere in physical memory
  arm64: defer __va translation of initrd_start and initrd_end
  arm64: move kernel image to base of vmalloc area
  arm64: kvm: deal with kernel symbols outside of linear mapping
  arm64: decouple early fixmap init from linear mapping
  arm64: pgtable: implement static [pte|pmd|pud]_offset variants
  arm64: introduce KIMAGE_VADDR as the virtual base of the kernel region
  arm64: add support for ioremap() block mappings
  arm64: prevent potential circular header dependencies in asm/bug.h
  of/fdt: factor out assignment of initrd_start/initrd_end
  of/fdt: make memblock minimum physical address arch configurable
  arm64: Remove the get_thread_info() function
  arm64: kernel: Don't toggle PAN on systems with UAO
  arm64: cpufeature: Test 'matches' pointer to find the end of the list
  arm64: kernel: Add support for User Access Override
  arm64: add ARMv8.2 id_aa64mmfr2 boiler plate
  arm64: cpufeature: Change read_cpuid() to use sysreg's mrs_s macro
  arm64: use local label prefixes for __reg_num symbols
  arm64: vdso: Mark vDSO code as read-only
  arm64: ubsan: select ARCH_HAS_UBSAN_SANITIZE_ALL
  arm64: ptdump: Indicate whether memory should be faulting
  arm64: Add support for ARCH_SUPPORTS_DEBUG_PAGEALLOC
  arm64: Drop alloc function from create_mapping
  arm64: prefetch: add missing #include for spin_lock_prefetch
  arm64: lib: patch in prfm for copy_page if requested
  arm64: lib: improve copy_page to deal with 128 bytes at a time
  arm64: prefetch: add alternative pattern for CPUs without a prefetcher
  arm64: prefetch: don't provide spin_lock_prefetch with LSE
  arm64: allow vmalloc regions to be set with set_memory_*
  arm64: kernel: implement ACPI parking protocol
  arm64: mm: create new fine-grained mappings at boot
  arm64: ensure _stext and _etext are page-aligned
  arm64: mm: allow passing a pgdir to alloc_init_*
  arm64: mm: allocate pagetables anywhere
  arm64: mm: use fixmap when creating page tables
  arm64: mm: add functions to walk tables in fixmap
  arm64: mm: add __{pud,pgd}_populate
  arm64: mm: avoid redundant __pa(__va(x))
  arm64: mm: add functions to walk page tables by PA
  arm64: mm: move pte_* macros
  arm64: kasan: avoid TLB conflicts
  arm64: mm: add code to safely replace TTBR1_EL1
  arm64: add function to install the idmap
  arm64: unmap idmap earlier
  arm64: unify idmap removal
  arm64: mm: place empty_zero_page in bss
  arm64: mm: specialise pagetable allocators
  asm-generic: Fix local variable shadow in __set_fixmap_offset
  Eliminate the .eh_frame sections from the aarch64 vmlinux and kernel modules
  arm64: Fix an enum typo in mm/dump.c
  arm64: kasan: ensure that the KASAN zero page is mapped read-only
  arch/arm64/include/asm/pgtable.h: add pmd_mkclean for THP
  arm64: hide __efistub_ aliases from kallsyms
  Linux 4.4.10
  drm/i915/skl: Fix DMC load on Skylake J0 and K0
  lib/test-string_helpers.c: fix and improve string_get_size() tests
  ACPI / processor: Request native thermal interrupt handling via _OSC
  drm/i915: Fake HDMI live status
  drm/i915: Make RPS EI/thresholds multiple of 25 on SNB-BDW
  drm/i915: Fix eDP low vswing for Broadwell
  drm/i915/ddi: Fix eDP VDD handling during booting and suspend/resume
  drm/radeon: make sure vertical front porch is at least 1
  iio: ak8975: fix maybe-uninitialized warning
  iio: ak8975: Fix NULL pointer exception on early interrupt
  drm/amdgpu: set metadata pointer to NULL after freeing.
  drm/amdgpu: make sure vertical front porch is at least 1
  gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading
  nvmem: mxs-ocotp: fix buffer overflow in read
  USB: serial: cp210x: add Straizona Focusers device ids
  USB: serial: cp210x: add ID for Link ECU
  ata: ahci-platform: Add ports-implemented DT bindings.
  libahci: save port map for forced port map
  powerpc: Fix bad inline asm constraint in create_zero_mask()
  ACPICA: Dispatcher: Update thread ID for recursive method calls
  x86/sysfb_efi: Fix valid BAR address range check
  ARC: Add missing io barriers to io{read,write}{16,32}be()
  ARM: cpuidle: Pass on arm_cpuidle_suspend()'s return value
  propogate_mnt: Handle the first propogated copy being a slave
  fs/pnode.c: treat zero mnt_group_id-s as unequal
  x86/tsc: Read all ratio bits from MSR_PLATFORM_INFO
  MAINTAINERS: Remove asterisk from EFI directory names
  writeback: Fix performance regression in wb_over_bg_thresh()
  batman-adv: Reduce refcnt of removed router when updating route
  batman-adv: Fix broadcast/ogm queue limit on a removed interface
  batman-adv: Check skb size before using encapsulated ETH+VLAN header
  batman-adv: fix DAT candidate selection (must use vid)
  mm: update min_free_kbytes from khugepaged after core initialization
  proc: prevent accessing /proc/<PID>/environ until it's ready
  Input: zforce_ts - fix dual touch recognition
  HID: Fix boot delay for Creative SB Omni Surround 5.1 with quirk
  HID: wacom: Add support for DTK-1651
  xen/evtchn: fix ring resize when binding new events
  xen/balloon: Fix crash when ballooning on x86 32 bit PAE
  xen: Fix page <-> pfn conversion on 32 bit systems
  ARM: SoCFPGA: Fix secondary CPU startup in thumb2 kernel
  ARM: EXYNOS: Properly skip unitialized parent clock in power domain on
  mm/zswap: provide unique zpool name
  mm, cma: prevent nr_isolated_* counters from going negative
  Minimal fix-up of bad hashing behavior of hash_64()
  MD: make bio mergeable
  tracing: Don't display trigger file for events that can't be enabled
  mac80211: fix statistics leak if dev_alloc_name() fails
  ath9k: ar5008_hw_cmn_spur_mitigate: add missing mask_m & mask_p initialisation
  lpfc: fix misleading indentation
  clk: qcom: msm8960: Fix ce3_src register offset
  clk: versatile: sp810: support reentrance
  clk: qcom: msm8960: fix ce3_core clk enable register
  clk: meson: Fix meson_clk_register_clks() signature type mismatch
  clk: rockchip: free memory in error cases when registering clock branches
  soc: rockchip: power-domain: fix err handle while probing
  clk-divider: make sure read-only dividers do not write to their register
  CNS3xxx: Fix PCI cns3xxx_write_config()
  mwifiex: fix corner case association failure
  ata: ahci_xgene: dereferencing uninitialized pointer in probe
  nbd: ratelimit error msgs after socket close
  mfd: intel-lpss: Remove clock tree on error path
  ipvs: drop first packet to redirect conntrack
  ipvs: correct initial offset of Call-ID header search in SIP persistence engine
  ipvs: handle ip_vs_fill_iph_skb_off failure
  RDMA/iw_cxgb4: Fix bar2 virt addr calculation for T4 chips
  Revert: "powerpc/tm: Check for already reclaimed tasks"
  arm64: head.S: use memset to clear BSS
  efi: stub: define DISABLE_BRANCH_PROFILING for all architectures
  arm64: entry: remove pointless SPSR mode check
  arm64: mm: move pgd_cache initialisation to pgtable_cache_init
  arm64: module: avoid undefined shift behavior in reloc_data()
  arm64: module: fix relocation of movz instruction with negative immediate
  arm64: traps: address fallout from printk -> pr_* conversion
  arm64: ftrace: fix a stack tracer's output under function graph tracer
  arm64: pass a task parameter to unwind_frame()
  arm64: ftrace: modify a stack frame in a safe way
  arm64: remove irq_count and do_softirq_own_stack()
  arm64: hugetlb: add support for PTE contiguous bit
  arm64: Use PoU cache instr for I/D coherency
  arm64: Defer dcache flush in __cpu_copy_user_page
  arm64: reduce stack use in irq_handler
  arm64: Documentation: add list of software workarounds for errata
  arm64: mm: place __cpu_setup in .text
  arm64: cmpxchg: Don't incldue linux/mmdebug.h
  arm64: mm: fold alternatives into .init
  arm64: Remove redundant padding from linker script
  arm64: mm: remove pointless PAGE_MASKing
  arm64: don't call C code with el0's fp register
  arm64: when walking onto the task stack, check sp & fp are in current->stack
  arm64: Add this_cpu_ptr() assembler macro for use in entry.S
  arm64: irq: fix walking from irq stack to task stack
  arm64: Add do_softirq_own_stack() and enable irq_stacks
  arm64: Modify stack trace and dump for use with irq_stack
  arm64: Store struct thread_info in sp_el0
  arm64: Add trace_hardirqs_off annotation in ret_to_user
  arm64: ftrace: fix the comments for ftrace_modify_code
  arm64: ftrace: stop using kstop_machine to enable/disable tracing
  arm64: spinlock: serialise spin_unlock_wait against concurrent lockers
  arm64: enable HAVE_IRQ_TIME_ACCOUNTING
  arm64: fix COMPAT_SHMLBA definition for large pages
  arm64: add __init/__initdata section marker to some functions/variables
  arm64: pgtable: implement pte_accessible()
  arm64: mm: allow sections for unaligned bases
  arm64: mm: detect bad __create_mapping uses
  Linux 4.4.9
  extcon: max77843: Use correct size for reading the interrupt register
  stm class: Select CONFIG_SRCU
  megaraid_sas: add missing curly braces in ioctl handler
  sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a race
  thermal: rockchip: fix a impossible condition caused by the warning
  unbreak allmodconfig KCONFIG_ALLCONFIG=...
  jme: Fix device PM wakeup API usage
  jme: Do not enable NIC WoL functions on S0
  bus: imx-weim: Take the 'status' property value into account
  ARM: dts: pxa: fix dma engine node to pxa3xx-nand
  ARM: dts: armada-375: use armada-370-sata for SATA
  ARM: EXYNOS: select THERMAL_OF
  ARM: prima2: always enable reset controller
  ARM: OMAP3: Add cpuidle parameters table for omap3430
  ext4: fix races of writeback with punch hole and zero range
  ext4: fix races between buffered IO and collapse / insert range
  ext4: move unlocked dio protection from ext4_alloc_file_blocks()
  ext4: fix races between page faults and hole punching
  perf stat: Document --detailed option
  perf tools: handle spaces in file names obtained from /proc/pid/maps
  perf hists browser: Only offer symbol scripting when a symbol is under the cursor
  mtd: nand: Drop mtd.owner requirement in nand_scan
  mtd: brcmnand: Fix v7.1 register offsets
  mtd: spi-nor: remove micron_quad_enable()
  serial: sh-sci: Remove cpufreq notifier to fix crash/deadlock
  ext4: fix NULL pointer dereference in ext4_mark_inode_dirty()
  x86/mm/kmmio: Fix mmiotrace for hugepages
  perf evlist: Reference count the cpu and thread maps at set_maps()
  drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors
  rtc: max77686: Properly handle regmap_irq_get_virq() error code
  rtc: rx8025: remove rv8803 id
  rtc: ds1685: passing bogus values to irq_restore
  rtc: vr41xx: Wire up alarm_irq_enable
  rtc: hym8563: fix invalid year calculation
  PM / Domains: Fix removal of a subdomain
  PM / OPP: Initialize u_volt_min/max to a valid value
  misc: mic/scif: fix wrap around tests
  misc/bmp085: Enable building as a module
  lib/mpi: Endianness fix
  fbdev: da8xx-fb: fix videomodes of lcd panels
  scsi_dh: force modular build if SCSI is a module
  paride: make 'verbose' parameter an 'int' again
  regulator: s5m8767: fix get_register() error handling
  irqchip/mxs: Fix error check of of_io_request_and_map()
  irqchip/sunxi-nmi: Fix error check of of_io_request_and_map()
  spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs
  locking/mcs: Fix mcs_spin_lock() ordering
  regulator: core: Fix nested locking of supplies
  regulator: core: Ensure we lock all regulators
  regulator: core: fix regulator_lock_supply regression
  Revert "regulator: core: Fix nested locking of supplies"
  videobuf2-v4l2: Verify planes array in buffer dequeueing
  videobuf2-core: Check user space planes array in dqbuf
  USB: usbip: fix potential out-of-bounds write
  cgroup: make sure a parent css isn't freed before its children
  mm/hwpoison: fix wrong num_poisoned_pages accounting
  mm: vmscan: reclaim highmem zone if buffer_heads is over limit
  numa: fix /proc/<pid>/numa_maps for THP
  mm/huge_memory: replace VM_NO_THP VM_BUG_ON with actual VMA check
  memcg: relocate charge moving from ->attach to ->post_attach
  cgroup, cpuset: replace cpuset_post_attach_flush() with cgroup_subsys->post_attach callback
  slub: clean up code for kmem cgroup support to kmem_cache_free_bulk
  workqueue: fix ghost PENDING flag while doing MQ IO
  x86/apic: Handle zero vector gracefully in clear_vector_irq()
  efi: Expose non-blocking set_variable() wrapper to efivars
  efi: Fix out-of-bounds read in variable_matches()
  IB/security: Restrict use of the write() interface
  IB/mlx5: Expose correct max_sge_rd limit
  cxl: Keep IRQ mappings on context teardown
  v4l2-dv-timings.h: fix polarity for 4k formats
  vb2-memops: Fix over allocation of frame vectors
  ASoC: rt5640: Correct the digital interface data select
  ASoC: dapm: Make sure we have a card when displaying component widgets
  ASoC: ssm4567: Reset device before regcache_sync()
  ASoC: s3c24xx: use const snd_soc_component_driver pointer
  EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder callback
  toshiba_acpi: Fix regression caused by hotkey enabling value
  i2c: exynos5: Fix possible ABBA deadlock by keeping I2C clock prepared
  i2c: cpm: Fix build break due to incompatible pointer types
  perf intel-pt: Fix segfault tracing transactions
  drm/i915: Use fw_domains_put_with_fifo() on HSW
  drm/i915: Fixup the free space logic in ring_prepare
  drm/amdkfd: uninitialized variable in dbgdev_wave_control_set_registers()
  drm/i915: skl_update_scaler() wants a rotation bitmask instead of bit number
  drm/i915: Cleanup phys status page too
  pwm: brcmstb: Fix check of devm_ioremap_resource() return code
  drm/dp/mst: Get validated port ref in drm_dp_update_payload_part1()
  drm/dp/mst: Restore primary hub guid on resume
  drm/dp/mst: Validate port in drm_dp_payload_send_msg()
  drm/nouveau/gr/gf100: select a stream master to fixup tfb offset queries
  drm: Loongson-3 doesn't fully support wc memory
  drm/radeon: fix vertical bars appear on monitor (v2)
  drm/radeon: forbid mapping of userptr bo through radeon device file
  drm/radeon: fix initial connector audio value
  drm/radeon: add a quirk for a XFX R9 270X
  drm/amdgpu: fix regression on CIK (v2)
  amdgpu/uvd: add uvd fw version for amdgpu
  drm/amdgpu: bump the afmt limit for CZ, ST, Polaris
  drm/amdgpu: use defines for CRTCs and AMFT blocks
  drm/amdgpu: when suspending, if uvd/vce was running. need to cancel delay work.
  iommu/dma: Restore scatterlist offsets correctly
  iommu/amd: Fix checking of pci dma aliases
  pinctrl: single: Fix pcs_parse_bits_in_pinctrl_entry to use __ffs than ffs
  pinctrl: mediatek: correct debounce time unit in mtk_gpio_set_debounce
  xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND"
  Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay
  Input: gtco - fix crash on detecting device without endpoints
  netlink: don't send NETLINK_URELEASE for unbound sockets
  nl80211: check netlink protocol in socket release notification
  powerpc: Update TM user feature bits in scan_features()
  powerpc: Update cpu_user_features2 in scan_features()
  powerpc: scan_features() updates incorrect bits for REAL_LE
  crypto: talitos - fix AEAD tcrypt tests
  crypto: talitos - fix crash in talitos_cra_init()
  crypto: sha1-mb - use corrcet pointer while completing jobs
  crypto: ccp - Prevent information leakage on export
  iwlwifi: mvm: fix memory leak in paging
  iwlwifi: pcie: lower the debug level for RSA semaphore access
  s390/pci: add extra padding to function measurement block
  cpufreq: intel_pstate: Fix processing for turbo activation ratio
  Revert "drm/amdgpu: disable runtime pm on PX laptops without dGPU power control"
  Revert "drm/radeon: disable runtime pm on PX laptops without dGPU power control"
  drm/i915: Fix race condition in intel_dp_destroy_mst_connector()
  drm/qxl: fix cursor position with non-zero hotspot
  drm/nouveau/core: use vzalloc for allocating ramht
  futex: Acknowledge a new waiter in counter before plist
  futex: Handle unlock_pi race gracefully
  asm-generic/futex: Re-enable preemption in futex_atomic_cmpxchg_inatomic()
  ALSA: hda - Add dock support for ThinkPad X260
  ALSA: pcxhr: Fix missing mutex unlock
  ALSA: hda - add PCI ID for Intel Broxton-T
  ALSA: hda - Keep powering up ADCs on Cirrus codecs
  ALSA: hda/realtek - Add ALC3234 headset mode for Optiplex 9020m
  ALSA: hda - Don't trust the reported actual power state
  x86 EDAC, sb_edac.c: Repair damage introduced when "fixing" channel address
  x86/mm/xen: Suppress hugetlbfs in PV guests
  arm64: Update PTE_RDONLY in set_pte_at() for PROT_NONE permission
  arm64: Honour !PTE_WRITE in set_pte_at() for kernel mappings
  sched/cgroup: Fix/cleanup cgroup teardown/init
  dmaengine: pxa_dma: fix the maximum requestor line
  dmaengine: hsu: correct use of channel status register
  dmaengine: dw: fix master selection
  debugfs: Make automount point inodes permanently empty
  lib: lz4: fixed zram with lz4 on big endian machines
  dm cache metadata: fix cmd_read_lock() acquiring write lock
  dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros
  usb: gadget: f_fs: Fix use-after-free
  usb: hcd: out of bounds access in for_each_companion
  xhci: fix 10 second timeout on removal of PCI hotpluggable xhci controllers
  usb: xhci: fix wild pointers in xhci_mem_cleanup
  xhci: resume USB 3 roothub first
  usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host
  assoc_array: don't call compare_object() on a node
  ARM: OMAP2+: hwmod: Fix updating of sysconfig register
  ARM: OMAP2: Fix up interconnect barrier initialization for DRA7
  ARM: mvebu: Correct unit address for linksys
  ARM: dts: AM43x-epos: Fix clk parent for synctimer
  KVM: arm/arm64: Handle forward time correction gracefully
  kvm: x86: do not leak guest xcr0 into host interrupt handlers
  x86/mce: Avoid using object after free in genpool
  block: loop: fix filesystem corruption in case of aio/dio
  block: partition: initialize percpuref before sending out KOBJ_ADD

Conflicts:
	arch/arm64/Kconfig
	arch/arm64/include/asm/cputype.h
	arch/arm64/include/asm/hardirq.h
	arch/arm64/include/asm/irq.h
	arch/arm64/include/asm/mmu_context.h
	arch/arm64/kernel/cpu_errata.c
	arch/arm64/kernel/cpuinfo.c
	arch/arm64/kernel/setup.c
	arch/arm64/kernel/smp.c
	arch/arm64/kernel/stacktrace.c
	arch/arm64/mm/init.c
	arch/arm64/mm/mmu.c
	arch/arm64/mm/pageattr.c
	mm/memcontrol.c

CRs-Fixed: 1069136
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
Change-Id: Ie9a16debd0578331a66947376f3b787a7bb54d65
2016-10-21 18:00:55 -07:00
Trilok Soni
5ab1e18aa3 Revert "Merge remote-tracking branch 'msm-4.4/tmp-510d0a3f' into msm-4.4"
This reverts commit 9d6fd2c3e9 ("Merge remote-tracking branch
'msm-4.4/tmp-510d0a3f' into msm-4.4"), because it breaks the
dump parsing tools due to kernel can be loaded anywhere in the memory
now and not fixed at linear mapping.

Change-Id: Id416f0a249d803442847d09ac47781147b0d0ee6
Signed-off-by: Trilok Soni <tsoni@codeaurora.org>
2016-08-26 14:34:05 -07:00
Trilok Soni
9d6fd2c3e9 Merge remote-tracking branch 'msm-4.4/tmp-510d0a3f' into msm-4.4
* msm-4.4/tmp-510d0a3f:
  Linux 4.4.11
  nf_conntrack: avoid kernel pointer value leak in slab name
  drm/radeon: fix DP link training issue with second 4K monitor
  drm/i915/bdw: Add missing delay during L3 SQC credit programming
  drm/i915: Bail out of pipe config compute loop on LPT
  drm/radeon: fix PLL sharing on DCE6.1 (v2)
  Revert "[media] videobuf2-v4l2: Verify planes array in buffer dequeueing"
  Input: max8997-haptic - fix NULL pointer dereference
  get_rock_ridge_filename(): handle malformed NM entries
  tools lib traceevent: Do not reassign parg after collapse_tree()
  qla1280: Don't allocate 512kb of host tags
  atomic_open(): fix the handling of create_error
  regulator: axp20x: Fix axp22x ldo_io voltage ranges
  regulator: s2mps11: Fix invalid selector mask and voltages for buck9
  workqueue: fix rebind bound workers warning
  ARM: dts: at91: sam9x5: Fix the memory range assigned to the PMC
  vfs: rename: check backing inode being equal
  vfs: add vfs_select_inode() helper
  perf/core: Disable the event on a truncated AUX record
  regmap: spmi: Fix regmap_spmi_ext_read in multi-byte case
  pinctrl: at91-pio4: fix pull-up/down logic
  spi: spi-ti-qspi: Handle truncated frames properly
  spi: spi-ti-qspi: Fix FLEN and WLEN settings if bits_per_word is overridden
  spi: pxa2xx: Do not detect number of enabled chip selects on Intel SPT
  ALSA: hda - Fix broken reconfig
  ALSA: hda - Fix white noise on Asus UX501VW headset
  ALSA: hda - Fix subwoofer pin on ASUS N751 and N551
  ALSA: usb-audio: Yet another Phoneix Audio device quirk
  ALSA: usb-audio: Quirk for yet another Phoenix Audio devices (v2)
  crypto: testmgr - Use kmalloc memory for RSA input
  crypto: hash - Fix page length clamping in hash walk
  crypto: qat - fix invalid pf2vf_resp_wq logic
  s390/mm: fix asce_bits handling with dynamic pagetable levels
  zsmalloc: fix zs_can_compact() integer overflow
  ocfs2: fix posix_acl_create deadlock
  ocfs2: revert using ocfs2_acl_chmod to avoid inode cluster lock hang
  net/route: enforce hoplimit max value
  tcp: refresh skb timestamp at retransmit time
  net: thunderx: avoid exposing kernel stack
  net: fix a kernel infoleak in x25 module
  uapi glibc compat: fix compile errors when glibc net/if.h included before linux/if.h MIME-Version: 1.0
  bridge: fix igmp / mld query parsing
  net: bridge: fix old ioctl unlocked net device walk
  VSOCK: do not disconnect socket when peer has shutdown SEND only
  net/mlx4_en: Fix endianness bug in IPV6 csum calculation
  net: fix infoleak in rtnetlink
  net: fix infoleak in llc
  net: fec: only clear a queue's work bit if the queue was emptied
  netem: Segment GSO packets on enqueue
  sch_dsmark: update backlog as well
  sch_htb: update backlog as well
  net_sched: update hierarchical backlog too
  net_sched: introduce qdisc_replace() helper
  gre: do not pull header in ICMP error processing
  net: Implement net_dbg_ratelimited() for CONFIG_DYNAMIC_DEBUG case
  samples/bpf: fix trace_output example
  bpf: fix check_map_func_compatibility logic
  bpf: fix refcnt overflow
  bpf: fix double-fdput in replace_map_fd_with_map_ptr()
  net/mlx4_en: fix spurious timestamping callbacks
  ipv4/fib: don't warn when primary address is missing if in_dev is dead
  net/mlx5e: Fix minimum MTU
  net/mlx5e: Device's mtu field is u16 and not int
  openvswitch: use flow protocol when recalculating ipv6 checksums
  atl2: Disable unimplemented scatter/gather feature
  vlan: pull on __vlan_insert_tag error path and fix csum correction
  net: use skb_postpush_rcsum instead of own implementations
  cdc_mbim: apply "NDP to end" quirk to all Huawei devices
  bpf/verifier: reject invalid LD_ABS | BPF_DW instruction
  net: sched: do not requeue a NULL skb
  packet: fix heap info leak in PACKET_DIAG_MCLIST sock_diag interface
  route: do not cache fib route info on local routes with oif
  decnet: Do not build routes to devices without decnet private data.
  parisc: Use generic extable search and sort routines
  arm64: kasan: Use actual memory node when populating the kernel image shadow
  arm64: mm: treat memstart_addr as a signed quantity
  arm64: lse: deal with clobbered IP registers after branch via PLT
  arm64: mm: check at build time that PAGE_OFFSET divides the VA space evenly
  arm64: kasan: Fix zero shadow mapping overriding kernel image shadow
  arm64: consistently use p?d_set_huge
  arm64: fix KASLR boot-time I-cache maintenance
  arm64: hugetlb: partial revert of 66b3923a1a0f
  arm64: make irq_stack_ptr more robust
  arm64: efi: invoke EFI_RNG_PROTOCOL to supply KASLR randomness
  efi: stub: use high allocation for converted command line
  efi: stub: add implementation of efi_random_alloc()
  efi: stub: implement efi_get_random_bytes() based on EFI_RNG_PROTOCOL
  arm64: kaslr: randomize the linear region
  arm64: add support for kernel ASLR
  arm64: add support for building vmlinux as a relocatable PIE binary
  arm64: switch to relative exception tables
  extable: add support for relative extables to search and sort routines
  scripts/sortextable: add support for ET_DYN binaries
  arm64: futex.h: Add missing PAN toggling
  arm64: make asm/elf.h available to asm files
  arm64: avoid dynamic relocations in early boot code
  arm64: avoid R_AARCH64_ABS64 relocations for Image header fields
  arm64: add support for module PLTs
  arm64: move brk immediate argument definitions to separate header
  arm64: mm: use bit ops rather than arithmetic in pa/va translations
  arm64: mm: only perform memstart_addr sanity check if DEBUG_VM
  arm64: User die() instead of panic() in do_page_fault()
  arm64: allow kernel Image to be loaded anywhere in physical memory
  arm64: defer __va translation of initrd_start and initrd_end
  arm64: move kernel image to base of vmalloc area
  arm64: kvm: deal with kernel symbols outside of linear mapping
  arm64: decouple early fixmap init from linear mapping
  arm64: pgtable: implement static [pte|pmd|pud]_offset variants
  arm64: introduce KIMAGE_VADDR as the virtual base of the kernel region
  arm64: add support for ioremap() block mappings
  arm64: prevent potential circular header dependencies in asm/bug.h
  of/fdt: factor out assignment of initrd_start/initrd_end
  of/fdt: make memblock minimum physical address arch configurable
  arm64: Remove the get_thread_info() function
  arm64: kernel: Don't toggle PAN on systems with UAO
  arm64: cpufeature: Test 'matches' pointer to find the end of the list
  arm64: kernel: Add support for User Access Override
  arm64: add ARMv8.2 id_aa64mmfr2 boiler plate
  arm64: cpufeature: Change read_cpuid() to use sysreg's mrs_s macro
  arm64: use local label prefixes for __reg_num symbols
  arm64: vdso: Mark vDSO code as read-only
  arm64: ubsan: select ARCH_HAS_UBSAN_SANITIZE_ALL
  arm64: ptdump: Indicate whether memory should be faulting
  arm64: Add support for ARCH_SUPPORTS_DEBUG_PAGEALLOC
  arm64: Drop alloc function from create_mapping
  arm64: prefetch: add missing #include for spin_lock_prefetch
  arm64: lib: patch in prfm for copy_page if requested
  arm64: lib: improve copy_page to deal with 128 bytes at a time
  arm64: prefetch: add alternative pattern for CPUs without a prefetcher
  arm64: prefetch: don't provide spin_lock_prefetch with LSE
  arm64: allow vmalloc regions to be set with set_memory_*
  arm64: kernel: implement ACPI parking protocol
  arm64: mm: create new fine-grained mappings at boot
  arm64: ensure _stext and _etext are page-aligned
  arm64: mm: allow passing a pgdir to alloc_init_*
  arm64: mm: allocate pagetables anywhere
  arm64: mm: use fixmap when creating page tables
  arm64: mm: add functions to walk tables in fixmap
  arm64: mm: add __{pud,pgd}_populate
  arm64: mm: avoid redundant __pa(__va(x))
  arm64: mm: add functions to walk page tables by PA
  arm64: mm: move pte_* macros
  arm64: kasan: avoid TLB conflicts
  arm64: mm: add code to safely replace TTBR1_EL1
  arm64: add function to install the idmap
  arm64: unmap idmap earlier
  arm64: unify idmap removal
  arm64: mm: place empty_zero_page in bss
  arm64: mm: specialise pagetable allocators
  asm-generic: Fix local variable shadow in __set_fixmap_offset
  Eliminate the .eh_frame sections from the aarch64 vmlinux and kernel modules
  arm64: Fix an enum typo in mm/dump.c
  arm64: kasan: ensure that the KASAN zero page is mapped read-only
  arch/arm64/include/asm/pgtable.h: add pmd_mkclean for THP
  arm64: hide __efistub_ aliases from kallsyms
  Linux 4.4.10
  drm/i915/skl: Fix DMC load on Skylake J0 and K0
  lib/test-string_helpers.c: fix and improve string_get_size() tests
  ACPI / processor: Request native thermal interrupt handling via _OSC
  drm/i915: Fake HDMI live status
  drm/i915: Make RPS EI/thresholds multiple of 25 on SNB-BDW
  drm/i915: Fix eDP low vswing for Broadwell
  drm/i915/ddi: Fix eDP VDD handling during booting and suspend/resume
  drm/radeon: make sure vertical front porch is at least 1
  iio: ak8975: fix maybe-uninitialized warning
  iio: ak8975: Fix NULL pointer exception on early interrupt
  drm/amdgpu: set metadata pointer to NULL after freeing.
  drm/amdgpu: make sure vertical front porch is at least 1
  gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading
  nvmem: mxs-ocotp: fix buffer overflow in read
  USB: serial: cp210x: add Straizona Focusers device ids
  USB: serial: cp210x: add ID for Link ECU
  ata: ahci-platform: Add ports-implemented DT bindings.
  libahci: save port map for forced port map
  powerpc: Fix bad inline asm constraint in create_zero_mask()
  ACPICA: Dispatcher: Update thread ID for recursive method calls
  x86/sysfb_efi: Fix valid BAR address range check
  ARC: Add missing io barriers to io{read,write}{16,32}be()
  ARM: cpuidle: Pass on arm_cpuidle_suspend()'s return value
  propogate_mnt: Handle the first propogated copy being a slave
  fs/pnode.c: treat zero mnt_group_id-s as unequal
  x86/tsc: Read all ratio bits from MSR_PLATFORM_INFO
  MAINTAINERS: Remove asterisk from EFI directory names
  writeback: Fix performance regression in wb_over_bg_thresh()
  batman-adv: Reduce refcnt of removed router when updating route
  batman-adv: Fix broadcast/ogm queue limit on a removed interface
  batman-adv: Check skb size before using encapsulated ETH+VLAN header
  batman-adv: fix DAT candidate selection (must use vid)
  mm: update min_free_kbytes from khugepaged after core initialization
  proc: prevent accessing /proc/<PID>/environ until it's ready
  Input: zforce_ts - fix dual touch recognition
  HID: Fix boot delay for Creative SB Omni Surround 5.1 with quirk
  HID: wacom: Add support for DTK-1651
  xen/evtchn: fix ring resize when binding new events
  xen/balloon: Fix crash when ballooning on x86 32 bit PAE
  xen: Fix page <-> pfn conversion on 32 bit systems
  ARM: SoCFPGA: Fix secondary CPU startup in thumb2 kernel
  ARM: EXYNOS: Properly skip unitialized parent clock in power domain on
  mm/zswap: provide unique zpool name
  mm, cma: prevent nr_isolated_* counters from going negative
  Minimal fix-up of bad hashing behavior of hash_64()
  MD: make bio mergeable
  tracing: Don't display trigger file for events that can't be enabled
  mac80211: fix statistics leak if dev_alloc_name() fails
  ath9k: ar5008_hw_cmn_spur_mitigate: add missing mask_m & mask_p initialisation
  lpfc: fix misleading indentation
  clk: qcom: msm8960: Fix ce3_src register offset
  clk: versatile: sp810: support reentrance
  clk: qcom: msm8960: fix ce3_core clk enable register
  clk: meson: Fix meson_clk_register_clks() signature type mismatch
  clk: rockchip: free memory in error cases when registering clock branches
  soc: rockchip: power-domain: fix err handle while probing
  clk-divider: make sure read-only dividers do not write to their register
  CNS3xxx: Fix PCI cns3xxx_write_config()
  mwifiex: fix corner case association failure
  ata: ahci_xgene: dereferencing uninitialized pointer in probe
  nbd: ratelimit error msgs after socket close
  mfd: intel-lpss: Remove clock tree on error path
  ipvs: drop first packet to redirect conntrack
  ipvs: correct initial offset of Call-ID header search in SIP persistence engine
  ipvs: handle ip_vs_fill_iph_skb_off failure
  RDMA/iw_cxgb4: Fix bar2 virt addr calculation for T4 chips
  Revert: "powerpc/tm: Check for already reclaimed tasks"
  arm64: head.S: use memset to clear BSS
  efi: stub: define DISABLE_BRANCH_PROFILING for all architectures
  arm64: entry: remove pointless SPSR mode check
  arm64: mm: move pgd_cache initialisation to pgtable_cache_init
  arm64: module: avoid undefined shift behavior in reloc_data()
  arm64: module: fix relocation of movz instruction with negative immediate
  arm64: traps: address fallout from printk -> pr_* conversion
  arm64: ftrace: fix a stack tracer's output under function graph tracer
  arm64: pass a task parameter to unwind_frame()
  arm64: ftrace: modify a stack frame in a safe way
  arm64: remove irq_count and do_softirq_own_stack()
  arm64: hugetlb: add support for PTE contiguous bit
  arm64: Use PoU cache instr for I/D coherency
  arm64: Defer dcache flush in __cpu_copy_user_page
  arm64: reduce stack use in irq_handler
  arm64: Documentation: add list of software workarounds for errata
  arm64: mm: place __cpu_setup in .text
  arm64: cmpxchg: Don't incldue linux/mmdebug.h
  arm64: mm: fold alternatives into .init
  arm64: Remove redundant padding from linker script
  arm64: mm: remove pointless PAGE_MASKing
  arm64: don't call C code with el0's fp register
  arm64: when walking onto the task stack, check sp & fp are in current->stack
  arm64: Add this_cpu_ptr() assembler macro for use in entry.S
  arm64: irq: fix walking from irq stack to task stack
  arm64: Add do_softirq_own_stack() and enable irq_stacks
  arm64: Modify stack trace and dump for use with irq_stack
  arm64: Store struct thread_info in sp_el0
  arm64: Add trace_hardirqs_off annotation in ret_to_user
  arm64: ftrace: fix the comments for ftrace_modify_code
  arm64: ftrace: stop using kstop_machine to enable/disable tracing
  arm64: spinlock: serialise spin_unlock_wait against concurrent lockers
  arm64: enable HAVE_IRQ_TIME_ACCOUNTING
  arm64: fix COMPAT_SHMLBA definition for large pages
  arm64: add __init/__initdata section marker to some functions/variables
  arm64: pgtable: implement pte_accessible()
  arm64: mm: allow sections for unaligned bases
  arm64: mm: detect bad __create_mapping uses
  Linux 4.4.9
  extcon: max77843: Use correct size for reading the interrupt register
  stm class: Select CONFIG_SRCU
  megaraid_sas: add missing curly braces in ioctl handler
  sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a race
  thermal: rockchip: fix a impossible condition caused by the warning
  unbreak allmodconfig KCONFIG_ALLCONFIG=...
  jme: Fix device PM wakeup API usage
  jme: Do not enable NIC WoL functions on S0
  bus: imx-weim: Take the 'status' property value into account
  ARM: dts: pxa: fix dma engine node to pxa3xx-nand
  ARM: dts: armada-375: use armada-370-sata for SATA
  ARM: EXYNOS: select THERMAL_OF
  ARM: prima2: always enable reset controller
  ARM: OMAP3: Add cpuidle parameters table for omap3430
  ext4: fix races of writeback with punch hole and zero range
  ext4: fix races between buffered IO and collapse / insert range
  ext4: move unlocked dio protection from ext4_alloc_file_blocks()
  ext4: fix races between page faults and hole punching
  perf stat: Document --detailed option
  perf tools: handle spaces in file names obtained from /proc/pid/maps
  perf hists browser: Only offer symbol scripting when a symbol is under the cursor
  mtd: nand: Drop mtd.owner requirement in nand_scan
  mtd: brcmnand: Fix v7.1 register offsets
  mtd: spi-nor: remove micron_quad_enable()
  serial: sh-sci: Remove cpufreq notifier to fix crash/deadlock
  ext4: fix NULL pointer dereference in ext4_mark_inode_dirty()
  x86/mm/kmmio: Fix mmiotrace for hugepages
  perf evlist: Reference count the cpu and thread maps at set_maps()
  drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors
  rtc: max77686: Properly handle regmap_irq_get_virq() error code
  rtc: rx8025: remove rv8803 id
  rtc: ds1685: passing bogus values to irq_restore
  rtc: vr41xx: Wire up alarm_irq_enable
  rtc: hym8563: fix invalid year calculation
  PM / Domains: Fix removal of a subdomain
  PM / OPP: Initialize u_volt_min/max to a valid value
  misc: mic/scif: fix wrap around tests
  misc/bmp085: Enable building as a module
  lib/mpi: Endianness fix
  fbdev: da8xx-fb: fix videomodes of lcd panels
  scsi_dh: force modular build if SCSI is a module
  paride: make 'verbose' parameter an 'int' again
  regulator: s5m8767: fix get_register() error handling
  irqchip/mxs: Fix error check of of_io_request_and_map()
  irqchip/sunxi-nmi: Fix error check of of_io_request_and_map()
  spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs
  locking/mcs: Fix mcs_spin_lock() ordering
  regulator: core: Fix nested locking of supplies
  regulator: core: Ensure we lock all regulators
  regulator: core: fix regulator_lock_supply regression
  Revert "regulator: core: Fix nested locking of supplies"
  videobuf2-v4l2: Verify planes array in buffer dequeueing
  videobuf2-core: Check user space planes array in dqbuf
  USB: usbip: fix potential out-of-bounds write
  cgroup: make sure a parent css isn't freed before its children
  mm/hwpoison: fix wrong num_poisoned_pages accounting
  mm: vmscan: reclaim highmem zone if buffer_heads is over limit
  numa: fix /proc/<pid>/numa_maps for THP
  mm/huge_memory: replace VM_NO_THP VM_BUG_ON with actual VMA check
  memcg: relocate charge moving from ->attach to ->post_attach
  cgroup, cpuset: replace cpuset_post_attach_flush() with cgroup_subsys->post_attach callback
  slub: clean up code for kmem cgroup support to kmem_cache_free_bulk
  workqueue: fix ghost PENDING flag while doing MQ IO
  x86/apic: Handle zero vector gracefully in clear_vector_irq()
  efi: Expose non-blocking set_variable() wrapper to efivars
  efi: Fix out-of-bounds read in variable_matches()
  IB/security: Restrict use of the write() interface
  IB/mlx5: Expose correct max_sge_rd limit
  cxl: Keep IRQ mappings on context teardown
  v4l2-dv-timings.h: fix polarity for 4k formats
  vb2-memops: Fix over allocation of frame vectors
  ASoC: rt5640: Correct the digital interface data select
  ASoC: dapm: Make sure we have a card when displaying component widgets
  ASoC: ssm4567: Reset device before regcache_sync()
  ASoC: s3c24xx: use const snd_soc_component_driver pointer
  EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder callback
  toshiba_acpi: Fix regression caused by hotkey enabling value
  i2c: exynos5: Fix possible ABBA deadlock by keeping I2C clock prepared
  i2c: cpm: Fix build break due to incompatible pointer types
  perf intel-pt: Fix segfault tracing transactions
  drm/i915: Use fw_domains_put_with_fifo() on HSW
  drm/i915: Fixup the free space logic in ring_prepare
  drm/amdkfd: uninitialized variable in dbgdev_wave_control_set_registers()
  drm/i915: skl_update_scaler() wants a rotation bitmask instead of bit number
  drm/i915: Cleanup phys status page too
  pwm: brcmstb: Fix check of devm_ioremap_resource() return code
  drm/dp/mst: Get validated port ref in drm_dp_update_payload_part1()
  drm/dp/mst: Restore primary hub guid on resume
  drm/dp/mst: Validate port in drm_dp_payload_send_msg()
  drm/nouveau/gr/gf100: select a stream master to fixup tfb offset queries
  drm: Loongson-3 doesn't fully support wc memory
  drm/radeon: fix vertical bars appear on monitor (v2)
  drm/radeon: forbid mapping of userptr bo through radeon device file
  drm/radeon: fix initial connector audio value
  drm/radeon: add a quirk for a XFX R9 270X
  drm/amdgpu: fix regression on CIK (v2)
  amdgpu/uvd: add uvd fw version for amdgpu
  drm/amdgpu: bump the afmt limit for CZ, ST, Polaris
  drm/amdgpu: use defines for CRTCs and AMFT blocks
  drm/amdgpu: when suspending, if uvd/vce was running. need to cancel delay work.
  iommu/dma: Restore scatterlist offsets correctly
  iommu/amd: Fix checking of pci dma aliases
  pinctrl: single: Fix pcs_parse_bits_in_pinctrl_entry to use __ffs than ffs
  pinctrl: mediatek: correct debounce time unit in mtk_gpio_set_debounce
  xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND"
  Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay
  Input: gtco - fix crash on detecting device without endpoints
  netlink: don't send NETLINK_URELEASE for unbound sockets
  nl80211: check netlink protocol in socket release notification
  powerpc: Update TM user feature bits in scan_features()
  powerpc: Update cpu_user_features2 in scan_features()
  powerpc: scan_features() updates incorrect bits for REAL_LE
  crypto: talitos - fix AEAD tcrypt tests
  crypto: talitos - fix crash in talitos_cra_init()
  crypto: sha1-mb - use corrcet pointer while completing jobs
  crypto: ccp - Prevent information leakage on export
  iwlwifi: mvm: fix memory leak in paging
  iwlwifi: pcie: lower the debug level for RSA semaphore access
  s390/pci: add extra padding to function measurement block
  cpufreq: intel_pstate: Fix processing for turbo activation ratio
  Revert "drm/amdgpu: disable runtime pm on PX laptops without dGPU power control"
  Revert "drm/radeon: disable runtime pm on PX laptops without dGPU power control"
  drm/i915: Fix race condition in intel_dp_destroy_mst_connector()
  drm/qxl: fix cursor position with non-zero hotspot
  drm/nouveau/core: use vzalloc for allocating ramht
  futex: Acknowledge a new waiter in counter before plist
  futex: Handle unlock_pi race gracefully
  asm-generic/futex: Re-enable preemption in futex_atomic_cmpxchg_inatomic()
  ALSA: hda - Add dock support for ThinkPad X260
  ALSA: pcxhr: Fix missing mutex unlock
  ALSA: hda - add PCI ID for Intel Broxton-T
  ALSA: hda - Keep powering up ADCs on Cirrus codecs
  ALSA: hda/realtek - Add ALC3234 headset mode for Optiplex 9020m
  ALSA: hda - Don't trust the reported actual power state
  x86 EDAC, sb_edac.c: Repair damage introduced when "fixing" channel address
  x86/mm/xen: Suppress hugetlbfs in PV guests
  arm64: Update PTE_RDONLY in set_pte_at() for PROT_NONE permission
  arm64: Honour !PTE_WRITE in set_pte_at() for kernel mappings
  sched/cgroup: Fix/cleanup cgroup teardown/init
  dmaengine: pxa_dma: fix the maximum requestor line
  dmaengine: hsu: correct use of channel status register
  dmaengine: dw: fix master selection
  debugfs: Make automount point inodes permanently empty
  lib: lz4: fixed zram with lz4 on big endian machines
  dm cache metadata: fix cmd_read_lock() acquiring write lock
  dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros
  usb: gadget: f_fs: Fix use-after-free
  usb: hcd: out of bounds access in for_each_companion
  xhci: fix 10 second timeout on removal of PCI hotpluggable xhci controllers
  usb: xhci: fix wild pointers in xhci_mem_cleanup
  xhci: resume USB 3 roothub first
  usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host
  assoc_array: don't call compare_object() on a node
  ARM: OMAP2+: hwmod: Fix updating of sysconfig register
  ARM: OMAP2: Fix up interconnect barrier initialization for DRA7
  ARM: mvebu: Correct unit address for linksys
  ARM: dts: AM43x-epos: Fix clk parent for synctimer
  KVM: arm/arm64: Handle forward time correction gracefully
  kvm: x86: do not leak guest xcr0 into host interrupt handlers
  x86/mce: Avoid using object after free in genpool
  block: loop: fix filesystem corruption in case of aio/dio
  block: partition: initialize percpuref before sending out KOBJ_ADD

Conflicts:
	arch/arm64/Kconfig
	arch/arm64/include/asm/cputype.h
	arch/arm64/include/asm/hardirq.h
	arch/arm64/include/asm/irq.h
	arch/arm64/kernel/cpu_errata.c
	arch/arm64/kernel/cpuinfo.c
	arch/arm64/kernel/setup.c
	arch/arm64/kernel/smp.c
	arch/arm64/kernel/stacktrace.c
	arch/arm64/mm/init.c
	arch/arm64/mm/mmu.c
	arch/arm64/mm/pageattr.c
	mm/memcontrol.c

CRs-Fixed: 1054234
Signed-off-by: Trilok Soni <tsoni@codeaurora.org>
Change-Id: I2a7a34631ffee36ce18b9171f16d023be777392f
2016-08-18 14:50:45 -07:00
Runmin Wang
750075feff Merge remote-tracking branch 'origin/tmp-917a9a9133a6' into lsk
* tmp-917a9:
  ARM/vdso: Mark the vDSO code read-only after init
  x86/vdso: Mark the vDSO code read-only after init
  lkdtm: Verify that '__ro_after_init' works correctly
  arch: Introduce post-init read-only memory
  x86/mm: Always enable CONFIG_DEBUG_RODATA and remove the Kconfig option
  mm/init: Add 'rodata=off' boot cmdline parameter to disable read-only kernel mappings
  asm-generic: Consolidate mark_rodata_ro()
  Linux 4.4.6
  ld-version: Fix awk regex compile failure
  target: Drop incorrect ABORT_TASK put for completed commands
  block: don't optimize for non-cloned bio in bio_get_last_bvec()
  MIPS: smp.c: Fix uninitialised temp_foreign_map
  MIPS: Fix build error when SMP is used without GIC
  ovl: fix getcwd() failure after unsuccessful rmdir
  ovl: copy new uid/gid into overlayfs runtime inode
  userfaultfd: don't block on the last VM updates at exit time
  powerpc/powernv: Fix OPAL_CONSOLE_FLUSH prototype and usages
  powerpc/powernv: Add a kmsg_dumper that flushes console output on panic
  powerpc: Fix dedotify for binutils >= 2.26
  Revert "drm/radeon/pm: adjust display configuration after powerstate"
  drm/radeon: Fix error handling in radeon_flip_work_func.
  drm/amdgpu: Fix error handling in amdgpu_flip_work_func.
  Revert "drm/radeon: call hpd_irq_event on resume"
  x86/mm: Fix slow_virt_to_phys() for X86_PAE again
  gpu: ipu-v3: Do not bail out on missing optional port nodes
  mac80211: Fix Public Action frame RX in AP mode
  mac80211: check PN correctly for GCMP-encrypted fragmented MPDUs
  mac80211: minstrel_ht: fix a logic error in RTS/CTS handling
  mac80211: minstrel_ht: set default tx aggregation timeout to 0
  mac80211: fix use of uninitialised values in RX aggregation
  mac80211: minstrel: Change expected throughput unit back to Kbps
  iwlwifi: mvm: inc pending frames counter also when txing non-sta
  can: gs_usb: fixed disconnect bug by removing erroneous use of kfree()
  cfg80211/wext: fix message ordering
  wext: fix message delay/ordering
  ovl: fix working on distributed fs as lower layer
  ovl: ignore lower entries when checking purity of non-directory entries
  ASoC: wm8958: Fix enum ctl accesses in a wrong type
  ASoC: wm8994: Fix enum ctl accesses in a wrong type
  ASoC: samsung: Use IRQ safe spin lock calls
  ASoC: dapm: Fix ctl value accesses in a wrong type
  ncpfs: fix a braino in OOM handling in ncp_fill_cache()
  jffs2: reduce the breakage on recovery from halfway failed rename()
  dmaengine: at_xdmac: fix residue computation
  tracing: Fix check for cpu online when event is disabled
  s390/dasd: fix diag 0x250 inline assembly
  s390/mm: four page table levels vs. fork
  KVM: MMU: fix reserved bit check for ept=0/CR0.WP=0/CR4.SMEP=1/EFER.NX=0
  KVM: MMU: fix ept=0/pte.u=1/pte.w=0/CR0.WP=0/CR4.SMEP=1/EFER.NX=0 combo
  KVM: PPC: Book3S HV: Sanitize special-purpose register values on guest exit
  KVM: s390: correct fprs on SIGP (STOP AND) STORE STATUS
  KVM: VMX: disable PEBS before a guest entry
  kvm: cap halt polling at exactly halt_poll_ns
  PCI: Allow a NULL "parent" pointer in pci_bus_assign_domain_nr()
  ARM: OMAP2+: hwmod: Introduce ti,no-idle dt property
  ARM: dts: dra7: do not gate cpsw clock due to errata i877
  ARM: mvebu: fix overlap of Crypto SRAM with PCIe memory window
  arm64: account for sparsemem section alignment when choosing vmemmap offset
  Linux 4.4.5
  drm/amdgpu: fix topaz/tonga gmc assignment in 4.4 stable
  modules: fix longstanding /proc/kallsyms vs module insertion race.
  drm/i915: refine qemu south bridge detection
  drm/i915: more virtual south bridge detection
  block: get the 1st and last bvec via helpers
  block: check virt boundary in bio_will_gap()
  drm/amdgpu: Use drm_calloc_large for VM page_tables array
  thermal: cpu_cooling: fix out of bounds access in time_in_idle
  i2c: brcmstb: allocate correct amount of memory for regmap
  ubi: Fix out of bounds write in volume update code
  cxl: Fix PSL timebase synchronization detection
  MIPS: traps: Fix SIGFPE information leak from `do_ov' and `do_trap_or_bp'
  MIPS: scache: Fix scache init with invalid line size.
  USB: serial: option: add support for Quectel UC20
  USB: serial: option: add support for Telit LE922 PID 0x1045
  USB: qcserial: add Sierra Wireless EM74xx device ID
  USB: qcserial: add Dell Wireless 5809e Gobi 4G HSPA+ (rev3)
  USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder
  usb: chipidea: otg: change workqueue ci_otg as freezable
  ALSA: timer: Fix broken compat timer user status ioctl
  ALSA: hdspm: Fix zero-division
  ALSA: hdsp: Fix wrong boolean ctl value accesses
  ALSA: hdspm: Fix wrong boolean ctl value accesses
  ALSA: seq: oss: Don't drain at closing a client
  ALSA: pcm: Fix ioctls for X32 ABI
  ALSA: timer: Fix ioctls for X32 ABI
  ALSA: rawmidi: Fix ioctls X32 ABI
  ALSA: hda - Fix mic issues on Acer Aspire E1-472
  ALSA: ctl: Fix ioctls for X32 ABI
  ALSA: usb-audio: Add a quirk for Plantronics DA45
  adv7604: fix tx 5v detect regression
  dmaengine: pxa_dma: fix cyclic transfers
  Fix directory hardlinks from deleted directories
  jffs2: Fix page lock / f->sem deadlock
  Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin"
  Btrfs: fix loading of orphan roots leading to BUG_ON
  pata-rb532-cf: get rid of the irq_to_gpio() call
  tracing: Do not have 'comm' filter override event 'comm' field
  ata: ahci: don't mark HotPlugCapable Ports as external/removable
  PM / sleep / x86: Fix crash on graph trace through x86 suspend
  arm64: vmemmap: use virtual projection of linear region
  Adding Intel Lewisburg device IDs for SATA
  writeback: flush inode cgroup wb switches instead of pinning super_block
  block: bio: introduce helpers to get the 1st and last bvec
  libata: Align ata_device's id on a cacheline
  libata: fix HDIO_GET_32BIT ioctl
  drm/amdgpu: return from atombios_dp_get_dpcd only when error
  drm/amdgpu/gfx8: specify which engine to wait before vm flush
  drm/amdgpu: apply gfx_v8 fixes to gfx_v7 as well
  drm/amdgpu/pm: update current crtc info after setting the powerstate
  drm/radeon/pm: update current crtc info after setting the powerstate
  drm/ast: Fix incorrect register check for DRAM width
  target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors
  iommu/vt-d: Use BUS_NOTIFY_REMOVED_DEVICE in hotplug path
  iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered
  iommu/amd: Apply workaround for ATS write permission check
  arm/arm64: KVM: Fix ioctl error handling
  KVM: x86: fix root cause for missed hardware breakpoints
  vfio: fix ioctl error handling
  Fix cifs_uniqueid_to_ino_t() function for s390x
  CIFS: Fix SMB2+ interim response processing for read requests
  cifs: fix out-of-bounds access in lease parsing
  fbcon: set a default value to blink interval
  kvm: x86: Update tsc multiplier on change.
  mips/kvm: fix ioctl error handling
  parisc: Fix ptrace syscall number and return value modification
  PCI: keystone: Fix MSI code that retrieves struct pcie_port pointer
  block: Initialize max_dev_sectors to 0
  drm/amdgpu: mask out WC from BO on unsupported arches
  btrfs: async-thread: Fix a use-after-free error for trace
  btrfs: Fix no_space in write and rm loop
  Btrfs: fix deadlock running delayed iputs at transaction commit time
  drivers: sh: Restore legacy clock domain on SuperH platforms
  use ->d_seq to get coherency between ->d_inode and ->d_flags
  Linux 4.4.4
  iwlwifi: mvm: don't allow sched scans without matches to be started
  iwlwifi: update and fix 7265 series PCI IDs
  iwlwifi: pcie: properly configure the debug buffer size for 8000
  iwlwifi: dvm: fix WoWLAN
  security: let security modules use PTRACE_MODE_* with bitmasks
  IB/cma: Fix RDMA port validation for iWarp
  x86/irq: Plug vector cleanup race
  x86/irq: Call irq_force_move_complete with irq descriptor
  x86/irq: Remove outgoing CPU from vector cleanup mask
  x86/irq: Remove the cpumask allocation from send_cleanup_vector()
  x86/irq: Clear move_in_progress before sending cleanup IPI
  x86/irq: Remove offline cpus from vector cleanup
  x86/irq: Get rid of code duplication
  x86/irq: Copy vectormask instead of an AND operation
  x86/irq: Check vector allocation early
  x86/irq: Reorganize the search in assign_irq_vector
  x86/irq: Reorganize the return path in assign_irq_vector
  x86/irq: Do not use apic_chip_data.old_domain as temporary buffer
  x86/irq: Validate that irq descriptor is still active
  x86/irq: Fix a race in x86_vector_free_irqs()
  x86/irq: Call chip->irq_set_affinity in proper context
  x86/entry/compat: Add missing CLAC to entry_INT80_32
  x86/mpx: Fix off-by-one comparison with nr_registers
  hpfs: don't truncate the file when delete fails
  do_last(): ELOOP failure exit should be done after leaving RCU mode
  should_follow_link(): validate ->d_seq after having decided to follow
  xen/pcifront: Fix mysterious crashes when NUMA locality information was extracted.
  xen/pciback: Save the number of MSI-X entries to be copied later.
  xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY
  xen/scsiback: correct frontend counting
  xen/arm: correctly handle DMA mapping of compound pages
  ARM: at91/dt: fix typo in sama5d2 pinmux descriptions
  ARM: OMAP2+: Fix onenand initialization to avoid filesystem corruption
  do_last(): don't let a bogus return value from ->open() et.al. to confuse us
  kernel/resource.c: fix muxed resource handling in __request_region()
  sunrpc/cache: fix off-by-one in qword_get()
  tracing: Fix showing function event in available_events
  powerpc/eeh: Fix partial hotplug criterion
  KVM: x86: MMU: fix ubsan index-out-of-range warning
  KVM: x86: fix conversion of addresses to linear in 32-bit protected mode
  KVM: x86: fix missed hardware breakpoints
  KVM: arm/arm64: vgic: Ensure bitmaps are long enough
  KVM: async_pf: do not warn on page allocation failures
  of/irq: Fix msi-map calculation for nonzero rid-base
  NFSv4: Fix a dentry leak on alias use
  nfs: fix nfs_size_to_loff_t
  block: fix use-after-free in dio_bio_complete
  bio: return EINTR if copying to user space got interrupted
  i2c: i801: Adding Intel Lewisburg support for iTCO
  phy: core: fix wrong err handle for phy_power_on
  writeback: keep superblock pinned during cgroup writeback association switches
  cgroup: make sure a parent css isn't offlined before its children
  cpuset: make mm migration asynchronous
  PCI/AER: Flush workqueue on device remove to avoid use-after-free
  ARCv2: SMP: Emulate IPI to self using software triggered interrupt
  ARCv2: STAR 9000950267: Handle return from intr to Delay Slot #2
  libata: fix sff host state machine locking while polling
  qla2xxx: Fix stale pointer access.
  spi: atmel: fix gpio chip-select in case of non-DT platform
  target: Fix race with SCF_SEND_DELAYED_TAS handling
  target: Fix remote-port TMR ABORT + se_cmd fabric stop
  target: Fix TAS handling for multi-session se_node_acls
  target: Fix LUN_RESET active TMR descriptor handling
  target: Fix LUN_RESET active I/O handling for ACK_KREF
  ALSA: hda - Fixing background noise on Dell Inspiron 3162
  ALSA: hda - Apply clock gate workaround to Skylake, too
  Revert "workqueue: make sure delayed work run in local cpu"
  workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup
  mac80211: Requeue work after scan complete for all VIF types.
  rfkill: fix rfkill_fop_read wait_event usage
  tick/nohz: Set the correct expiry when switching to nohz/lowres mode
  perf stat: Do not clean event's private stats
  cdc-acm:exclude Samsung phone 04e8:685d
  Revert "Staging: panel: usleep_range is preferred over udelay"
  Staging: speakup: Fix getting port information
  sd: Optimal I/O size is in bytes, not sectors
  libceph: don't spam dmesg with stray reply warnings
  libceph: use the right footer size when skipping a message
  libceph: don't bail early from try_read() when skipping a message
  libceph: fix ceph_msg_revoke()
  seccomp: always propagate NO_NEW_PRIVS on tsync
  cpufreq: Fix NULL reference crash while accessing policy->governor_data
  cpufreq: pxa2xx: fix pxa_cpufreq_change_voltage prototype
  hwmon: (ads1015) Handle negative conversion values correctly
  hwmon: (gpio-fan) Remove un-necessary speed_index lookup for thermal hook
  hwmon: (dell-smm) Blacklist Dell Studio XPS 8000
  Thermal: do thermal zone update after a cooling device registered
  Thermal: handle thermal zone device properly during system sleep
  Thermal: initialize thermal zone device correctly
  IB/mlx5: Expose correct maximum number of CQE capacity
  IB/qib: Support creating qps with GFP_NOIO flag
  IB/qib: fix mcast detach when qp not attached
  IB/cm: Fix a recently introduced deadlock
  dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer
  dmaengine: at_xdmac: fix resume for cyclic transfers
  dmaengine: dw: fix cyclic transfer callbacks
  dmaengine: dw: fix cyclic transfer setup
  nfit: fix multi-interface dimm handling, acpi6.1 compatibility
  ACPI / PCI / hotplug: unlock in error path in acpiphp_enable_slot()
  ACPI: Revert "ACPI / video: Add Dell Inspiron 5737 to the blacklist"
  ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba Satellite R830
  ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba Portege R700
  lib: sw842: select crc32
  uapi: update install list after nvme.h rename
  ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list
  ideapad-laptop: Add Lenovo ideapad Y700-17ISK to no_hw_rfkill dmi list
  toshiba_acpi: Fix blank screen at boot if transflective backlight is supported
  make sure that freeing shmem fast symlinks is RCU-delayed
  drm/radeon/pm: adjust display configuration after powerstate
  drm/radeon: Don't hang in radeon_flip_work_func on disabled crtc. (v2)
  drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2)
  drm: Fix drm_vblank_pre/post_modeset regression from Linux 4.4
  drm: Prevent vblank counter bumps > 1 with active vblank clients. (v2)
  drm: No-Op redundant calls to drm_vblank_off() (v2)
  drm/radeon: use post-decrement in error handling
  drm/qxl: use kmalloc_array to alloc reloc_info in qxl_process_single_command
  drm/i915: fix error path in intel_setup_gmbus()
  drm/i915/dsi: don't pass arbitrary data to sideband
  drm/i915/dsi: defend gpio table against out of bounds access
  drm/i915/skl: Don't skip mst encoders in skl_ddi_pll_select()
  drm/i915: Don't reject primary plane windowing with color keying enabled on SKL+
  drm/i915/dp: fall back to 18 bpp when sink capability is unknown
  drm/i915: Make sure DC writes are coherent on flush.
  drm/i915: Init power domains early in driver load
  drm/i915: intel_hpd_init(): Fix suspend/resume reprobing
  drm/i915: Restore inhibiting the load of the default context
  drm: fix missing reference counting decrease
  drm/radeon: hold reference to fences in radeon_sa_bo_new
  drm/radeon: mask out WC from BO on unsupported arches
  drm: add helper to check for wc memory support
  drm/radeon: fix DP audio support for APU with DCE4.1 display engine
  drm/radeon: Add a common function for DFS handling
  drm/radeon: cleaned up VCO output settings for DP audio
  drm/radeon: properly byte swap vce firmware setup
  drm/radeon: clean up fujitsu quirks
  drm/radeon: Fix "slow" audio over DP on DCE8+
  drm/radeon: call hpd_irq_event on resume
  drm/radeon: Fix off-by-one errors in radeon_vm_bo_set_addr
  drm/dp/mst: deallocate payload on port destruction
  drm/dp/mst: Reverse order of MST enable and clearing VC payload table.
  drm/dp/mst: move GUID storage from mgr, port to only mst branch
  drm/dp/mst: Calculate MST PBN with 31.32 fixed point
  drm: Add drm_fixp_from_fraction and drm_fixp2int_ceil
  drm/dp/mst: fix in RAD element access
  drm/dp/mst: fix in MSTB RAD initialization
  drm/dp/mst: always send reply for UP request
  drm/dp/mst: process broadcast messages correctly
  drm/nouveau: platform: Fix deferred probe
  drm/nouveau/disp/dp: ensure sink is powered up before attempting link training
  drm/nouveau/display: Enable vblank irqs after display engine is on again.
  drm/nouveau/kms: take mode_config mutex in connector hotplug path
  drm/amdgpu/pm: adjust display configuration after powerstate
  drm/amdgpu: Don't hang in amdgpu_flip_work_func on disabled crtc.
  drm/amdgpu: use post-decrement in error handling
  drm/amdgpu: fix issue with overlapping userptrs
  drm/amdgpu: hold reference to fences in amdgpu_sa_bo_new (v2)
  drm/amdgpu: remove unnecessary forward declaration
  drm/amdgpu: fix s4 resume
  drm/amdgpu: remove exp hardware support from iceland
  drm/amdgpu: don't load MEC2 on topaz
  drm/amdgpu: drop topaz support from gmc8 module
  drm/amdgpu: pull topaz gmc bits into gmc_v7
  drm/amdgpu: The VI specific EXE bit should only apply to GMC v8.0 above
  drm/amdgpu: iceland use CI based MC IP
  drm/amdgpu: move gmc7 support out of CIK dependency
  drm/amdgpu: no need to load MC firmware on fiji
  drm/amdgpu: fix amdgpu_bo_pin_restricted VRAM placing v2
  drm/amdgpu: fix tonga smu resume
  drm/amdgpu: fix lost sync_to if scheduler is enabled.
  drm/amdgpu: call hpd_irq_event on resume
  drm/amdgpu: Fix off-by-one errors in amdgpu_vm_bo_map
  drm/vmwgfx: respect 'nomodeset'
  drm/vmwgfx: Fix a width / pitch mismatch on framebuffer updates
  drm/vmwgfx: Fix an incorrect lock check
  virtio_pci: fix use after free on release
  virtio_balloon: fix race between migration and ballooning
  virtio_balloon: fix race by fill and leak
  regulator: mt6311: MT6311_REGULATOR needs to select REGMAP_I2C
  regulator: axp20x: Fix GPIO LDO enable value for AXP22x
  clk: exynos: use irqsave version of spin_lock to avoid deadlock with irqs
  cxl: use correct operator when writing pcie config space values
  sparc64: fix incorrect sign extension in sys_sparc64_personality
  EDAC, mc_sysfs: Fix freeing bus' name
  EDAC: Robustify workqueues destruction
  MIPS: Fix buffer overflow in syscall_get_arguments()
  MIPS: Fix some missing CONFIG_CPU_MIPSR6 #ifdefs
  MIPS: hpet: Choose a safe value for the ETIME check
  MIPS: Loongson-3: Fix SMP_ASK_C0COUNT IPI handler
  Revert "MIPS: Fix PAGE_MASK definition"
  cputime: Prevent 32bit overflow in time[val|spec]_to_cputime()
  time: Avoid signed overflow in timekeeping_get_ns()
  Bluetooth: 6lowpan: Fix handling of uncompressed IPv6 packets
  Bluetooth: 6lowpan: Fix kernel NULL pointer dereferences
  Bluetooth: Fix incorrect removing of IRKs
  Bluetooth: Add support of Toshiba Broadcom based devices
  Bluetooth: Use continuous scanning when creating LE connections
  Drivers: hv: vmbus: Fix a Host signaling bug
  tools: hv: vss: fix the write()'s argument: error -> vss_msg
  mmc: sdhci: Allow override of get_cd() called from sdhci_request()
  mmc: sdhci: Allow override of mmc host operations
  mmc: sdhci-pci: Fix card detect race for Intel BXT/APL
  mmc: pxamci: fix again read-only gpio detection polarity
  mmc: sdhci-acpi: Fix card detect race for Intel BXT/APL
  mmc: mmci: fix an ages old detection error
  mmc: core: Enable tuning according to the actual timing
  mmc: sdhci: Fix sdhci_runtime_pm_bus_on/off()
  mmc: mmc: Fix incorrect use of driver strength switching HS200 and HS400
  mmc: sdio: Fix invalid vdd in voltage switch power cycle
  mmc: sdhci: Fix DMA descriptor with zero data length
  mmc: sdhci-pci: Do not default to 33 Ohm driver strength for Intel SPT
  mmc: usdhi6rol0: handle NULL data in timeout
  clockevents/tcb_clksrc: Prevent disabling an already disabled clock
  posix-clock: Fix return code on the poll method's error path
  irqchip/gic-v3-its: Fix double ICC_EOIR write for LPI in EOImode==1
  irqchip/atmel-aic: Fix wrong bit operation for IRQ priority
  irqchip/mxs: Add missing set_handle_irq()
  irqchip/omap-intc: Add support for spurious irq handling
  coresight: checking for NULL string in coresight_name_match()
  dm: fix dm_rq_target_io leak on faults with .request_fn DM w/ blk-mq paths
  dm snapshot: fix hung bios when copy error occurs
  dm space map metadata: remove unused variable in brb_pop()
  tda1004x: only update the frontend properties if locked
  vb2: fix a regression in poll() behavior for output,streams
  gspca: ov534/topro: prevent a division by 0
  si2157: return -EINVAL if firmware blob is too big
  media: dvb-core: Don't force CAN_INVERSION_AUTO in oneshot mode
  rc: sunxi-cir: Initialize the spinlock properly
  namei: ->d_inode of a pinned dentry is stable only for positives
  mei: validate request value in client notify request ioctl
  mei: fix fasync return value on error
  rtlwifi: rtl8723be: Fix module parameter initialization
  rtlwifi: rtl8188ee: Fix module parameter initialization
  rtlwifi: rtl8192se: Fix module parameter initialization
  rtlwifi: rtl8723ae: Fix initialization of module parameters
  rtlwifi: rtl8192de: Fix incorrect module parameter descriptions
  rtlwifi: rtl8192ce: Fix handling of module parameters
  rtlwifi: rtl8192cu: Add missing parameter setup
  rtlwifi: rtl_pci: Fix kernel panic
  locks: fix unlock when fcntl_setlk races with a close
  um: link with -lpthread
  uml: fix hostfs mknod()
  uml: flush stdout before forking
  s390/fpu: signals vs. floating point control register
  s390/compat: correct restore of high gprs on signal return
  s390/dasd: fix performance drop
  s390/dasd: fix refcount for PAV reassignment
  s390/dasd: prevent incorrect length error under z/VM after PAV changes
  s390: fix normalization bug in exception table sorting
  btrfs: initialize the seq counter in struct btrfs_device
  Btrfs: Initialize btrfs_root->highest_objectid when loading tree root and subvolume roots
  Btrfs: fix transaction handle leak on failure to create hard link
  Btrfs: fix number of transaction units required to create symlink
  Btrfs: send, don't BUG_ON() when an empty symlink is found
  btrfs: statfs: report zero available if metadata are exhausted
  Btrfs: igrab inode in writepage
  Btrfs: add missing brelse when superblock checksum fails
  KVM: s390: fix memory overwrites when vx is disabled
  s390/kvm: remove dependency on struct save_area definition
  clocksource/drivers/vt8500: Increase the minimum delta
  genirq: Validate action before dereferencing it in handle_irq_event_percpu()
  mm: numa: quickly fail allocations for NUMA balancing on full nodes
  mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED
  ocfs2: unlock inode if deleting inode from orphan fails
  drm/i915: shut up gen8+ SDE irq dmesg noise
  iw_cxgb3: Fix incorrectly returning error on success
  spi: omap2-mcspi: Prevent duplicate gpio_request
  drivers: android: correct the size of struct binder_uintptr_t for BC_DEAD_BINDER_DONE
  USB: option: add "4G LTE usb-modem U901"
  USB: option: add support for SIM7100E
  USB: cp210x: add IDs for GE B650V3 and B850V3 boards
  usb: dwc3: Fix assignment of EP transfer resources
  can: ems_usb: Fix possible tx overflow
  dm thin: fix race condition when destroying thin pool workqueue
  bcache: Change refill_dirty() to always scan entire disk if necessary
  bcache: prevent crash on changing writeback_running
  bcache: allows use of register in udev to avoid "device_busy" error.
  bcache: unregister reboot notifier if bcache fails to unregister device
  bcache: fix a leak in bch_cached_dev_run()
  bcache: clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing device
  bcache: Add a cond_resched() call to gc
  bcache: fix a livelock when we cause a huge number of cache misses
  lib/ucs2_string: Correct ucs2 -> utf8 conversion
  efi: Add pstore variables to the deletion whitelist
  efi: Make efivarfs entries immutable by default
  efi: Make our variable validation list include the guid
  efi: Do variable name validation tests in utf8
  efi: Use ucs2_as_utf8 in efivarfs instead of open coding a bad version
  lib/ucs2_string: Add ucs2 -> utf8 helper functions
  ARM: 8457/1: psci-smp is built only for SMP
  drm/gma500: Use correct unref in the gem bo create function
  devm_memremap: Fix error value when memremap failed
  KVM: s390: fix guest fprs memory leak
  arm64: errata: Add -mpc-relative-literal-loads to build flags
  ARM: debug-ll: fix BCM63xx entry for multiplatform
  ext4: fix bh->b_state corruption
  sctp: Fix port hash table size computation
  unix_diag: fix incorrect sign extension in unix_lookup_by_ino
  tipc: unlock in error path
  rtnl: RTM_GETNETCONF: fix wrong return value
  IFF_NO_QUEUE: Fix for drivers not calling ether_setup()
  tcp/dccp: fix another race at listener dismantle
  route: check and remove route cache when we get route
  net_sched fix: reclassification needs to consider ether protocol changes
  pppoe: fix reference counting in PPPoE proxy
  l2tp: Fix error creating L2TP tunnels
  net/mlx4_en: Avoid changing dev->features directly in run-time
  net/mlx4_en: Choose time-stamping shift value according to HW frequency
  net/mlx4_en: Count HW buffer overrun only once
  qmi_wwan: add "4G LTE usb-modem U901"
  tcp: md5: release request socket instead of listener
  tipc: fix premature addition of node to lookup table
  af_unix: Guard against other == sk in unix_dgram_sendmsg
  af_unix: Don't set err in unix_stream_read_generic unless there was an error
  ipv4: fix memory leaks in ip_cmsg_send() callers
  bonding: Fix ARP monitor validation
  bpf: fix branch offset adjustment on backjumps after patching ctx expansion
  flow_dissector: Fix unaligned access in __skb_flow_dissector when used by eth_get_headlen
  net: Copy inner L3 and L4 headers as unaligned on GRE TEB
  sctp: translate network order to host order when users get a hmacid
  enic: increment devcmd2 result ring in case of timeout
  tg3: Fix for tg3 transmit queue 0 timed out when too many gso_segs
  net:Add sysctl_max_skb_frags
  tcp: do not drop syn_recv on all icmp reports
  unix: correctly track in-flight fds in sending process user_struct
  ipv6: fix a lockdep splat
  ipv6: addrconf: Fix recursive spin lock call
  ipv6/udp: use sticky pktinfo egress ifindex on connect()
  ipv6: enforce flowi6_oif usage in ip6_dst_lookup_tail()
  tcp: beware of alignments in tcp_get_info()
  switchdev: Require RTNL mutex to be held when sending FDB notifications
  inet: frag: Always orphan skbs inside ip_defrag()
  tipc: fix connection abort during subscription cancel
  net: dsa: fix mv88e6xxx switches
  sctp: allow setting SCTP_SACK_IMMEDIATELY by the application
  pptp: fix illegal memory access caused by multiple bind()s
  af_unix: fix struct pid memory leak
  tcp: fix NULL deref in tcp_v4_send_ack()
  lwt: fix rx checksum setting for lwt devices tunneling over ipv6
  tunnels: Allow IPv6 UDP checksums to be correctly controlled.
  net: dp83640: Fix tx timestamp overflow handling.
  gro: Make GRO aware of lightweight tunnels.
  af_iucv: Validate socket address length in iucv_sock_bind()

Conflicts:
	arch/arm64/Makefile
	arch/arm64/include/asm/cacheflush.h
	drivers/mmc/host/sdhci.c
	drivers/usb/dwc3/ep0.c
	drivers/usb/dwc3/gadget.c
	kernel/module.c
	sound/core/pcm_compat.c

CRs-Fixed: 1010239
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
Change-Id: I41a28636fc9ad91f9d979b191784609476294cdf
2016-07-12 11:40:49 -07:00
Wanpeng Li
cf73d8ad76 workqueue: fix rebind bound workers warning
commit f7c17d26f43d5cc1b7a6b896cd2fa24a079739b9 upstream.

------------[ cut here ]------------
WARNING: CPU: 0 PID: 16 at kernel/workqueue.c:4559 rebind_workers+0x1c0/0x1d0
Modules linked in:
CPU: 0 PID: 16 Comm: cpuhp/0 Not tainted 4.6.0-rc4+ #31
Hardware name: IBM IBM System x3550 M4 Server -[7914IUW]-/00Y8603, BIOS -[D7E128FUS-1.40]- 07/23/2013
 0000000000000000 ffff881037babb58 ffffffff8139d885 0000000000000010
 0000000000000000 0000000000000000 0000000000000000 ffff881037babba8
 ffffffff8108505d ffff881037ba0000 000011cf3e7d6e60 0000000000000046
Call Trace:
 dump_stack+0x89/0xd4
 __warn+0xfd/0x120
 warn_slowpath_null+0x1d/0x20
 rebind_workers+0x1c0/0x1d0
 workqueue_cpu_up_callback+0xf5/0x1d0
 notifier_call_chain+0x64/0x90
 ? trace_hardirqs_on_caller+0xf2/0x220
 ? notify_prepare+0x80/0x80
 __raw_notifier_call_chain+0xe/0x10
 __cpu_notify+0x35/0x50
 notify_down_prepare+0x5e/0x80
 ? notify_prepare+0x80/0x80
 cpuhp_invoke_callback+0x73/0x330
 ? __schedule+0x33e/0x8a0
 cpuhp_down_callbacks+0x51/0xc0
 cpuhp_thread_fun+0xc1/0xf0
 smpboot_thread_fn+0x159/0x2a0
 ? smpboot_create_threads+0x80/0x80
 kthread+0xef/0x110
 ? wait_for_completion+0xf0/0x120
 ? schedule_tail+0x35/0xf0
 ret_from_fork+0x22/0x50
 ? __init_kthread_worker+0x70/0x70
---[ end trace eb12ae47d2382d8f ]---
notify_down_prepare: attempt to take down CPU 0 failed

This bug can be reproduced by below config w/ nohz_full= all cpus:

CONFIG_BOOTPARAM_HOTPLUG_CPU0=y
CONFIG_DEBUG_HOTPLUG_CPU0=y
CONFIG_NO_HZ_FULL=y

As Thomas pointed out:

| If a down prepare callback fails, then DOWN_FAILED is invoked for all
| callbacks which have successfully executed DOWN_PREPARE.
|
| But, workqueue has actually two notifiers. One which handles
| UP/DOWN_FAILED/ONLINE and one which handles DOWN_PREPARE.
|
| Now look at the priorities of those callbacks:
|
| CPU_PRI_WORKQUEUE_UP        = 5
| CPU_PRI_WORKQUEUE_DOWN      = -5
|
| So the call order on DOWN_PREPARE is:
|
| CB 1
| CB ...
| CB workqueue_up() -> Ignores DOWN_PREPARE
| CB ...
| CB X ---> Fails
|
| So we call up to CB X with DOWN_FAILED
|
| CB 1
| CB ...
| CB workqueue_up() -> Handles DOWN_FAILED
| CB ...
| CB X-1
|
| So the problem is that the workqueue stuff handles DOWN_FAILED in the up
| callback, while it should do it in the down callback. Which is not a good idea
| either because it wants to be called early on rollback...
|
| Brilliant stuff, isn't it? The hotplug rework will solve this problem because
| the callbacks become symetric, but for the existing mess, we need some
| workaround in the workqueue code.

The boot CPU handles housekeeping duty(unbound timers, workqueues,
timekeeping, ...) on behalf of full dynticks CPUs. It must remain
online when nohz full is enabled. There is a priority set to every
notifier_blocks:

workqueue_cpu_up > tick_nohz_cpu_down > workqueue_cpu_down

So tick_nohz_cpu_down callback failed when down prepare cpu 0, and
notifier_blocks behind tick_nohz_cpu_down will not be called any
more, which leads to workers are actually not unbound. Then hotplug
state machine will fallback to undo and online cpu 0 again. Workers
will be rebound unconditionally even if they are not unbound and
trigger the warning in this progress.

This patch fix it by catching !DISASSOCIATED to avoid rebind bound
workers.

Cc: Tejun Heo <tj@kernel.org>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Suggested-by: Lai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-05-18 17:06:50 -07:00
Tejun Heo
e2b6ea208b workqueue: implement lockup detector
Workqueue stalls can happen from a variety of usage bugs such as
missing WQ_MEM_RECLAIM flag or concurrency managed work item
indefinitely staying RUNNING.  These stalls can be extremely difficult
to hunt down because the usual warning mechanisms can't detect
workqueue stalls and the internal state is pretty opaque.

To alleviate the situation, this patch implements workqueue lockup
detector.  It periodically monitors all worker_pools periodically and,
if any pool failed to make forward progress longer than the threshold
duration, triggers warning and dumps workqueue state as follows.

 BUG: workqueue lockup - pool cpus=0 node=0 flags=0x0 nice=0 stuck for 31s!
 Showing busy workqueues and worker pools:
 workqueue events: flags=0x0
   pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=17/256
     pending: monkey_wrench_fn, e1000_watchdog, cache_reap, vmstat_shepherd, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, release_one_tty, cgroup_release_agent
 workqueue events_power_efficient: flags=0x80
   pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=2/256
     pending: check_lifetime, neigh_periodic_work
 workqueue cgroup_pidlist_destroy: flags=0x0
   pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=1/1
     pending: cgroup_pidlist_destroy_work_fn
 ...

The detection mechanism is controller through kernel parameter
workqueue.watchdog_thresh and can be updated at runtime through the
sysfs module parameter file.

v2: Decoupled from softlockup control knobs.

CRs-Fixed: 1007459
Change-Id: Id7dfbbd2701128a942b1bcac2299e07a66db8657
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Don Zickus <dzickus@redhat.com>
Cc: Ulrich Obergfell <uobergfe@redhat.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Chris Mason <clm@fb.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Git-commit: 82607adcf9cdf40fb7b5331269780c8f70ec6e35
Git-repo: git://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git
Signed-off-by: Trilok Soni <tsoni@codeaurora.org>
2016-05-05 15:05:53 -07:00
Roman Pen
2da9606aea workqueue: fix ghost PENDING flag while doing MQ IO
commit 346c09f80459a3ad97df1816d6d606169a51001a upstream.

The bug in a workqueue leads to a stalled IO request in MQ ctx->rq_list
with the following backtrace:

[  601.347452] INFO: task kworker/u129:5:1636 blocked for more than 120 seconds.
[  601.347574]       Tainted: G           O    4.4.5-1-storage+ #6
[  601.347651] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  601.348142] kworker/u129:5  D ffff880803077988     0  1636      2 0x00000000
[  601.348519] Workqueue: ibnbd_server_fileio_wq ibnbd_dev_file_submit_io_worker [ibnbd_server]
[  601.348999]  ffff880803077988 ffff88080466b900 ffff8808033f9c80 ffff880803078000
[  601.349662]  ffff880807c95000 7fffffffffffffff ffffffff815b0920 ffff880803077ad0
[  601.350333]  ffff8808030779a0 ffffffff815b01d5 0000000000000000 ffff880803077a38
[  601.350965] Call Trace:
[  601.351203]  [<ffffffff815b0920>] ? bit_wait+0x60/0x60
[  601.351444]  [<ffffffff815b01d5>] schedule+0x35/0x80
[  601.351709]  [<ffffffff815b2dd2>] schedule_timeout+0x192/0x230
[  601.351958]  [<ffffffff812d43f7>] ? blk_flush_plug_list+0xc7/0x220
[  601.352208]  [<ffffffff810bd737>] ? ktime_get+0x37/0xa0
[  601.352446]  [<ffffffff815b0920>] ? bit_wait+0x60/0x60
[  601.352688]  [<ffffffff815af784>] io_schedule_timeout+0xa4/0x110
[  601.352951]  [<ffffffff815b3a4e>] ? _raw_spin_unlock_irqrestore+0xe/0x10
[  601.353196]  [<ffffffff815b093b>] bit_wait_io+0x1b/0x70
[  601.353440]  [<ffffffff815b056d>] __wait_on_bit+0x5d/0x90
[  601.353689]  [<ffffffff81127bd0>] wait_on_page_bit+0xc0/0xd0
[  601.353958]  [<ffffffff81096db0>] ? autoremove_wake_function+0x40/0x40
[  601.354200]  [<ffffffff81127cc4>] __filemap_fdatawait_range+0xe4/0x140
[  601.354441]  [<ffffffff81127d34>] filemap_fdatawait_range+0x14/0x30
[  601.354688]  [<ffffffff81129a9f>] filemap_write_and_wait_range+0x3f/0x70
[  601.354932]  [<ffffffff811ced3b>] blkdev_fsync+0x1b/0x50
[  601.355193]  [<ffffffff811c82d9>] vfs_fsync_range+0x49/0xa0
[  601.355432]  [<ffffffff811cf45a>] blkdev_write_iter+0xca/0x100
[  601.355679]  [<ffffffff81197b1a>] __vfs_write+0xaa/0xe0
[  601.355925]  [<ffffffff81198379>] vfs_write+0xa9/0x1a0
[  601.356164]  [<ffffffff811c59d8>] kernel_write+0x38/0x50

The underlying device is a null_blk, with default parameters:

  queue_mode    = MQ
  submit_queues = 1

Verification that nullb0 has something inflight:

root@pserver8:~# cat /sys/block/nullb0/inflight
       0        1
root@pserver8:~# find /sys/block/nullb0/mq/0/cpu* -name rq_list -print -exec cat {} \;
...
/sys/block/nullb0/mq/0/cpu2/rq_list
CTX pending:
        ffff8838038e2400
...

During debug it became clear that stalled request is always inserted in
the rq_list from the following path:

   save_stack_trace_tsk + 34
   blk_mq_insert_requests + 231
   blk_mq_flush_plug_list + 281
   blk_flush_plug_list + 199
   wait_on_page_bit + 192
   __filemap_fdatawait_range + 228
   filemap_fdatawait_range + 20
   filemap_write_and_wait_range + 63
   blkdev_fsync + 27
   vfs_fsync_range + 73
   blkdev_write_iter + 202
   __vfs_write + 170
   vfs_write + 169
   kernel_write + 56

So blk_flush_plug_list() was called with from_schedule == true.

If from_schedule is true, that means that finally blk_mq_insert_requests()
offloads execution of __blk_mq_run_hw_queue() and uses kblockd workqueue,
i.e. it calls kblockd_schedule_delayed_work_on().

That means, that we race with another CPU, which is about to execute
__blk_mq_run_hw_queue() work.

Further debugging shows the following traces from different CPUs:

  CPU#0                                  CPU#1
  ----------------------------------     -------------------------------
  reqeust A inserted
  STORE hctx->ctx_map[0] bit marked
  kblockd_schedule...() returns 1
  <schedule to kblockd workqueue>
                                         request B inserted
                                         STORE hctx->ctx_map[1] bit marked
                                         kblockd_schedule...() returns 0
  *** WORK PENDING bit is cleared ***
  flush_busy_ctxs() is executed, but
  bit 1, set by CPU#1, is not observed

As a result request B pended forever.

This behaviour can be explained by speculative LOAD of hctx->ctx_map on
CPU#0, which is reordered with clear of PENDING bit and executed _before_
actual STORE of bit 1 on CPU#1.

The proper fix is an explicit full barrier <mfence>, which guarantees
that clear of PENDING bit is to be executed before all possible
speculative LOADS or STORES inside actual work function.

Signed-off-by: Roman Pen <roman.penyaev@profitbricks.com>
Cc: Gioh Kim <gi-oh.kim@profitbricks.com>
Cc: Michael Wang <yun.wang@profitbricks.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-05-04 14:48:49 -07:00
Syed Rameez Mustafa
e2cddd1040 kernel/lib: add additional debug capabilites for data corruption
Data corruptions in the kernel often end up in system crashes that
are easier to debug closer to the time of detection. Specifically,
if we do not panic immediately after lock or list corruptions have been
detected, the problem context is lost in the ensuing system mayhem.
Add support for allowing system crash immediately after such corruptions
are detected. The CONFIG option controls the enabling/disabling of the
feature.

Change-Id: I9b2eb62da506a13007acff63e85e9515145909ff
Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
[abhimany: minor merge conflict resolution]
Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
2016-03-22 11:16:29 -07:00
Tejun Heo
6684710434 Revert "workqueue: make sure delayed work run in local cpu"
commit 041bd12e272c53a35c54c13875839bcb98c999ce upstream.

This reverts commit 874bbfe600.

Workqueue used to implicity guarantee that work items queued without
explicit CPU specified are put on the local CPU.  Recent changes in
timer broke the guarantee and led to vmstat breakage which was fixed
by 176bed1de5 ("vmstat: explicitly schedule per-cpu work on the CPU
we need it to run on").

vmstat is the most likely to expose the issue and it's quite possible
that there are other similar problems which are a lot more difficult
to trigger.  As a preventive measure, 874bbfe600 ("workqueue: make
sure delayed work run in local cpu") was applied to restore the local
CPU guarnatee.  Unfortunately, the change exposed a bug in timer code
which got fixed by 22b886dd10 ("timers: Use proper base migration in
add_timer_on()").  Due to code restructuring, the commit couldn't be
backported beyond certain point and stable kernels which only had
874bbfe600 started crashing.

The local CPU guarantee was accidental more than anything else and we
want to get rid of it anyway.  As, with the vmstat case fixed,
874bbfe600 is causing more problems than it's fixing, it has been
decided to take the chance and officially break the guarantee by
reverting the commit.  A debug feature will be added to force foreign
CPU assignment to expose cases relying on the guarantee and fixes for
the individual cases will be backported to stable as necessary.

Signed-off-by: Tejun Heo <tj@kernel.org>
Fixes: 874bbfe600 ("workqueue: make sure delayed work run in local cpu")
Link: http://lkml.kernel.org/g/20160120211926.GJ10810@quack.suse.cz
Cc: Mike Galbraith <umgwanakikbuti@gmail.com>
Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Daniel Bilik <daniel.bilik@neosystem.cz>
Cc: Jan Kara <jack@suse.cz>
Cc: Shaohua Li <shli@fb.com>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: Ben Hutchings <ben@decadent.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Daniel Bilik <daniel.bilik@neosystem.cz>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: Michal Hocko <mhocko@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-03-03 15:07:27 -08:00
Tejun Heo
21b34b4574 workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup
commit d6e022f1d207a161cd88e08ef0371554680ffc46 upstream.

When looking up the pool_workqueue to use for an unbound workqueue,
workqueue assumes that the target CPU is always bound to a valid NUMA
node.  However, currently, when a CPU goes offline, the mapping is
destroyed and cpu_to_node() returns NUMA_NO_NODE.

This has always been broken but hasn't triggered often enough before
874bbfe600 ("workqueue: make sure delayed work run in local cpu").
After the commit, workqueue forcifully assigns the local CPU for
delayed work items without explicit target CPU to fix a different
issue.  This widens the window where CPU can go offline while a
delayed work item is pending causing delayed work items dispatched
with target CPU set to an already offlined CPU.  The resulting
NUMA_NO_NODE mapping makes workqueue try to queue the work item on a
NULL pool_workqueue and thus crash.

While 874bbfe600 has been reverted for a different reason making the
bug less visible again, it can still happen.  Fix it by mapping
NUMA_NO_NODE to the default pool_workqueue from unbound_pwq_by_node().
This is a temporary workaround.  The long term solution is keeping CPU
-> NODE mapping stable across CPU off/online cycles which is being
worked on.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Mike Galbraith <umgwanakikbuti@gmail.com>
Cc: Tang Chen <tangchen@cn.fujitsu.com>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: Len Brown <len.brown@intel.com>
Link: http://lkml.kernel.org/g/1454424264.11183.46.camel@gmail.com
Link: http://lkml.kernel.org/g/1453702100-2597-1-git-send-email-tangchen@cn.fujitsu.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-03-03 15:07:27 -08:00
Linus Torvalds
e25ac7ddaa Merge branch 'for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue update from Tejun Heo:
 "This pull request contains one patch to make an unbound worker pool
  allocated from the NUMA node containing it if such node exists.  As
  unbound worker pools are node-affine by default, this makes most pools
  allocated on the right node"

* 'for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: Allocate the unbound pool using local node memory
2015-11-05 14:16:27 -08:00
Xunlei Pang
e2273584d3 workqueue: Allocate the unbound pool using local node memory
Currently, get_unbound_pool() uses kzalloc() to allocate the
worker pool. Actually, we can use the right node to do the
allocation, achieving local memory access.

This patch selects target node first, and uses kzalloc_node()
instead.

Signed-off-by: Xunlei Pang <pang.xunlei@linaro.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-10-12 12:17:31 -04:00
Shaohua Li
874bbfe600 workqueue: make sure delayed work run in local cpu
My system keeps crashing with below message. vmstat_update() schedules a delayed
work in current cpu and expects the work runs in the cpu.
schedule_delayed_work() is expected to make delayed work run in local cpu. The
problem is timer can be migrated with NO_HZ. __queue_work() queues work in
timer handler, which could run in a different cpu other than where the delayed
work is scheduled. The end result is the delayed work runs in different cpu.
The patch makes __queue_delayed_work records local cpu earlier. Where the timer
runs doesn't change where the work runs with the change.

[   28.010131] ------------[ cut here ]------------
[   28.010609] kernel BUG at ../mm/vmstat.c:1392!
[   28.011099] invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC KASAN
[   28.011860] Modules linked in:
[   28.012245] CPU: 0 PID: 289 Comm: kworker/0:3 Tainted: G        W4.3.0-rc3+ #634
[   28.013065] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140709_153802- 04/01/2014
[   28.014160] Workqueue: events vmstat_update
[   28.014571] task: ffff880117682580 ti: ffff8800ba428000 task.ti: ffff8800ba428000
[   28.015445] RIP: 0010:[<ffffffff8115f921>]  [<ffffffff8115f921>]vmstat_update+0x31/0x80
[   28.016282] RSP: 0018:ffff8800ba42fd80  EFLAGS: 00010297
[   28.016812] RAX: 0000000000000000 RBX: ffff88011a858dc0 RCX:0000000000000000
[   28.017585] RDX: ffff880117682580 RSI: ffffffff81f14d8c RDI:ffffffff81f4df8d
[   28.018366] RBP: ffff8800ba42fd90 R08: 0000000000000001 R09:0000000000000000
[   28.019169] R10: 0000000000000000 R11: 0000000000000121 R12:ffff8800baa9f640
[   28.019947] R13: ffff88011a81e340 R14: ffff88011a823700 R15:0000000000000000
[   28.020071] FS:  0000000000000000(0000) GS:ffff88011a800000(0000)knlGS:0000000000000000
[   28.020071] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[   28.020071] CR2: 00007ff6144b01d0 CR3: 00000000b8e93000 CR4:00000000000006f0
[   28.020071] Stack:
[   28.020071]  ffff88011a858dc0 ffff8800baa9f640 ffff8800ba42fe00ffffffff8106bd88
[   28.020071]  ffffffff8106bd0b 0000000000000096 0000000000000000ffffffff82f9b1e8
[   28.020071]  ffffffff829f0b10 0000000000000000 ffffffff81f18460ffff88011a81e340
[   28.020071] Call Trace:
[   28.020071]  [<ffffffff8106bd88>] process_one_work+0x1c8/0x540
[   28.020071]  [<ffffffff8106bd0b>] ? process_one_work+0x14b/0x540
[   28.020071]  [<ffffffff8106c214>] worker_thread+0x114/0x460
[   28.020071]  [<ffffffff8106c100>] ? process_one_work+0x540/0x540
[   28.020071]  [<ffffffff81071bf8>] kthread+0xf8/0x110
[   28.020071]  [<ffffffff81071b00>] ?kthread_create_on_node+0x200/0x200
[   28.020071]  [<ffffffff81a6522f>] ret_from_fork+0x3f/0x70
[   28.020071]  [<ffffffff81071b00>] ?kthread_create_on_node+0x200/0x200

Signed-off-by: Shaohua Li <shli@fb.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: stable@vger.kernel.org # v2.6.31+
2015-09-30 13:06:46 -04:00
Linus Torvalds
7d3e2eb178 Merge branch 'for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue updates from Tejun Heo:
 "Only three trivial changes for workqueue this time - doc, MAINTAINERS
  and EXPORT_SYMBOL updates"

* 'for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: fix some docbook warnings
  workqueue: Make flush_workqueue() available again to non GPL modules
  workqueue: add myself as a dedicated reviwer
2015-09-02 08:02:20 -07:00
Linus Torvalds
a1d8561172 Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler updates from Ingo Molnar:
 "The biggest change in this cycle is the rewrite of the main SMP load
  balancing metric: the CPU load/utilization.  The main goal was to make
  the metric more precise and more representative - see the changelog of
  this commit for the gory details:

    9d89c257df ("sched/fair: Rewrite runnable load and utilization average tracking")

  It is done in a way that significantly reduces complexity of the code:

    5 files changed, 249 insertions(+), 494 deletions(-)

  and the performance testing results are encouraging.  Nevertheless we
  need to keep an eye on potential regressions, since this potentially
  affects every SMP workload in existence.

  This work comes from Yuyang Du.

  Other changes:

   - SCHED_DL updates.  (Andrea Parri)

   - Simplify architecture callbacks by removing finish_arch_switch().
     (Peter Zijlstra et al)

   - cputime accounting: guarantee stime + utime == rtime.  (Peter
     Zijlstra)

   - optimize idle CPU wakeups some more - inspired by Facebook server
     loads.  (Mike Galbraith)

   - stop_machine fixes and updates.  (Oleg Nesterov)

   - Introduce the 'trace_sched_waking' tracepoint.  (Peter Zijlstra)

   - sched/numa tweaks.  (Srikar Dronamraju)

   - misc fixes and small cleanups"

* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (44 commits)
  sched/deadline: Fix comment in enqueue_task_dl()
  sched/deadline: Fix comment in push_dl_tasks()
  sched: Change the sched_class::set_cpus_allowed() calling context
  sched: Make sched_class::set_cpus_allowed() unconditional
  sched: Fix a race between __kthread_bind() and sched_setaffinity()
  sched: Ensure a task has a non-normalized vruntime when returning back to CFS
  sched/numa: Fix NUMA_DIRECT topology identification
  tile: Reorganize _switch_to()
  sched, sparc32: Update scheduler comments in copy_thread()
  sched: Remove finish_arch_switch()
  sched, tile: Remove finish_arch_switch
  sched, sh: Fold finish_arch_switch() into switch_to()
  sched, score: Remove finish_arch_switch()
  sched, avr32: Remove finish_arch_switch()
  sched, MIPS: Get rid of finish_arch_switch()
  sched, arm: Remove finish_arch_switch()
  sched/fair: Clean up load average references
  sched/fair: Provide runnable_load_avg back to cfs_rq
  sched/fair: Remove task and group entity load when they are dead
  sched/fair: Init cfs_rq's sched_entity load average
  ...
2015-08-31 20:26:22 -07:00
Peter Zijlstra
25834c73f9 sched: Fix a race between __kthread_bind() and sched_setaffinity()
Because sched_setscheduler() checks p->flags & PF_NO_SETAFFINITY
without locks, a caller might observe an old value and race with the
set_cpus_allowed_ptr() call from __kthread_bind() and effectively undo
it:

	__kthread_bind()
	  do_set_cpus_allowed()
						<SYSCALL>
						  sched_setaffinity()
						    if (p->flags & PF_NO_SETAFFINITIY)
						    set_cpus_allowed_ptr()
	  p->flags |= PF_NO_SETAFFINITY

Fix the bug by putting everything under the regular scheduler locks.

This also closes a hole in the serialization of task_struct::{nr_,}cpus_allowed.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: dedekind1@gmail.com
Cc: juri.lelli@arm.com
Cc: mgorman@suse.de
Cc: riel@redhat.com
Cc: rostedt@goodmis.org
Link: http://lkml.kernel.org/r/20150515154833.545640346@infradead.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-08-12 12:06:09 +02:00
Tim Gardner
1dadafa86a workqueue: Make flush_workqueue() available again to non GPL modules
Commit 37b1ef31a5 ("workqueue: move
flush_scheduled_work() to workqueue.h") moved the exported non GPL
flush_scheduled_work() from a function to an inline wrapper.
Unfortunately, it directly calls flush_workqueue() which is a GPL function.
This has the effect of changing the licensing requirement for this function
and makes it unavailable to non GPL modules.

See commit ad7b1f841f ("workqueue: Make
schedule_work() available again to non GPL modules") for precedent.

Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-08-04 14:04:54 -04:00
Paul E. McKenney
f78f5b90c4 rcu: Rename rcu_lockdep_assert() to RCU_LOCKDEP_WARN()
This commit renames rcu_lockdep_assert() to RCU_LOCKDEP_WARN() for
consistency with the WARN() series of macros.  This also requires
inverting the sense of the conditional, which this commit also does.

Reported-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Ingo Molnar <mingo@kernel.org>
2015-07-22 15:27:32 -07:00
Linus Torvalds
02201e3f1b Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
Pull module updates from Rusty Russell:
 "Main excitement here is Peter Zijlstra's lockless rbtree optimization
  to speed module address lookup.  He found some abusers of the module
  lock doing that too.

  A little bit of parameter work here too; including Dan Streetman's
  breaking up the big param mutex so writing a parameter can load
  another module (yeah, really).  Unfortunately that broke the usual
  suspects, !CONFIG_MODULES and !CONFIG_SYSFS, so those fixes were
  appended too"

* tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: (26 commits)
  modules: only use mod->param_lock if CONFIG_MODULES
  param: fix module param locks when !CONFIG_SYSFS.
  rcu: merge fix for Convert ACCESS_ONCE() to READ_ONCE() and WRITE_ONCE()
  module: add per-module param_lock
  module: make perm const
  params: suppress unused variable error, warn once just in case code changes.
  modules: clarify CONFIG_MODULE_COMPRESS help, suggest 'N'.
  kernel/module.c: avoid ifdefs for sig_enforce declaration
  kernel/workqueue.c: remove ifdefs over wq_power_efficient
  kernel/params.c: export param_ops_bool_enable_only
  kernel/params.c: generalize bool_enable_only
  kernel/module.c: use generic module param operaters for sig_enforce
  kernel/params: constify struct kernel_param_ops uses
  sysfs: tightened sysfs permission checks
  module: Rework module_addr_{min,max}
  module: Use __module_address() for module_address_lookup()
  module: Make the mod_tree stuff conditional on PERF_EVENTS || TRACING
  module: Optimize __module_address() using a latched RB-tree
  rbtree: Implement generic latch_tree
  seqlock: Introduce raw_read_seqcount_latch()
  ...
2015-07-01 10:49:25 -07:00
Shailendra Verma
402dd89d6c workqueue: fix typos in comments
tj: dropped iff -> if, iff is if and only if not a typo.  Spotted by
    Randy Dunlap.

Signed-off-by: Shailendra Verma <shailendra.capricorn@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
2015-05-29 09:20:01 -04:00
Luis R. Rodriguez
552f530cbc kernel/workqueue.c: remove ifdefs over wq_power_efficient
We can avoid an ifdef over wq_power_efficient's declaration
by just using IS_ENABLED().

Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org
Cc: cocci@systeme.lip6.fr
Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-05-28 11:32:12 +09:30
Lai Jiangshan
37b1ef31a5 workqueue: move flush_scheduled_work() to workqueue.h
flush_scheduled_work() is just a simple call to flush_work().

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-21 17:26:22 -04:00
Lai Jiangshan
899a94fe15 workqueue: remove the lock from wq_sysfs_prep_attrs()
Reading to wq->unbound_attrs requires protection of either wq_pool_mutex
or wq->mutex, and wq_sysfs_prep_attrs() is called with wq_pool_mutex held,
so we don't need to grab wq->mutex here.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-21 17:26:22 -04:00
Lai Jiangshan
da7f91b2e2 workqueue: remove the declaration of copy_workqueue_attrs()
This pre-declaration was unneeded since a previous refactor patch
6ba94429c8 ("workqueue: Reorder sysfs code").

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-21 17:26:22 -04:00
Lai Jiangshan
d4d3e25797 workqueue: ensure attrs changes are properly synchronized
Current modification to attrs via sysfs is not fully synchronized.

Process A (change cpumask)      | Process B (change numa affinity)
wq_cpumask_store()              |
  wq_sysfs_prep_attrs()         |
                                | apply_workqueue_attrs()
  apply_workqueue_attrs()       |

It results that the Process B's operation is totally reverted
without any notification, it is a buggy behavior.  So this patch
moves wq_sysfs_prep_attrs() into the protection under wq_pool_mutex
to ensure attrs changes are properly synchronized.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-19 17:37:00 -04:00
Lai Jiangshan
a0111cf671 workqueue: separate out and refactor the locking of applying attrs
Applying attrs requires two locks: get_online_cpus() and wq_pool_mutex,
and this code is duplicated at two places (apply_workqueue_attrs() and
workqueue_set_unbound_cpumask()).  So we separate out this locking
code into apply_wqattrs_[un]lock() and do a minor refactor on
apply_workqueue_attrs().

The apply_wqattrs_[un]lock() will be also used on later patch for
ensuring attrs changes are properly synchronized.

tj: minor updates to comments

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-19 17:37:00 -04:00
Lai Jiangshan
f7142ed483 workqueue: simplify wq_update_unbound_numa()
wq_update_unbound_numa() is known be called with wq_pool_mutex held.

But wq_update_unbound_numa() requests wq->mutex before reading
wq->unbound_attrs, wq->numa_pwq_tbl[] and wq->dfl_pwq.  But these fields
were changed to be allowed being read with wq_pool_mutex held.  So we
simply remove the mutex_lock(&wq->mutex).

Without the dependence on the the mutex_lock(&wq->mutex), the test
of wq->unbound_attrs->no_numa can also be moved upward.

The old code need a long comment to describe the stableness of
@wq->unbound_attrs which is also guaranteed by wq_pool_mutex now,
so we don't need this such comment.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-18 16:22:57 -04:00
Lai Jiangshan
5b95e1af8d workqueue: wq_pool_mutex protects the attrs-installation
Current wq_pool_mutex doesn't proctect the attrs-installation, it results
that ->unbound_attrs, ->numa_pwq_tbl[] and ->dfl_pwq can only be accessed
under wq->mutex and causes some inconveniences. Example, wq_update_unbound_numa()
has to acquire wq->mutex before fetching the wq->unbound_attrs->no_numa
and the old_pwq.

attrs-installation is a short operation, so this change will no cause any
latency for other operations which also acquire the wq_pool_mutex.

The only unprotected attrs-installation code is in apply_workqueue_attrs(),
so this patch touches code less than comments.

It is also a preparation patch for next several patches which read
wq->unbound_attrs, wq->numa_pwq_tbl[] and wq->dfl_pwq with
only wq_pool_mutex held.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-18 16:22:56 -04:00
Chen Hanxiao
b749b1b673 workqueue: fix a typo
s/detemined/determined

Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-13 10:23:56 -04:00
Gong Zhaogang
30186c6fdc workqueue: function name in the comment differs from the real function name
modify wq_calc_node_mask to wq_calc_node_cpumask

Signed-off-by: Gong Zhaogang <gongzhaogang@inspur.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-05-11 11:03:34 -04:00
Lai Jiangshan
042f7df15a workqueue: Allow modifying low level unbound workqueue cpumask
Allow to modify the low-level unbound workqueues cpumask through
sysfs. This is performed by traversing the entire workqueue list
and calling apply_wqattrs_prepare() on the unbound workqueues
with the new low level mask. Only after all the preparation are done,
we commit them all together.

Ordered workqueues are ignored from the low level unbound workqueue
cpumask, it will be handled in near future.

All the (default & per-node) pwqs are mandatorily controlled by
the low level cpumask. If the user configured cpumask doesn't overlap
with the low level cpumask, the low level cpumask will be used for the
wq instead.

The comment of wq_calc_node_cpumask() is updated and explicitly
requires that its first argument should be the attrs of the default
pwq.

The default wq_unbound_cpumask is cpu_possible_mask.  The workqueue
subsystem doesn't know its best default value, let the system manager
or the other subsystem set it when needed.

Changed from V8:
  merge the calculating code for the attrs of the default pwq together.
  minor change the code&comments for saving the user configured attrs.
  remove unnecessary list_del().
  minor update the comment of wq_calc_node_cpumask().
  update the comment of workqueue_set_unbound_cpumask();

Cc: Christoph Lameter <cl@linux.com>
Cc: Kevin Hilman <khilman@linaro.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Mike Galbraith <bitbucket@online.de>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Original-patch-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-04-30 09:24:29 -04:00
Frederic Weisbecker
b05a79280b workqueue: Create low-level unbound workqueues cpumask
Create a cpumask that limits the affinity of all unbound workqueues.
This cpumask is controlled through a file at the root of the workqueue
sysfs directory.

It works on a lower-level than the per WQ_SYSFS workqueues cpumask files
such that the effective cpumask applied for a given unbound workqueue is
the intersection of /sys/devices/virtual/workqueue/$WORKQUEUE/cpumask and
the new /sys/devices/virtual/workqueue/cpumask file.

This patch implements the basic infrastructure and the read interface.
wq_unbound_cpumask is initially set to cpu_possible_mask.

Cc: Christoph Lameter <cl@linux.com>
Cc: Kevin Hilman <khilman@linaro.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Mike Galbraith <bitbucket@online.de>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-04-27 11:13:40 -04:00
Lai Jiangshan
2d5f0764b5 workqueue: split apply_workqueue_attrs() into 3 stages
Current apply_workqueue_attrs() includes pwqs-allocation and pwqs-installation,
so when we batch multiple apply_workqueue_attrs()s as a transaction, we can't
ensure the transaction must succeed or fail as a complete unit.

To solve this, we split apply_workqueue_attrs() into three stages.
The first stage does the preparation: allocation memory, pwqs.
The second stage does the attrs-installaion and pwqs-installation.
The third stage frees the allocated memory and (old or unused) pwqs.

As the result, batching multiple apply_workqueue_attrs()s can
succeed or fail as a complete unit:
	1) batch do all the first stage for all the workqueues
	2) only commit all when all the above succeed.

This patch is a preparation for the next patch ("Allow modifying low level
unbound workqueue cpumask") which will do a multiple apply_workqueue_attrs().

The patch doesn't have functionality changed except two minor adjustment:
	1) free_unbound_pwq() for the error path is removed, we use the
	   heavier version put_pwq_unlocked() instead since the error path
	   is rare. this adjustment simplifies the code.
	2) the memory-allocation is also moved into wq_pool_mutex.
	   this is needed to avoid to do the further splitting.

tj: minor updates to comments.

Suggested-by: Tejun Heo <tj@kernel.org>
Cc: Christoph Lameter <cl@linux.com>
Cc: Kevin Hilman <khilman@linaro.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Mike Galbraith <bitbucket@online.de>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-04-27 11:13:40 -04:00
Frederic Weisbecker
6ba94429c8 workqueue: Reorder sysfs code
The sysfs code usually belongs to the botom of the file since it deals
with high level objects. In the workqueue code it's misplaced and such
that we'll need to work around functions references to allow the sysfs
code to call APIs like apply_workqueue_attrs().

Lets move that block further in the file, almost the botom.

And declare workqueue_sysfs_unregister() just before destroy_workqueue()
which reference it.

tj: Moved workqueue_sysfs_unregister() forward declaration where other
    forward declarations are.

Suggested-by: Tejun Heo <tj@kernel.org>
Cc: Christoph Lameter <cl@linux.com>
Cc: Kevin Hilman <khilman@linaro.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Mike Galbraith <bitbucket@online.de>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-04-06 11:16:04 -04:00
Tejun Heo
3494fc3084 workqueue: dump workqueues on sysrq-t
Workqueues are used extensively throughout the kernel but sometimes
it's difficult to debug stalls involving work items because visibility
into its inner workings is fairly limited.  Although sysrq-t task dump
annotates each active worker task with the information on the work
item being executed, it is challenging to find out which work items
are pending or delayed on which queues and how pools are being
managed.

This patch implements show_workqueue_state() which dumps all busy
workqueues and pools and is called from the sysrq-t handler.  At the
end of sysrq-t dump, something like the following is printed.

 Showing busy workqueues and worker pools:
 ...
 workqueue filler_wq: flags=0x0
   pwq 2: cpus=1 node=0 flags=0x0 nice=0 active=2/256
     in-flight: 491:filler_workfn, 507:filler_workfn
   pwq 0: cpus=0 node=0 flags=0x0 nice=0 active=2/256
     in-flight: 501:filler_workfn
     pending: filler_workfn
 ...
 workqueue test_wq: flags=0x8
   pwq 2: cpus=1 node=0 flags=0x0 nice=0 active=1/1
     in-flight: 510(RESCUER):test_workfn BAR(69) BAR(500)
     delayed: test_workfn1 BAR(492), test_workfn2
 ...
 pool 0: cpus=0 node=0 flags=0x0 nice=0 workers=2 manager: 137
 pool 2: cpus=1 node=0 flags=0x0 nice=0 workers=3 manager: 469
 pool 3: cpus=1 node=0 flags=0x0 nice=-20 workers=2 idle: 16
 pool 8: cpus=0-3 flags=0x4 nice=0 workers=2 manager: 62

The above shows that test_wq is executing test_workfn() on pid 510
which is the rescuer and also that there are two tasks 69 and 500
waiting for the work item to finish in flush_work().  As test_wq has
max_active of 1, there are two work items for test_workfn1() and
test_workfn2() which are delayed till the current work item is
finished.  In addition, pid 492 is flushing test_workfn1().

The work item for test_workfn() is being executed on pwq of pool 2
which is the normal priority per-cpu pool for CPU 1.  The pool has
three workers, two of which are executing filler_workfn() for
filler_wq and the last one is assuming the manager role trying to
create more workers.

This extra workqueue state dump will hopefully help chasing down hangs
involving workqueues.

v3: cpulist_pr_cont() replaced with "%*pbl" printf formatting.

v2: As suggested by Andrew, minor formatting change in pr_cont_work(),
    printk()'s replaced with pr_info()'s, and cpumask printing now
    uses cpulist_pr_cont().

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
CC: Ingo Molnar <mingo@redhat.com>
2015-03-09 09:22:28 -04:00
Tejun Heo
2607d7a6db workqueue: keep track of the flushing task and pool manager
Add wq_barrier->task and worker_pool->manager to keep track of the
flushing task and pool manager respectively.  These are purely
informational and will be used to implement sysrq dump of workqueues.

Signed-off-by: Tejun Heo <tj@kernel.org>
2015-03-09 09:22:28 -04:00
Tejun Heo
e2dca7adff workqueue: make the workqueues list RCU walkable
The workqueues list is protected by wq_pool_mutex and a workqueue and
its subordinate data structures are freed directly on destruction.  We
want to add the ability dump workqueues from a sysrq callback which
requires walking all workqueues without grabbing wq_pool_mutex.  This
patch makes freeing of workqueues RCU protected and makes the
workqueues list walkable while holding RCU read lock.

Note that pool_workqueues and pools are already sched-RCU protected.
For consistency, workqueues are also protected with sched-RCU.

While at it, reverse the workqueues list so that a workqueue which is
created earlier comes before.  The order of the list isn't significant
functionally but this makes the planned sysrq dump list system
workqueues first.

Signed-off-by: Tejun Heo <tj@kernel.org>
2015-03-09 09:22:28 -04:00
Tejun Heo
8603e1b300 workqueue: fix hang involving racing cancel[_delayed]_work_sync()'s for PREEMPT_NONE
cancel[_delayed]_work_sync() are implemented using
__cancel_work_timer() which grabs the PENDING bit using
try_to_grab_pending() and then flushes the work item with PENDING set
to prevent the on-going execution of the work item from requeueing
itself.

try_to_grab_pending() can always grab PENDING bit without blocking
except when someone else is doing the above flushing during
cancelation.  In that case, try_to_grab_pending() returns -ENOENT.  In
this case, __cancel_work_timer() currently invokes flush_work().  The
assumption is that the completion of the work item is what the other
canceling task would be waiting for too and thus waiting for the same
condition and retrying should allow forward progress without excessive
busy looping

Unfortunately, this doesn't work if preemption is disabled or the
latter task has real time priority.  Let's say task A just got woken
up from flush_work() by the completion of the target work item.  If,
before task A starts executing, task B gets scheduled and invokes
__cancel_work_timer() on the same work item, its try_to_grab_pending()
will return -ENOENT as the work item is still being canceled by task A
and flush_work() will also immediately return false as the work item
is no longer executing.  This puts task B in a busy loop possibly
preventing task A from executing and clearing the canceling state on
the work item leading to a hang.

task A			task B			worker

						executing work
__cancel_work_timer()
  try_to_grab_pending()
  set work CANCELING
  flush_work()
    block for work completion
						completion, wakes up A
			__cancel_work_timer()
			while (forever) {
			  try_to_grab_pending()
			    -ENOENT as work is being canceled
			  flush_work()
			    false as work is no longer executing
			}

This patch removes the possible hang by updating __cancel_work_timer()
to explicitly wait for clearing of CANCELING rather than invoking
flush_work() after try_to_grab_pending() fails with -ENOENT.

Link: http://lkml.kernel.org/g/20150206171156.GA8942@axis.com

v3: bit_waitqueue() can't be used for work items defined in vmalloc
    area.  Switched to custom wake function which matches the target
    work item and exclusive wait and wakeup.

v2: v1 used wake_up() on bit_waitqueue() which leads to NULL deref if
    the target bit waitqueue has wait_bit_queue's on it.  Use
    DEFINE_WAIT_BIT() and __wake_up_bit() instead.  Reported by Tomeu
    Vizoso.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Rabin Vincent <rabin.vincent@axis.com>
Cc: Tomeu Vizoso <tomeu.vizoso@gmail.com>
Cc: stable@vger.kernel.org
Tested-by: Jesper Nilsson <jesper.nilsson@axis.com>
Tested-by: Rabin Vincent <rabin.vincent@axis.com>
2015-03-05 08:04:13 -05:00
Tejun Heo
dfbcbf42dd workqueue: use %*pb[l] to format bitmaps including cpumasks and nodemasks
printk and friends can now format bitmaps using '%*pb[l]'.  cpumask
and nodemask also provide cpumask_pr_args() and nodemask_pr_args()
respectively which can be used to generate the two printf arguments
necessary to format the specified cpu/nodemask.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-02-13 21:21:37 -08:00