Files
lucaswei ec98b24735 Merge android-4.9-q (4.9.228) into android-msm-pixel-4.9-lts
Merge 4.9.228 into android-4.9-q
Linux 4.9.228
    perf symbols: Fix debuginfo search for Ubuntu
    perf probe: Do not show the skipped events
    w1: omap-hdq: cleanup to add missing newline for some dev_dbg
    mtd: rawnand: pasemi: Fix the probe error path
    mtd: rawnand: brcmnand: fix hamming oob layout
  * sunrpc: clean up properly in gss_mech_unregister()
      include/linux/sunrpc/gss_api.h
    sunrpc: svcauth_gss_register_pseudoflavor must reject duplicate registrations.
  * kbuild: force to build vmlinux if CONFIG_MODVERSION=y
      Makefile
    drivers/macintosh: Fix memleak in windfarm_pm112 driver
    ARM: tegra: Correct PL310 Auxiliary Control Register initialization
  * kernel/cpu_pm: Fix uninitted local in cpu_pm
      kernel/cpu_pm.c
    sparc64: fix misuses of access_process_vm() in genregs32_[sg]et()
    sparc32: fix register window handling in genregs32_[gs]et()
    pinctrl: samsung: Save/restore eint_mask over suspend for EINT_TYPE GPIOs
    power: vexpress: add suppress_bind_attrs to true
    igb: Report speed and duplex as unknown when device is runtime suspended
    b43_legacy: Fix connection problem with WPA3
    b43: Fix connection problem with WPA3
    b43legacy: Fix case where channel status is corrupted
    media: go7007: fix a miss of snd_card_free
    carl9170: remove P2P_GO support
    e1000e: Relax condition to trigger reset for ME workaround
  * PCI: Program MPS for RCiEP devices
      drivers/pci/probe.c
  * blk-mq: move blk_mq_update_nr_hw_queues synchronize_rcu call
      block/blk-mq.c
    btrfs: fix error handling when submitting direct I/O bio
  * ext4: fix race between ext4_sync_parent() and rename()
      fs/ext4/fsync.c
  * ext4: fix EXT_MAX_EXTENT/INDEX to check for zeroed eh_max
      fs/ext4/ext4_extents.h
    evm: Fix possible memory leak in evm_calc_hmac_or_hash()
    ima: Directly assign the ima_default_policy pointer to ima_rules
    ima: Fix ima digest hash table key calculation
    mm: thp: make the THP mapcount atomic against __split_huge_pmd_locked()
    btrfs: send: emit file capabilities after chown
  * cpuidle: Fix three reference count leaks
      drivers/cpuidle/sysfs.c
    spi: dw: Return any value retrieved from the dma_transfer callback
    mmc: sdhci-esdhc-imx: fix the mask for tuning start point
    ixgbe: fix signed-integer-overflow warning
    staging: greybus: sdio: Respect the cmd->busy_timeout from the mmc core
    MIPS: Fix IRQ tracing when call handle_fpe() and handle_msa_fpe()
  * PCI: Don't disable decoding when mmio_always_on is set
      drivers/pci/probe.c
    macvlan: Skip loopback packets in RX handler
    m68k: mac: Don't call via_flush_cache() on Mac IIfx
    x86/mm: Stop printing BRK addresses
    mips: Add udelay lpj numbers adjustment
    x86/boot: Correct relocation destination on old linkers
    mwifiex: Fix memory corruption in dump_station
    rtlwifi: Fix a double free in _rtl_usb_tx_urb_setup()
    md: don't flush workqueue unconditionally in md_open
  * kgdb: Fix spurious true from in_dbg_master()
      include/linux/kgdb.h
    mips: cm: Fix an invalid error code of INTVN_*_ERR
    MIPS: Truncate link address into 32bit for 32bit kernel
    powerpc/spufs: fix copy_to_user while atomic
    net: allwinner: Fix use correct return type for ndo_start_xmit()
    net: lpc-enet: fix error return code in lpc_mii_init()
  * exit: Move preemption fixup up, move blocking operations down
      kernel/exit.c
  * lib/mpi: Fix 64-bit MIPS build with Clang
      lib/mpi/longlong.h
    netfilter: nft_nat: return EOPNOTSUPP if type or flags are not supported
    MIPS: Make sparse_init() using top-down allocation
    media: platform: fcp: Set appropriate DMA parameters
    media: dvb: return -EREMOTEIO on i2c transfer failure.
    dt-bindings: display: mediatek: control dpi pins mode to avoid leakage
    e1000: Distribute switch variables for initialization
  * staging: android: ion: use vmap instead of vm_map_ram
      drivers/staging/android/ion/ion_heap.c
    net: vmxnet3: fix possible buffer overflow caused by bad DMA value in vmxnet3_get_rss()
  * x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
      include/uapi/linux/kvm.h
    ARM: 8978/1: mm: make act_mm() respect THREAD_SIZE
    btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums
    clocksource: dw_apb_timer_of: Fix missing clockevent timers
    spi: dw: Enable interrupts in accordance with DMA xfer mode
  * kgdb: Prevent infinite recursive entries to the debugger
      kernel/debug/debug_core.c
  * Bluetooth: Add SCO fallback for invalid LMP parameters error
      net/bluetooth/hci_event.c
    spi: dw: Zero DMA Tx and Rx configurations on stack
    net: ena: fix error returning in ena_com_get_hash_function()
    objtool: Ignore empty alternatives
    media: si2157: Better check for running tuner in init
    ACPI: GED: use correct trigger type field in _Exx / _Lxx handling
  * media: dvb_frontend: ensure that inital front end status initialized
      drivers/media/dvb-core/dvb_frontend.c
      include/uapi/linux/dvb/frontend.h
    can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB devices
    agp/intel: Reinforce the barrier after GTT updates
  * perf: Add cond_resched() to task_function_call()
      kernel/events/core.c
  * fat: don't allow to mount if the FAT length == 0
      fs/fat/inode.c
  * mm/slub: fix a memory leak in sysfs_slab_add()
      mm/slub.c
  * Smack: slab-out-of-bounds in vsscanf
      security/smack/smackfs.c
    ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb
    ath9x: Fix stack-out-of-bounds Write in ath9k_hif_usb_rx_cb
    ath9k: Fix use-after-free Write in ath9k_htc_rx_msg
    ath9k: Fix use-after-free Read in ath9k_wmi_ctrl_rx
  * KVM: arm64: Make vcpu_cp1x() work on Big Endian hosts
      arch/arm64/include/asm/kvm_host.h
    KVM: MIPS: Fix VPN2_MASK definition for variable cpu_vmbits
    KVM: MIPS: Define KVM_ENTRYHI_ASID to cpu_asid_mask(&boot_cpu_data)
    KVM: nVMX: Consult only the "basic" exit reason when routing nested exit
    KVM: nSVM: leave ASID aside in copy_vmcb_control_area
    video: fbdev: w100fb: Fix a potential double free.
  * proc: Use new_inode not new_inode_pseudo
      fs/proc/inode.c
      fs/proc/self.c
      fs/proc/thread_self.c
  * ovl: initialize error in ovl_copy_xattr
      fs/overlayfs/copy_up.c
    spi: bcm2835: Fix controller unregister order
    spi: pxa2xx: Fix controller unregister order
  * spi: Fix controller unregister order
      drivers/spi/spi.c
  * spi: No need to assign dummy value in spi_unregister_controller()
      drivers/spi/spi.c
    spi: dw: Fix controller unregister order
    spi: dw: fix possible race condition
    x86/speculation: PR_SPEC_FORCE_DISABLE enforcement for indirect branches.
    x86/speculation: Avoid force-disabling IBPB based on STIBP and enhanced IBRS.
    x86/speculation: Add support for STIBP always-on preferred mode
    x86/speculation: Change misspelled STIPB to STIBP
  * ALSA: pcm: disallow linking stream to itself
      sound/core/pcm_native.c
    spi: bcm-qspi: when tx/rx buffer is NULL set to 0
    spi: bcm2835aux: Fix controller unregister order
    nilfs2: fix null pointer dereference at nilfs_segctor_do_construct()
  * cgroup, blkcg: Prepare some symbols for module and !CONFIG_CGROUP usages
      fs/fs-writeback.c
    ACPI: PM: Avoid using power resources if there are none for D0
    ACPI: GED: add support for _Exx / _Lxx handler methods
    ACPI: CPPC: Fix reference count leak in acpi_cppc_processor_probe()
    ACPI: sysfs: Fix reference count leak in acpi_sysfs_add_hotplug_profile()
  * ALSA: usb-audio: Fix inconsistent card PM state after resume
      sound/usb/card.c
      sound/usb/usbaudio.h
    ALSA: es1688: Add the missed snd_card_free()
    efi/efivars: Add missing kobject_put() in sysfs entry creation error path
    x86/reboot/quirks: Add MacBook6,1 reboot quirk
    x86/speculation: Prevent rogue cross-process SSBD shutdown
    x86/PCI: Mark Intel C620 MROMs as having non-compliant BARs
    x86_64: Fix jiffies ODR violation
    ath9k_htc: Silence undersized packet warnings
    drivers/net/ibmvnic: Update VNIC protocol version reporting
  * sched/fair: Don't NUMA balance for kthreads
      kernel/sched/fair.c
    ARM: 8977/1: ptrace: Fix mask for thumb breakpoint hook
    crypto: talitos - fix ECB and CBC algs ivsize
  * scsi: return correct blkprep status code in case scsi_init_io() fails.
      drivers/scsi/scsi_lib.c
    vxlan: Avoid infinite loop when suppressing NS messages with invalid options
  * ipv6: fix IPV6_ADDRFORM operation logic
      net/ipv6/ipv6_sockglue.c
    Merge 4.9.227 into android-4.9-q
Linux 4.9.227
    uprobes: ensure that uprobe->offset and ->ref_ctr_offset are properly aligned
    iio: vcnl4000: Fix i2c swapped word reading.
    x86/speculation: Add Ivy Bridge to affected list
    x86/speculation: Add SRBDS vulnerability and mitigation documentation
  * x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation
      drivers/base/cpu.c
    x86/cpu: Add 'table' argument to cpu_matches()
  * x86/cpu: Add a steppings field to struct x86_cpu_id
      include/linux/mod_devicetable.h
  * nvmem: qfprom: remove incorrect write support
      drivers/nvmem/qfprom.c
    staging: rtl8712: Fix IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK
    tty: hvc_console, fix crashes on parallel open/close
  * vt: keyboard: avoid signed integer overflow in k_ascii
      drivers/tty/vt/keyboard.c
    usb: musb: Fix runtime PM imbalance on error
    USB: serial: option: add Telit LE910C1-EUX compositions
    USB: serial: usb_wwan: do not resubmit rx urb on fatal errors
    USB: serial: qcserial: add DW5816e QDL support
  * l2tp: add sk_family checks to l2tp_validate_socket
      net/l2tp/l2tp_core.c
    vsock: fix timeout in vsock_accept()
    NFC: st21nfca: add missed kfree_skb() in an error path
    net: usb: qmi_wwan: add Telit LE910C1-EUX composition
  * l2tp: do not use inet_hash()/inet_unhash()
      net/l2tp/l2tp_ip.c
      net/l2tp/l2tp_ip6.c
  * devinet: fix memleak in inetdev_init()
      net/ipv4/devinet.c
    airo: Fix read overflows sending packets
  * scsi: ufs: Release clock if DMA map fails
      drivers/scsi/ufs/ufshcd.c
    slip: not call free_netdev before rtnl_unlock in slip_open
    slcan: Fix double-free on slcan_open() error path
  * mmc: fix compilation of user API
      include/uapi/linux/mmc/ioctl.h
    kernel/relay.c: handle alloc_percpu returning NULL in relay_open
    p54usb: add AirVasT USB stick device-id
    HID: i2c-hid: add Schneider SCL142ALM to descriptor override
  * mm: Fix mremap not considering huge pmd devmap
      mm/mremap.c
  * pppoe: only process PADT targeted at local interfaces
      drivers/net/ppp/pppoe.c
    net: smsc911x: Fix runtime PM imbalance on error
    net: ethernet: stmmac: Enable interface clocks on probe for IPQ806x
    net/ethernet/freescale: rework quiesce/activate for ucc_geth
    net: bmac: Fix read of MAC address from ROM
    x86/mmiotrace: Use cpumask_available() for cpumask_var_t variables
    ARC: Fix ICCM & DCCM runtime size checks
    s390/ftrace: save traced function caller
    spi: dw: use "smp_mb()" to avoid sending spi data error
  * esp6: fix memleak on error path in esp6_input
      net/ipv6/esp6.c
    usb: gadget: f_uac2: fix error handling in afunc_bind (again)
  * scsi: scsi_devinfo: fixup string compare
      drivers/scsi/scsi_devinfo.c
    Merge 4.9.226 into android-4.9-q
Linux 4.9.226
    scsi: zfcp: fix request object use-after-free in send path causing wrong traces
    net: hns: Fixes the missing put_device in positive leg for roce reset
    sc16is7xx: move label 'err_spi' to correct section
  * mm/vmalloc.c: don't dereference possible NULL pointer in __vunmap()
      mm/vmalloc.c
  * net: rtnl_configure_link: fix dev flags changes arg to __dev_notify_flags
      net/core/rtnetlink.c
    genirq/generic_pending: Do not lose pending affinity update
  * netfilter: nf_conntrack_pptp: fix compilation warning with W=1 build
      include/linux/netfilter/nf_conntrack_pptp.h
      net/netfilter/nf_conntrack_pptp.c
  * bonding: Fix reference count leak in bond_sysfs_slave_add.
      drivers/net/bonding/bond_sysfs_slave.c
    qlcnic: fix missing release in qlcnic_83xx_interrupt_test.
  * netfilter: nf_conntrack_pptp: prevent buffer overflows in debug code
      include/linux/netfilter/nf_conntrack_pptp.h
      net/ipv4/netfilter/nf_nat_pptp.c
      net/netfilter/nf_conntrack_pptp.c
    netfilter: ipset: Fix subcounter update skip
    netfilter: nft_reject_bridge: enable reject with bridge vlan
  * ip_vti: receive ipip packet by calling ip_tunnel_rcv
      net/ipv4/ip_vti.c
  * vti4: eliminated some duplicate code.
      net/ipv4/ip_vti.c
  * xfrm: fix a NULL-ptr deref in xfrm_local_error
      net/xfrm/xfrm_output.c
  * xfrm: fix a warning in xfrm_policy_insert_list
      net/xfrm/xfrm_policy.c
  * xfrm: allow to accept packets with ipv6 NEXTHDR_HOP in xfrm_input
      net/xfrm/xfrm_input.c
    x86/dma: Fix max PFN arithmetic overflow on 32 bit systems
    mac80211: mesh: fix discovery timer re-arming issue / crash
    parisc: Fix kernel panic in mem_init()
  * iommu: Fix reference count leak in iommu_group_alloc.
      drivers/iommu/iommu.c
  * include/asm-generic/topology.h: guard cpumask_of_node() macro argument
      include/asm-generic/topology.h
  * fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info()
      fs/binfmt_elf.c
  * mm: remove VM_BUG_ON(PageSlab()) from page_mapcount()
      include/linux/mm.h
    libceph: ignore pool overlay and cache logic on redirects
  * exec: Always set cap_ambient in cap_bprm_set_creds
      security/commoncap.c
  * ALSA: usb-audio: mixer: volume quirk for ESS Technology Asus USB DAC
      sound/usb/mixer.c
  * ALSA: hwdep: fix a left shifting 1 by 31 UB bug
      sound/core/hwdep.c
    ARM: dts/imx6q-bx50v3: Set display interface clock parents
    ARM: dts: imx6q-bx50v3: Add internal switch
    ARM: dts: imx: Correct B850v3 clock assignment
    IB/qib: Call kobject_put() when kobject_init_and_add() fails
    Input: synaptics-rmi4 - fix error return code in rmi_driver_probe()
    Input: i8042 - add ThinkPad S230u to i8042 reset list
  * Input: xpad - add custom init packet for Xbox One S controllers
      drivers/input/joystick/xpad.c
  * Input: evdev - call input_flush_device() on release(), not flush()
      drivers/input/evdev.c
    Input: usbtouchscreen - add support for BonXeon TP
    cifs: Fix null pointer check in cifs_read
    usb: gadget: legacy: fix redundant initialization warnings
    cachefiles: Fix race between read_waiter and read_copier involving op->to_do
    gfs2: move privileged user check to gfs2_quota_lock_check
    net: microchip: encx24j600: add missed kthread_stop
    gpio: tegra: mask GPIO IRQs during IRQ shutdown
    IB/cma: Fix reference count leak when no ipv4 addresses are set
  * uapi: fix linux/if_pppol2tp.h userspace compilation errors
      include/uapi/linux/l2tp.h
    net/mlx4_core: fix a memory leak bug.
    net: sun: fix missing release regions in cas_init_one().
    net/mlx5: Add command entry handling completion
    net: qrtr: Fix passing invalid reference to qrtr_local_enqueue()
    net/mlx5e: Update netdev txq on completions during closure
    sctp: Start shutdown on association restart if in SHUTDOWN-SENT state and socket is closed
  * net sched: fix reporting the first-time use timestamp
      include/net/act_api.h
  * net: revert "net: get rid of an signed integer overflow in ip_idents_reserve()"
      net/ipv4/route.c
    net: ipip: fix wrong address family in init error path
    ax25: fix setsockopt(SO_BINDTODEVICE)
    ANDROID: cuttlefish defconfig - enable mount/net/uts namespaces.
    Merge 4.9.225 into android-4.9-q
Linux 4.9.225
    iio: sca3000: Remove an erroneous 'get_device()'
    rapidio: fix an error in get_user_pages_fast() error handling
    mei: release me_cl object reference
    iio: dac: vf610: Fix an error handling path in 'vf610_dac_probe()'
    staging: greybus: Fix uninitialized scalar variable
    staging: iio: ad2s1210: Fix SPI reading
    Revert "gfs2: Don't demote a glock until its revokes are written"
    cxgb4/cxgb4vf: Fix mac_hlist initialization and free
    cxgb4: free mac_hlist properly
    libnvdimm/btt: Remove unnecessary code in btt_freelist_init
    platform/x86: alienware-wmi: fix kfree on potentially uninitialized pointer
  * ubsan: build ubsan.c more conservatively
      lib/Makefile
  * x86/uaccess, ubsan: Fix UBSAN vs. SMAP
      lib/Makefile
  * l2tp: device MTU setup, tunnel socket needs a lock
      include/linux/net.h
      net/l2tp/l2tp_eth.c
      net/socket.c
    dmaengine: tegra210-adma: Fix an error handling path in 'tegra_adma_probe()'
  * ALSA: pcm: fix incorrect hw_base increase
      sound/core/pcm_lib.c
  * l2tp: initialise PPP sessions before registering them
      net/l2tp/l2tp_ppp.c
  * l2tp: protect sock pointer of struct pppol2tp_session with RCU
      net/l2tp/l2tp_ppp.c
  * l2tp: initialise l2tp_eth sessions before registering them
      net/l2tp/l2tp_eth.c
  * l2tp: don't register sessions in l2tp_session_create()
      net/l2tp/l2tp_core.c
      net/l2tp/l2tp_core.h
      net/l2tp/l2tp_eth.c
      net/l2tp/l2tp_ppp.c
  * l2tp: fix l2tp_eth module loading
      net/l2tp/l2tp_eth.c
  * l2tp: pass tunnel pointer to ->session_create()
      net/l2tp/l2tp_core.h
      net/l2tp/l2tp_eth.c
      net/l2tp/l2tp_netlink.c
      net/l2tp/l2tp_ppp.c
  * l2tp: prevent creation of sessions on terminated tunnels
      net/l2tp/l2tp_core.c
      net/l2tp/l2tp_core.h
  * l2tp: hold tunnel used while creating sessions with netlink
      net/l2tp/l2tp_netlink.c
  * l2tp: hold tunnel while handling genl TUNNEL_GET commands
      net/l2tp/l2tp_netlink.c
  * l2tp: hold tunnel while handling genl tunnel updates
      net/l2tp/l2tp_netlink.c
  * l2tp: hold tunnel while processing genl delete command
      net/l2tp/l2tp_netlink.c
  * l2tp: hold tunnel while looking up sessions in l2tp_netlink
      net/l2tp/l2tp_core.c
      net/l2tp/l2tp_core.h
      net/l2tp/l2tp_netlink.c
  * l2tp: initialise session's refcount before making it reachable
      net/l2tp/l2tp_core.c
  * l2tp: define parameters of l2tp_tunnel_find*() as "const"
      net/l2tp/l2tp_core.c
      net/l2tp/l2tp_core.h
  * l2tp: define parameters of l2tp_session_get*() as "const"
      net/l2tp/l2tp_core.c
      net/l2tp/l2tp_core.h
  * l2tp: remove l2tp_session_find()
      net/l2tp/l2tp_core.c
      net/l2tp/l2tp_core.h
  * l2tp: remove useless duplicate session detection in l2tp_netlink
      net/l2tp/l2tp_netlink.c
  * L2TP:Adjust intf MTU, add underlay L3, L2 hdrs.
      net/l2tp/l2tp_eth.c
  * New kernel function to get IP overhead on a socket.
      include/linux/net.h
      net/socket.c
  * net: l2tp: ppp: change PPPOL2TP_MSG_* => L2TP_MSG_*
      net/l2tp/l2tp_ppp.c
  * net: l2tp: deprecate PPPOL2TP_MSG_* in favour of L2TP_MSG_*
      include/uapi/linux/if_pppol2tp.h
  * net: l2tp: export debug flags to UAPI
      include/uapi/linux/l2tp.h
      net/l2tp/l2tp_core.h
  * watchdog: Fix the race between the release of watchdog_core_data and cdev
      drivers/watchdog/watchdog_dev.c
    arm64: fix the flush_icache_range arguments in machine_kexec
    padata: purge get_cpu and reorder_via_wq from padata_do_serial
    padata: initialize pd->cpu with effective cpumask
    padata: Replace delayed timer with immediate workqueue in padata_reorder
    padata: set cpu_index of unused CPUs to -1
  * i2c: dev: Fix the race between the release of i2c_dev and cdev
      drivers/i2c/i2c-dev.c
    ARM: futex: Address build warning
    platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA
  * USB: core: Fix misleading driver bug report
      drivers/usb/core/message.c
    ceph: fix double unlock in handle_cap_export()
    gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp()
  * component: Silence bind error on -EPROBE_DEFER
      drivers/base/component.c
  * configfs: fix config_item refcnt leak in configfs_rmdir()
      fs/configfs/dir.c
  * HID: multitouch: add eGalaxTouch P80H84 support
      drivers/hid/hid-ids.h
      drivers/hid/hid-multitouch.c
  * gcc-common.h: Update for GCC 10
      scripts/gcc-plugins/Makefile
    i2c: mux: demux-pinctrl: Fix an error handling path in 'i2c_demux_pinctrl_probe()'
    iommu/amd: Fix over-read of ACPI UID from IVRS table
  * fix multiplication overflow in copy_fdtable()
      fs/file.c
    ima: Fix return value of ima_write_policy()
    evm: Check also if *tfm is an error pointer in init_desc()
    padata: ensure padata_do_serial() runs on the correct CPU
    padata: ensure the reorder timer callback runs on the correct CPU
    padata: get_next is never NULL
    padata: Remove unused but set variables
    igb: use igb_adapter->io_addr instead of e1000_hw->hw_addr
    Merge 4.9.224 into android-4.9-q
Linux 4.9.224
  * Makefile: disallow data races on gcc-10 as well
      Makefile
    KVM: x86: Fix off-by-one error in kvm_vcpu_ioctl_x86_setup_mce
    ARM: dts: r8a7740: Add missing extal2 to CPG node
    ARM: dts: r8a73a4: Add missing CMT1 interrupts
    Revert "ALSA: hda/realtek: Fix pop noise on ALC225"
    usb: gadget: legacy: fix error return code in cdc_bind()
    usb: gadget: legacy: fix error return code in gncm_bind()
    usb: gadget: audio: Fix a missing error return value in audio_bind()
    usb: gadget: net2272: Fix a memory leak in an error handling path in 'net2272_plat_probe()'
  * exec: Move would_dump into flush_old_exec
      fs/exec.c
  * x86: Fix early boot crash on gcc-10, third try
      include/linux/compiler.h
      init/main.c
    ARM: dts: imx27-phytec-phycard-s-rdk: Fix the I2C1 pinctrl entries
  * usb: xhci: Fix NULL pointer dereference when enqueuing trbs from urb sg list
      drivers/usb/host/xhci-ring.c
  * USB: gadget: fix illegal array access in binding with UDC
      drivers/usb/gadget/configfs.c
  * ALSA: usb-audio: Add control message quirk delay for Kingston HyperX headset
      sound/usb/quirks.c
  * ALSA: rawmidi: Fix racy buffer resize under concurrent accesses
      include/sound/rawmidi.h
      sound/core/rawmidi.c
  * ALSA: rawmidi: Initialize allocated buffers
      sound/core/rawmidi.c
    ALSA: hda/realtek - Limit int mic boost for Thinkpad T530
    netprio_cgroup: Fix unlimited memory leak of v2 cgroups
  * net: ipv4: really enforce backoff for redirects
      net/ipv4/route.c
  * Revert "ipv6: add mtu lock check in __ip6_rt_update_pmtu"
      net/ipv6/route.c
  * netlabel: cope with NULL catmap
      net/ipv4/cipso_ipv4.c
      net/ipv6/calipso.c
      net/netlabel/netlabel_kapi.c
  * net: fix a potential recursive NETDEV_FEAT_CHANGE
      net/core/dev.c
  * gcc-10: disable 'restrict' warning for now
      Makefile
  * gcc-10: disable 'stringop-overflow' warning for now
      Makefile
  * gcc-10: disable 'array-bounds' warning for now
      Makefile
  * gcc-10: disable 'zero-length-bounds' warning for now
      Makefile
  * gcc-10: avoid shadowing standard library 'free()' in crypto
      crypto/xts.c
    net: phy: micrel: Use strlcpy() for ethtool::get_strings
  * Stop the ad-hoc games with -Wno-maybe-initialized
      Makefile
      init/Kconfig
      kernel/trace/Kconfig
  * kbuild: compute false-positive -Wmaybe-uninitialized cases in Kconfig
      Makefile
      init/Kconfig
      kernel/trace/Kconfig
  * gcc-10 warnings: fix low-hanging fruit
      include/linux/fs.h
      include/linux/tty.h
    pnp: Use list_for_each_entry() instead of open coding
    IB/mlx4: Test return value of calls to ib_get_cached_pkey
  * netfilter: conntrack: avoid gcc-10 zero-length-bounds warning
      include/net/netfilter/nf_conntrack.h
      net/netfilter/nf_conntrack_core.c
    i40iw: Fix error handling in i40iw_manage_arp_cache()
    pinctrl: cherryview: Add missing spinlock usage in chv_gpio_irq_handler
    ipc/util.c: sysvipc_find_ipc() incorrectly updates position index
    drm/qxl: lost qxl_bo_kunmap_atomic_page in qxl_image_init_helper()
    ALSA: hda/hdmi: fix race in monitor detection during probe
    dmaengine: mmp_tdma: Reset channel error on release
    dmaengine: pch_dma.c: Avoid data race between probe and irq handler
    cifs: Fix a race condition with cifs_echo_request
    cifs: Check for timeout on Negotiate stage
    spi: spi-dw: Add lock protect dw_spi rx/tx to prevent concurrent calls
  * scsi: sg: add sg_remove_request in sg_write
      drivers/scsi/sg.c
    drop_monitor: work around gcc-10 stringop-overflow warning
    net: moxa: Fix a potential double 'free_irq()'
    net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()'
  * shmem: fix possible deadlocks on shmlock_user_lock
      mm/shmem.c
    ptp: free ptp device pin descriptors properly
  * ptp: fix the race between the release of ptp_clock and cdev
      include/linux/posix-clock.h
      kernel/time/posix-clock.c
    ptp: Fix pass zero to ERR_PTR() in ptp_clock_register
  * chardev: add helper function to register char devs with a struct device
      fs/char_dev.c
      include/linux/cdev.h
    ptp: create "pins" together with the rest of attributes
    ptp: use is_visible method to hide unused attributes
    ptp: do not explicitly set drvdata in ptp_clock_register()
  * blktrace: fix dereference after null check
      kernel/trace/blktrace.c
  * blktrace: Protect q->blk_trace with RCU
      include/linux/blkdev.h
      include/linux/blktrace_api.h
      kernel/trace/blktrace.c
  * blktrace: fix trace mutex deadlock
      kernel/trace/blktrace.c
  * blktrace: fix unlocked access to init/start-stop/teardown
      kernel/trace/blktrace.c
  * blktrace: Fix potential deadlock between delete & sysfs ops
      block/blk-core.c
      include/linux/blkdev.h
      kernel/trace/blktrace.c
  * net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup
      include/net/addrconf.h
      net/ipv6/addrconf_core.c
      net/ipv6/af_inet6.c
  * net: ipv6: add net argument to ip6_dst_lookup_flow
      include/net/ipv6.h
      net/ipv6/af_inet6.c
      net/ipv6/datagram.c
      net/ipv6/inet6_connection_sock.c
      net/ipv6/ip6_output.c
      net/ipv6/raw.c
      net/ipv6/tcp_ipv6.c
      net/l2tp/l2tp_ip6.c
  * ext4: add cond_resched() to ext4_protect_reserved_inode
      fs/ext4/block_validity.c
  * binfmt_elf: Do not move brk for INTERP-less ET_EXEC
      fs/binfmt_elf.c
    scripts/decodecode: fix trapping instruction formatting
    objtool: Fix stack offset tracking for indirect CFAs
    batman-adv: Fix refcnt leak in batadv_v_ogm_process
    batman-adv: Fix refcnt leak in batadv_store_throughput_override
    batman-adv: Fix refcnt leak in batadv_show_throughput_override
    batman-adv: fix batadv_nc_random_weight_tq
  * mm/page_alloc: fix watchdog soft lockups during set_zone_contiguous()
      mm/page_alloc.c
  * tracing: Add a vmalloc_sync_mappings() for safe measure
      kernel/trace/trace.c
    USB: serial: garmin_gps: add sanity checking for data length
    USB: uas: add quirk for LaCie 2Big Quadra
  * binfmt_elf: move brk out of mmap when doing direct loader exec
      fs/binfmt_elf.c
    Revert "ACPI / video: Add force_native quirk for HP Pavilion dv6"
    bnxt_en: Improve AER slot reset.
    net/mlx5: Fix command entry leak in Internal Error State
    net/mlx5: Fix forced completion access non initialized command entry
    bnxt_en: Fix VLAN acceleration handling in bnxt_fix_features().
    sch_sfq: validate silly quantum values
    sch_choke: avoid potential panic in choke_reset()
    net: usb: qmi_wwan: add support for DW5816e
    net/mlx4_core: Fix use of ENOSPC around mlx4_counter_alloc()
    net: macsec: preserve ingress frame ordering
  * fq_codel: fix TCA_FQ_CODEL_DROP_BATCH_SIZE sanity checks
      net/sched/sch_fq_codel.c
    dp83640: reverse arguments to list_add_tail
    USB: serial: qcserial: Add DW5816e support
  * ANDROID: hid: steam: remove BT controller matching
      drivers/hid/hid-core.c
      drivers/hid/hid-ids.h
  * UPSTREAM: HID: steam: Fix input device disappearing
      drivers/hid/hid-steam.c

Change-Id: I03104a17738ef3d28a296ca370185f58396c9262
Signed-off-by: lucaswei <lucaswei@google.com>
2020-07-10 11:45:18 +08:00

241 lines
6.7 KiB
C

/*
* Copyright (C) 2011 Google, Inc.
*
* Author:
* Colin Cross <ccross@android.com>
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <linux/kernel.h>
#include <linux/cpu_pm.h>
#include <linux/module.h>
#include <linux/notifier.h>
#include <linux/spinlock.h>
#include <linux/syscore_ops.h>
bool from_suspend;
static DEFINE_RWLOCK(cpu_pm_notifier_lock);
static RAW_NOTIFIER_HEAD(cpu_pm_notifier_chain);
static int cpu_pm_notify(enum cpu_pm_event event, int nr_to_call, int *nr_calls,
void *data)
{
int ret;
ret = __raw_notifier_call_chain(&cpu_pm_notifier_chain, event, data,
nr_to_call, nr_calls);
return notifier_to_errno(ret);
}
/**
* cpu_pm_register_notifier - register a driver with cpu_pm
* @nb: notifier block to register
*
* Add a driver to a list of drivers that are notified about
* CPU and CPU cluster low power entry and exit.
*
* This function may sleep, and has the same return conditions as
* raw_notifier_chain_register.
*/
int cpu_pm_register_notifier(struct notifier_block *nb)
{
unsigned long flags;
int ret;
write_lock_irqsave(&cpu_pm_notifier_lock, flags);
ret = raw_notifier_chain_register(&cpu_pm_notifier_chain, nb);
write_unlock_irqrestore(&cpu_pm_notifier_lock, flags);
return ret;
}
EXPORT_SYMBOL_GPL(cpu_pm_register_notifier);
/**
* cpu_pm_unregister_notifier - unregister a driver with cpu_pm
* @nb: notifier block to be unregistered
*
* Remove a driver from the CPU PM notifier list.
*
* This function may sleep, and has the same return conditions as
* raw_notifier_chain_unregister.
*/
int cpu_pm_unregister_notifier(struct notifier_block *nb)
{
unsigned long flags;
int ret;
write_lock_irqsave(&cpu_pm_notifier_lock, flags);
ret = raw_notifier_chain_unregister(&cpu_pm_notifier_chain, nb);
write_unlock_irqrestore(&cpu_pm_notifier_lock, flags);
return ret;
}
EXPORT_SYMBOL_GPL(cpu_pm_unregister_notifier);
/**
* cpu_pm_enter - CPU low power entry notifier
*
* Notifies listeners that a single CPU is entering a low power state that may
* cause some blocks in the same power domain as the cpu to reset.
*
* Must be called on the affected CPU with interrupts disabled. Platform is
* responsible for ensuring that cpu_pm_enter is not called twice on the same
* CPU before cpu_pm_exit is called. Notified drivers can include VFP
* co-processor, interrupt controller and its PM extensions, local CPU
* timers context save/restore which shouldn't be interrupted. Hence it
* must be called with interrupts disabled.
*
* Return conditions are same as __raw_notifier_call_chain.
*/
int cpu_pm_enter(void)
{
int nr_calls = 0;
int ret = 0;
read_lock(&cpu_pm_notifier_lock);
ret = cpu_pm_notify(CPU_PM_ENTER, -1, &nr_calls, NULL);
if (ret)
/*
* Inform listeners (nr_calls - 1) about failure of CPU PM
* PM entry who are notified earlier to prepare for it.
*/
cpu_pm_notify(CPU_PM_ENTER_FAILED, nr_calls - 1, NULL, NULL);
read_unlock(&cpu_pm_notifier_lock);
return ret;
}
EXPORT_SYMBOL_GPL(cpu_pm_enter);
/**
* cpu_pm_exit - CPU low power exit notifier
*
* Notifies listeners that a single CPU is exiting a low power state that may
* have caused some blocks in the same power domain as the cpu to reset.
*
* Notified drivers can include VFP co-processor, interrupt controller
* and its PM extensions, local CPU timers context save/restore which
* shouldn't be interrupted. Hence it must be called with interrupts disabled.
*
* Return conditions are same as __raw_notifier_call_chain.
*/
int cpu_pm_exit(void)
{
int ret;
read_lock(&cpu_pm_notifier_lock);
ret = cpu_pm_notify(CPU_PM_EXIT, -1, NULL, NULL);
read_unlock(&cpu_pm_notifier_lock);
return ret;
}
EXPORT_SYMBOL_GPL(cpu_pm_exit);
/**
* cpu_cluster_pm_enter - CPU cluster low power entry notifier
*
* Notifies listeners that all cpus in a power domain are entering a low power
* state that may cause some blocks in the same power domain to reset.
*
* Must be called after cpu_pm_enter has been called on all cpus in the power
* domain, and before cpu_pm_exit has been called on any cpu in the power
* domain. Notified drivers can include VFP co-processor, interrupt controller
* and its PM extensions, local CPU timers context save/restore which
* shouldn't be interrupted. Hence it must be called with interrupts disabled.
*
* Must be called with interrupts disabled.
*
* Return conditions are same as __raw_notifier_call_chain.
*/
int cpu_cluster_pm_enter(unsigned long aff_level)
{
int nr_calls = 0;
int ret = 0;
read_lock(&cpu_pm_notifier_lock);
ret = cpu_pm_notify(CPU_CLUSTER_PM_ENTER, -1, &nr_calls,
(void *) aff_level);
if (ret)
/*
* Inform listeners (nr_calls - 1) about failure of CPU cluster
* PM entry who are notified earlier to prepare for it.
*/
cpu_pm_notify(CPU_CLUSTER_PM_ENTER_FAILED, nr_calls - 1, NULL,
(void *) aff_level);
read_unlock(&cpu_pm_notifier_lock);
return ret;
}
EXPORT_SYMBOL_GPL(cpu_cluster_pm_enter);
/**
* cpu_cluster_pm_exit - CPU cluster low power exit notifier
*
* Notifies listeners that all cpus in a power domain are exiting form a
* low power state that may have caused some blocks in the same power domain
* to reset.
*
* Must be called after cpu_cluster_pm_enter has been called for the power
* domain, and before cpu_pm_exit has been called on any cpu in the power
* domain. Notified drivers can include VFP co-processor, interrupt controller
* and its PM extensions, local CPU timers context save/restore which
* shouldn't be interrupted. Hence it must be called with interrupts disabled.
*
* Return conditions are same as __raw_notifier_call_chain.
*/
int cpu_cluster_pm_exit(unsigned long aff_level)
{
int ret;
read_lock(&cpu_pm_notifier_lock);
ret = cpu_pm_notify(CPU_CLUSTER_PM_EXIT, -1, NULL, (void *) aff_level);
read_unlock(&cpu_pm_notifier_lock);
return ret;
}
EXPORT_SYMBOL_GPL(cpu_cluster_pm_exit);
#ifdef CONFIG_PM
static int cpu_pm_suspend(void)
{
int ret;
from_suspend = true;
ret = cpu_pm_enter();
if (ret)
return ret;
ret = cpu_cluster_pm_enter(0);
return ret;
}
static void cpu_pm_resume(void)
{
from_suspend = false;
cpu_cluster_pm_exit(0);
cpu_pm_exit();
}
static struct syscore_ops cpu_pm_syscore_ops = {
.suspend = cpu_pm_suspend,
.resume = cpu_pm_resume,
};
static int cpu_pm_init(void)
{
register_syscore_ops(&cpu_pm_syscore_ops);
return 0;
}
core_initcall(cpu_pm_init);
#endif