* kernel-common/android-4.14-stable:
ANDROID: cuttlefish_defconfig: Disable CMOS RTC driver
ANDROID: modules: fix lockprove warning
BACKPORT: arm64: vdso: Explicitly add build-id option
BACKPORT: arm64: vdso: use $(LD) instead of $(CC) to link VDSO
Linux 4.14.183
scsi: zfcp: fix request object use-after-free in send path causing wrong traces
genirq/generic_pending: Do not lose pending affinity update
net: hns: Fixes the missing put_device in positive leg for roce reset
net: hns: fix unsigned comparison to less than zero
KVM: VMX: check for existence of secondary exec controls before accessing
rxrpc: Fix transport sockopts to get IPv4 errors on an IPv6 socket
sc16is7xx: move label 'err_spi' to correct section
mm/vmalloc.c: don't dereference possible NULL pointer in __vunmap()
netfilter: nf_conntrack_pptp: fix compilation warning with W=1 build
bonding: Fix reference count leak in bond_sysfs_slave_add.
qlcnic: fix missing release in qlcnic_83xx_interrupt_test.
esp6: get the right proto for transport mode in esp6_gso_encap
netfilter: nf_conntrack_pptp: prevent buffer overflows in debug code
netfilter: nfnetlink_cthelper: unbreak userspace helper support
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
vti4: eliminated some duplicate code.
xfrm: fix error in comment
xfrm: fix a NULL-ptr deref in xfrm_local_error
xfrm: fix a warning in xfrm_policy_insert_list
xfrm: call xfrm_output_gso when inner_protocol is set in xfrm_output
xfrm: allow to accept packets with ipv6 NEXTHDR_HOP in xfrm_input
copy_xstate_to_kernel(): don't leave parts of destination uninitialized
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.
include/asm-generic/topology.h: guard cpumask_of_node() macro argument
fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info()
mm: remove VM_BUG_ON(PageSlab()) from page_mapcount()
libceph: ignore pool overlay and cache logic on redirects
ALSA: hda/realtek - Add new codec supported for ALC287
exec: Always set cap_ambient in cap_bprm_set_creds
ALSA: usb-audio: mixer: volume quirk for ESS Technology Asus USB DAC
ALSA: hwdep: fix a left shifting 1 by 31 UB bug
RDMA/pvrdma: Fix missing pci disable in pvrdma_pci_probe()
mmc: block: Fix use-after-free issue for rpmb
ARM: dts: bcm2835-rpi-zero-w: Fix led polarity
ARM: dts/imx6q-bx50v3: Set display interface clock parents
ARM: dts: imx6q-bx50v3: Add internal switch
IB/qib: Call kobject_put() when kobject_init_and_add() fails
gpio: exar: Fix bad handling for ida_simple_get error path
ARM: uaccess: fix DACR mismatch with nested exceptions
ARM: uaccess: integrate uaccess_save and uaccess_restore
ARM: uaccess: consolidate uaccess asm to asm/uaccess-asm.h
ARM: 8843/1: use unified assembler in headers
Input: synaptics-rmi4 - fix error return code in rmi_driver_probe()
Input: synaptics-rmi4 - really fix attn_data use-after-free
Input: i8042 - add ThinkPad S230u to i8042 reset list
Input: dlink-dir685-touchkeys - fix a typo in driver name
Input: xpad - add custom init packet for Xbox One S controllers
Input: evdev - call input_flush_device() on release(), not flush()
Input: usbtouchscreen - add support for BonXeon TP
samples: bpf: Fix build error
cifs: Fix null pointer check in cifs_read
net: freescale: select CONFIG_FIXED_PHY where needed
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
ARM: dts: rockchip: fix pinctrl sub nodename for spi in rk322x.dtsi
arm64: dts: rockchip: swap interrupts interrupt-names rk3399 gpu node
ARM: dts: rockchip: fix phy nodename for rk3228-evb
net/mlx4_core: fix a memory leak bug.
net: sun: fix missing release regions in cas_init_one().
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
r8152: support additional Microsoft Surface Ethernet Adapter variant
net sched: fix reporting the first-time use timestamp
net: revert "net: get rid of an signed integer overflow in ip_idents_reserve()"
net/mlx5: Add command entry handling completion
net: ipip: fix wrong address family in init error path
ax25: fix setsockopt(SO_BINDTODEVICE)
ANDROID: scs: fix recursive spinlock in scs_check_usage
ANDROID: timer: fix timer_setup with CFI
FROMGIT: USB: dummy-hcd: use configurable endpoint naming scheme
UPSTREAM: USB: dummy-hcd: remove unsupported isochronous endpoints
UPSTREAM: usb: raw-gadget: fix null-ptr-deref when reenabling endpoints
UPSTREAM: usb: raw-gadget: documentation updates
UPSTREAM: usb: raw-gadget: support stalling/halting/wedging endpoints
UPSTREAM: usb: raw-gadget: fix gadget endpoint selection
UPSTREAM: usb: raw-gadget: improve uapi headers comments
UPSTREAM: usb: raw-gadget: fix return value of ep read ioctls
UPSTREAM: usb: raw-gadget: fix raw_event_queue_fetch locking
UPSTREAM: usb: raw-gadget: Fix copy_to/from_user() checks
ANDROID: net: bpf: permit redirect from ingress L3 to egress L2 devices at near max mtu
Revert "ANDROID: Incremental fs: Avoid continually recalculating hashes"
Linux 4.14.182
iio: adc: stm32-adc: fix device used to request dma
iio: adc: stm32-adc: Use dma_request_chan() instead dma_request_slave_channel()
x86/unwind/orc: Fix unwind_get_return_address_ptr() for inactive tasks
rxrpc: Fix a memory leak in rxkad_verify_response()
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()'
iio: sca3000: Remove an erroneous 'get_device()'
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
media: fdp1: Fix R-Car M3-N naming in debug message
libnvdimm/btt: Fix LBA masking during 'free list' population
libnvdimm/btt: Remove unnecessary code in btt_freelist_init
ubsan: build ubsan.c more conservatively
x86/uaccess, ubsan: Fix UBSAN vs. SMAP
powerpc/64s: Disable STRICT_KERNEL_RWX
powerpc: Remove STRICT_KERNEL_RWX incompatibility with RELOCATABLE
powerpc: restore alphabetic order in Kconfig
dmaengine: tegra210-adma: Fix an error handling path in 'tegra_adma_probe()'
apparmor: Fix aa_label refcnt leak in policy_update
ALSA: pcm: fix incorrect hw_base increase
ALSA: iec1712: Initialize STDSP24 properly when using the model=staudio option
l2tp: initialise PPP sessions before registering them
l2tp: protect sock pointer of struct pppol2tp_session with RCU
l2tp: initialise l2tp_eth sessions before registering them
l2tp: don't register sessions in l2tp_session_create()
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
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
ceph: fix double unlock in handle_cap_export()
gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp()
x86/apic: Move TSC deadline timer debug printk
scsi: ibmvscsi: Fix WARN_ON during event pool release
component: Silence bind error on -EPROBE_DEFER
vhost/vsock: fix packet delivery order to monitoring devices
configfs: fix config_item refcnt leak in configfs_rmdir()
scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV
HID: multitouch: add eGalaxTouch P80H84 support
gcc-common.h: Update for GCC 10
ubi: Fix seq_file usage in detailed_erase_block_info debugfs file
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()
ima: Fix return value of ima_write_policy()
evm: Check also if *tfm is an error pointer in init_desc()
ima: Set file->f_mode instead of file->f_flags in ima_calc_file_hash()
padata: ensure padata_do_serial() runs on the correct CPU
padata: ensure the reorder timer callback runs on the correct CPU
i2c: dev: Fix the race between the release of i2c_dev and cdev
watchdog: Fix the race between the release of watchdog_core_data and cdev
ext4: add cond_resched() to ext4_protect_reserved_inode
ANDROID: scsi: ufs: Handle clocks when lrbp fails
ANDROID: fscrypt: handle direct I/O with IV_INO_LBLK_32
BACKPORT: FROMLIST: fscrypt: add support for IV_INO_LBLK_32 policies
ANDROID: namespace'ify tcp_default_init_rwnd implementation
Linux 4.14.181
Makefile: disallow data races on gcc-10 as well
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
arm64: dts: rockchip: Rename dwc3 device nodes on rk3399 to make dtc happy
arm64: dts: rockchip: Replace RK805 PMIC node name with "pmic" on rk3328 boards
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()'
clk: rockchip: fix incorrect configuration of rk3228 aclk_gpu* clocks
exec: Move would_dump into flush_old_exec
x86/unwind/orc: Fix error handling in __unwind_start()
usb: xhci: Fix NULL pointer dereference when enqueuing trbs from urb sg list
USB: gadget: fix illegal array access in binding with UDC
usb: host: xhci-plat: keep runtime active when removing host
usb: core: hub: limit HUB_QUIRK_DISABLE_AUTOSUSPEND to USB5534B
ALSA: usb-audio: Add control message quirk delay for Kingston HyperX headset
x86: Fix early boot crash on gcc-10, third try
ARM: dts: imx27-phytec-phycard-s-rdk: Fix the I2C1 pinctrl entries
ARM: dts: dra7: Fix bus_dma_limit for PCIe
ALSA: rawmidi: Fix racy buffer resize under concurrent accesses
ALSA: rawmidi: Initialize allocated buffers
ALSA: hda/realtek - Limit int mic boost for Thinkpad T530
net: tcp: fix rx timestamp behavior for tcp_recvmsg
netprio_cgroup: Fix unlimited memory leak of v2 cgroups
net: ipv4: really enforce backoff for redirects
net: dsa: loop: Add module soft dependency
hinic: fix a bug of ndo_stop
Revert "ipv6: add mtu lock check in __ip6_rt_update_pmtu"
net: phy: fix aneg restart in phy_ethtool_set_eee
netlabel: cope with NULL catmap
net: fix a potential recursive NETDEV_FEAT_CHANGE
net: phy: micrel: Use strlcpy() for ethtool::get_strings
x86/asm: Add instruction suffixes to bitops
gcc-10: avoid shadowing standard library 'free()' in crypto
gcc-10: disable 'restrict' warning for now
gcc-10: disable 'stringop-overflow' warning for now
gcc-10: disable 'array-bounds' warning for now
gcc-10: disable 'zero-length-bounds' warning for now
Stop the ad-hoc games with -Wno-maybe-initialized
kbuild: compute false-positive -Wmaybe-uninitialized cases in Kconfig
gcc-10 warnings: fix low-hanging fruit
pnp: Use list_for_each_entry() instead of open coding
hwmon: (da9052) Synchronize access with mfd
IB/mlx4: Test return value of calls to ib_get_cached_pkey
netfilter: conntrack: avoid gcc-10 zero-length-bounds warning
i40iw: Fix error handling in i40iw_manage_arp_cache()
pinctrl: cherryview: Add missing spinlock usage in chv_gpio_irq_handler
pinctrl: baytrail: Enable pin configuration setting for GPIO chip
ipmi: Fix NULL pointer dereference in ssif_probe
x86/entry/64: Fix unwind hints in register clearing code
ALSA: hda/realtek - Fix S3 pop noise on Dell Wyse
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
cpufreq: intel_pstate: Only mention the BIOS disabling turbo mode once
dmaengine: mmp_tdma: Reset channel error on release
dmaengine: pch_dma.c: Avoid data race between probe and irq handler
scsi: sg: add sg_remove_request in sg_write
virtio-blk: handle block_device_operations callbacks after hot unplug
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
net: stmmac: Use mutex instead of spinlock
f2fs: fix to avoid memory leakage in f2fs_listxattr
f2fs: fix to avoid accessing xattr across the boundary
f2fs: sanity check of xattr entry size
f2fs: introduce read_xattr_block
f2fs: introduce read_inline_xattr
blktrace: fix dereference after null check
blktrace: Protect q->blk_trace with RCU
blktrace: fix trace mutex deadlock
blktrace: fix unlocked access to init/start-stop/teardown
net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup
net: ipv6: add net argument to ip6_dst_lookup_flow
scripts/decodecode: fix trapping instruction formatting
objtool: Fix stack offset tracking for indirect CFAs
netfilter: nat: never update the UDP checksum when it's 0
x86/unwind/orc: Fix error path for bad ORC entry type
x86/unwind/orc: Prevent unwinding before ORC initialization
x86/unwind/orc: Don't skip the first frame for inactive tasks
x86/entry/64: Fix unwind hints in rewind_stack_do_exit()
x86/entry/64: Fix unwind hints in kernel exit path
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
coredump: fix crash when umh is disabled
mm/page_alloc: fix watchdog soft lockups during set_zone_contiguous()
KVM: arm: vgic: Fix limit condition when writing to GICD_I[CS]ACTIVER
tracing: Add a vmalloc_sync_mappings() for safe measure
USB: serial: garmin_gps: add sanity checking for data length
USB: uas: add quirk for LaCie 2Big Quadra
HID: usbhid: Fix race between usbhid_close() and usbhid_stop()
geneve: only configure or fill UDP_ZERO_CSUM6_RX/TX info when CONFIG_IPV6
HID: wacom: Read HID_DG_CONTACTMAX directly for non-generic devices
ipv6: fix cleanup ordering for ip6_mr failure
net: stricter validation of untrusted gso packets
bnxt_en: Fix VF anti-spoof filter setup.
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
dp83640: reverse arguments to list_add_tail
USB: serial: qcserial: Add DW5816e support
f2fs: flush dirty meta pages when flushing them
f2fs: fix checkpoint=disable:%u%%
f2fs: rework filename handling
f2fs: split f2fs_d_compare() from f2fs_match_name()
f2fs: don't leak filename in f2fs_try_convert_inline_dir()
ANDROID: clang: update to 11.0.1
FROMLIST: x86_64: fix jiffies ODR violation
ANDROID: cuttlefish_defconfig: Enable net testing options
ANDROID: Incremental fs: wake up log pollers less often
ANDROID: Incremental fs: Fix scheduling while atomic error
ANDROID: Incremental fs: Avoid continually recalculating hashes
Revert "f2fs: refactor resize_fs to avoid meta updates in progress"
UPSTREAM: HID: steam: Fix input device disappearing
ANDROID: fscrypt: set dun_bytes more precisely
ANDROID: dm-default-key: set dun_bytes more precisely
ANDROID: block: backport the ability to specify max_dun_bytes
ANDROID: hid: steam: remove BT controller matching
ANDROID: dm-default-key: Update key size for wrapped keys
ANDROID: cuttlefish_defconfig: Enable CONFIG_STATIC_USERMODEHELPER
ANDROID: cuttlefish_defconfig: enable CONFIG_MMC_CRYPTO
ANDROID: Add padding for crypto related structs in UFS and MMC
ANDROID: mmc: MMC crypto API
Linux 4.14.180
cgroup, netclassid: remove double cond_resched
mac80211: add ieee80211_is_any_nullfunc()
ALSA: hda: Match both PCI ID and SSID for driver blacklist
tracing: Reverse the order of trace_types_lock and event_mutex
sctp: Fix SHUTDOWN CTSN Ack in the peer restart case
net: systemport: suppress warnings on failed Rx SKB allocations
net: bcmgenet: suppress warnings on failed Rx SKB allocations
lib/mpi: Fix building for powerpc with clang
net: dsa: b53: Rework ARL bin logic
scripts/config: allow colons in option strings for sed
s390/ftrace: fix potential crashes when switching tracers
cifs: protect updating server->dstaddr with a spinlock
net: stmmac: Fix sub-second increment
net: stmmac: fix enabling socfpga's ptp_ref_clock
wimax/i2400m: Fix potential urb refcnt leak
ASoC: codecs: hdac_hdmi: Fix incorrect use of list_for_each_entry
ASoC: rsnd: Fix HDMI channel mapping for multi-SSI mode
ASoC: sgtl5000: Fix VAG power-on handling
selftests/ipc: Fix test failure seen after initial test run
ASoC: topology: Check return value of pcm_new_ver
powerpc/pci/of: Parse unassigned resources
vhost: vsock: kick send_pkt worker once device is started
ANDROID: arm64: fix a mismerge in proc.S
Linux 4.14.179
selinux: properly handle multiple messages in selinux_netlink_send()
dmaengine: dmatest: Fix iteration non-stop logic
nfs: Fix potential posix_acl refcnt leak in nfs3_set_acl
ALSA: opti9xx: shut up gcc-10 range warning
iommu/amd: Fix legacy interrupt remapping for x2APIC-enabled system
scsi: target/iblock: fix WRITE SAME zeroing
iommu/qcom: Fix local_base status check
vfio/type1: Fix VA->PA translation for PFNMAP VMAs in vaddr_get_pfn()
vfio: avoid possible overflow in vfio_iommu_type1_pin_pages
RDMA/mlx4: Initialize ib_spec on the stack
RDMA/mlx5: Set GRH fields in query QP on RoCE
dm verity fec: fix hash block number in verity_fec_decode
PM: hibernate: Freeze kernel threads in software_resume()
PM: ACPI: Output correct message on target power state
ALSA: pcm: oss: Place the plugin buffer overflow checks correctly
ALSA: hda/hdmi: fix without unlocked before return
ALSA: hda/realtek - Two front mics on a Lenovo ThinkCenter
mmc: sdhci-pci: Fix eMMC driver strength for BYT-based controllers
mmc: sdhci-xenon: fix annoying 1.8V regulator warning
btrfs: fix partial loss of prealloc extent past i_size after fsync
btrfs: fix block group leak when removing fails
drm/qxl: qxl_release use after free
drm/qxl: qxl_release leak in qxl_hw_surface_alloc()
drm/qxl: qxl_release leak in qxl_draw_dirty_fb()
drm/edid: Fix off-by-one in DispID DTD pixel clock
ext4: fix special inode number checks in __ext4_iget()
ANDROID: Incremental fs: Fix issues with very large files
Linux 4.14.178
propagate_one(): mnt_set_mountpoint() needs mount_lock
ext4: check for non-zero journal inum in ext4_calculate_overhead
qed: Fix use after free in qed_chain_free
ext4: unsigned int compared against zero
ext4: fix block validity checks for journal inodes using indirect blocks
ext4: don't perform block validity checks on the journal inode
ext4: protect journal inode's blocks using block_validity
ext4: avoid declaring fs inconsistent due to invalid file handles
hwmon: (jc42) Fix name to have no illegal characters
ext4: convert BUG_ON's to WARN_ON's in mballoc.c
ext4: increase wait time needed before reuse of deleted inode numbers
ext4: use matching invalidatepage in ext4_writepage
arm64: Delete the space separator in __emit_inst
xen/xenbus: ensure xenbus_map_ring_valloc() returns proper grant status
objtool: Support Clang non-section symbols in ORC dump
objtool: Fix CONFIG_UBSAN_TRAP unreachable warnings
scsi: target: fix PR IN / READ FULL STATUS for FC
xfs: fix partially uninitialized structure in xfs_reflink_remap_extent
x86: hyperv: report value of misc_features
bpf, x86: Fix encoding for lower 8-bit registers in BPF_STX BPF_B
mm: shmem: disable interrupt when acquiring info->lock in userfaultfd_copy path
perf/core: fix parent pid/tid in task exit events
ARM: dts: bcm283x: Disable dsi0 node
net/cxgb4: Check the return from t4_query_params properly
i2c: altera: use proper variable to hold errno
nfsd: memory corruption in nfsd4_lock()
iio:ad7797: Use correct attribute_group
usb: gadget: udc: bdc: Remove unnecessary NULL checks in bdc_req_complete
usb: dwc3: gadget: Do link recovery for SS and SSP
binder: take read mode of mmap_sem in binder_alloc_free_page()
include/uapi/linux/swab.h: fix userspace breakage, use __BITS_PER_LONG for swap
mtd: cfi: fix deadloop in cfi_cmdset_0002.c do_write_buffer
remoteproc: Fix wrong rvring index computation
xfs: Fix deadlock between AGI and AGF with RENAME_WHITEOUT
xfs: validate sb_logsunit is a multiple of the fs blocksize
serial: sh-sci: Make sure status register SCxSR is read in correct sequence
usb: f_fs: Clear OS Extended descriptor counts to zero in ffs_data_reset()
UAS: fix deadlock in error handling and PM flushing work
UAS: no use logging any details in case of ENODEV
cdc-acm: introduce a cool down
cdc-acm: close race betrween suspend() and acm_softint
staging: vt6656: Power save stop wake_up_count wrap around.
staging: vt6656: Fix pairwise key entry save.
staging: vt6656: Fix drivers TBTT timing counter.
staging: vt6656: Fix calling conditions of vnt_set_bss_mode
staging: vt6656: Don't set RCR_MULTICAST or RCR_BROADCAST by default.
vt: don't hardcode the mem allocation upper bound
staging: comedi: Fix comedi_device refcnt leak in comedi_open
staging: comedi: dt2815: fix writing hi byte of analog output
powerpc/setup_64: Set cache-line-size based on cache-block-size
ARM: imx: provide v7_cpu_resume() only on ARM_CPU_SUSPEND=y
iwlwifi: pcie: actually release queue memory in TVQM
ASoC: dapm: fixup dapm kcontrol widget
audit: check the length of userspace generated audit records
usb-storage: Add unusual_devs entry for JMicron JMS566
tty: rocket, avoid OOB access
tty: hvc: fix buffer overflow during hvc_alloc().
KVM: VMX: Enable machine check support for 32bit targets
KVM: Check validity of resolved slot when searching memslots
tpm: ibmvtpm: retry on H_CLOSED in tpm_ibmvtpm_send()
tpm/tpm_tis: Free IRQ if probing fails
ALSA: usb-audio: Filter out unsupported sample rates on Focusrite devices
ALSA: usb-audio: Fix usb audio refcnt leak when getting spdif
ALSA: hda/realtek - Add new codec supported for ALC245
ALSA: usx2y: Fix potential NULL dereference
tools/vm: fix cross-compile build
mm/ksm: fix NULL pointer dereference when KSM zero page is enabled
mm/hugetlb: fix a addressing exception caused by huge_pte_offset
vmalloc: fix remap_vmalloc_range() bounds checks
overflow.h: Add arithmetic shift helper
USB: hub: Fix handling of connect changes during sleep
USB: core: Fix free-while-in-use bug in the USB S-Glibrary
USB: early: Handle AMD's spec-compliant identifiers, too
USB: Add USB_QUIRK_DELAY_CTRL_MSG and USB_QUIRK_DELAY_INIT for Corsair K70 RGB RAPIDFIRE
USB: sisusbvga: Change port variable from signed to unsigned
fs/namespace.c: fix mountpoint reference counter race
iio: xilinx-xadc: Fix sequencer configuration for aux channels in simultaneous mode
iio: xilinx-xadc: Fix clearing interrupt when enabling trigger
iio: xilinx-xadc: Fix ADC-B powerdown
iio: adc: stm32-adc: fix sleep in atomic context
ALSA: hda: Remove ASUS ROG Zenith from the blacklist
KEYS: Avoid false positive ENOMEM error on key read
vrf: Check skb for XFRM_TRANSFORMED flag
xfrm: Always set XFRM_TRANSFORMED in xfrm{4,6}_output_finish
net: dsa: b53: Fix ARL register definitions
team: fix hang in team_mode_get()
tcp: cache line align MAX_TCP_HEADER
net/x25: Fix x25_neigh refcnt leak when receiving frame
net: netrom: Fix potential nr_neigh refcnt leak in nr_add_node
net: bcmgenet: correct per TX/RX ring statistics
macvlan: fix null dereference in macvlan_device_event()
macsec: avoid to set wrong mtu
ipv6: fix restrict IPV6_ADDRFORM operation
cxgb4: fix large delays in PTP synchronization
mm, slub: restore the original intention of prefetch_freepointer()
PCI/ASPM: Allow re-enabling Clock PM
perf/core: Disable page faults when getting phys address
pwm: bcm2835: Dynamically allocate base
pwm: renesas-tpu: Fix late Runtime PM enablement
s390/cio: avoid duplicated 'ADD' uevents
ipc/util.c: sysvipc_find_ipc() should increase position index
selftests: kmod: fix handling test numbers above 9
kernel/gcov/fs.c: gcov_seq_next() should increase position index
ASoC: Intel: atom: Take the drv->lock mutex before calling sst_send_slot_map()
scsi: iscsi: Report unbind session event when the target has been removed
pwm: rcar: Fix late Runtime PM enablement
ceph: don't skip updating wanted caps when cap is stale
ceph: return ceph_mdsc_do_request() errors from __get_parent()
scsi: lpfc: Fix kasan slab-out-of-bounds error in lpfc_unreg_login
watchdog: reset last_hw_keepalive time at start
vti4: removed duplicate log message.
crypto: mxs-dcp - make symbols 'sha1_null_hash' and 'sha256_null_hash' static
drm/msm: Use the correct dma_sync calls harder
keys: Fix the use of the C++ keyword "private" in uapi/linux/keyctl.h
net: ipv4: avoid unused variable warning for sysctl
net: ipv4: emulate READ_ONCE() on ->hdrincl bit-field in raw_sendmsg()
ext4: fix extent_status fragmentation for plain files
FROMGIT: f2fs: fix missing check for f2fs_unlock_op
ANDROID: Fix kernel build regressions from virtio-gpu-next patches
ANDROID: Incremental fs: Add setattr call
ANDROID: cuttlefish_defconfig: enable LTO and CFI
ANDROID: x86: map CFI jump tables in pti_clone_entry_text
ANDROID: crypto: aesni: fix function types for aesni_(enc|dec)
ANDROID: x86: disable CFI for do_syscall_*
ANDROID: BACKPORT: x86, module: Ignore __typeid__ relocations
ANDROID: BACKPORT: x86, relocs: Ignore __typeid__ relocations
ANDROID: BACKPORT: x86/extable: Do not mark exception callback as CFI
FROMLIST: crypto, x86/sha: Eliminate casts on asm implementations
UPSTREAM: crypto: x86 - Rename functions to avoid conflict with crypto/sha256.h
BACKPORT: x86/vmlinux: Actually use _etext for the end of the text segment
ANDROID: x86: disable STACK_VALIDATION with LTO_CLANG
ANDROID: x86: add support for CONFIG_LTO_CLANG
ANDROID: x86/vdso: disable LTO only for VDSO
ANDROID: x86/cpu/vmware: use the full form of inl in VMWARE_PORT
UPSTREAM: x86/build/lto: Fix truncated .bss with -fdata-sections
ANDROID: kbuild: don't select LD_DEAD_CODE_DATA_ELIMINATION with LTO
ANDROID: kbuild: export LTO and CFI flags
ANDROID: cfi: remove unnecessary <asm/memory.h> include
ANDROID: drm/virtio: rebase to latest virgl/drm-misc-next (take 2)
UPSTREAM: sysrq: Use panic() to force a crash
ANDROID: Incremental fs: Use simple compression in log buffer
ANDROID: dm-bow: Fix not to skip trim at framented range
ANDROID: Remove VLA from uid_sys_stats.c
ANDROID: cuttlefish_defconfig: enable CONFIG_DEBUG_LIST
Linux 4.14.177
KEYS: Don't write out to userspace while holding key semaphore
KEYS: Use individual pages in big_key for crypto buffers
mtd: phram: fix a double free issue in error path
mtd: lpddr: Fix a double free in probe()
locktorture: Print ratio of acquisitions, not failures
tty: evh_bytechan: Fix out of bounds accesses
fbdev: potential information leak in do_fb_ioctl()
net: dsa: bcm_sf2: Fix overflow checks
iommu/amd: Fix the configuration of GCR3 table root pointer
libnvdimm: Out of bounds read in __nd_ioctl()
ext2: fix debug reference to ext2_xattr_cache
ext2: fix empty body warnings when -Wextra is used
iommu/vt-d: Fix mm reference leak
NFS: Fix memory leaks in nfs_pageio_stop_mirroring()
drm/amdkfd: kfree the wrong pointer
x86: ACPI: fix CPU hotplug deadlock
KVM: s390: vsie: Fix possible race when shadowing region 3 tables
compiler.h: fix error in BUILD_BUG_ON() reporting
percpu_counter: fix a data race at vm_committed_as
include/linux/swapops.h: correct guards for non_swap_entry()
ext4: do not commit super on read-only bdev
powerpc/maple: Fix declaration made after definition
s390/cpuinfo: fix wrong output when CPU0 is offline
NFS: direct.c: Fix memory leak of dreq when nfs_get_lock_context fails
NFSv4/pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
rtc: 88pm860x: fix possible race condition
soc: imx: gpc: fix power up sequencing
clk: tegra: Fix Tegra PMC clock out parents
power: supply: bq27xxx_battery: Silence deferred-probe error
clk: at91: usb: continue if clk_hw_round_rate() return zero
of: unittest: kmemleak in of_unittest_platform_populate()
rbd: call rbd_dev_unprobe() after unwatching and flushing notifies
rbd: avoid a deadlock on header_rwsem when flushing notifies
of: fix missing kobject init for !SYSFS && OF_DYNAMIC config
soc: qcom: smem: Use le32_to_cpu for comparison
wil6210: abort properly in cfg suspend
wil6210: fix length check in __wmi_send
wil6210: add block size checks during FW load
wil6210: fix PCIe bus mastering in case of interface down
rpmsg: glink: smem: Ensure ordering during tx
rpmsg: glink: Fix missing mutex_init() in qcom_glink_alloc_channel()
rtc: pm8xxx: Fix issue in RTC write path
rpmsg: glink: use put_device() if device_register fail
wil6210: rate limit wil_rx_refill error
scsi: ufs: ufs-qcom: remove broken hci version quirk
scsi: ufs: make sure all interrupts are processed
wil6210: fix temperature debugfs
wil6210: increase firmware ready timeout
arch_topology: Fix section miss match warning due to free_raw_capacity()
arm64: traps: Don't print stack or raw PC/LR values in backtraces
arm64: perf: remove unsupported events for Cortex-A73
Revert "gpio: set up initial state from .get_direction()"
clk: Fix debugfs_create_*() usage
drm: NULL pointer dereference [null-pointer-deref] (CWE 476) problem
video: fbdev: sis: Remove unnecessary parentheses and commented code
lib/raid6: use vdupq_n_u8 to avoid endianness warnings
ALSA: hda: Don't release card at firmware loading error
irqchip/mbigen: Free msi_desc on device teardown
netfilter: nf_tables: report EOPNOTSUPP on unsupported flags/object type
arm, bpf: Fix bugs with ALU64 {RSH, ARSH} BPF_K shift by 0
ext4: use non-movable memory for superblock readahead
scsi: sg: add sg_remove_request in sg_common_write
objtool: Fix switch table detection in .text.unlikely
mm/vmalloc.c: move 'area->pages' after if statement
x86/resctrl: Fix invalid attempt at removing the default resource group
x86/resctrl: Preserve CDP enable over CPU hotplug
x86/intel_rdt: Enable L2 CDP in MSR IA32_L2_QOS_CFG
x86/intel_rdt: Add two new resources for L2 Code and Data Prioritization (CDP)
x86/intel_rdt: Enumerate L2 Code and Data Prioritization (CDP) feature
x86/microcode/AMD: Increase microcode PATCH_MAX_SIZE
scsi: target: fix hang when multiple threads try to destroy the same iscsi session
scsi: target: remove boilerplate code
kvm: x86: Host feature SSBD doesn't imply guest feature SPEC_CTRL_SSBD
dm flakey: check for null arg_name in parse_features()
ext4: do not zeroout extents beyond i_disksize
mac80211_hwsim: Use kstrndup() in place of kasprintf()
btrfs: check commit root generation in should_ignore_root
tracing: Fix the race between registering 'snapshot' event trigger and triggering 'snapshot' operation
ALSA: usb-audio: Don't override ignore_ctl_error value from the map
ASoC: Intel: mrfld: return error codes when an error occurs
ASoC: Intel: mrfld: fix incorrect check on p->sink
ext4: fix incorrect inodes per group in error message
ext4: fix incorrect group count in ext4_fill_super error message
pwm: pca9685: Fix PWM/GPIO inter-operation
jbd2: improve comments about freeing data buffers whose page mapping is NULL
scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic
net: stmmac: dwmac-sunxi: Provide TX and RX fifo sizes
net: revert default NAPI poll timeout to 2 jiffies
net: qrtr: send msgs from local of same id as broadcast
net: ipv6: do not consider routes via gateways for anycast address check
net: ipv4: devinet: Fix crash when add/del multicast IP with autojoin
hsr: check protocol version in hsr_newlink()
amd-xgbe: Use __napi_schedule() in BH context
mfd: dln2: Fix sanity checking for endpoints
misc: echo: Remove unnecessary parentheses and simplify check for zero
powerpc/fsl_booke: Avoid creating duplicate tlb1 entry
ipmi: fix hung processes in __get_guid()
ftrace/kprobe: Show the maxactive number on kprobe_events
drm: Remove PageReserved manipulation from drm_pci_alloc
drm/dp_mst: Fix clearing payload state on topology disable
crypto: caam - update xts sector size for large input length
dm zoned: remove duplicate nr_rnd_zones increase in dmz_init_zone()
btrfs: use nofs allocations for running delayed items
Btrfs: fix crash during unmount due to race with delayed inode workers
powerpc: Make setjmp/longjmp signature standard
powerpc: Add attributes for setjmp/longjmp
scsi: mpt3sas: Fix kernel panic observed on soft HBA unplug
powerpc/kprobes: Ignore traps that happened in real mode
powerpc/xive: Use XIVE_BAD_IRQ instead of zero to catch non configured IPIs
powerpc/hash64/devmap: Use H_PAGE_THP_HUGE when setting up huge devmap PTE entries
powerpc/64/tm: Don't let userspace set regs->trap via sigreturn
powerpc/powernv/idle: Restore AMR/UAMOR/AMOR after idle
libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set
hfsplus: fix crash and filesystem corruption when deleting files
cpufreq: powernv: Fix use-after-free
kmod: make request_module() return an error when autoloading is disabled
Input: i8042 - add Acer Aspire 5738z to nomux list
s390/diag: fix display of diagnose call statistics
perf tools: Support Python 3.8+ in Makefile
ocfs2: no need try to truncate file beyond i_size
fs/filesystems.c: downgrade user-reachable WARN_ONCE() to pr_warn_once()
ext4: fix a data race at inode->i_blocks
NFS: Fix a page leak in nfs_destroy_unlinked_subrequests()
rtc: omap: Use define directive for PIN_CONFIG_ACTIVE_HIGH
arm64: armv8_deprecated: Fix undef_hook mask for thumb setend
scsi: zfcp: fix missing erp_lock in port recovery trigger for point-to-point
dm verity fec: fix memory leak in verity_fec_dtr
mm: Use fixed constant in page_frag_alloc instead of size + 1
tools: gpio: Fix out-of-tree build regression
x86/speculation: Remove redundant arch_smt_update() invocation
powerpc/pseries: Drop pointless static qualifier in vpa_debugfs_init()
net: rtnl_configure_link: fix dev flags changes arg to __dev_notify_flags
ALSA: hda: Initialize power_state field properly
crypto: mxs-dcp - fix scatterlist linearization for hash
btrfs: drop block from cache on error in relocation
CIFS: Fix bug which the return value by asynchronous read is error
KVM: VMX: fix crash cleanup when KVM wasn't used
KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support
KVM: x86: Allocate new rmap and large page tracking when moving memslot
KVM: s390: vsie: Fix delivery of addressing exceptions
KVM: s390: vsie: Fix region 1 ASCE sanity shadow address checks
KVM: nVMX: Properly handle userspace interrupt window request
x86/entry/32: Add missing ASM_CLAC to general_protection entry
signal: Extend exec_id to 64bits
ath9k: Handle txpower changes even when TPC is disabled
MIPS: OCTEON: irq: Fix potential NULL pointer dereference
irqchip/versatile-fpga: Apply clear-mask earlier
KEYS: reaching the keys quotas correctly
PCI: endpoint: Fix for concurrent memory allocation in OB address region
PCI/ASPM: Clear the correct bits when enabling L1 substates
nvme-fc: Revert "add module to ops template to allow module references"
thermal: devfreq_cooling: inline all stubs for CONFIG_DEVFREQ_THERMAL=n
acpi/x86: ignore unspecified bit positions in the ACPI global lock field
media: ti-vpe: cal: fix disable_irqs to only the intended target
ALSA: hda/realtek - Set principled PC Beep configuration for ALC256
ALSA: doc: Document PC Beep Hidden Register on Realtek ALC256
ALSA: pcm: oss: Fix regression by buffer overflow fix
ALSA: ice1724: Fix invalid access for enumerated ctl items
ALSA: hda: Fix potential access overflow in beep helper
ALSA: hda: Add driver blacklist
ALSA: usb-audio: Add mixer workaround for TRX40 and co
usb: gadget: composite: Inform controller driver of self-powered
usb: gadget: f_fs: Fix use after free issue as part of queue failure
ASoC: topology: use name_prefix for new kcontrol
ASoC: dpcm: allow start or stop during pause for backend
ASoC: dapm: connect virtual mux with default value
ASoC: fix regwmask
slub: improve bit diffusion for freelist ptr obfuscation
misc: rtsx: set correct pcr_ops for rts522A
uapi: rename ext2_swab() to swab() and share globally in swab.h
btrfs: track reloc roots based on their commit root bytenr
btrfs: remove a BUG_ON() from merge_reloc_roots()
block, bfq: fix use-after-free in bfq_idle_slice_timer_body
locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps()
irqchip/gic-v4: Provide irq_retrigger to avoid circular locking dependency
usb: dwc3: core: add support for disabling SS instances in park mode
block: Fix use-after-free issue accessing struct io_cq
genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy()
efi/x86: Ignore the memory attributes table on i386
x86/boot: Use unsigned comparison for addresses
gfs2: Don't demote a glock until its revokes are written
libata: Remove extra scsi_host_put() in ata_scsi_add_hosts()
PCI/switchtec: Fix init_completion race condition with poll_wait()
selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault
sched: Avoid scale real weight down to zero
irqchip/versatile-fpga: Handle chained IRQs properly
block: keep bdi->io_pages in sync with max_sectors_kb for stacked devices
x86: Don't let pgprot_modify() change the page encryption bit
null_blk: fix spurious IO errors after failed past-wp access
null_blk: Handle null_add_dev() failures properly
null_blk: Fix the null_add_dev() error path
i2c: st: fix missing struct parameter description
qlcnic: Fix bad kzalloc null test
cxgb4/ptp: pass the sign of offset delta in FW CMD
hinic: fix wrong para of wait_for_completion_timeout
hinic: fix a bug of waitting for IO stopped
net: vxge: fix wrong __VA_ARGS__ usage
bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads
f2fs: fix missing check for f2fs_unlock_op
f2fs: refactor resize_fs to avoid meta updates in progress
ANDROID: fix wakeup reason findings
UPSTREAM: gpu/trace: add a gpu total memory usage tracepoint
CHROMIUM: drm/virtio: rebase zero-copy patches to virgl/drm-misc-next
CHROMIUM: virtio-gpu: add VIRTIO_GPU_F_RESOURCE_UUID feature
CHROMIUM: drm/virtgpu: add legacy VIRTIO_GPU_* values for non-upstream variants
CHROMIUM: drm/virtgpu: fix various warnings
CHROMIUM: drm/virtgpu: implement metadata allocation ioctl
CHROMIUM: drm/virtgpu: introduce request IDRs
CHROMIUM: drm/virtgpu: implement DRM_VIRTGPU_RESOURCE_CREATE_V2
CHROMIUM: drm/virtgpu: add stub ioctl implementation
CHROMIUM: drm/virtgpu: check for revelant capabilites
CHROMIUM: drm/virtgpu: add memory type to virtio_gpu_object_params
CHROMIUM: drm/virtgpu: make memory and resource creation opaque
CHROMIUM: virtio-gpu api: VIRTIO_GPU_F_MEMORY
CHROMIUM: virtwl: store plane info per virtio_gpu_object
CHROMIUM: drm/virtgpu: expose new ioctls to userspace
BACKPORT: drm/virtio: move virtio_gpu_object_{attach, detach} calls.
ANDROID: drm: ttm: Add ttm_tt_create2 driver hook
UPSTREAM: virtio-gpu api: comment feature flags
UPSTREAM: drm/virtio: module_param_named() requires linux/moduleparam.h
BACKPORT: drm/virtio: fix resource id creation race
BACKPORT: drm/virtio: make resource id workaround runtime switchable.
BACKPORT: drm/virtio: do NOT reuse resource ids
BACKPORT: drm/virtio: Drop deprecated load/unload initialization
f2fs: fix quota_sync failure due to f2fs_lock_op
f2fs: support read iostat
f2fs: Fix the accounting of dcc->undiscard_blks
f2fs: fix to handle error path of f2fs_ra_meta_pages()
f2fs: report the discard cmd errors properly
f2fs: fix long latency due to discard during umount
f2fs: add tracepoint for f2fs iostat
f2fs: introduce sysfs/data_io_flag to attach REQ_META/FUA
UPSTREAM: kheaders: include only headers into kheaders_data.tar.xz
UPSTREAM: kheaders: remove meaningless -R option of 'ls'
ANDROID: Incremental fs: Fix create_file performance
ANDROID: Incremental fs: Fix compound page usercopy crash
ANDROID: Incremental fs: Clean up incfs_test build process
ANDROID: Incremental fs: make remount log buffer change atomic
ANDROID: Incremental fs: Optimize get_filled_block
ANDROID: Incremental fs: Fix mislabeled __user ptrs
ANDROID: Incremental fs: Use 64-bit int for file_size when writing hash blocks
Revert "ANDROID: Incremental fs: Fix initialization, use of bitfields"
Linux 4.14.176
drm/msm: Use the correct dma_sync calls in msm_gem
rpmsg: glink: smem: Support rx peak for size less than 4 bytes
drm_dp_mst_topology: fix broken drm_dp_sideband_parse_remote_dpcd_read()
usb: dwc3: don't set gadget->is_otg flag
rpmsg: glink: Remove chunk size word align warning
arm64: Fix size of __early_cpu_boot_status
drm/msm: stop abusing dma_map/unmap for cache
clk: qcom: rcg: Return failure for RCG update
acpi/nfit: Fix bus command validation
fbcon: fix null-ptr-deref in fbcon_switch
RDMA/cm: Update num_paths in cma_resolve_iboe_route error flow
Bluetooth: RFCOMM: fix ODEBUG bug in rfcomm_dev_ioctl
ceph: canonicalize server path in place
ceph: remove the extra slashes in the server path
IB/hfi1: Fix memory leaks in sysfs registration and unregistration
IB/hfi1: Call kobject_put() when kobject_init_and_add() fails
ASoC: jz4740-i2s: Fix divider written at incorrect offset in register
hwrng: imx-rngc - fix an error path
tools/accounting/getdelays.c: fix netlink attribute length
random: always use batched entropy for get_random_u{32,64}
mlxsw: spectrum_flower: Do not stop at FLOW_ACTION_VLAN_MANGLE
slcan: Don't transmit uninitialized stack data in padding
net: stmmac: dwmac1000: fix out-of-bounds mac address reg setting
net: phy: micrel: kszphy_resume(): add delay after genphy_resume() before accessing PHY registers
net: dsa: bcm_sf2: Ensure correct sub-node is parsed
ipv6: don't auto-add link-local address to lag ports
mm: mempolicy: require at least one nodeid for MPOL_PREFERRED
padata: always acquire cpu_hotplug_lock before pinst->lock
coresight: do not use the BIT() macro in the UAPI header
misc: pci_endpoint_test: Fix to support > 10 pci-endpoint-test devices
blk-mq: Allow blocking queue tag iter callbacks
blk-mq: sync the update nr_hw_queues with blk_mq_queue_tag_busy_iter
drm/etnaviv: replace MMU flush marker with flush sequence
tools/power turbostat: Fix gcc build warnings
initramfs: restore default compression behavior
drm/bochs: downgrade pci_request_region failure from error to warning
sctp: fix possibly using a bad saddr with a given dst
sctp: fix refcount bug in sctp_wfree
net, ip_tunnel: fix interface lookup with no key
ipv4: fix a RCU-list lock in fib_triestat_seq_show
ANDROID: power: wakeup_reason: wake reason enhancements
FROMLIST: power_supply: Add additional health properties to the header
UPSTREAM: power: supply: core: Update sysfs-class-power ABI document
BACKPORT: FROMGIT: kbuild: mkcompile_h: Include $LD version in /proc/version
ANDROID: fscrypt: fall back to filesystem-layer crypto when needed
ANDROID: block: require drivers to declare supported crypto key type(s)
ANDROID: block: make blk_crypto_start_using_mode() properly check for support
FROMLIST: kmod: make request_module() return an error when autoloading is disabled
UPSTREAM: loop: Only freeze block queue when needed.
UPSTREAM: loop: Only change blocksize when needed.
ANDROID: Incremental fs: Fix remount
ANDROID: Incremental fs: Protect get_fill_block, and add a field
ANDROID: Incremental fs: Fix crash polling 0 size read_log
ANDROID: Incremental fs: get_filled_blocks: better index_out
ANDROID: Fix wq fp check for CFI builds
ANDROID: Incremental fs: Fix four resource bugs
ANDROID: kbuild: ensure __cfi_check is correctly aligned
ANDROID: kbuild: fix module linker script flags for LTO
Linux 4.14.175
arm64: dts: ls1046ardb: set RGMII interfaces to RGMII_ID mode
arm64: dts: ls1043a-rdb: correct RGMII delay mode to rgmii-id
ARM: bcm2835-rpi-zero-w: Add missing pinctrl name
ARM: dts: oxnas: Fix clear-mask property
perf map: Fix off by one in strncpy() size argument
arm64: alternative: fix build with clang integrated assembler
net: ks8851-ml: Fix IO operations, again
gpiolib: acpi: Add quirk to ignore EC wakeups on HP x2 10 CHT + AXP288 model
bpf: Explicitly memset some bpf info structures declared on the stack
bpf: Explicitly memset the bpf_attr structure
platform/x86: pmc_atom: Add Lex 2I385SW to critclk_systems DMI table
vt: vt_ioctl: fix use-after-free in vt_in_use()
vt: vt_ioctl: fix VT_DISALLOCATE freeing in-use virtual console
vt: vt_ioctl: remove unnecessary console allocation checks
vt: switch vt_dont_switch to bool
vt: ioctl, switch VT_IS_IN_USE and VT_BUSY to inlines
vt: selection, introduce vc_is_sel
mac80211: fix authentication with iwlwifi/mvm
mac80211: Check port authorization in the ieee80211_tx_dequeue() case
media: xirlink_cit: add missing descriptor sanity checks
media: stv06xx: add missing descriptor sanity checks
media: dib0700: fix rc endpoint lookup
media: ov519: add missing endpoint sanity checks
libfs: fix infoleak in simple_attr_read()
staging: wlan-ng: fix use-after-free Read in hfa384x_usbin_callback
staging: wlan-ng: fix ODEBUG bug in prism2sta_disconnect_usb
staging: rtl8188eu: Add ASUS USB-N10 Nano B1 to device table
media: usbtv: fix control-message timeouts
media: flexcop-usb: fix endpoint sanity check
usb: musb: fix crash with highmen PIO and usbmon
USB: serial: io_edgeport: fix slab-out-of-bounds read in edge_interrupt_callback
USB: cdc-acm: restore capability check order
USB: serial: option: add Wistron Neweb D19Q1
USB: serial: option: add BroadMobi BM806U
USB: serial: option: add support for ASKEY WWHC050
afs: Fix some tracing details
Input: raydium_i2c_ts - fix error codes in raydium_i2c_boot_trigger()
Input: raydium_i2c_ts - use true and false for boolean values
vti6: Fix memory leak of skb if input policy check fails
netfilter: nft_fwd_netdev: validate family and chain type
xfrm: policy: Fix doulbe free in xfrm_policy_timer
xfrm: add the missing verify_sec_ctx_len check in xfrm_add_acquire
xfrm: fix uctx len check in verify_sec_ctx_len
RDMA/mlx5: Block delay drop to unprivileged users
vti[6]: fix packet tx through bpf_redirect() in XinY cases
xfrm: handle NETDEV_UNREGISTER for xfrm device
genirq: Fix reference leaks on irq affinity notifiers
RDMA/core: Ensure security pkey modify is not lost
gpiolib: acpi: Add quirk to ignore EC wakeups on HP x2 10 BYT + AXP288 model
gpiolib: acpi: Rework honor_wakeup option into an ignore_wake option
gpiolib: acpi: Correct comment for HP x2 10 honor_wakeup quirk
mac80211: mark station unauthorized before key removal
scsi: sd: Fix optimal I/O size for devices that change reported values
scripts/dtc: Remove redundant YYLOC global declaration
tools: Let O= makes handle a relative path with -C option
perf probe: Do not depend on dwfl_module_addrsym()
ARM: dts: omap5: Add bus_dma_limit for L3 bus
ARM: dts: dra7: Add bus_dma_limit for L3 bus
Input: avoid BIT() macro usage in the serio.h UAPI header
Input: synaptics - enable RMI on HP Envy 13-ad105ng
i2c: hix5hd2: add missed clk_disable_unprepare in remove
ftrace/x86: Anotate text_mutex split between ftrace_arch_code_modify_post_process() and ftrace_arch_code_modify_prepare()
arm64: compat: map SPSR_ELx<->PSR for signals
arm64: ptrace: map SPSR_ELx<->PSR for compat tasks
sxgbe: Fix off by one in samsung driver strncpy size arg
dpaa_eth: Remove unnecessary boolean expression in dpaa_get_headroom
mac80211: Do not send mesh HWMP PREQ if HWMP is disabled
scsi: ipr: Fix softlockup when rescanning devices in petitboot
fsl/fman: detect FMan erratum A050385
arm64: dts: ls1043a: FMan erratum A050385
dt-bindings: net: FMan erratum A050385
cgroup1: don't call release_agent when it is ""
drivers/of/of_mdio.c:fix of_mdiobus_register()
cpupower: avoid multiple definition with gcc -fno-common
cgroup-v1: cgroup_pidlist_next should update position index
net: ipv4: don't let PMTU updates increase route MTU
hsr: set .netnsok flag
hsr: add restart routine into hsr_get_node_list()
hsr: use rcu_read_lock() in hsr_get_node_{list/status}()
vxlan: check return value of gro_cells_init()
net: dsa: mt7530: Change the LINK bit to reflect the link status
bnxt_en: fix memory leaks in bnxt_dcbnl_ieee_getets()
slcan: not call free_netdev before rtnl_unlock in slcan_open
NFC: fdp: Fix a signedness bug in fdp_nci_send_patch()
net: stmmac: dwmac-rk: fix error path in rk_gmac_probe
net_sched: keep alloc_hash updated after hash allocation
net_sched: cls_route: remove the right filter from hashtable
net: qmi_wwan: add support for ASKEY WWHC050
net/packet: tpacket_rcv: avoid a producer race condition
net: mvneta: Fix the case where the last poll did not process all rx
net: dsa: Fix duplicate frames flooded by learning
macsec: restrict to ethernet devices
hsr: fix general protection fault in hsr_addr_is_self()
Revert "drm/dp_mst: Skip validating ports during destruction, just ref"
staging: greybus: loopback_test: fix potential path truncations
staging: greybus: loopback_test: fix potential path truncation
drm/bridge: dw-hdmi: fix AVI frame colorimetry
arm64: smp: fix crash_smp_send_stop() behaviour
arm64: smp: fix smp_send_stop() behaviour
ALSA: hda/realtek: Fix pop noise on ALC225
Revert "ipv6: Fix handling of LLA with VRF and sockets bound to VRF"
Revert "vrf: mark skb for multicast or link-local as enslaved to VRF"
futex: Unbreak futex hashing
futex: Fix inode life-time issue
kbuild: Disable -Wpointer-to-enum-cast
iio: adc: at91-sama5d2_adc: fix differential channels in triggered mode
iio: adc: at91-sama5d2_adc: fix channel configuration for differential channels
USB: cdc-acm: fix rounding error in TIOCSSERIAL
USB: cdc-acm: fix close_delay and closing_wait units in TIOCSSERIAL
x86/mm: split vmalloc_sync_all()
page-flags: fix a crash at SetPageError(THP_SWAP)
mm, slub: prevent kmalloc_node crashes and memory leaks
mm: slub: be more careful about the double cmpxchg of freelist
memcg: fix NULL pointer dereference in __mem_cgroup_usage_unregister_event
xhci: Do not open code __print_symbolic() in xhci trace events
rtc: max8907: add missing select REGMAP_IRQ
intel_th: pci: Add Elkhart Lake CPU support
intel_th: Fix user-visible error codes
staging/speakup: fix get_word non-space look-ahead
staging: rtl8188eu: Add device id for MERCUSYS MW150US v2
mmc: sdhci-of-at91: fix cd-gpios for SAMA5D2
iio: magnetometer: ak8974: Fix negative raw values in sysfs
iio: trigger: stm32-timer: disable master mode when stopping
ALSA: pcm: oss: Remove WARNING from snd_pcm_plug_alloc() checks
ALSA: pcm: oss: Avoid plugin buffer overflow
ALSA: seq: oss: Fix running status after receiving sysex
ALSA: seq: virmidi: Fix running status after receiving sysex
ALSA: line6: Fix endless MIDI read loop
usb: xhci: apply XHCI_SUSPEND_DELAY to AMD XHCI controller 1022:145c
USB: serial: pl2303: add device-id for HP LD381
usb: host: xhci-plat: add a shutdown
USB: serial: option: add ME910G1 ECM composition 0x110b
usb: quirks: add NO_LPM quirk for RTL8153 based ethernet adapters
USB: Disable LPM on WD19's Realtek Hub
parse-maintainers: Mark as executable
block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group()
xenbus: req->err should be updated before req->state
xenbus: req->body should be updated before req->state
dm bio record: save/restore bi_end_io and bi_integrity
altera-stapl: altera_get_note: prevent write beyond end of 'key'
drivers/perf: arm_pmu_acpi: Fix incorrect checking of gicc pointer
drm/exynos: dsi: fix workaround for the legacy clock name
drm/exynos: dsi: propagate error value and silence meaningless warning
spi/zynqmp: remove entry that causes a cs glitch
spi: pxa2xx: Add CS control clock quirk
ARM: dts: dra7: Add "dma-ranges" property to PCIe RC DT nodes
powerpc: Include .BTF section
spi: qup: call spi_qup_pm_resume_runtime before suspending
UPSTREAM: ubifs: wire up FS_IOC_GET_ENCRYPTION_NONCE
UPSTREAM: f2fs: wire up FS_IOC_GET_ENCRYPTION_NONCE
UPSTREAM: ext4: wire up FS_IOC_GET_ENCRYPTION_NONCE
UPSTREAM: fscrypt: add FS_IOC_GET_ENCRYPTION_NONCE ioctl
UPSTREAM: usb: raw_gadget: fix compilation warnings in uapi headers
BACKPORT: usb: gadget: add raw-gadget interface
UPSTREAM: usb: gadget: move choice ... endchoice to legacy/Kconfig
ANDROID: clang: update to 10.0.5
FROMLIST: arm64: define __alloc_zeroed_user_highpage
ANDROID: Incremental fs: Add INCFS_IOC_GET_FILLED_BLOCKS
ANDROID: Incremental fs: Fix two typos
UPSTREAM: ipv6: ndisc: add support for 'PREF64' dns64 prefix identifier
UPSTREAM: ipv6: ndisc: add support for 'PREF64' dns64 prefix identifier
ANDROID: dm-bow: Fix free_show value is incorrect
UPSTREAM: coresight: Potential uninitialized variable in probe()
ANDROID: kbuild: do not merge .section..* into .section in modules
ANDROID: scsi: ufs: add ->map_sg_crypto() variant op
UPSTREAM: bpf: Explicitly memset some bpf info structures declared on the stack
UPSTREAM: bpf: Explicitly memset the bpf_attr structure
Linux 4.14.174
ipv4: ensure rcu_read_lock() in cipso_v4_error()
mm: slub: add missing TID bump in kmem_cache_alloc_bulk()
ARM: 8958/1: rename missed uaccess .fixup section
ARM: 8957/1: VDSO: Match ARMv8 timer in cntvct_functional()
jbd2: fix data races at struct journal_head
net: rmnet: fix NULL pointer dereference in rmnet_newlink()
hinic: fix a bug of setting hw_ioctxt
slip: not call free_netdev before rtnl_unlock in slip_open
signal: avoid double atomic counter increments for user accounting
mac80211: rx: avoid RCU list traversal under mutex
net: ks8851-ml: Fix IRQ handling and locking
net: usb: qmi_wwan: restore mtu min/max values after raw_ip switch
scsi: libfc: free response frame from GPN_ID
cfg80211: check reg_rule for NULL in handle_channel_custom()
HID: i2c-hid: add Trekstor Surfbook E11B to descriptor override
HID: apple: Add support for recent firmware on Magic Keyboards
ACPI: watchdog: Allow disabling WDAT at boot
perf/amd/uncore: Replace manual sampling check with CAP_NO_INTERRUPT flag
batman-adv: Don't schedule OGM for disabled interface
batman-adv: Avoid free/alloc race when handling OGM buffer
batman-adv: Avoid free/alloc race when handling OGM2 buffer
batman-adv: Fix duplicated OGMs on NETDEV_UP
batman-adv: Fix debugfs path for renamed softif
batman-adv: Fix debugfs path for renamed hardif
batman-adv: prevent TT request storms by not sending inconsistent TT TLVLs
batman-adv: Fix TT sync flags for intermediate TT responses
batman-adv: Avoid race in TT TVLV allocator helper
batman-adv: update data pointers after skb_cow()
batman-adv: Fix internal interface indices types
batman-adv: Fix lock for ogm cnt access in batadv_iv_ogm_calc_tq
batman-adv: Fix check of retrieved orig_gw in batadv_v_gw_is_eligible
batman-adv: Always initialize fragment header priority
batman-adv: Avoid spurious warnings from bat_v neigh_cmp implementation
efi: Add a sanity check to efivar_store_raw()
net/smc: check for valid ib_client_data
ipv6: restrict IPV6_ADDRFORM operation
i2c: acpi: put device when verifying client fails
iommu/vt-d: Ignore devices with out-of-spec domain number
iommu/vt-d: Fix the wrong printing in RHSA parsing
netfilter: nft_payload: add missing attribute validation for payload csum flags
netfilter: cthelper: add missing attribute validation for cthelper
nl80211: add missing attribute validation for channel switch
nl80211: add missing attribute validation for beacon report scanning
nl80211: add missing attribute validation for critical protocol indication
pinctrl: core: Remove extra kref_get which blocks hogs being freed
pinctrl: meson-gxl: fix GPIOX sdio pins
iommu/vt-d: Fix a bug in intel_iommu_iova_to_phys() for huge page
iommu/vt-d: dmar: replace WARN_TAINT with pr_warn + add_taint
iommu/dma: Fix MSI reservation allocation
x86/mce: Fix logic and comments around MSR_PPIN_CTL
efi: Fix a race and a buffer overflow while reading efivars via sysfs
ARC: define __ALIGN_STR and __ALIGN symbols for ARC
KVM: x86: clear stale x86_emulate_ctxt->intercept value
gfs2_atomic_open(): fix O_EXCL|O_CREAT handling on cold dcache
cifs_atomic_open(): fix double-put on late allocation failure
ktest: Add timeout for ssh sync testing
drm/amd/display: remove duplicated assignment to grph_obj_type
workqueue: don't use wq_select_unbound_cpu() for bound works
iommu/vt-d: quirk_ioat_snb_local_iommu: replace WARN_TAINT with pr_warn + add_taint
virtio-blk: fix hw_queue stopped on arbitrary error
iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 devices
cgroup: Iterate tasks that did not finish do_exit()
cgroup: cgroup_procs_next should increase position index
ipvlan: don't deref eth hdr before checking it's set
ipvlan: egress mcast packets are not exceptional
ipvlan: do not add hardware address of master to its unicast filter list
inet_diag: return classid for all socket types
macvlan: add cond_resched() during multicast processing
net: fec: validate the new settings in fec_enet_set_coalesce()
slip: make slhc_compress() more robust against malicious packets
bonding/alb: make sure arp header is pulled before accessing it
net: phy: fix MDIO bus PM PHY resuming
nfc: add missing attribute validation for vendor subcommand
nfc: add missing attribute validation for SE API
team: add missing attribute validation for array index
team: add missing attribute validation for port ifindex
net: fq: add missing attribute validation for orphan mask
macsec: add missing attribute validation for port
can: add missing attribute validation for termination
nl802154: add missing attribute validation for dev_type
nl802154: add missing attribute validation
fib: add missing attribute validation for tun_id
net: memcg: fix lockdep splat in inet_csk_accept()
net: memcg: late association of sock to memcg
cgroup: memcg: net: do not associate sock with unrelated cgroup
bnxt_en: reinitialize IRQs when MTU is modified
sfc: detach from cb_page in efx_copy_channel()
r8152: check disconnect status after long sleep
net/packet: tpacket_rcv: do not increment ring index on drop
net: nfc: fix bounds checking bugs on "pipe"
net: macsec: update SCI upon MAC address change.
netlink: Use netlink header as base to calculate bad attribute offset
ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast()
ipvlan: add cond_resched_rcu() while processing muticast backlog
ipv6/addrconf: call ipv6_mc_up() for non-Ethernet interface
gre: fix uninit-value in __iptunnel_pull_header
cgroup, netclassid: periodically release file_lock on classid updating
net: phy: Avoid multiple suspends
phy: Revert toggling reset changes.
ANDROID: Incremental fs: Add INCFS_IOC_PERMIT_FILL
ANDROID: Incremental fs: Remove signature checks from kernel
ANDROID: Incremental fs: Pad hash blocks
ANDROID: Incremental fs: Make fill block an ioctl
ANDROID: Incremental fs: Remove all access_ok checks
UPSTREAM: cgroup: Iterate tasks that did not finish do_exit()
UPSTREAM: arm64: memory: Add missing brackets to untagged_addr() macro
UPSTREAM: mm: Avoid creating virtual address aliases in brk()/mmap()/mremap()
ANDROID: Add TPM support and the vTPM proxy to Cuttlefish.
ANDROID: serdev: restrict claim of platform devices
UPSTREAM: fscrypt: don't evict dirty inodes after removing key
Linux 4.14.173
ASoC: topology: Fix memleak in soc_tplg_manifest_load()
xhci: handle port status events for removed USB3 hcd
dm integrity: fix a deadlock due to offloading to an incorrect workqueue
powerpc: fix hardware PMU exception bug on PowerVM compatibility mode systems
dmaengine: coh901318: Fix a double lock bug in dma_tc_handle()
hwmon: (adt7462) Fix an error return in ADT7462_REG_VOLT()
ARM: imx: build v7_cpu_resume() unconditionally
IB/hfi1, qib: Ensure RCU is locked when accessing list
RMDA/cm: Fix missing ib_cm_destroy_id() in ib_cm_insert_listen()
RDMA/iwcm: Fix iwcm work deallocation
ASoC: dapm: Correct DAPM handling of active widgets during shutdown
ASoC: pcm512x: Fix unbalanced regulator enable call in probe error path
ASoC: pcm: Fix possible buffer overflow in dpcm state sysfs output
ASoC: intel: skl: Fix possible buffer overflow in debug outputs
ASoC: intel: skl: Fix pin debug prints
ASoC: topology: Fix memleak in soc_tplg_link_elems_load()
ARM: dts: ls1021a: Restore MDIO compatible to gianfar
dm cache: fix a crash due to incorrect work item cancelling
dmaengine: tegra-apb: Prevent race conditions of tasklet vs free list
dmaengine: tegra-apb: Fix use-after-free
x86/pkeys: Manually set X86_FEATURE_OSPKE to preserve existing changes
vt: selection, push sel_lock up
vt: selection, push console lock down
vt: selection, close sel_buffer race
serial: 8250_exar: add support for ACCES cards
tty:serial:mvebu-uart:fix a wrong return
arm: dts: dra76x: Fix mmc3 max-frequency
fat: fix uninit-memory access for partial initialized inode
mm, numa: fix bad pmd by atomically check for pmd_trans_huge when marking page tables prot_numa
vgacon: Fix a UAF in vgacon_invert_region
usb: core: port: do error out if usb_autopm_get_interface() fails
usb: core: hub: do error out if usb_autopm_get_interface() fails
usb: core: hub: fix unhandled return by employing a void function
usb: quirks: add NO_LPM quirk for Logitech Screen Share
usb: storage: Add quirk for Samsung Fit flash
cifs: don't leak -EAGAIN for stat() during reconnect
net: thunderx: workaround BGX TX Underflow issue
x86/xen: Distribute switch variables for initialization
nvme: Fix uninitialized-variable warning
x86/boot/compressed: Don't declare __force_order in kaslr_64.c
s390/cio: cio_ignore_proc_seq_next should increase position index
watchdog: da9062: do not ping the hw during stop()
net: ks8851-ml: Fix 16-bit IO operation
net: ks8851-ml: Fix 16-bit data access
net: ks8851-ml: Remove 8-bit bus accessors
drm/msm/dsi: save pll state before dsi host is powered off
drm: msm: Fix return type of dsi_mgr_connector_mode_valid for kCFI
drm/msm/mdp5: rate limit pp done timeout warnings
usb: gadget: serial: fix Tx stall after buffer overflow
usb: gadget: ffs: ffs_aio_cancel(): Save/restore IRQ flags
usb: gadget: composite: Support more than 500mA MaxPower
selftests: fix too long argument
serial: ar933x_uart: set UART_CS_{RX,TX}_READY_ORIDE
kprobes: Fix optimize_kprobe()/unoptimize_kprobe() cancellation logic
RDMA/core: Fix use of logical OR in get_new_pps
RDMA/core: Fix pkey and port assignment in get_new_pps
net: dsa: bcm_sf2: Forcibly configure IMP port for 1Gb/sec
EDAC/amd64: Set grain per DIMM
x86/mce: Handle varying MCA bank counts
vhost: Check docket sk_family instead of call getname
audit: always check the netlink payload length in audit_receive_msg()
Revert "char/random: silence a lockdep splat with printk()"
mm, thp: fix defrag setting if newline is not used
mm/huge_memory.c: use head to check huge zero page
perf hists browser: Restore ESC as "Zoom out" of DSO/thread/etc
kprobes: Set unoptimized flag after unoptimizing code
drivers: net: xgene: Fix the order of the arguments of 'alloc_etherdev_mqs()'
tuntap: correctly set SOCKWQ_ASYNC_NOSPACE
KVM: Check for a bad hva before dropping into the ghc slow path
KVM: SVM: Override default MMIO mask if memory encryption is enabled
mwifiex: drop most magic numbers from mwifiex_process_tdls_action_frame()
namei: only return -ECHILD from follow_dotdot_rcu()
net: ena: make ena rxfh support ETH_RSS_HASH_NO_CHANGE
net: atlantic: fix potential error handling
net: netlink: cap max groups which will be considered in netlink_bind()
include/linux/bitops.h: introduce BITS_PER_TYPE
ecryptfs: Fix up bad backport of fe2e082f5da5b4a0a92ae32978f81507ef37ec66
usb: charger: assign specific number for enum value
drm/i915/gvt: Separate display reset from ALL_ENGINES reset
i2c: jz4780: silence log flood on txabrt
i2c: altera: Fix potential integer overflow
MIPS: VPE: Fix a double free and a memory leak in 'release_vpe()'
HID: hiddev: Fix race in in hiddev_disconnect()
Revert "PM / devfreq: Modify the device name as devfreq(X) for sysfs"
tracing: Disable trace_printk() on post poned tests
HID: core: increase HID report buffer size to 8KiB
HID: core: fix off-by-one memset in hid_report_raw_event()
HID: ite: Only bind to keyboard USB interface on Acer SW5-012 keyboard dock
KVM: VMX: check descriptor table exits on instruction emulation
ACPI: watchdog: Fix gas->access_width usage
ACPICA: Introduce ACPI_ACCESS_BYTE_WIDTH() macro
audit: fix error handling in audit_data_to_entry()
ext4: potential crash on allocation error in ext4_alloc_flex_bg_array()
net: sched: correct flower port blocking
qede: Fix race between rdma destroy workqueue and link change event
ipv6: Fix route replacement with dev-only route
ipv6: Fix nlmsg_flags when splitting a multipath route
sctp: move the format error check out of __sctp_sf_do_9_1_abort
nfc: pn544: Fix occasional HW initialization failure
net: phy: restore mdio regs in the iproc mdio driver
net: fib_rules: Correctly set table field when table number exceeds 8 bits
sysrq: Remove duplicated sysrq message
sysrq: Restore original console_loglevel when sysrq disabled
cfg80211: add missing policy for NL80211_ATTR_STATUS_CODE
cifs: Fix mode output in debugging statements
net: ena: ena-com.c: prevent NULL pointer dereference
net: ena: ethtool: use correct value for crc32 hash
net: ena: fix incorrectly saving queue numbers when setting RSS indirection table
net: ena: rss: store hash function as values and not bits
net: ena: rss: fix failure to get indirection table
net: ena: fix incorrect default RSS key
net: ena: add missing ethtool TX timestamping indication
net: ena: fix uses of round_jiffies()
net: ena: fix potential crash when rxfh key is NULL
qmi_wwan: unconditionally reject 2 ep interfaces
qmi_wwan: re-add DW5821e pre-production variant
cfg80211: check wiphy driver existence for drvinfo report
mac80211: consider more elements in parsing CRC
dax: pass NOWAIT flag to iomap_apply
drm/msm: Set dma maximum segment size for mdss
ipmi:ssif: Handle a possible NULL pointer reference
ext4: fix potential race between s_group_info online resizing and access
ext4: fix potential race between s_flex_groups online resizing and access
ext4: fix potential race between online resizing and write operations
netfilter: nf_conntrack: resolve clash for matching conntracks
iwlwifi: pcie: fix rb_allocator workqueue allocation
FROMLIST: f2fs: fix wrong check on F2FS_IOC_FSSETXATTR
UPSTREAM: binder: prevent UAF for binderfs devices II
UPSTREAM: binder: prevent UAF for binderfs devices
FROMLIST: lib: test_stackinit.c: XFAIL switch variable init tests
ANDROID: cuttlefish: disable KPROBES
ANDROID: scsi: ufs: allow ufs variants to override sg entry size
FROMLIST: ufs: fix a bug on printing PRDT
BACKPORT: loop: Add LOOP_SET_BLOCK_SIZE in compat ioctl
ANDROID: fix build issue in security/selinux/avc.c
ANDROID: cuttlefish_defconfig: Disable CONFIG_RT_GROUP_SCHED
ANDROID: Enable HID_NINTENDO as y
FROMLIST: HID: nintendo: add nintendo switch controller driver
Linux 4.14.172
s390/mm: Explicitly compare PAGE_DEFAULT_KEY against zero in storage_key_init_range
xen: Enable interrupts when calling _cond_resched()
ata: ahci: Add shutdown to freeze hardware resources of ahci
netfilter: xt_hashlimit: limit the max size of hashtable
ALSA: seq: Fix concurrent access to queue current tick/time
ALSA: seq: Avoid concurrent access to queue flags
ALSA: rawmidi: Avoid bit fields for state flags
genirq/proc: Reject invalid affinity masks (again)
iommu/vt-d: Fix compile warning from intel-svm.h
ecryptfs: replace BUG_ON with error handling code
staging: greybus: use after free in gb_audio_manager_remove_all()
staging: rtl8723bs: fix copy of overlapping memory
usb: gadget: composite: Fix bMaxPower for SuperSpeedPlus
scsi: Revert "target: iscsi: Wait for all commands to finish before freeing a session"
scsi: Revert "RDMA/isert: Fix a recently introduced regression related to logout"
Btrfs: fix btrfs_wait_ordered_range() so that it waits for all ordered extents
btrfs: do not check delayed items are empty for single transaction cleanup
btrfs: fix bytes_may_use underflow in prealloc error condtition
KVM: apic: avoid calculating pending eoi from an uninitialized val
KVM: nVMX: handle nested posted interrupts when apicv is disabled for L1
KVM: nVMX: Check IO instruction VM-exit conditions
KVM: nVMX: Refactor IO bitmap checks into helper function
ext4: fix race between writepages and enabling EXT4_EXTENTS_FL
ext4: rename s_journal_flag_rwsem to s_writepages_rwsem
ext4: fix mount failure with quota configured as module
ext4: add cond_resched() to __ext4_find_entry()
ext4: fix a data race in EXT4_I(inode)->i_disksize
KVM: nVMX: Don't emulate instructions in guest mode
lib/stackdepot.c: fix global out-of-bounds in stack_slabs
serial: 8250: Check UPF_IRQ_SHARED in advance
vt: vt_ioctl: fix race in VT_RESIZEX
VT_RESIZEX: get rid of field-by-field copyin
xhci: apply XHCI_PME_STUCK_QUIRK to Intel Comet Lake platforms
KVM: x86: don't notify userspace IOAPIC on edge-triggered interrupt EOI
drm/amdgpu/soc15: fix xclk for raven
mm/vmscan.c: don't round up scan size for online memory cgroup
Revert "ipc,sem: remove uneeded sem_undo_list lock usage in exit_sem()"
MAINTAINERS: Update drm/i915 bug filing URL
serdev: ttyport: restore client ops on deregistration
tty: serial: imx: setup the correct sg entry for tx dma
tty/serial: atmel: manage shutdown in case of RS485 or ISO7816 mode
x86/mce/amd: Fix kobject lifetime
x86/mce/amd: Publish the bank pointer only after setup has succeeded
staging: rtl8723bs: Fix potential overuse of kernel memory
staging: rtl8723bs: Fix potential security hole
staging: rtl8188eu: Fix potential overuse of kernel memory
staging: rtl8188eu: Fix potential security hole
USB: hub: Fix the broken detection of USB3 device in SMSC hub
USB: hub: Don't record a connect-change event during reset-resume
USB: Fix novation SourceControl XL after suspend
usb: uas: fix a plug & unplug racing
usb: host: xhci: update event ring dequeue pointer on purpose
xhci: fix runtime pm enabling for quirky Intel hosts
xhci: Force Maximum Packet size for Full-speed bulk devices to valid range.
staging: vt6656: fix sign of rx_dbm to bb_pre_ed_rssi.
staging: android: ashmem: Disallow ashmem memory from being remapped
vt: selection, handle pending signals in paste_selection
floppy: check FDC index for errors before assigning it
USB: misc: iowarrior: add support for the 100 device
USB: misc: iowarrior: add support for the 28 and 28L devices
USB: misc: iowarrior: add support for 2 OEMed devices
thunderbolt: Prevent crash if non-active NVMem file is read
net/smc: fix leak of kernel memory to user space
net/sched: flower: add missing validation of TCA_FLOWER_FLAGS
net/sched: matchall: add missing validation of TCA_MATCHALL_FLAGS
net: dsa: tag_qca: Make sure there is headroom for tag
enic: prevent waking up stopped tx queues over watchdog reset
selinux: ensure we cleanup the internal AVC counters on error in avc_update()
mlxsw: spectrum_dpipe: Add missing error path
virtio_balloon: prevent pfn array overflow
help_next should increase position index
brd: check and limit max_part par
microblaze: Prevent the overflow of the start
iwlwifi: mvm: Fix thermal zone registration
irqchip/gic-v3-its: Reference to its_invall_cmd descriptor when building INVALL
bcache: explicity type cast in bset_bkey_last()
reiserfs: prevent NULL pointer dereference in reiserfs_insert_item()
lib/scatterlist.c: adjust indentation in __sg_alloc_table
ocfs2: fix a NULL pointer dereference when call ocfs2_update_inode_fsync_trans()
radeon: insert 10ms sleep in dce5_crtc_load_lut
trigger_next should increase position index
ftrace: fpid_next() should increase position index
drm/nouveau/disp/nv50-: prevent oops when no channel method map provided
irqchip/gic-v3: Only provision redistributors that are enabled in ACPI
ceph: check availability of mds cluster on mount after wait timeout
cifs: fix NULL dereference in match_prepath
iwlegacy: ensure loop counter addr does not wrap and cause an infinite loop
hostap: Adjust indentation in prism2_hostapd_add_sta
ARM: 8951/1: Fix Kexec compilation issue.
jbd2: make sure ESHUTDOWN to be recorded in the journal superblock
jbd2: switch to use jbd2_journal_abort() when failed to submit the commit record
powerpc/sriov: Remove VF eeh_dev state when disabling SR-IOV
ALSA: hda - Add docking station support for Lenovo Thinkpad T420s
driver core: platform: fix u32 greater or equal to zero comparison
s390/ftrace: generate traced function stack frame
x86/decoder: Add TEST opcode to Group3-2
ALSA: hda/hdmi - add retry logic to parse_intel_hdmi()
irqchip/mbigen: Set driver .suppress_bind_attrs to avoid remove problems
remoteproc: Initialize rproc_class before use
btrfs: device stats, log when stats are zeroed
btrfs: safely advance counter when looking up bio csums
btrfs: fix possible NULL-pointer dereference in integrity checks
pwm: Remove set but not set variable 'pwm'
ide: serverworks: potential overflow in svwks_set_pio_mode()
cmd64x: potential buffer overflow in cmd64x_program_timings()
pwm: omap-dmtimer: Remove PWM chip in .remove before making it unfunctional
x86/mm: Fix NX bit clearing issue in kernel_map_pages_in_pgd
f2fs: fix memleak of kobject
watchdog/softlockup: Enforce that timestamp is valid on boot
arm64: fix alternatives with LLVM's integrated assembler
scsi: iscsi: Don't destroy session if there are outstanding connections
f2fs: free sysfs kobject
iommu/arm-smmu-v3: Use WRITE_ONCE() when changing validity of an STE
usb: musb: omap2430: Get rid of musb .set_vbus for omap2430 glue
drm/vmwgfx: prevent memory leak in vmw_cmdbuf_res_add
drm/nouveau: Fix copy-paste error in nouveau_fence_wait_uevent_handler
drm/nouveau/gr/gk20a,gm200-: add terminators to method lists read from fw
drm/nouveau/secboot/gm20b: initialize pointer in gm20b_secboot_new()
vme: bridges: reduce stack usage
driver core: Print device when resources present in really_probe()
driver core: platform: Prevent resouce overflow from causing infinite loops
tty: synclink_gt: Adjust indentation in several functions
tty: synclinkmp: Adjust indentation in several functions
ASoC: atmel: fix build error with CONFIG_SND_ATMEL_SOC_DMA=m
wan: ixp4xx_hss: fix compile-testing on 64-bit
Input: edt-ft5x06 - work around first register access error
rcu: Use WRITE_ONCE() for assignments to ->pprev for hlist_nulls
efi/x86: Don't panic or BUG() on non-critical error conditions
soc/tegra: fuse: Correct straps' address for older Tegra124 device trees
IB/hfi1: Add software counter for ctxt0 seq drop
udf: Fix free space reporting for metadata and virtual partitions
usbip: Fix unsafe unaligned pointer usage
drm: remove the newline for CRC source name.
tools lib api fs: Fix gcc9 stringop-truncation compilation error
ALSA: sh: Fix compile warning wrt const
ALSA: sh: Fix unused variable warnings
clk: sunxi-ng: add mux and pll notifiers for A64 CPU clock
RDMA/rxe: Fix error type of mmap_offset
pinctrl: sh-pfc: sh7269: Fix CAN function GPIOs
PM / devfreq: rk3399_dmc: Add COMPILE_TEST and HAVE_ARM_SMCCC dependency
x86/vdso: Provide missing include file
dmaengine: Store module owner in dma_device struct
ARM: dts: r8a7779: Add device node for ARM global timer
drm/mediatek: handle events when enabling/disabling crtc
scsi: aic7xxx: Adjust indentation in ahc_find_syncrate
scsi: ufs: Complete pending requests in host reset and restore path
ACPICA: Disassembler: create buffer fields in ACPI_PARSE_LOAD_PASS1
orinoco: avoid assertion in case of NULL pointer
rtlwifi: rtl_pci: Fix -Wcast-function-type
iwlegacy: Fix -Wcast-function-type
ipw2x00: Fix -Wcast-function-type
b43legacy: Fix -Wcast-function-type
ALSA: usx2y: Adjust indentation in snd_usX2Y_hwdep_dsp_status
fore200e: Fix incorrect checks of NULL pointer dereference
reiserfs: Fix spurious unlock in reiserfs_fill_super() error handling
media: v4l2-device.h: Explicitly compare grp{id,mask} to zero in v4l2_device macros
ARM: dts: imx6: rdu2: Disable WP for USDHC2 and USDHC3
arm64: dts: qcom: msm8996: Disable USB2 PHY suspend by core
NFC: port100: Convert cpu_to_le16(le16_to_cpu(E1) + E2) to use le16_add_cpu().
PCI/IOV: Fix memory leak in pci_iov_add_virtfn()
net/wan/fsl_ucc_hdlc: reject muram offsets above 64K
regulator: rk808: Lower log level on optional GPIOs being not available
drm/amdgpu: remove 4 set but not used variable in amdgpu_atombios_get_connector_info_from_object_table
clk: qcom: rcg2: Don't crash if our parent can't be found; return an error
kconfig: fix broken dependency in randconfig-generated .config
KVM: s390: ENOTSUPP -> EOPNOTSUPP fixups
nbd: add a flush_workqueue in nbd_start_device
ext4, jbd2: ensure panic when aborting with zero errno
tracing: Fix very unlikely race of registering two stat tracers
tracing: Fix tracing_stat return values in error handling paths
x86/sysfb: Fix check for bad VRAM size
jbd2: clear JBD2_ABORT flag before journal_reset to update log tail info when load journal
kselftest: Minimise dependency of get_size on C library interfaces
clocksource/drivers/bcm2835_timer: Fix memory leak of timer
usb: dwc2: Fix IN FIFO allocation
usb: gadget: udc: fix possible sleep-in-atomic-context bugs in gr_probe()
uio: fix a sleep-in-atomic-context bug in uio_dmem_genirq_irqcontrol()
sparc: Add .exit.data section.
MIPS: Loongson: Fix potential NULL dereference in loongson3_platform_init()
efi/x86: Map the entire EFI vendor string before copying it
pinctrl: baytrail: Do not clear IRQ flags on direct-irq enabled pins
media: sti: bdisp: fix a possible sleep-in-atomic-context bug in bdisp_device_run()
char/random: silence a lockdep splat with printk()
gpio: gpio-grgpio: fix possible sleep-in-atomic-context bugs in grgpio_irq_map/unmap()
powerpc/powernv/iov: Ensure the pdn for VFs always contains a valid PE number
media: i2c: mt9v032: fix enum mbus codes and frame sizes
pxa168fb: Fix the function used to release some memory in an error handling path
pinctrl: sh-pfc: sh7264: Fix CAN function GPIOs
gianfar: Fix TX timestamping with a stacked DSA driver
ALSA: ctl: allow TLV read operation for callback type of element in locked case
ext4: fix ext4_dax_read/write inode locking sequence for IOCB_NOWAIT
leds: pca963x: Fix open-drain initialization
brcmfmac: Fix use after free in brcmf_sdio_readframes()
cpu/hotplug, stop_machine: Fix stop_machine vs hotplug order
drm/gma500: Fixup fbdev stolen size usage evaluation
KVM: nVMX: Use correct root level for nested EPT shadow page tables
Revert "KVM: VMX: Add non-canonical check on writes to RTIT address MSRs"
Revert "KVM: nVMX: Use correct root level for nested EPT shadow page tables"
scsi: qla2xxx: fix a potential NULL pointer dereference
jbd2: do not clear the BH_Mapped flag when forgetting a metadata buffer
jbd2: move the clearing of b_modified flag to the journal_unmap_buffer()
hwmon: (pmbus/ltc2978) Fix PMBus polling of MFR_COMMON definitions.
perf/x86/intel: Fix inaccurate period in context switch for auto-reload
s390/time: Fix clk type in get_tod_clock
RDMA/core: Fix protection fault in get_pkey_idx_qp_list
IB/hfi1: Close window for pq and request coliding
serial: imx: Only handle irqs that are actually enabled
serial: imx: ensure that RX irqs are off if RX is off
padata: Remove broken queue flushing
perf/x86/amd: Add missing L2 misses event spec to AMD Family 17h's event map
KVM: nVMX: Use correct root level for nested EPT shadow page tables
arm64: ssbs: Fix context-switch when SSBS is present on all CPUs
btrfs: log message when rw remount is attempted with unclean tree-log
btrfs: print message when tree-log replay starts
Btrfs: fix race between using extent maps and merging them
ext4: improve explanation of a mount failure caused by a misconfigured kernel
ext4: fix checksum errors with indexed dirs
ext4: fix support for inode sizes > 1024 bytes
ext4: don't assume that mmp_nodename/bdevname have NUL
ARM: 8723/2: always assume the "unified" syntax for assembly code
arm64: nofpsimd: Handle TIF_FOREIGN_FPSTATE flag cleanly
arm64: ptrace: nofpsimd: Fail FP/SIMD regset operations
arm64: cpufeature: Set the FP/SIMD compat HWCAP bits properly
ALSA: usb-audio: Apply sample rate quirk for Audioengine D1
Input: synaptics - remove the LEN0049 dmi id from topbuttonpad list
Input: synaptics - enable SMBus on ThinkPad L470
Input: synaptics - switch T470s to RMI4 by default
ecryptfs: fix a memory leak bug in ecryptfs_init_messaging()
ecryptfs: fix a memory leak bug in parse_tag_1_packet()
ASoC: sun8i-codec: Fix setting DAI data format
ALSA: hda: Use scnprintf() for printing texts for sysfs/procfs
iommu/qcom: Fix bogus detach logic
KVM: x86: emulate RDPID
UPSTREAM: sched/psi: Fix OOB write when writing 0 bytes to PSI files
UPSTREAM: psi: Fix a division error in psi poll()
UPSTREAM: sched/psi: Fix sampling error and rare div0 crashes with cgroups and high uptime
UPSTREAM: sched/psi: Correct overly pessimistic size calculation
FROMLIST: f2fs: Handle casefolding with Encryption
FROMLIST: fscrypt: Have filesystems handle their d_ops
FROMLIST: ext4: Use generic casefolding support
FROMLIST: f2fs: Use generic casefolding support
FROMLIST: Add standard casefolding support
FROMLIST: unicode: Add utf8_casefold_hash
ANDROID: cuttlefish_defconfig: Add CONFIG_UNICODE
ANDROID: sdcardfs: fix -ENOENT lookup race issue
ANDROID: gki_defconfig: Enable CONFIG_RD_LZ4
ANDROID: dm: Add wrapped key support in dm-default-key
ANDROID: dm: add support for passing through derive_raw_secret
ANDROID: block: Prevent crypto fallback for wrapped keys
ANDROID: Disable wq fp check in CFI builds
ANDROID: increase limit on sched-tune boost groups
ANDROID: ufs, block: fix crypto power management and move into block layer
ANDROID: Incremental fs: Support xattrs
ANDROID: test_stackinit: work around LLVM PR44916
ANDROID: clang: update to 10.0.4
ANDROID: cuttlefish_defconfig: Enable CONFIG_NET_NS
ANDROID: virtio: virtio_input: pass _DIRECT only if the device advertises _DIRECT
ANDROID: net: bpf: Allow TC programs to call BPF_FUNC_skb_change_head
ANDROID: Add INIT_STACK_ALL to the list of Clang-specific options
Linux 4.14.171
libertas: make lbs_ibss_join_existing() return error code on rates overflow
libertas: don't exit from lbs_ibss_join_existing() with RCU read lock held
mwifiex: Fix possible buffer overflows in mwifiex_cmd_append_vsie_tlv()
mwifiex: Fix possible buffer overflows in mwifiex_ret_wmm_get_status()
serial: uartps: Move the spinlock after the read of the tx empty
dm: fix potential for q->make_request_fn NULL pointer
scsi: megaraid_sas: Do not initiate OCR if controller is not in ready state
pinctrl: sh-pfc: r8a7778: Fix duplicate SDSELF_B and SD1_CLK_B
media: i2c: adv748x: Fix unsafe macros
crypto: atmel-sha - fix error handling when setting hmac key
crypto: artpec6 - return correct error code for failed setkey()
KVM: arm/arm64: Fix young bit from mmu notifier
arm64: cpufeature: Fix the type of no FP/SIMD capability
ARM: 8949/1: mm: mark free_memmap as __init
KVM: arm/arm64: vgic-its: Fix restoration of unmapped collections
powerpc/pseries: Allow not having ibm, hypertas-functions::hcall-multi-tce for DDW
powerpc/pseries/vio: Fix iommu_table use-after-free refcount warning
tools/power/acpi: fix compilation error
ARM: dts: at91: sama5d3: define clock rate range for tcb1
ARM: dts: at91: sama5d3: fix maximum peripheral clock rates
platform/x86: intel_mid_powerbtn: Take a copy of ddata
ARC: [plat-axs10x]: Add missing multicast filter number to GMAC node
rtc: cmos: Stop using shared IRQ
rtc: hym8563: Return -EINVAL if the time is known to be invalid
serial: uartps: Add a timeout to the tx empty wait
NFSv4: try lease recovery on NFS4ERR_EXPIRED
NFS/pnfs: Fix pnfs_generic_prepare_to_resend_writes()
nfs: NFS_SWAP should depend on SWAP
PCI: Don't disable bridge BARs when assigning bus resources
PCI/switchtec: Fix vep_vector_number ioread width
scsi: ufs: Fix ufshcd_probe_hba() reture value in case ufshcd_scsi_add_wlus() fails
RDMA/netlink: Do not always generate an ACK for some netlink operations
hv_sock: Remove the accept port restriction
ASoC: pcm: update FE/BE trigger order based on the command
rxrpc: Fix service call disconnection
perf/core: Fix mlock accounting in perf_mmap()
clocksource: Prevent double add_timer_on() for watchdog_timer
cifs: fail i/o on soft mounts if sessionsetup errors out
KVM: s390: do not clobber registers during guest reset/store status
KVM: Play nice with read-only memslots when querying host page size
KVM: Use vcpu-specific gva->hva translation when querying host page size
KVM: nVMX: vmread should not set rflags to specify success in case of #PF
KVM: VMX: Add non-canonical check on writes to RTIT address MSRs
KVM: x86/mmu: Apply max PA check for MMIO sptes to 32-bit KVM
KVM: x86: Fix potential put_fpu() w/o load_fpu() on MPX platform
btrfs: flush write bio if we loop in extent_write_cache_pages
KVM: x86: Protect pmu_intel.c from Spectre-v1/L1TF attacks
drm: atmel-hlcdc: enable clock before configuring timing engine
Btrfs: fix race between adding and putting tree mod seq elements and nodes
btrfs: remove trivial locking wrappers of tree mod log
btrfs: free block groups after free'ing fs trees
btrfs: use bool argument in free_root_pointers()
Btrfs: fix missing hole after hole punching and fsync when using NO_HOLES
Btrfs: fix assertion failure on fsync with NO_HOLES enabled
btrfs: Get rid of the confusing btrfs_file_extent_inline_len
ext4: fix deadlock allocating crypto bounce page from mempool
bonding/alb: properly access headers in bond_alb_xmit()
net: macb: Limit maximum GEM TX length in TSO
net: macb: Remove unnecessary alignment check for TSO
net: systemport: Avoid RBUF stuck in Wake-on-LAN mode
net_sched: fix a resource leak in tcindex_set_parms()
net: dsa: bcm_sf2: Only 7278 supports 2Gb/sec IMP port
mfd: rn5t618: Mark ADC control register volatile
mfd: da9062: Fix watchdog compatible string
ubi: Fix an error pointer dereference in error handling code
ubi: fastmap: Fix inverted logic in seen selfcheck
nfsd: fix jiffies/time_t mixup in LRU list
nfsd: fix delay timer on 32-bit architectures
IB/core: Fix ODP get user pages flow
IB/mlx5: Fix outstanding_pi index for GSI qps
net: tulip: Adjust indentation in {dmfe, uli526x}_init_module
net: smc911x: Adjust indentation in smc911x_phy_configure
ppp: Adjust indentation into ppp_async_input
NFC: pn544: Adjust indentation in pn544_hci_check_presence
powerpc/44x: Adjust indentation in ibm4xx_denali_fixup_memsize
ext2: Adjust indentation in ext2_fill_super
phy: qualcomm: Adjust indentation in read_poll_timeout
scsi: ufs: Recheck bkops level if bkops is disabled
scsi: qla4xxx: Adjust indentation in qla4xxx_mem_free
scsi: csiostor: Adjust indentation in csio_device_reset
scsi: qla2xxx: Fix the endianness of the qla82xx_get_fw_size() return type
clk: tegra: Mark fuse clock as critical
KVM: x86: Free wbinvd_dirty_mask if vCPU creation fails
KVM: PPC: Book3S PR: Free shared page if mmu initialization fails
KVM: PPC: Book3S HV: Uninit vCPU if vcore creation fails
KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() from Spectre-v1/L1TF attacks
KVM: x86: Protect x86_decode_insn from Spectre-v1/L1TF attacks
KVM: x86: Protect MSR-based index computations from Spectre-v1/L1TF attacks in x86.c
KVM: x86: Protect ioapic_read_indirect() from Spectre-v1/L1TF attacks
KVM: x86: Protect MSR-based index computations in pmu.h from Spectre-v1/L1TF attacks
KVM: x86: Protect ioapic_write_indirect() from Spectre-v1/L1TF attacks
KVM: x86: Protect kvm_hv_msr_[get|set]_crash_data() from Spectre-v1/L1TF attacks
KVM: x86: Protect kvm_lapic_reg_write() from Spectre-v1/L1TF attacks
KVM: x86: Protect DR-based index computations from Spectre-v1/L1TF attacks
KVM: x86: Refactor prefix decoding to prevent Spectre-v1/L1TF attacks
KVM: x86: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks
xen/balloon: Support xend-based toolstack take two
tools/kvm_stat: Fix kvm_exit filter name
sunrpc: expiry_time should be seconds not timeval
mwifiex: fix unbalanced locking in mwifiex_process_country_ie()
iwlwifi: don't throw error when trying to remove IGTK
ARM: tegra: Enable PLLP bypass during Tegra124 LP1
btrfs: set trans->drity in btrfs_commit_transaction
NFS: Directory page cache pages need to be locked when read
NFS: Fix memory leaks and corruption in readdir
scsi: qla2xxx: Fix unbound NVME response length
crypto: picoxcell - adjust the position of tasklet_init and fix missed tasklet_kill
crypto: api - Fix race condition in crypto_spawn_alg
crypto: atmel-aes - Fix counter overflow in CTR mode
crypto: pcrypt - Do not clear MAY_SLEEP flag in original request
crypto: ccp - set max RSA modulus size for v3 platform devices as well
samples/bpf: Don't try to remove user's homedir on clean
ftrace: Protect ftrace_graph_hash with ftrace_sync
ftrace: Add comment to why rcu_dereference_sched() is open coded
tracing: Annotate ftrace_graph_notrace_hash pointer with __rcu
tracing: Annotate ftrace_graph_hash pointer with __rcu
dm crypt: fix benbi IV constructor crash if used in authenticated mode
dm space map common: fix to ensure new block isn't already in use
dm zoned: support zone sizes smaller than 128MiB
of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc
PM: core: Fix handling of devices deleted during system-wide resume
f2fs: code cleanup for f2fs_statfs_project()
f2fs: fix miscounted block limit in f2fs_statfs_project()
f2fs: choose hardlimit when softlimit is larger than hardlimit in f2fs_statfs_project()
power: supply: ltc2941-battery-gauge: fix use-after-free
scsi: qla2xxx: Fix mtcp dump collection failure
crypto: api - Check spawn->alg under lock in crypto_drop_spawn
hv_balloon: Balloon up according to request page number
ubifs: don't trigger assertion on invalid no-key filename
mmc: sdhci-of-at91: fix memleak on clk_get failure
PCI: keystone: Fix link training retries initiation
ubifs: Fix deadlock in concurrent bulk-read and writepage
ubifs: Fix FS_IOC_SETFLAGS unexpectedly clearing encrypt flag
ubifs: Reject unsupported ioctl flags explicitly
alarmtimer: Unregister wakeup source when module get fails
ACPI: video: Do not export a non working backlight interface on MSI MS-7721 boards
mmc: spi: Toggle SPI polarity, do not hardcode it
powerpc/pseries: Advance pfn if section is not present in lmb_is_removable()
powerpc/xmon: don't access ASDR in VMs
s390/mm: fix dynamic pagetable upgrade for hugetlbfs
MIPS: fix indentation of the 'RELOCS' message
KVM: arm64: Only sign-extend MMIO up to register width
platform/x86: intel_scu_ipc: Fix interrupt support
irqdomain: Fix a memory leak in irq_domain_push_irq()
lib/test_kasan.c: fix memory leak in kmalloc_oob_krealloc_more()
media: v4l2-rect.h: fix v4l2_rect_map_inside() top/left adjustments
media/v4l2-core: set pages dirty upon releasing DMA buffers
ALSA: dummy: Fix PCM format loop in proc output
usb: gadget: f_ecm: Use atomic_t to track in-flight request
usb: gadget: f_ncm: Use atomic_t to track in-flight request
usb: gadget: legacy: set max_speed to super-speed
brcmfmac: Fix memory leak in brcmf_usbdev_qinit
tracing: Fix sched switch start/stop refcount racy updates
mfd: dln2: More sanity checking for endpoints
media: uvcvideo: Avoid cyclic entity chains due to malformed USB descriptors
rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect
rxrpc: Fix insufficient receive notification generation
tcp: clear tp->segs_{in|out} in tcp_disconnect()
tcp: clear tp->data_segs{in|out} in tcp_disconnect()
tcp: clear tp->delivered in tcp_disconnect()
tcp: clear tp->total_retrans in tcp_disconnect()
bnxt_en: Fix TC queue mapping.
net_sched: fix an OOB access in cls_tcindex
net: hsr: fix possible NULL deref in hsr_handle_frame()
l2tp: Allow duplicate session creation with UDP
gtp: use __GFP_NOWARN to avoid memalloc warning
cls_rsvp: fix rsvp_policy
sparc32: fix struct ipc64_perm type definition
iwlwifi: mvm: fix NVM check for 3168 devices
x86/cpu: Update cached HLE state on write to TSX_CTRL_CPUID_CLEAR
media: iguanair: fix endpoint sanity check
kernel/module: Fix memleak in module_add_modinfo_attrs()
ANDROID: make memory initialization tests panic on failure
ANDROID: added memory initialization tests to cuttlefish config
UPSTREAM: lib/test_stackinit: Handle Clang auto-initialization pattern
UPSTREAM: lib: Introduce test_stackinit module
FROMLIST: rename missed uaccess .fixup section
ANDROID: cuttlefish_defconfig: enable heap and stack initialization.
ANDROID: f2fs: fix missing blk-crypto changes
ANDROID: update x86_64_cuttlefish_defconfig
BACKPORT: tracing: Remove unnecessary DEBUG_FS dependency
BACKPORT: debugfs: Fix !DEBUG_FS debugfs_create_automount
UPSTREAM: dynamic_debug: allow to work if debugfs is disabled
UPSTREAM: lib: dynamic_debug: no need to check return value of debugfs_create functions
ANDROID: f2fs: fix build error on PAGE_KERNEL_RO
ANDROID: Revert "ANDROID: gki_defconfig: removed CONFIG_PM_WAKELOCKS"
ANDROID: Set CONFIG_ANDROID_BINDERFS=y
ANDROID: dm: prevent default-key from being enabled without needed hooks
ANDROID: cf: disable virtio crypto
ANDROID: Incremental fs: Fix initialization, use of bitfields
ANDROID: cuttlefish_defconfig: enable dm-default-key
ANDROID: dm: add dm-default-key target for metadata encryption
ANDROID: dm: enable may_passthrough_inline_crypto on some targets
ANDROID: dm: add support for passing through inline crypto support
ANDROID: block: Introduce passthrough keyslot manager
ANDROID: ext4, f2fs: enable direct I/O with inline encryption
BACKPORT: FROMLIST: scsi: ufs: add program_key() variant op
ANDROID: block: export symbols needed for modules to use inline crypto
ANDROID: block: fix some inline crypto bugs
ANDROID: fscrypt: add support for hardware-wrapped keys
ANDROID: block: add KSM op to derive software secret from wrapped key
ANDROID: block: provide key size as input to inline crypto APIs
ANDROID: ufshcd-crypto: export cap find API
ANDROID: scsi: ufs-qcom: Enable BROKEN_CRYPTO quirk flag
ANDROID: scsi: ufs: Add quirk bit for controllers that don't play well with inline crypto
ANDROID: cuttlefish_defconfig: Enable blk-crypto fallback
BACKPORT: FROMLIST: Update Inline Encryption from v5 to v6 of patch series
ANDROID: scsi: ufs: UFS init should not require inline crypto
ANDROID: scsi: ufs: UFS crypto variant operations API
ANDROID: cuttlefish_defconfig: enable inline encryption
BACKPORT: FROMLIST: ext4: add inline encryption support
BACKPORT: FROMLIST: f2fs: add inline encryption support
BACKPORT: FROMLIST: fscrypt: add inline encryption support
BACKPORT: FROMLIST: scsi: ufs: Add inline encryption support to UFS
BACKPORT: FROMLIST: scsi: ufs: UFS crypto API
BACKPORT: FROMLIST: scsi: ufs: UFS driver v2.1 spec crypto additions
BACKPORT: FROMLIST: block: blk-crypto for Inline Encryption
ANDROID: block: Fix bio_crypt_should_process WARN_ON
BACKPORT: FROMLIST: block: Add encryption context to struct bio
BACKPORT: FROMLIST: block: Keyslot Manager for Inline Encryption
BACKPORT: atomic: Add irqsave variant of atomic_dec_and_lock()
ANDROID: Incremental fs: Fix crash on failed lookup
ANDROID: Incremental fs: Make files writeable
ANDROID: Incremental fs: Remove C++-style comments
Linux 4.14.170
perf report: Fix no libunwind compiled warning break s390 issue
btrfs: do not zero f_bavail if we have available space
net: Fix skb->csum update in inet_proto_csum_replace16().
l2t_seq_next should increase position index
seq_tab_next() should increase position index
net/sonic: Quiesce SONIC before re-initializing descriptor memory
net/sonic: Fix receive buffer handling
net/sonic: Use MMIO accessors
net/sonic: Add mutual exclusion for accessing shared state
net: fsl/fman: rename IF_MODE_XGMII to IF_MODE_10G
net/fsl: treat fsl,erratum-a011043
powerpc/fsl/dts: add fsl,erratum-a011043
qlcnic: Fix CPU soft lockup while collecting firmware dump
r8152: get default setting of WOL before initializing
airo: Add missing CAP_NET_ADMIN check in AIROOLDIOCTL/SIOCDEVPRIVATE
airo: Fix possible info leak in AIROOLDIOCTL/SIOCDEVPRIVATE
tee: optee: Fix compilation issue with nommu
ARM: 8955/1: virt: Relax arch timer version check during early boot
scsi: fnic: do not queue commands during fwreset
vti[6]: fix packet tx through bpf_redirect()
ARM: dts: am335x-boneblack-common: fix memory size
bnxt_en: Fix ipv6 RFS filter matching logic.
net: dsa: bcm_sf2: Configure IMP port for 2Gb/sec
wireless: wext: avoid gcc -O3 warning
mac80211: Fix TKIP replay protection immediately after key setup
cfg80211: Fix radar event during another phy CAC
wireless: fix enabling channel 12 for custom regulatory domain
qmi_wwan: Add support for Quectel RM500Q
ASoC: sti: fix possible sleep-in-atomic
igb: Fix SGMII SFP module discovery for 100FX/LX.
ixgbe: Fix calculation of queue with VFs and flow director on interface flap
ixgbevf: Remove limit of 10 entries for unicast filter list
clk: mmp2: Fix the order of timer mux parents
mac80211: mesh: restrict airtime metric to peered established plinks
soc: ti: wkup_m3_ipc: Fix race condition with rproc_boot
ARM: dts: beagle-x15-common: Model 5V0 regulator
ARM: dts: sun8i: a83t: Correct USB3503 GPIOs polarity
media: si470x-i2c: Move free() past last use of 'radio'
cgroup: Prevent double killing of css when enabling threaded cgroup
Bluetooth: Fix race condition in hci_release_sock()
ttyprintk: fix a potential deadlock in interrupt context issue
media: dvb-usb/dvb-usb-urb.c: initialize actlen to 0
media: gspca: zero usb_buf
media: af9005: uninitialized variable printked
media: digitv: don't continue if remote control state can't be read
reiserfs: Fix memory leak of journal device string
mm/mempolicy.c: fix out of bounds write in mpol_parse_str()
ext4: validate the debug_want_extra_isize mount option at parse time
arm64: kbuild: remove compressed images on 'make ARCH=arm64 (dist)clean'
tools lib: Fix builds when glibc contains strlcpy()
PM / devfreq: Add new name attribute for sysfs
perf c2c: Fix return type for histogram sorting comparision functions
crypto: pcrypt - Fix user-after-free on module unload
x86/resctrl: Fix a deadlock due to inaccurate reference
x86/resctrl: Fix use-after-free due to inaccurate refcount of rdtgroup
x86/resctrl: Fix use-after-free when deleting resource groups
vfs: fix do_last() regression
crypto: af_alg - Use bh_lock_sock in sk_destruct
rsi: fix use-after-free on probe errors
net_sched: ematch: reject invalid TCF_EM_SIMPLE
usb-storage: Disable UAS on JMicron SATA enclosure
PCI: Add DMA alias quirk for Intel VCA NTB
atm: eni: fix uninitialized variable warning
gpio: max77620: Add missing dependency on GPIOLIB_IRQCHIP
net: wan: sdla: Fix cast from pointer to integer of different size
drivers/net/b44: Change to non-atomic bit operations on pwol_mask
spi: spi-dw: Add lock protect dw_spi rx/tx to prevent concurrent calls
watchdog: rn5t618_wdt: fix module aliases
watchdog: max77620_wdt: fix potential build errors
phy: cpcap-usb: Prevent USB line glitches from waking up modem
HID: ite: Add USB id match for Acer SW5-012 keyboard dock
arc: eznps: fix allmodconfig kconfig warning
zd1211rw: fix storage endpoint lookup
rtl8xxxu: fix interface sanity check
brcmfmac: fix interface sanity check
ath9k: fix storage endpoint lookup
crypto: chelsio - fix writing tfm flags to wrong place
serial: 8250_bcm2835aux: Fix line mismatch on driver unbind
staging: vt6656: Fix false Tx excessive retries reporting.
staging: vt6656: use NULLFUCTION stack on mac80211
staging: vt6656: correct packet types for CTS protect, mode.
staging: wlan-ng: ensure error return is actually returned
staging: most: net: fix buffer overflow
usb: dwc3: turn off VBUS when leaving host mode
USB: serial: ir-usb: fix IrLAP framing
USB: serial: ir-usb: fix link-speed handling
USB: serial: ir-usb: add missing endpoint sanity check
rsi_91x_usb: fix interface sanity check
orinoco_usb: fix interface sanity check
ANDROID: cf_defconfig: Remove VIRTIO_CONSOLE
ANDROID: cf_defconfig: removed CONFIG_CAN
ANDROID: cf_defconfig: removed old VIRTIO configs
ANDROID: kallsyms: strip hashes from function names with ThinLTO
ANDROID: Incremental fs: Enable incremental-fs in cuttlefish_defconfig
ANDROID: fix bpf jit + cfi interactions
ANDROID: cuttlefish_defconfig: set CONFIG_IKHEADERS to y
UPSTREAM: UAPI: ndctl: Remove use of PAGE_SIZE
UPSTREAM: libnvdimm, namespace: make min namespace size 4K
ANDROID: Incremental fs: Fix sparse errors
Linux 4.14.169
net/x25: fix nonblocking connect
netfilter: ipset: use bitmap infrastructure completely
bitmap: Add bitmap_alloc(), bitmap_zalloc() and bitmap_free()
md: Avoid namespace collision with bitmap API
scsi: iscsi: Avoid potential deadlock in iscsi_if_rx func
media: v4l2-ioctl.c: zero reserved fields for S/TRY_FMT
libertas: Fix two buffer overflows at parsing bss descriptor
coresight: tmc-etf: Do not call smp_processor_id from preemptible
coresight: etb10: Do not call smp_processor_id from preemptible
sd: Fix REQ_OP_ZONE_REPORT completion handling
do_last(): fetch directory ->i_mode and ->i_uid before it's too late
tracing: xen: Ordered comparison of function pointers
scsi: RDMA/isert: Fix a recently introduced regression related to logout
hwmon: (nct7802) Fix voltage limits to wrong registers
Input: sun4i-ts - add a check for devm_thermal_zone_of_sensor_register
Input: pegasus_notetaker - fix endpoint sanity check
Input: aiptek - fix endpoint sanity check
Input: gtco - fix endpoint sanity check
Input: sur40 - fix interface sanity checks
Input: pm8xxx-vib - fix handling of separate enable register
Documentation: Document arm64 kpti control
mmc: sdhci: fix minimum clock rate for v3 controller
mmc: tegra: fix SDR50 tuning override
ARM: 8950/1: ftrace/recordmcount: filter relocation types
Revert "Input: synaptics-rmi4 - don't increment rmiaddr for SMBus transfers"
Input: keyspan-remote - fix control-message timeouts
hwmon: (core) Do not use device managed functions for memory allocations
hwmon: (core) Fix double-free in __hwmon_device_register()
hwmon: Deal with errors from the thermal subsystem
hwmon: (adt7475) Make volt2reg return same reg as reg2volt input
net: rtnetlink: validate IFLA_MTU attribute in rtnl_create_link()
tcp_bbr: improve arithmetic division in bbr_update_bw()
net: usb: lan78xx: Add .ndo_features_check
net-sysfs: Fix reference count leak
net-sysfs: Call dev_hold always in rx_queue_add_kobject
net-sysfs: Call dev_hold always in netdev_queue_add_kobject
net-sysfs: fix netdev_queue_add_kobject() breakage
net-sysfs: Fix reference count leak in rx|netdev_queue_add_kobject
net_sched: fix datalen for ematch
net, ip_tunnel: fix namespaces move
net, ip6_tunnel: fix namespaces move
net: cxgb3_main: Add CAP_NET_ADMIN check to CHELSIO_GET_MEM
ipv6: sr: remove SKB_GSO_IPXIP6 on End.D* actions
gtp: make sure only SOCK_DGRAM UDP sockets are accepted
firestream: fix memory leaks
can, slip: Protect tty->disc_data in write_wakeup and close with RCU
UPSTREAM: staging: most: net: fix buffer overflow
ANDROID: Fixing incremental fs style issues
ANDROID: Make incfs selftests pass
ANDROID: Initial commit of Incremental FS
ANDROID: cuttlefish_defconfig: Enable CONFIG_BTT
Linux 4.14.168
m68k: Call timer_interrupt() with interrupts disabled
serial: stm32: fix clearing interrupt error flags
IB/iser: Fix dma_nents type definition
arm64: dts: juno: Fix UART frequency
drm/radeon: fix bad DMA from INTERRUPT_CNTL2
dmaengine: ti: edma: fix missed failure handling
affs: fix a memory leak in affs_remount
mmc: core: fix wl1251 sdio quirks
mmc: sdio: fix wl1251 vendor id
packet: fix data-race in fanout_flow_is_huge()
net: neigh: use long type to store jiffies delta
hv_netvsc: flag software created hash value
MIPS: Loongson: Fix return value of loongson_hwmon_init
afs: Fix large file support
net: qca_spi: Move reset_count to struct qcaspi
net: netem: correct the parent's backlog when corrupted packet was dropped
net: netem: fix error path for corrupted GSO frames
dmaengine: imx-sdma: fix size check for sdma script_number
drm/msm/dsi: Implement reset correctly
tcp: annotate lockless access to tcp_memory_pressure
net: add {READ|WRITE}_ONCE() annotations on ->rskq_accept_head
net: avoid possible false sharing in sk_leave_memory_pressure()
act_mirred: Fix mirred_init_module error handling
net: stmmac: fix length of PTP clock's name string
llc: fix sk_buff refcounting in llc_conn_state_process()
llc: fix another potential sk_buff leak in llc_ui_sendmsg()
mac80211: accept deauth frames in IBSS mode
net: stmmac: gmac4+: Not all Unicast addresses may be available
nvme: retain split access workaround for capability reads
net: ethernet: stmmac: Fix signedness bug in ipq806x_gmac_of_parse()
of: mdio: Fix a signedness bug in of_phy_get_and_connect()
net: axienet: fix a signedness bug in probe
net: stmmac: dwmac-meson8b: Fix signedness bug in probe
net: broadcom/bcmsysport: Fix signedness in bcm_sysport_probe()
net: hisilicon: Fix signedness bug in hix5hd2_dev_probe()
net: aquantia: Fix aq_vec_isr_legacy() return value
iommu/amd: Wait for completion of IOTLB flush in attach_device
net/rds: Fix 'ib_evt_handler_call' element in 'rds_ib_stat_names'
RDMA/cma: Fix false error message
ath10k: adjust skb length in ath10k_sdio_mbox_rx_packet
pinctrl: iproc-gpio: Fix incorrect pinconf configurations
net: sonic: replace dev_kfree_skb in sonic_send_packet
hwmon: (shtc1) fix shtc1 and shtw1 id mask
ixgbe: sync the first fragment unconditionally
btrfs: use correct count in btrfs_file_write_iter()
Btrfs: fix inode cache waiters hanging on path allocation failure
Btrfs: fix inode cache waiters hanging on failure to start caching thread
Btrfs: fix hang when loading existing inode cache off disk
scsi: fnic: fix msix interrupt allocation
net: sonic: return NETDEV_TX_OK if failed to map buffer
tty: serial: fsl_lpuart: Use appropriate lpuart32_* I/O funcs
ath9k: dynack: fix possible deadlock in ath_dynack_node_{de}init
iio: dac: ad5380: fix incorrect assignment to val
bcma: fix incorrect update of BCMA_CORE_PCI_MDIO_DATA
irqdomain: Add the missing assignment of domain->fwnode for named fwnode
staging: greybus: light: fix a couple double frees
x86, perf: Fix the dependency of the x86 insn decoder selftest
power: supply: Init device wakeup after device_add()
hwmon: (lm75) Fix write operations for negative temperatures
Partially revert "kfifo: fix kfifo_alloc() and kfifo_init()"
ahci: Do not export local variable ahci_em_messages
iommu/mediatek: Fix iova_to_phys PA start for 4GB mode
mips: avoid explicit UB in assignment of mips_io_port_base
rtc: pcf2127: bugfix: read rtc disables watchdog
media: atmel: atmel-isi: fix timeout value for stop streaming
mac80211: minstrel_ht: fix per-group max throughput rate initialization
dmaengine: dw: platform: Switch to acpi_dma_controller_register()
ASoC: sun4i-i2s: RX and TX counter registers are swapped
signal: Allow cifs and drbd to receive their terminating signals
bnxt_en: Fix handling FRAG_ERR when NVM_INSTALL_UPDATE cmd fails
net/rds: Add a few missing rds_stat_names entries
ASoC: wm8737: Fix copy-paste error in wm8737_snd_controls
ASoC: cs4349: Use PM ops 'cs4349_runtime_pm'
ASoC: es8328: Fix copy-paste error in es8328_right_line_controls
ext4: set error return correctly when ext4_htree_store_dirent fails
crypto: caam - free resources in case caam_rng registration failed
cifs: fix rmmod regression in cifs.ko caused by force_sig changes
net/mlx5: Fix mlx5_ifc_query_lag_out_bits
ARM: dts: stm32: add missing vdda-supply to adc on stm32h743i-eval
tipc: reduce risk of wakeup queue starvation
ALSA: aoa: onyx: always initialize register read value
crypto: ccp - Reduce maximum stack usage
x86/kgbd: Use NMI_VECTOR not APIC_DM_NMI
mic: avoid statically declaring a 'struct device'.
usb: host: xhci-hub: fix extra endianness conversion
qed: reduce maximum stack frame size
libertas_tf: Use correct channel range in lbtf_geo_init
PM: sleep: Fix possible overflow in pm_system_cancel_wakeup()
clk: sunxi-ng: v3s: add the missing PLL_DDR1
scsi: libfc: fix null pointer dereference on a null lport
net: pasemi: fix an use-after-free in pasemi_mac_phy_init()
RDMA/hns: Fixs hw access invalid dma memory error
devres: allow const resource arguments
rxrpc: Fix uninitialized error code in rxrpc_send_data_packet()
mfd: intel-lpss: Release IDA resources
iommu/amd: Make iommu_disable safer
bnxt_en: Fix ethtool selftest crash under error conditions.
nvmem: imx-ocotp: Ensure WAIT bits are preserved when setting timing
clk: qcom: Fix -Wunused-const-variable
dmaengine: hsu: Revert "set HSU_CH_MTSR to memory width"
perf/ioctl: Add check for the sample_period value
drm/msm/a3xx: remove TPL1 regs from snapshot
rtc: pcf8563: Clear event flags and disable interrupts before requesting irq
rtc: pcf8563: Fix interrupt trigger method
ASoC: ti: davinci-mcasp: Fix slot mask settings when using multiple AXRs
net/af_iucv: always register net_device notifier
net: netem: fix backlog accounting for corrupted GSO frames
drm/msm/mdp5: Fix mdp5_cfg_init error return
powerpc/pseries/mobility: rebuild cacheinfo hierarchy post-migration
powerpc/cacheinfo: add cacheinfo_teardown, cacheinfo_rebuild
qed: iWARP - Use READ_ONCE and smp_store_release to access ep->state
iommu/vt-d: Duplicate iommu_resv_region objects per device list
mpls: fix warning with multi-label encap
media: vivid: fix incorrect assignment operation when setting video mode
cpufreq: brcmstb-avs-cpufreq: Fix types for voltage/frequency
cpufreq: brcmstb-avs-cpufreq: Fix initial command check
netvsc: unshare skb in VF rx handler
inet: frags: call inet_frags_fini() after unregister_pernet_subsys()
signal/cifs: Fix cifs_put_tcp_session to call send_sig instead of force_sig
iommu: Use right function to get group for device
misc: sgi-xp: Properly initialize buf in xpc_get_rsvd_page_pa
serial: stm32: fix wakeup source initialization
serial: stm32: Add support of TC bit status check
serial: stm32: fix transmit_chars when tx is stopped
serial: stm32: fix rx error handling
crypto: ccp - Fix 3DES complaint from ccp-crypto module
crypto: ccp - fix AES CFB error exposed by new test vectors
spi: spi-fsl-spi: call spi_finalize_current_message() at the end
RDMA/qedr: Fix incorrect device rate.
arm64: dts: meson: libretech-cc: set eMMC as removable
dmaengine: tegra210-adma: Fix crash during probe
ARM: dts: sun8i-h3: Fix wifi in Beelink X2 DT
EDAC/mc: Fix edac_mc_find() in case no device is found
thermal: cpu_cooling: Actually trace CPU load in thermal_power_cpu_get_power
backlight: lm3630a: Return 0 on success in update_status functions
kdb: do a sanity check on the cpu in kdb_per_cpu()
ARM: riscpc: fix lack of keyboard interrupts after irq conversion
pwm: meson: Don't disable PWM when setting duty repeatedly
pwm: meson: Consider 128 a valid pre-divider
netfilter: ebtables: CONFIG_COMPAT: reject trailing data after last rule
crypto: caam - fix caam_dump_sg that iterates through scatterlist
platform/x86: alienware-wmi: printing the wrong error code
media: davinci/vpbe: array underflow in vpbe_enum_outputs()
media: omap_vout: potential buffer overflow in vidioc_dqbuf()
l2tp: Fix possible NULL pointer dereference
vfio/mdev: Fix aborting mdev child device removal if one fails
vfio/mdev: Avoid release parent reference during error path
afs: Fix the afs.cell and afs.volume xattr handlers
lightnvm: pblk: fix lock order in pblk_rb_tear_down_check
mmc: core: fix possible use after free of host
dmaengine: tegra210-adma: restore channel status
net: ena: fix ena_com_fill_hash_function() implementation
net: ena: fix incorrect test of supported hash function
net: ena: fix: Free napi resources when ena_up() fails
net: ena: fix swapped parameters when calling ena_com_indirect_table_fill_entry
iommu/vt-d: Make kernel parameter igfx_off work with vIOMMU
IB/mlx5: Add missing XRC options to QP optional params mask
dwc2: gadget: Fix completed transfer size calculation in DDMA
usb: gadget: fsl: fix link error against usb-gadget module
ASoC: fix valid stream condition
packet: in recvmsg msg_name return at least sizeof sockaddr_ll
scsi: qla2xxx: Avoid that qlt_send_resp_ctio() corrupts memory
scsi: qla2xxx: Fix a format specifier
irqchip/gic-v3-its: fix some definitions of inner cacheability attributes
NFS: Don't interrupt file writeout due to fatal errors
ALSA: usb-audio: Handle the error from snd_usb_mixer_apply_create_quirk()
dmaengine: axi-dmac: Don't check the number of frames for alignment
6lowpan: Off by one handling ->nexthdr
media: ov2659: fix unbalanced mutex_lock/unlock
ARM: dts: ls1021: Fix SGMII PCS link remaining down after PHY disconnect
powerpc: vdso: Make vdso32 installation conditional in vdso_install
selftests/ipc: Fix msgque compiler warnings
tipc: set sysctl_tipc_rmem and named_timeout right range
platform/x86: alienware-wmi: fix kfree on potentially uninitialized pointer
hwmon: (w83627hf) Use request_muxed_region for Super-IO accesses
net: hns3: fix for vport->bw_limit overflow problem
ARM: pxa: ssp: Fix "WARNING: invalid free of devm_ allocated data"
scsi: target/core: Fix a race condition in the LUN lookup code
scsi: qla2xxx: Unregister chrdev if module initialization fails
ehea: Fix a copy-paste err in ehea_init_port_res
spi: bcm2835aux: fix driver to not allow 65535 (=-1) cs-gpios
soc/fsl/qe: Fix an error code in qe_pin_request()
spi: tegra114: configure dma burst size to fifo trig level
spi: tegra114: flush fifos
spi: tegra114: terminate dma and reset on transfer timeout
spi: tegra114: fix for unpacked mode transfers
spi: tegra114: clear packed bit for unpacked mode
media: tw5864: Fix possible NULL pointer dereference in tw5864_handle_frame
media: davinci-isif: avoid uninitialized variable use
ARM: OMAP2+: Fix potentially uninitialized return value for _setup_reset()
arm64: dts: allwinner: a64: Add missing PIO clocks
m68k: mac: Fix VIA timer counter accesses
tipc: tipc clang warning
jfs: fix bogus variable self-initialization
regulator: tps65086: Fix tps65086_ldoa1_ranges for selector 0xB
media: cx23885: check allocation return
media: wl128x: Fix an error code in fm_download_firmware()
media: cx18: update *pos correctly in cx18_read_pos()
media: ivtv: update *pos correctly in ivtv_read_pos()
regulator: lp87565: Fix missing register for LP87565_BUCK_0
net: sh_eth: fix a missing check of of_get_phy_mode
xen, cpu_hotplug: Prevent an out of bounds access
drivers/rapidio/rio_cm.c: fix potential oops in riocm_ch_listen()
scsi: megaraid_sas: reduce module load time
x86/mm: Remove unused variable 'cpu'
nios2: ksyms: Add missing symbol exports
powerpc/mm: Check secondary hash page table
net: aquantia: fixed instack structure overflow
NFSv4/flexfiles: Fix invalid deref in FF_LAYOUT_DEVID_NODE()
netfilter: nft_set_hash: fix lookups with fixed size hash on big endian
regulator: wm831x-dcdc: Fix list of wm831x_dcdc_ilim from mA to uA
ARM: 8848/1: virt: Align GIC version check with arm64 counterpart
ARM: 8847/1: pm: fix HYP/SVC mode mismatch when MCPM is used
mmc: sdhci-brcmstb: handle mmc_of_parse() errors during probe
NFS/pnfs: Bulk destroy of layouts needs to be safe w.r.t. umount
platform/x86: wmi: fix potential null pointer dereference
clocksource/drivers/exynos_mct: Fix error path in timer resources initialization
clocksource/drivers/sun5i: Fail gracefully when clock rate is unavailable
NFS: Fix a soft lockup in the delegation recovery code
powerpc/64s: Fix logic when handling unknown CPU features
staging: rtlwifi: Use proper enum for return in halmac_parse_psd_data_88xx
fs/nfs: Fix nfs_parse_devname to not modify it's argument
ASoC: qcom: Fix of-node refcount unbalance in apq8016_sbc_parse_of()
drm/nouveau/pmu: don't print reply values if exec is false
drm/nouveau/bios/ramcfg: fix missing parentheses when calculating RON
net: dsa: qca8k: Enable delay for RGMII_ID mode
regulator: pv88090: Fix array out-of-bounds access
regulator: pv88080: Fix array out-of-bounds access
regulator: pv88060: Fix array out-of-bounds access
cdc-wdm: pass return value of recover_from_urb_loss
dmaengine: mv_xor: Use correct device for DMA API
staging: r8822be: check kzalloc return or bail
KVM: PPC: Release all hardware TCE tables attached to a group
hwmon: (pmbus/tps53679) Fix driver info initialization in probe routine
vfio_pci: Enable memory accesses before calling pci_map_rom
keys: Timestamp new keys
block: don't use bio->bi_vcnt to figure out segment number
usb: phy: twl6030-usb: fix possible use-after-free on remove
PCI: endpoint: functions: Use memcpy_fromio()/memcpy_toio()
pinctrl: sh-pfc: sh73a0: Fix fsic_spdif pin groups
pinctrl: sh-pfc: r8a7792: Fix vin1_data18_b pin group
pinctrl: sh-pfc: r8a7791: Fix scifb2_data_c pin group
pinctrl: sh-pfc: emev2: Add missing pinmux functions
drm/etnaviv: potential NULL dereference
iw_cxgb4: use tos when finding ipv6 routes
iw_cxgb4: use tos when importing the endpoint
fbdev: chipsfb: remove set but not used variable 'size'
rtc: pm8xxx: fix unintended sign extension
rtc: 88pm80x: fix unintended sign extension
rtc: 88pm860x: fix unintended sign extension
rtc: ds1307: rx8130: Fix alarm handling
net: phy: fixed_phy: Fix fixed_phy not checking GPIO
thermal: mediatek: fix register index error
rtc: ds1672: fix unintended sign extension
staging: most: cdev: add missing check for cdev_add failure
iwlwifi: mvm: fix RSS config command
ARM: dts: lpc32xx: phy3250: fix SD card regulator voltage
ARM: dts: lpc32xx: fix ARM PrimeCell LCD controller clocks property
ARM: dts: lpc32xx: fix ARM PrimeCell LCD controller variant
ARM: dts: lpc32xx: reparent keypad controller to SIC1
ARM: dts: lpc32xx: add required clocks property to keypad device node
driver core: Do not resume suppliers under device_links_write_lock()
crypto: crypto4xx - Fix wrong ppc4xx_trng_probe()/ppc4xx_trng_remove() arguments
driver: uio: fix possible use-after-free in __uio_register_device
driver: uio: fix possible memory leak in __uio_register_device
tty: ipwireless: Fix potential NULL pointer dereference
iwlwifi: mvm: fix A-MPDU reference assignment
net/mlx5: Take lock with IRQs disabled to avoid deadlock
iwlwifi: mvm: avoid possible access out of array.
clk: sunxi-ng: sun8i-a23: Enable PLL-MIPI LDOs when ungating it
spi/topcliff_pch: Fix potential NULL dereference on allocation error
rtc: cmos: ignore bogus century byte
IB/iser: Pass the correct number of entries for dma mapped SGL
ASoC: imx-sgtl5000: put of nodes if finding codec fails
crypto: tgr192 - fix unaligned memory access
crypto: brcm - Fix some set-but-not-used warning
kbuild: mark prepare0 as PHONY to fix external module build
media: s5p-jpeg: Correct step and max values for V4L2_CID_JPEG_RESTART_INTERVAL
drm/etnaviv: NULL vs IS_ERR() buf in etnaviv_core_dump()
RDMA/iw_cxgb4: Fix the unchecked ep dereference
spi: cadence: Correct initialisation of runtime PM
arm64: dts: apq8016-sbc: Increase load on l11 for SDCARD
drm/shmob: Fix return value check in shmob_drm_probe
RDMA/qedr: Fix out of bounds index check in query pkey
RDMA/ocrdma: Fix out of bounds index check in query pkey
IB/usnic: Fix out of bounds index check in query pkey
MIPS: BCM63XX: drop unused and broken DSP platform device
clk: dove: fix refcount leak in dove_clk_init()
clk: mv98dx3236: fix refcount leak in mv98dx3236_clk_init()
clk: armada-xp: fix refcount leak in axp_clk_init()
clk: kirkwood: fix refcount leak in kirkwood_clk_init()
clk: armada-370: fix refcount leak in a370_clk_init()
clk: vf610: fix refcount leak in vf610_clocks_init()
clk: imx7d: fix refcount leak in imx7d_clocks_init()
clk: imx6sx: fix refcount leak in imx6sx_clocks_init()
clk: imx6q: fix refcount leak in imx6q_clocks_init()
clk: samsung: exynos4: fix refcount leak in exynos4_get_xom()
clk: socfpga: fix refcount leak
clk: qoriq: fix refcount leak in clockgen_init()
clk: highbank: fix refcount leak in hb_clk_init()
Input: nomadik-ske-keypad - fix a loop timeout test
vxlan: changelink: Fix handling of default remotes
pinctrl: sh-pfc: sh7734: Remove bogus IPSR10 value
pinctrl: sh-pfc: sh7269: Add missing PCIOR0 field
pinctrl: sh-pfc: r8a77995: Remove bogus SEL_PWM[0-3]_3 configurations
pinctrl: sh-pfc: sh7734: Add missing IPSR11 field
pinctrl: sh-pfc: r8a7794: Remove bogus IPSR9 field
pinctrl: sh-pfc: sh73a0: Add missing TO pin to tpu4_to3 group
pinctrl: sh-pfc: r8a7791: Remove bogus marks from vin1_b_data18 group
pinctrl: sh-pfc: r8a7791: Remove bogus ctrl marks from qspi_data4_b group
pinctrl: sh-pfc: r8a7740: Add missing LCD0 marks to lcd0_data24_1 group
pinctrl: sh-pfc: r8a7740: Add missing REF125CK pin to gether_gmii group
switchtec: Remove immediate status check after submitting MRPC command
staging: bcm2835-camera: Abort probe if there is no camera
IB/rxe: Fix incorrect cache cleanup in error flow
net: phy: Fix not to call phy_resume() if PHY is not attached
drm/dp_mst: Skip validating ports during destruction, just ref
exportfs: fix 'passing zero to ERR_PTR()' warning
pcrypt: use format specifier in kobject_add
NTB: ntb_hw_idt: replace IS_ERR_OR_NULL with regular NULL checks
mlxsw: reg: QEEC: Add minimum shaper fields
drm/sun4i: hdmi: Fix double flag assignation
pwm: lpss: Release runtime-pm reference from the driver's remove callback
staging: comedi: ni_mio_common: protect register write overflow
ALSA: usb-audio: update quirk for B&W PX to remove microphone
IB/hfi1: Add mtu check for operational data VLs
IB/rxe: replace kvfree with vfree
drm/hisilicon: hibmc: Don't overwrite fb helper surface depth
PCI: iproc: Remove PAXC slot check to allow VF support
apparmor: don't try to replace stale label in ptrace access check
ALSA: hda: fix unused variable warning
drm/virtio: fix bounds check in virtio_gpu_cmd_get_capset()
drm/sti: do not remove the drm_bridge that was never added
crypto: sun4i-ss - fix big endian issues
mt7601u: fix bbp version check in mt7601u_wait_bbp_ready
tipc: fix wrong timeout input for tipc_wait_for_cond()
powerpc/archrandom: fix arch_get_random_seed_int()
mfd: intel-lpss: Add default I2C device properties for Gemini Lake
xfs: Sanity check flags of Q_XQUOTARM call
FROMGIT: ext4: Add EXT4_IOC_FSGETXATTR/EXT4_IOC_FSSETXATTR to compat_ioctl.
ANDROID: cuttlefish_defconfig: enable CONFIG_IKHEADERS as m
ANDROID: cuttlefish_defconfig: enable NVDIMM/PMEM options
UPSTREAM: virtio-pmem: Add virtio pmem driver
BACKPORT: libnvdimm: nd_region flush callback support
UPSTREAM: libnvdimm/of_pmem: Provide a unique name for bus provider
UPSTREAM: libnvdimm/of_pmem: Fix platform_no_drv_owner.cocci warnings
UPSTREAM: libnvdimm, of_pmem: use dev_to_node() instead of of_node_to_nid()
UPSTREAM: libnvdimm: Add device-tree based driver
UPSTREAM: libnvdimm: Add of_node to region and bus descriptors
FROMLIST: security: selinux: allow per-file labelling for binderfs
UPSTREAM: mm/page_io.c: annotate refault stalls from swap_readpage
Revert "ANDROID: security,perf: Allow further restriction of perf_event_open"
ANDROID: selinux: modify RTM_GETLINK permission
UPSTREAM: lib/test_meminit.c: add bulk alloc/free tests
UPSTREAM: lib/test_meminit: add a kmem_cache_alloc_bulk() test
UPSTREAM: mm: slub: really fix slab walking for init_on_free
UPSTREAM: mm/slub.c: init_on_free=1 should wipe freelist ptr for bulk allocations
Linux 4.14.167
regulator: ab8500: Remove SYSCLKREQ from enum ab8505_regulator_id
perf probe: Fix wrong address verification
scsi: core: scsi_trace: Use get_unaligned_be*()
scsi: qla2xxx: fix rports not being mark as lost in sync fabric scan
scsi: qla2xxx: Fix qla2x00_request_irqs() for MSI
scsi: target: core: Fix a pr_debug() argument
scsi: bnx2i: fix potential use after free
scsi: qla4xxx: fix double free bug
scsi: esas2r: unlock on error in esas2r_nvram_read_direct()
reiserfs: fix handling of -EOPNOTSUPP in reiserfs_for_each_xattr
Revert "arm64: dts: juno: add dma-ranges property"
tick/sched: Annotate lockless access to last_jiffies_update
cfg80211: check for set_wiphy_params
arm64: dts: meson-gxl-s905x-khadas-vim: fix gpio-keys-polled node
cw1200: Fix a signedness bug in cw1200_load_firmware()
xen/blkfront: Adjust indentation in xlvbd_alloc_gendisk
tcp: fix marked lost packets not being retransmitted
r8152: add missing endpoint sanity check
ptp: free ptp device pin descriptors properly
net/wan/fsl_ucc_hdlc: fix out of bounds write on array utdm_info
net: usb: lan78xx: limit size of local TSO packets
net: hns: fix soft lockup when there is not enough memory
net: dsa: tag_qca: fix doubled Tx statistics
hv_netvsc: Fix memory leak when removing rndis device
macvlan: use skb_reset_mac_header() in macvlan_queue_xmit()
batman-adv: Fix DAT candidate selection on little endian systems
NFC: pn533: fix bulk-message timeout
netfilter: arp_tables: init netns pointer in xt_tgdtor_param struct
netfilter: fix a use-after-free in mtype_destroy()
cfg80211: fix page refcount issue in A-MSDU decap
arm64: dts: agilex/stratix10: fix pmu interrupt numbers
mm/huge_memory.c: thp: fix conflict of above-47bit hint address and PMD alignment
mm/huge_memory.c: make __thp_get_unmapped_area static
USB: serial: io_edgeport: handle unbound ports on URB completion
USB: serial: io_edgeport: use irqsave() in USB's complete callback
net: stmmac: Enable 16KB buffer size
net: stmmac: 16KB buffer must be 16 byte aligned
mm/page-writeback.c: avoid potential division by zero in wb_min_max_ratio()
btrfs: fix memory leak in qgroup accounting
mm/shmem.c: thp, shmem: fix conflict of above-47bit hint address and PMD alignment
perf report: Fix incorrectly added dimensions as switch perf data file
perf hists: Fix variable name's inconsistency in hists__for_each() macro
x86/efistub: Disable paging at mixed mode entry
x86/resctrl: Fix an imbalance in domain_remove_cpu()
usb: core: hub: Improved device recognition on remote wakeup
ptrace: reintroduce usage of subjective credentials in ptrace_has_cap()
scsi: mptfusion: Fix double fetch bug in ioctl
scsi: fnic: fix invalid stack access
USB: serial: quatech2: handle unbound ports
USB: serial: keyspan: handle unbound ports
USB: serial: io_edgeport: add missing active-port sanity check
USB: serial: ch341: handle unbound port at reset_resume
USB: serial: suppress driver bind attributes
USB: serial: option: add support for Quectel RM500Q in QDL mode
USB: serial: opticon: fix control-message timeouts
USB: serial: option: Add support for Quectel RM500Q
USB: serial: simple: Add Motorola Solutions TETRA MTP3xxx and MTP85xx
iio: buffer: align the size of scan bytes to size of the largest element
ARM: dts: am571x-idk: Fix gpios property to have the correct gpio number
block: fix an integer overflow in logical block size
Fix built-in early-load Intel microcode alignment
ALSA: seq: Fix racy access for queue timer in proc read
ASoC: msm8916-wcd-analog: Fix selected events for MIC BIAS External1
clk: Don't try to enable critical clocks if prepare failed
dt-bindings: reset: meson8b: fix duplicate reset IDs
Linux 4.14.166
ocfs2: call journal flush to mark journal as empty after journal recovery when mount
hexagon: work around compiler crash
hexagon: parenthesize registers in asm predicates
ioat: ioat_alloc_ring() failure handling.
dmaengine: k3dma: Avoid null pointer traversal
MIPS: Prevent link failure with kcov instrumentation
mips: cacheinfo: report shared CPU map
rseq/selftests: Turn off timeout setting
scsi: libcxgbi: fix NULL pointer dereference in cxgbi_device_destroy()
gpio: mpc8xxx: Add platform device to gpiochip->parent
rtc: msm6242: Fix reading of 10-hour digit
f2fs: fix potential overflow
rtlwifi: Remove unnecessary NULL check in rtl_regd_init
spi: atmel: fix handling of cs_change set on non-last xfer
mtd: spi-nor: fix silent truncation in spi_nor_read_raw()
mtd: spi-nor: fix silent truncation in spi_nor_read()
media: exynos4-is: Fix recursive locking in isp_video_release()
media: ov6650: Fix .get_fmt() V4L2_SUBDEV_FORMAT_TRY support
media: ov6650: Fix some format attributes not under control
media: ov6650: Fix incorrect use of JPEG colorspace
tty: serial: pch_uart: correct usage of dma_unmap_sg
tty: serial: imx: use the sg count from dma_map_sg
powerpc/powernv: Disable native PCIe port management
PCI/PTM: Remove spurious "d" from granularity message
compat_ioctl: handle SIOCOUTQNSD
af_unix: add compat_ioctl support
arm64: dts: apq8096-db820c: Increase load on l21 for SDCARD
scsi: sd: enable compat ioctls for sed-opal
pinctrl: lewisburg: Update pin list according to v1.1v6
pinctl: ti: iodelay: fix error checking on pinctrl_count_index_with_args call
clk: samsung: exynos5420: Preserve CPU clocks configuration during suspend/resume
mei: fix modalias documentation
iio: imu: adis16480: assign bias value only if operation succeeded
NFSv4.x: Drop the slot if nfs4_delegreturn_prepare waits for layoutreturn
xprtrdma: Fix completion wait during device removal
platform/x86: asus-wmi: Fix keyboard brightness cannot be set to 0
scsi: sd: Clear sdkp->protection_type if disk is reformatted without PI
scsi: enclosure: Fix stale device oops with hot replug
arm64: Check for errata before evaluating cpu features
arm64: add sentinel to kpti_safe_list
RDMA/srpt: Report the SCSI residual to the initiator
RDMA/mlx5: Return proper error value
btrfs: simplify inode locking for RWF_NOWAIT
cifs: Adjust indentation in smb2_open_file
hsr: reset network header when supervision frame is created
gpio: Fix error message on out-of-range GPIO in lookup table
iommu: Remove device link to group on failure
gpio: zynq: Fix for bug in zynq_gpio_restore_context API
ASoC: stm32: spdifrx: fix race condition in irq handler
ASoC: stm32: spdifrx: fix inconsistent lock state
RDMA/bnxt_re: Fix Send Work Entry state check while polling completions
rtc: mt6397: fix alarm register overwrite
drm/i915: Fix use-after-free when destroying GEM context
dccp: Fix memleak in __feat_register_sp
iwlwifi: dbg_ini: fix memory leak in alloc_sgtable
wimax: i2400: Fix memory leak in i2400m_op_rfkill_sw_toggle
wimax: i2400: fix memory leak
cifs: Fix lease buffer length error
media: usb:zr364xx:Fix KASAN:null-ptr-deref Read in zr364xx_vidioc_querycap
mac80211: Do not send Layer 2 Update frame before authorization
cfg80211/mac80211: make ieee80211_send_layer2_update a public function
arm64: Make sure permission updates happen for pmd/pud
arm64: Enforce BBM for huge IO/VMAP mappings
arm64: mm: Change page table pointer name in p[md]_set_huge()
arm64: don't open code page table entry creation
rsi: add fix for crash during assertions
fs/select: avoid clang stack usage warning
ethtool: reduce stack usage with clang
HID: hidraw, uhid: Always report EPOLLOUT
HID: hidraw: Fix returning EPOLLOUT from hidraw_poll
hidraw: Return EPOLLOUT from hidraw_poll
cuttlefish: enable CONFIG_DUMMY=y
cuttlefish - enable CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
ANDROID: Enable HID_STEAM as y
Linux 4.14.165
drm/i915/gen9: Clear residual context state on context switch
netfilter: ipset: avoid null deref when IPSET_ATTR_LINENO is present
netfilter: arp_tables: init netns pointer in xt_tgchk_param struct
phy: cpcap-usb: Fix flakey host idling and enumerating of devices
phy: cpcap-usb: Fix error path when no host driver is loaded
USB: Fix: Don't skip endpoint descriptors with maxpacket=0
HID: hiddev: fix mess in hiddev_open()
arm64: cpufeature: Avoid warnings due to unused symbols
ath10k: fix memory leak
rtl8xxxu: prevent leaking urb
scsi: bfa: release allocated memory in case of error
mwifiex: pcie: Fix memory leak in mwifiex_pcie_alloc_cmdrsp_buf
mwifiex: fix possible heap overflow in mwifiex_process_country_ie()
tty: always relink the port
tty: link tty and port before configuring it as console
staging: rtl8188eu: Add device code for TP-Link TL-WN727N v5.21
drm/dp_mst: correct the shifting in DP_REMOTE_I2C_READ
drm/fb-helper: Round up bits_per_pixel if possible
Input: add safety guards to input_set_keycode()
HID: hid-input: clear unmapped usages
staging: comedi: adv_pci1710: fix AI channels 16-31 for PCI-1713
usb: musb: dma: Correct parameter passed to IRQ handler
usb: musb: Disable pullup at init
usb: musb: fix idling for suspend after disconnect interrupt
USB: serial: option: add ZLP support for 0x1bc7/0x9010
staging: vt6656: set usb_set_intfdata on driver fail.
gpiolib: acpi: Add honor_wakeup module-option + quirk mechanism
gpiolib: acpi: Turn dmi_system_id table into a generic quirk table
can: can_dropped_invalid_skb(): ensure an initialized headroom in outgoing CAN sk_buffs
can: mscan: mscan_rx_poll(): fix rx path lockup when returning from polling to irq mode
can: gs_usb: gs_usb_probe(): use descriptors of current altsetting
HID: uhid: Fix returning EPOLLOUT from uhid_char_poll
HID: Fix slab-out-of-bounds read in hid_field_extract
tracing: Have stack tracer compile when MCOUNT_INSN_SIZE is not defined
kernel/trace: Fix do not unregister tracepoints when register sched_migrate_task fail
ALSA: hda/realtek - Set EAPD control to default for ALC222
ALSA: hda/realtek - Add new codec supported for ALCS1200A
ALSA: usb-audio: Apply the sample rate quirk for Bose Companion 5
usb: chipidea: host: Disable port power only if previously enabled
chardev: Avoid potential use-after-free in 'chrdev_open()'
UPSTREAM: kcov: fix struct layout for kcov_remote_arg
UPSTREAM: vhost, kcov: collect coverage from vhost_worker
UPSTREAM: usb, kcov: collect coverage from hub_event
BACKPORT: kcov: remote coverage support
UPSTREAM: kcov: improve CONFIG_ARCH_HAS_KCOV help text
UPSTREAM: kcov: convert kcov.refcount to refcount_t
UPSTREAM: kcov: no need to check return value of debugfs_create functions
UPSTREAM: kernel/kcov.c: mark write_comp_data() as notrace
UPSTREAM: kernel/kcov.c: mark funcs in __sanitizer_cov_trace_pc() as notrace
BACKPORT: sched/core / kcov: avoid kcov_area during task switch
UPSTREAM: kcov: prefault the kcov_area
BACKPORT: kcov: test compiler capability in Kconfig and correct dependency
UPSTREAM: gcc-plugins: fix build condition of SANCOV plugin
UPSTREAM: kcov: fix comparison callback signature
UPSTREAM: kcov: update documentation
BACKPORT: Makefile: support flag -fsanitizer-coverage=trace-cmp
BACKPORT: kcov: support comparison operands collection
UPSTREAM: kcov: remove pointless current != NULL check
Linux 4.14.164
vlan: fix memory leak in vlan_dev_set_egress_priority
net: sch_prio: When ungrafting, replace with FIFO
vlan: vlan_changelink() should propagate errors
vxlan: fix tos value before xmit
tcp: fix "old stuff" D-SACK causing SACK to be treated as D-SACK
sctp: free cmd->obj.chunk for the unprocessed SCTP_CMD_REPLY
USB: serial: option: add Telit ME910G1 0x110a composition
USB: core: fix check for duplicate endpoints
pkt_sched: fq: do not accept silly TCA_FQ_QUANTUM
net: usb: lan78xx: fix possible skb leak
net: stmmac: dwmac-sunxi: Allow all RGMII modes
net: stmmac: dwmac-sun8i: Allow all RGMII modes
net: dsa: mv88e6xxx: Preserve priority when setting CPU port.
macvlan: do not assume mac_header is set in macvlan_broadcast()
gtp: fix bad unlock balance in gtp_encap_enable_socket
mmc: block: propagate correct returned value in mmc_rpmb_ioctl
mmc: core: Prevent bus reference leak in mmc_blk_init()
mmc: block: Fix bug when removing RPMB chardev
mmc: block: Delete mmc_access_rpmb()
mmc: block: Convert RPMB to a character device
PCI/switchtec: Read all 64 bits of part_event_bitmap
bpf: Fix passing modified ctx to ld/abs/ind instruction
bpf: reject passing modified ctx to helper functions
hv_netvsc: Fix unwanted rx_table reset
llc2: Fix return statement of llc_stat_ev_rx_null_dsap_xid_c (and _test_c)
parisc: Fix compiler warnings in debug_core.c
block: fix memleak when __blk_rq_map_user_iov() is failed
s390/dasd: fix memleak in path handling error case
s390/dasd/cio: Interpret ccw_device_get_mdc return value correctly
net: stmmac: RX buffer size must be 16 byte aligned
net: stmmac: Do not accept invalid MTU values
fs: avoid softlockups in s_inodes iterators
perf/x86/intel: Fix PT PMI handling
kconfig: don't crash on NULL expressions in expr_eq()
regulator: rn5t618: fix module aliases
ASoC: wm8962: fix lambda value
rfkill: Fix incorrect check to avoid NULL pointer dereference
net: usb: lan78xx: Fix error message format specifier
bnx2x: Fix logic to get total no. of PFs per engine
bnx2x: Do not handle requests from VFs after parity
powerpc: Ensure that swiotlb buffer is allocated from low memory
samples: bpf: fix syscall_tp due to unused syscall
samples: bpf: Replace symbol compare of trace_event
ARM: dts: am437x-gp/epos-evm: fix panel compatible
bpf, mips: Limit to 33 tail calls
ARM: dts: bcm283x: Fix critical trip point
ASoC: topology: Check return value for soc_tplg_pcm_create()
spi: spi-cavium-thunderx: Add missing pci_release_regions()
ARM: dts: Cygnus: Fix MDIO node address/size cells
netfilter: nf_tables: validate NFT_SET_ELEM_INTERVAL_END
netfilter: uapi: Avoid undefined left-shift in xt_sctp.h
ARM: vexpress: Set-up shared OPP table instead of individual for each CPU
efi/gop: Fix memory leak in __gop_query32/64()
efi/gop: Return EFI_SUCCESS if a usable GOP was found
efi/gop: Return EFI_NOT_FOUND if there are no usable GOPs
x86/efi: Update e820 with reserved EFI boot services data to fix kexec breakage
libtraceevent: Fix lib installation with O=
mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame()
netfilter: ctnetlink: netns exit must wait for callbacks
locking/spinlock/debug: Fix various data races
USB: dummy-hcd: increase max number of devices to 32
USB: dummy-hcd: use usb_urb_dir_in instead of usb_pipein
UPSTREAM: USB: dummy-hcd: use usb_urb_dir_in instead of usb_pipein
UPSTREAM: USB: dummy-hcd: increase max number of devices to 32
UPSTREAM: USB: dummy-hcd: Fix failure to give back unlinked URBs
UPSTREAM: USB: dummy-hcd: bandwidth limits for non-bulk transfers
BACKPORT: perf_event: Add support for LSM and SELinux checks
ANDROID: cuttlefish_defconfig: remove 80211_HWSIM
Signed-off-by: UtsavBalar1231 <utsavbalar1231@gmail.com>
UtsavBalar1231: adapt inline encryption support with caf
Conflicts:
arch/arm64/boot/Makefile
arch/arm64/kernel/cpufeature.c
arch/arm64/kernel/smp.c
arch/arm64/kernel/traps.c
arch/arm64/mm/mmu.c
drivers/base/power/wakeup.c
drivers/block/virtio_blk.c
drivers/clk/clk.c
drivers/clk/qcom/clk-rcg2.c
drivers/gpu/Makefile
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/msm/msm_gem.c
drivers/hwtracing/coresight/coresight-funnel.c
drivers/irqchip/irq-gic-v3.c
drivers/md/Kconfig
drivers/md/dm-default-key.c
drivers/mmc/core/Kconfig
drivers/mmc/core/block.c
drivers/mmc/core/queue.h
drivers/mmc/core/quirks.h
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
drivers/net/ethernet/stmicro/stmmac/stmmac.h
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
drivers/net/macsec.c
drivers/net/phy/micrel.c
drivers/net/wireless/ath/wil6210/cfg80211.c
drivers/net/wireless/ath/wil6210/fw_inc.c
drivers/net/wireless/ath/wil6210/pcie_bus.c
drivers/net/wireless/ath/wil6210/pm.c
drivers/net/wireless/ath/wil6210/wil6210.h
drivers/of/Kconfig
drivers/of/base.c
drivers/power/supply/power_supply_sysfs.c
drivers/rpmsg/qcom_glink_smem.c
drivers/scsi/sd.c
drivers/scsi/ufs/Kconfig
drivers/scsi/ufs/Makefile
drivers/scsi/ufs/ufs-qcom.c
drivers/scsi/ufs/ufshcd.c
drivers/scsi/ufs/ufshcd.h
drivers/scsi/ufs/ufshci.h
drivers/usb/dwc3/core.c
drivers/usb/dwc3/gadget.c
drivers/usb/gadget/Kconfig
drivers/usb/gadget/composite.c
drivers/usb/gadget/function/f_fs.c
drivers/usb/gadget/legacy/Makefile
drivers/usb/host/xhci-mem.c
fs/crypto/fscrypt_private.h
fs/crypto/keysetup.c
fs/ext4/inode.c
fs/ext4/page-io.c
fs/f2fs/data.c
fs/f2fs/f2fs.h
fs/sdcardfs/lookup.c
include/linux/mmc/host.h
include/linux/power_supply.h
include/uapi/linux/coresight-stm.h
include/uapi/linux/fscrypt.h
include/uapi/linux/virtio_ids.h
kernel/events/core.c
kernel/locking/spinlock_debug.c
kernel/time/alarmtimer.c
net/core/ethtool.c
net/qrtr/qrtr.c
net/wireless/util.c
sound/core/rawmidi.c
1918 lines
59 KiB
C
1918 lines
59 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef _LINUX_KERNEL_TRACE_H
|
|
#define _LINUX_KERNEL_TRACE_H
|
|
|
|
#include <linux/fs.h>
|
|
#include <linux/atomic.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/clocksource.h>
|
|
#include <linux/ring_buffer.h>
|
|
#include <linux/mmiotrace.h>
|
|
#include <linux/tracepoint.h>
|
|
#include <linux/ftrace.h>
|
|
#include <linux/hw_breakpoint.h>
|
|
#include <linux/trace_seq.h>
|
|
#include <linux/trace_events.h>
|
|
#include <linux/compiler.h>
|
|
#include <linux/trace_seq.h>
|
|
#include <linux/glob.h>
|
|
|
|
#ifdef CONFIG_FTRACE_SYSCALLS
|
|
#include <asm/unistd.h> /* For NR_SYSCALLS */
|
|
#include <asm/syscall.h> /* some archs define it here */
|
|
#endif
|
|
|
|
enum trace_type {
|
|
__TRACE_FIRST_TYPE = 0,
|
|
|
|
TRACE_FN,
|
|
TRACE_CTX,
|
|
TRACE_WAKE,
|
|
TRACE_STACK,
|
|
TRACE_PRINT,
|
|
TRACE_BPRINT,
|
|
TRACE_MMIO_RW,
|
|
TRACE_MMIO_MAP,
|
|
TRACE_BRANCH,
|
|
TRACE_GRAPH_RET,
|
|
TRACE_GRAPH_ENT,
|
|
TRACE_USER_STACK,
|
|
TRACE_BLK,
|
|
TRACE_BPUTS,
|
|
TRACE_HWLAT,
|
|
TRACE_RAW_DATA,
|
|
|
|
__TRACE_LAST_TYPE,
|
|
};
|
|
|
|
|
|
#undef __field
|
|
#define __field(type, item) type item;
|
|
|
|
#undef __field_struct
|
|
#define __field_struct(type, item) __field(type, item)
|
|
|
|
#undef __field_desc
|
|
#define __field_desc(type, container, item)
|
|
|
|
#undef __array
|
|
#define __array(type, item, size) type item[size];
|
|
|
|
#undef __array_desc
|
|
#define __array_desc(type, container, item, size)
|
|
|
|
#undef __dynamic_array
|
|
#define __dynamic_array(type, item) type item[];
|
|
|
|
#undef F_STRUCT
|
|
#define F_STRUCT(args...) args
|
|
|
|
#undef FTRACE_ENTRY
|
|
#define FTRACE_ENTRY(name, struct_name, id, tstruct, print, filter) \
|
|
struct struct_name { \
|
|
struct trace_entry ent; \
|
|
tstruct \
|
|
}
|
|
|
|
#undef FTRACE_ENTRY_DUP
|
|
#define FTRACE_ENTRY_DUP(name, name_struct, id, tstruct, printk, filter)
|
|
|
|
#undef FTRACE_ENTRY_REG
|
|
#define FTRACE_ENTRY_REG(name, struct_name, id, tstruct, print, \
|
|
filter, regfn) \
|
|
FTRACE_ENTRY(name, struct_name, id, PARAMS(tstruct), PARAMS(print), \
|
|
filter)
|
|
|
|
#undef FTRACE_ENTRY_PACKED
|
|
#define FTRACE_ENTRY_PACKED(name, struct_name, id, tstruct, print, \
|
|
filter) \
|
|
FTRACE_ENTRY(name, struct_name, id, PARAMS(tstruct), PARAMS(print), \
|
|
filter) __packed
|
|
|
|
#include "trace_entries.h"
|
|
|
|
/*
|
|
* syscalls are special, and need special handling, this is why
|
|
* they are not included in trace_entries.h
|
|
*/
|
|
struct syscall_trace_enter {
|
|
struct trace_entry ent;
|
|
int nr;
|
|
unsigned long args[];
|
|
};
|
|
|
|
struct syscall_trace_exit {
|
|
struct trace_entry ent;
|
|
int nr;
|
|
long ret;
|
|
};
|
|
|
|
struct kprobe_trace_entry_head {
|
|
struct trace_entry ent;
|
|
unsigned long ip;
|
|
};
|
|
|
|
struct kretprobe_trace_entry_head {
|
|
struct trace_entry ent;
|
|
unsigned long func;
|
|
unsigned long ret_ip;
|
|
};
|
|
|
|
/*
|
|
* trace_flag_type is an enumeration that holds different
|
|
* states when a trace occurs. These are:
|
|
* IRQS_OFF - interrupts were disabled
|
|
* IRQS_NOSUPPORT - arch does not support irqs_disabled_flags
|
|
* NEED_RESCHED - reschedule is requested
|
|
* HARDIRQ - inside an interrupt handler
|
|
* SOFTIRQ - inside a softirq handler
|
|
*/
|
|
enum trace_flag_type {
|
|
TRACE_FLAG_IRQS_OFF = 0x01,
|
|
TRACE_FLAG_IRQS_NOSUPPORT = 0x02,
|
|
TRACE_FLAG_NEED_RESCHED = 0x04,
|
|
TRACE_FLAG_HARDIRQ = 0x08,
|
|
TRACE_FLAG_SOFTIRQ = 0x10,
|
|
TRACE_FLAG_PREEMPT_RESCHED = 0x20,
|
|
TRACE_FLAG_NMI = 0x40,
|
|
};
|
|
|
|
#define TRACE_BUF_SIZE 1024
|
|
|
|
struct trace_array;
|
|
|
|
/*
|
|
* The CPU trace array - it consists of thousands of trace entries
|
|
* plus some other descriptor data: (for example which task started
|
|
* the trace, etc.)
|
|
*/
|
|
struct trace_array_cpu {
|
|
atomic_t disabled;
|
|
void *buffer_page; /* ring buffer spare */
|
|
|
|
unsigned long entries;
|
|
unsigned long saved_latency;
|
|
unsigned long critical_start;
|
|
unsigned long critical_end;
|
|
unsigned long critical_sequence;
|
|
unsigned long nice;
|
|
unsigned long policy;
|
|
unsigned long rt_priority;
|
|
unsigned long skipped_entries;
|
|
u64 preempt_timestamp;
|
|
pid_t pid;
|
|
kuid_t uid;
|
|
char comm[TASK_COMM_LEN];
|
|
|
|
bool ignore_pid;
|
|
#ifdef CONFIG_FUNCTION_TRACER
|
|
bool ftrace_ignore_pid;
|
|
#endif
|
|
};
|
|
|
|
struct tracer;
|
|
struct trace_option_dentry;
|
|
|
|
struct trace_buffer {
|
|
struct trace_array *tr;
|
|
struct ring_buffer *buffer;
|
|
struct trace_array_cpu __percpu *data;
|
|
u64 time_start;
|
|
int cpu;
|
|
};
|
|
|
|
#define TRACE_FLAGS_MAX_SIZE 32
|
|
|
|
struct trace_options {
|
|
struct tracer *tracer;
|
|
struct trace_option_dentry *topts;
|
|
};
|
|
|
|
struct trace_pid_list {
|
|
int pid_max;
|
|
unsigned long *pids;
|
|
};
|
|
|
|
/*
|
|
* The trace array - an array of per-CPU trace arrays. This is the
|
|
* highest level data structure that individual tracers deal with.
|
|
* They have on/off state as well:
|
|
*/
|
|
struct trace_array {
|
|
struct list_head list;
|
|
char *name;
|
|
struct trace_buffer trace_buffer;
|
|
#ifdef CONFIG_TRACER_MAX_TRACE
|
|
/*
|
|
* The max_buffer is used to snapshot the trace when a maximum
|
|
* latency is reached, or when the user initiates a snapshot.
|
|
* Some tracers will use this to store a maximum trace while
|
|
* it continues examining live traces.
|
|
*
|
|
* The buffers for the max_buffer are set up the same as the trace_buffer
|
|
* When a snapshot is taken, the buffer of the max_buffer is swapped
|
|
* with the buffer of the trace_buffer and the buffers are reset for
|
|
* the trace_buffer so the tracing can continue.
|
|
*/
|
|
struct trace_buffer max_buffer;
|
|
bool allocated_snapshot;
|
|
#endif
|
|
#if defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER)
|
|
unsigned long max_latency;
|
|
#endif
|
|
struct trace_pid_list __rcu *filtered_pids;
|
|
/*
|
|
* max_lock is used to protect the swapping of buffers
|
|
* when taking a max snapshot. The buffers themselves are
|
|
* protected by per_cpu spinlocks. But the action of the swap
|
|
* needs its own lock.
|
|
*
|
|
* This is defined as a arch_spinlock_t in order to help
|
|
* with performance when lockdep debugging is enabled.
|
|
*
|
|
* It is also used in other places outside the update_max_tr
|
|
* so it needs to be defined outside of the
|
|
* CONFIG_TRACER_MAX_TRACE.
|
|
*/
|
|
arch_spinlock_t max_lock;
|
|
int buffer_disabled;
|
|
#ifdef CONFIG_FTRACE_SYSCALLS
|
|
int sys_refcount_enter;
|
|
int sys_refcount_exit;
|
|
struct trace_event_file __rcu *enter_syscall_files[NR_syscalls];
|
|
struct trace_event_file __rcu *exit_syscall_files[NR_syscalls];
|
|
#endif
|
|
int stop_count;
|
|
int clock_id;
|
|
int nr_topts;
|
|
bool clear_trace;
|
|
struct tracer *current_trace;
|
|
unsigned int trace_flags;
|
|
unsigned char trace_flags_index[TRACE_FLAGS_MAX_SIZE];
|
|
unsigned int flags;
|
|
raw_spinlock_t start_lock;
|
|
struct dentry *dir;
|
|
struct dentry *options;
|
|
struct dentry *percpu_dir;
|
|
struct dentry *event_dir;
|
|
struct trace_options *topts;
|
|
struct list_head systems;
|
|
struct list_head events;
|
|
cpumask_var_t tracing_cpumask; /* only trace on set CPUs */
|
|
int ref;
|
|
#ifdef CONFIG_FUNCTION_TRACER
|
|
struct ftrace_ops *ops;
|
|
struct trace_pid_list __rcu *function_pids;
|
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
|
/* All of these are protected by the ftrace_lock */
|
|
struct list_head func_probes;
|
|
struct list_head mod_trace;
|
|
struct list_head mod_notrace;
|
|
#endif
|
|
/* function tracing enabled */
|
|
int function_enabled;
|
|
#endif
|
|
};
|
|
|
|
enum {
|
|
TRACE_ARRAY_FL_GLOBAL = (1 << 0)
|
|
};
|
|
|
|
extern struct list_head ftrace_trace_arrays;
|
|
|
|
extern struct mutex trace_types_lock;
|
|
|
|
extern int trace_array_get(struct trace_array *tr);
|
|
extern void trace_array_put(struct trace_array *tr);
|
|
|
|
/*
|
|
* The global tracer (top) should be the first trace array added,
|
|
* but we check the flag anyway.
|
|
*/
|
|
static inline struct trace_array *top_trace_array(void)
|
|
{
|
|
struct trace_array *tr;
|
|
|
|
if (list_empty(&ftrace_trace_arrays))
|
|
return NULL;
|
|
|
|
tr = list_entry(ftrace_trace_arrays.prev,
|
|
typeof(*tr), list);
|
|
WARN_ON(!(tr->flags & TRACE_ARRAY_FL_GLOBAL));
|
|
return tr;
|
|
}
|
|
|
|
#define FTRACE_CMP_TYPE(var, type) \
|
|
__builtin_types_compatible_p(typeof(var), type *)
|
|
|
|
#undef IF_ASSIGN
|
|
#define IF_ASSIGN(var, entry, etype, id) \
|
|
if (FTRACE_CMP_TYPE(var, etype)) { \
|
|
var = (typeof(var))(entry); \
|
|
WARN_ON(id && (entry)->type != id); \
|
|
break; \
|
|
}
|
|
|
|
/* Will cause compile errors if type is not found. */
|
|
extern void __ftrace_bad_type(void);
|
|
|
|
/*
|
|
* The trace_assign_type is a verifier that the entry type is
|
|
* the same as the type being assigned. To add new types simply
|
|
* add a line with the following format:
|
|
*
|
|
* IF_ASSIGN(var, ent, type, id);
|
|
*
|
|
* Where "type" is the trace type that includes the trace_entry
|
|
* as the "ent" item. And "id" is the trace identifier that is
|
|
* used in the trace_type enum.
|
|
*
|
|
* If the type can have more than one id, then use zero.
|
|
*/
|
|
#define trace_assign_type(var, ent) \
|
|
do { \
|
|
IF_ASSIGN(var, ent, struct ftrace_entry, TRACE_FN); \
|
|
IF_ASSIGN(var, ent, struct ctx_switch_entry, 0); \
|
|
IF_ASSIGN(var, ent, struct stack_entry, TRACE_STACK); \
|
|
IF_ASSIGN(var, ent, struct userstack_entry, TRACE_USER_STACK);\
|
|
IF_ASSIGN(var, ent, struct print_entry, TRACE_PRINT); \
|
|
IF_ASSIGN(var, ent, struct bprint_entry, TRACE_BPRINT); \
|
|
IF_ASSIGN(var, ent, struct bputs_entry, TRACE_BPUTS); \
|
|
IF_ASSIGN(var, ent, struct hwlat_entry, TRACE_HWLAT); \
|
|
IF_ASSIGN(var, ent, struct raw_data_entry, TRACE_RAW_DATA);\
|
|
IF_ASSIGN(var, ent, struct trace_mmiotrace_rw, \
|
|
TRACE_MMIO_RW); \
|
|
IF_ASSIGN(var, ent, struct trace_mmiotrace_map, \
|
|
TRACE_MMIO_MAP); \
|
|
IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \
|
|
IF_ASSIGN(var, ent, struct ftrace_graph_ent_entry, \
|
|
TRACE_GRAPH_ENT); \
|
|
IF_ASSIGN(var, ent, struct ftrace_graph_ret_entry, \
|
|
TRACE_GRAPH_RET); \
|
|
__ftrace_bad_type(); \
|
|
} while (0)
|
|
|
|
/*
|
|
* An option specific to a tracer. This is a boolean value.
|
|
* The bit is the bit index that sets its value on the
|
|
* flags value in struct tracer_flags.
|
|
*/
|
|
struct tracer_opt {
|
|
const char *name; /* Will appear on the trace_options file */
|
|
u32 bit; /* Mask assigned in val field in tracer_flags */
|
|
};
|
|
|
|
/*
|
|
* The set of specific options for a tracer. Your tracer
|
|
* have to set the initial value of the flags val.
|
|
*/
|
|
struct tracer_flags {
|
|
u32 val;
|
|
struct tracer_opt *opts;
|
|
struct tracer *trace;
|
|
};
|
|
|
|
/* Makes more easy to define a tracer opt */
|
|
#define TRACER_OPT(s, b) .name = #s, .bit = b
|
|
|
|
|
|
struct trace_option_dentry {
|
|
struct tracer_opt *opt;
|
|
struct tracer_flags *flags;
|
|
struct trace_array *tr;
|
|
struct dentry *entry;
|
|
};
|
|
|
|
/**
|
|
* struct tracer - a specific tracer and its callbacks to interact with tracefs
|
|
* @name: the name chosen to select it on the available_tracers file
|
|
* @init: called when one switches to this tracer (echo name > current_tracer)
|
|
* @reset: called when one switches to another tracer
|
|
* @start: called when tracing is unpaused (echo 1 > tracing_on)
|
|
* @stop: called when tracing is paused (echo 0 > tracing_on)
|
|
* @update_thresh: called when tracing_thresh is updated
|
|
* @open: called when the trace file is opened
|
|
* @pipe_open: called when the trace_pipe file is opened
|
|
* @close: called when the trace file is released
|
|
* @pipe_close: called when the trace_pipe file is released
|
|
* @read: override the default read callback on trace_pipe
|
|
* @splice_read: override the default splice_read callback on trace_pipe
|
|
* @selftest: selftest to run on boot (see trace_selftest.c)
|
|
* @print_headers: override the first lines that describe your columns
|
|
* @print_line: callback that prints a trace
|
|
* @set_flag: signals one of your private flags changed (trace_options file)
|
|
* @flags: your private flags
|
|
*/
|
|
struct tracer {
|
|
const char *name;
|
|
int (*init)(struct trace_array *tr);
|
|
void (*reset)(struct trace_array *tr);
|
|
void (*start)(struct trace_array *tr);
|
|
void (*stop)(struct trace_array *tr);
|
|
int (*update_thresh)(struct trace_array *tr);
|
|
void (*open)(struct trace_iterator *iter);
|
|
void (*pipe_open)(struct trace_iterator *iter);
|
|
void (*close)(struct trace_iterator *iter);
|
|
void (*pipe_close)(struct trace_iterator *iter);
|
|
ssize_t (*read)(struct trace_iterator *iter,
|
|
struct file *filp, char __user *ubuf,
|
|
size_t cnt, loff_t *ppos);
|
|
ssize_t (*splice_read)(struct trace_iterator *iter,
|
|
struct file *filp,
|
|
loff_t *ppos,
|
|
struct pipe_inode_info *pipe,
|
|
size_t len,
|
|
unsigned int flags);
|
|
#ifdef CONFIG_FTRACE_STARTUP_TEST
|
|
int (*selftest)(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
#endif
|
|
void (*print_header)(struct seq_file *m);
|
|
enum print_line_t (*print_line)(struct trace_iterator *iter);
|
|
/* If you handled the flag setting, return 0 */
|
|
int (*set_flag)(struct trace_array *tr,
|
|
u32 old_flags, u32 bit, int set);
|
|
/* Return 0 if OK with change, else return non-zero */
|
|
int (*flag_changed)(struct trace_array *tr,
|
|
u32 mask, int set);
|
|
struct tracer *next;
|
|
struct tracer_flags *flags;
|
|
int enabled;
|
|
int ref;
|
|
bool print_max;
|
|
bool allow_instances;
|
|
#ifdef CONFIG_TRACER_MAX_TRACE
|
|
bool use_max_tr;
|
|
#endif
|
|
/* True if tracer cannot be enabled in kernel param */
|
|
bool noboot;
|
|
};
|
|
|
|
|
|
/* Only current can touch trace_recursion */
|
|
|
|
/*
|
|
* For function tracing recursion:
|
|
* The order of these bits are important.
|
|
*
|
|
* When function tracing occurs, the following steps are made:
|
|
* If arch does not support a ftrace feature:
|
|
* call internal function (uses INTERNAL bits) which calls...
|
|
* If callback is registered to the "global" list, the list
|
|
* function is called and recursion checks the GLOBAL bits.
|
|
* then this function calls...
|
|
* The function callback, which can use the FTRACE bits to
|
|
* check for recursion.
|
|
*
|
|
* Now if the arch does not suppport a feature, and it calls
|
|
* the global list function which calls the ftrace callback
|
|
* all three of these steps will do a recursion protection.
|
|
* There's no reason to do one if the previous caller already
|
|
* did. The recursion that we are protecting against will
|
|
* go through the same steps again.
|
|
*
|
|
* To prevent the multiple recursion checks, if a recursion
|
|
* bit is set that is higher than the MAX bit of the current
|
|
* check, then we know that the check was made by the previous
|
|
* caller, and we can skip the current check.
|
|
*/
|
|
enum {
|
|
TRACE_BUFFER_BIT,
|
|
TRACE_BUFFER_NMI_BIT,
|
|
TRACE_BUFFER_IRQ_BIT,
|
|
TRACE_BUFFER_SIRQ_BIT,
|
|
|
|
/* Start of function recursion bits */
|
|
TRACE_FTRACE_BIT,
|
|
TRACE_FTRACE_NMI_BIT,
|
|
TRACE_FTRACE_IRQ_BIT,
|
|
TRACE_FTRACE_SIRQ_BIT,
|
|
|
|
/* INTERNAL_BITs must be greater than FTRACE_BITs */
|
|
TRACE_INTERNAL_BIT,
|
|
TRACE_INTERNAL_NMI_BIT,
|
|
TRACE_INTERNAL_IRQ_BIT,
|
|
TRACE_INTERNAL_SIRQ_BIT,
|
|
|
|
TRACE_BRANCH_BIT,
|
|
/*
|
|
* Abuse of the trace_recursion.
|
|
* As we need a way to maintain state if we are tracing the function
|
|
* graph in irq because we want to trace a particular function that
|
|
* was called in irq context but we have irq tracing off. Since this
|
|
* can only be modified by current, we can reuse trace_recursion.
|
|
*/
|
|
TRACE_IRQ_BIT,
|
|
|
|
/* Set if the function is in the set_graph_function file */
|
|
TRACE_GRAPH_BIT,
|
|
|
|
/*
|
|
* In the very unlikely case that an interrupt came in
|
|
* at a start of graph tracing, and we want to trace
|
|
* the function in that interrupt, the depth can be greater
|
|
* than zero, because of the preempted start of a previous
|
|
* trace. In an even more unlikely case, depth could be 2
|
|
* if a softirq interrupted the start of graph tracing,
|
|
* followed by an interrupt preempting a start of graph
|
|
* tracing in the softirq, and depth can even be 3
|
|
* if an NMI came in at the start of an interrupt function
|
|
* that preempted a softirq start of a function that
|
|
* preempted normal context!!!! Luckily, it can't be
|
|
* greater than 3, so the next two bits are a mask
|
|
* of what the depth is when we set TRACE_GRAPH_BIT
|
|
*/
|
|
|
|
TRACE_GRAPH_DEPTH_START_BIT,
|
|
TRACE_GRAPH_DEPTH_END_BIT,
|
|
};
|
|
|
|
#define trace_recursion_set(bit) do { (current)->trace_recursion |= (1<<(bit)); } while (0)
|
|
#define trace_recursion_clear(bit) do { (current)->trace_recursion &= ~(1<<(bit)); } while (0)
|
|
#define trace_recursion_test(bit) ((current)->trace_recursion & (1<<(bit)))
|
|
|
|
#define trace_recursion_depth() \
|
|
(((current)->trace_recursion >> TRACE_GRAPH_DEPTH_START_BIT) & 3)
|
|
#define trace_recursion_set_depth(depth) \
|
|
do { \
|
|
current->trace_recursion &= \
|
|
~(3 << TRACE_GRAPH_DEPTH_START_BIT); \
|
|
current->trace_recursion |= \
|
|
((depth) & 3) << TRACE_GRAPH_DEPTH_START_BIT; \
|
|
} while (0)
|
|
|
|
#define TRACE_CONTEXT_BITS 4
|
|
|
|
#define TRACE_FTRACE_START TRACE_FTRACE_BIT
|
|
#define TRACE_FTRACE_MAX ((1 << (TRACE_FTRACE_START + TRACE_CONTEXT_BITS)) - 1)
|
|
|
|
#define TRACE_LIST_START TRACE_INTERNAL_BIT
|
|
#define TRACE_LIST_MAX ((1 << (TRACE_LIST_START + TRACE_CONTEXT_BITS)) - 1)
|
|
|
|
#define TRACE_CONTEXT_MASK TRACE_LIST_MAX
|
|
|
|
static __always_inline int trace_get_context_bit(void)
|
|
{
|
|
int bit;
|
|
|
|
if (in_interrupt()) {
|
|
if (in_nmi())
|
|
bit = 0;
|
|
|
|
else if (in_irq())
|
|
bit = 1;
|
|
else
|
|
bit = 2;
|
|
} else
|
|
bit = 3;
|
|
|
|
return bit;
|
|
}
|
|
|
|
static __always_inline int trace_test_and_set_recursion(int start, int max)
|
|
{
|
|
unsigned int val = current->trace_recursion;
|
|
int bit;
|
|
|
|
/* A previous recursion check was made */
|
|
if ((val & TRACE_CONTEXT_MASK) > max)
|
|
return 0;
|
|
|
|
bit = trace_get_context_bit() + start;
|
|
if (unlikely(val & (1 << bit)))
|
|
return -1;
|
|
|
|
val |= 1 << bit;
|
|
current->trace_recursion = val;
|
|
barrier();
|
|
|
|
return bit;
|
|
}
|
|
|
|
static __always_inline void trace_clear_recursion(int bit)
|
|
{
|
|
unsigned int val = current->trace_recursion;
|
|
|
|
if (!bit)
|
|
return;
|
|
|
|
bit = 1 << bit;
|
|
val &= ~bit;
|
|
|
|
barrier();
|
|
current->trace_recursion = val;
|
|
}
|
|
|
|
static inline struct ring_buffer_iter *
|
|
trace_buffer_iter(struct trace_iterator *iter, int cpu)
|
|
{
|
|
if (iter->buffer_iter && iter->buffer_iter[cpu])
|
|
return iter->buffer_iter[cpu];
|
|
return NULL;
|
|
}
|
|
|
|
int tracer_init(struct tracer *t, struct trace_array *tr);
|
|
int tracing_is_enabled(void);
|
|
void tracing_reset(struct trace_buffer *buf, int cpu);
|
|
void tracing_reset_online_cpus(struct trace_buffer *buf);
|
|
void tracing_reset_current(int cpu);
|
|
void tracing_reset_all_online_cpus(void);
|
|
int tracing_open_generic(struct inode *inode, struct file *filp);
|
|
bool tracing_is_disabled(void);
|
|
int tracer_tracing_is_on(struct trace_array *tr);
|
|
void tracer_tracing_on(struct trace_array *tr);
|
|
void tracer_tracing_off(struct trace_array *tr);
|
|
struct dentry *trace_create_file(const char *name,
|
|
umode_t mode,
|
|
struct dentry *parent,
|
|
void *data,
|
|
const struct file_operations *fops);
|
|
|
|
struct dentry *tracing_init_dentry(void);
|
|
|
|
struct ring_buffer_event;
|
|
|
|
struct ring_buffer_event *
|
|
trace_buffer_lock_reserve(struct ring_buffer *buffer,
|
|
int type,
|
|
unsigned long len,
|
|
unsigned long flags,
|
|
int pc);
|
|
|
|
struct trace_entry *tracing_get_trace_entry(struct trace_array *tr,
|
|
struct trace_array_cpu *data);
|
|
|
|
struct trace_entry *trace_find_next_entry(struct trace_iterator *iter,
|
|
int *ent_cpu, u64 *ent_ts);
|
|
|
|
void trace_buffer_unlock_commit_nostack(struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event);
|
|
|
|
int trace_empty(struct trace_iterator *iter);
|
|
|
|
void *trace_find_next_entry_inc(struct trace_iterator *iter);
|
|
|
|
void trace_init_global_iter(struct trace_iterator *iter);
|
|
|
|
void tracing_iter_reset(struct trace_iterator *iter, int cpu);
|
|
|
|
void trace_function(struct trace_array *tr,
|
|
unsigned long ip,
|
|
unsigned long parent_ip,
|
|
unsigned long flags, int pc);
|
|
void trace_graph_function(struct trace_array *tr,
|
|
unsigned long ip,
|
|
unsigned long parent_ip,
|
|
unsigned long flags, int pc);
|
|
void trace_latency_header(struct seq_file *m);
|
|
void trace_default_header(struct seq_file *m);
|
|
void print_trace_header(struct seq_file *m, struct trace_iterator *iter);
|
|
int trace_empty(struct trace_iterator *iter);
|
|
|
|
void trace_graph_return(struct ftrace_graph_ret *trace);
|
|
int trace_graph_entry(struct ftrace_graph_ent *trace);
|
|
void set_graph_array(struct trace_array *tr);
|
|
|
|
void tracing_start_cmdline_record(void);
|
|
void tracing_stop_cmdline_record(void);
|
|
void tracing_start_tgid_record(void);
|
|
void tracing_stop_tgid_record(void);
|
|
|
|
int register_tracer(struct tracer *type);
|
|
int is_tracing_stopped(void);
|
|
|
|
loff_t tracing_lseek(struct file *file, loff_t offset, int whence);
|
|
|
|
extern cpumask_var_t __read_mostly tracing_buffer_mask;
|
|
|
|
#define for_each_tracing_cpu(cpu) \
|
|
for_each_cpu(cpu, tracing_buffer_mask)
|
|
|
|
extern unsigned long nsecs_to_usecs(unsigned long nsecs);
|
|
|
|
extern unsigned long tracing_thresh;
|
|
|
|
/* PID filtering */
|
|
|
|
extern int pid_max;
|
|
|
|
bool trace_find_filtered_pid(struct trace_pid_list *filtered_pids,
|
|
pid_t search_pid);
|
|
bool trace_ignore_this_task(struct trace_pid_list *filtered_pids,
|
|
struct task_struct *task);
|
|
void trace_filter_add_remove_task(struct trace_pid_list *pid_list,
|
|
struct task_struct *self,
|
|
struct task_struct *task);
|
|
void *trace_pid_next(struct trace_pid_list *pid_list, void *v, loff_t *pos);
|
|
void *trace_pid_start(struct trace_pid_list *pid_list, loff_t *pos);
|
|
int trace_pid_show(struct seq_file *m, void *v);
|
|
void trace_free_pid_list(struct trace_pid_list *pid_list);
|
|
int trace_pid_write(struct trace_pid_list *filtered_pids,
|
|
struct trace_pid_list **new_pid_list,
|
|
const char __user *ubuf, size_t cnt);
|
|
|
|
#ifdef CONFIG_TRACER_MAX_TRACE
|
|
void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu);
|
|
void update_max_tr_single(struct trace_array *tr,
|
|
struct task_struct *tsk, int cpu);
|
|
#endif /* CONFIG_TRACER_MAX_TRACE */
|
|
|
|
#ifdef CONFIG_STACKTRACE
|
|
void ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags,
|
|
int pc);
|
|
|
|
void __trace_stack(struct trace_array *tr, unsigned long flags, int skip,
|
|
int pc);
|
|
#else
|
|
static inline void ftrace_trace_userstack(struct ring_buffer *buffer,
|
|
unsigned long flags, int pc)
|
|
{
|
|
}
|
|
|
|
static inline void __trace_stack(struct trace_array *tr, unsigned long flags,
|
|
int skip, int pc)
|
|
{
|
|
}
|
|
#endif /* CONFIG_STACKTRACE */
|
|
|
|
extern u64 ftrace_now(int cpu);
|
|
|
|
extern void trace_find_cmdline(int pid, char comm[]);
|
|
extern int trace_find_tgid(int pid);
|
|
extern void trace_event_follow_fork(struct trace_array *tr, bool enable);
|
|
|
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
|
extern unsigned long ftrace_update_tot_cnt;
|
|
void ftrace_init_trace_array(struct trace_array *tr);
|
|
#else
|
|
static inline void ftrace_init_trace_array(struct trace_array *tr) { }
|
|
#endif
|
|
#define DYN_FTRACE_TEST_NAME trace_selftest_dynamic_test_func
|
|
extern int DYN_FTRACE_TEST_NAME(void);
|
|
#define DYN_FTRACE_TEST_NAME2 trace_selftest_dynamic_test_func2
|
|
extern int DYN_FTRACE_TEST_NAME2(void);
|
|
|
|
extern bool ring_buffer_expanded;
|
|
extern bool tracing_selftest_disabled;
|
|
|
|
#ifdef CONFIG_FTRACE_STARTUP_TEST
|
|
extern int trace_selftest_startup_function(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_function_graph(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_irqsoff(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_preemptoff(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_preemptirqsoff(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_wakeup(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_nop(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_sched_switch(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
extern int trace_selftest_startup_branch(struct tracer *trace,
|
|
struct trace_array *tr);
|
|
/*
|
|
* Tracer data references selftest functions that only occur
|
|
* on boot up. These can be __init functions. Thus, when selftests
|
|
* are enabled, then the tracers need to reference __init functions.
|
|
*/
|
|
#define __tracer_data __refdata
|
|
#else
|
|
/* Tracers are seldom changed. Optimize when selftests are disabled. */
|
|
#define __tracer_data __read_mostly
|
|
#endif /* CONFIG_FTRACE_STARTUP_TEST */
|
|
|
|
extern void *head_page(struct trace_array_cpu *data);
|
|
extern unsigned long long ns2usecs(u64 nsec);
|
|
extern int
|
|
trace_vbprintk(unsigned long ip, const char *fmt, va_list args);
|
|
extern int
|
|
trace_vprintk(unsigned long ip, const char *fmt, va_list args);
|
|
extern int
|
|
trace_array_vprintk(struct trace_array *tr,
|
|
unsigned long ip, const char *fmt, va_list args);
|
|
int trace_array_printk(struct trace_array *tr,
|
|
unsigned long ip, const char *fmt, ...);
|
|
int trace_array_printk_buf(struct ring_buffer *buffer,
|
|
unsigned long ip, const char *fmt, ...);
|
|
void trace_printk_seq(struct trace_seq *s);
|
|
enum print_line_t print_trace_line(struct trace_iterator *iter);
|
|
|
|
extern char trace_find_mark(unsigned long long duration);
|
|
|
|
struct ftrace_hash;
|
|
|
|
struct ftrace_mod_load {
|
|
struct list_head list;
|
|
char *func;
|
|
char *module;
|
|
int enable;
|
|
};
|
|
|
|
enum {
|
|
FTRACE_HASH_FL_MOD = (1 << 0),
|
|
};
|
|
|
|
struct ftrace_hash {
|
|
unsigned long size_bits;
|
|
struct hlist_head *buckets;
|
|
unsigned long count;
|
|
unsigned long flags;
|
|
struct rcu_head rcu;
|
|
};
|
|
|
|
struct ftrace_func_entry *
|
|
ftrace_lookup_ip(struct ftrace_hash *hash, unsigned long ip);
|
|
|
|
static __always_inline bool ftrace_hash_empty(struct ftrace_hash *hash)
|
|
{
|
|
return !hash || !(hash->count || (hash->flags & FTRACE_HASH_FL_MOD));
|
|
}
|
|
|
|
/* Standard output formatting function used for function return traces */
|
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
|
|
|
/* Flag options */
|
|
#define TRACE_GRAPH_PRINT_OVERRUN 0x1
|
|
#define TRACE_GRAPH_PRINT_CPU 0x2
|
|
#define TRACE_GRAPH_PRINT_OVERHEAD 0x4
|
|
#define TRACE_GRAPH_PRINT_PROC 0x8
|
|
#define TRACE_GRAPH_PRINT_DURATION 0x10
|
|
#define TRACE_GRAPH_PRINT_ABS_TIME 0x20
|
|
#define TRACE_GRAPH_PRINT_IRQS 0x40
|
|
#define TRACE_GRAPH_PRINT_TAIL 0x80
|
|
#define TRACE_GRAPH_SLEEP_TIME 0x100
|
|
#define TRACE_GRAPH_GRAPH_TIME 0x200
|
|
#define TRACE_GRAPH_PRINT_FILL_SHIFT 28
|
|
#define TRACE_GRAPH_PRINT_FILL_MASK (0x3 << TRACE_GRAPH_PRINT_FILL_SHIFT)
|
|
|
|
extern void ftrace_graph_sleep_time_control(bool enable);
|
|
extern void ftrace_graph_graph_time_control(bool enable);
|
|
|
|
extern enum print_line_t
|
|
print_graph_function_flags(struct trace_iterator *iter, u32 flags);
|
|
extern void print_graph_headers_flags(struct seq_file *s, u32 flags);
|
|
extern void
|
|
trace_print_graph_duration(unsigned long long duration, struct trace_seq *s);
|
|
extern void graph_trace_open(struct trace_iterator *iter);
|
|
extern void graph_trace_close(struct trace_iterator *iter);
|
|
extern int __trace_graph_entry(struct trace_array *tr,
|
|
struct ftrace_graph_ent *trace,
|
|
unsigned long flags, int pc);
|
|
extern void __trace_graph_return(struct trace_array *tr,
|
|
struct ftrace_graph_ret *trace,
|
|
unsigned long flags, int pc);
|
|
|
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
|
extern struct ftrace_hash __rcu *ftrace_graph_hash;
|
|
extern struct ftrace_hash __rcu *ftrace_graph_notrace_hash;
|
|
|
|
static inline int ftrace_graph_addr(struct ftrace_graph_ent *trace)
|
|
{
|
|
unsigned long addr = trace->func;
|
|
int ret = 0;
|
|
struct ftrace_hash *hash;
|
|
|
|
preempt_disable_notrace();
|
|
|
|
/*
|
|
* Have to open code "rcu_dereference_sched()" because the
|
|
* function graph tracer can be called when RCU is not
|
|
* "watching".
|
|
* Protected with schedule_on_each_cpu(ftrace_sync)
|
|
*/
|
|
hash = rcu_dereference_protected(ftrace_graph_hash, !preemptible());
|
|
|
|
if (ftrace_hash_empty(hash)) {
|
|
ret = 1;
|
|
goto out;
|
|
}
|
|
|
|
if (ftrace_lookup_ip(hash, addr)) {
|
|
|
|
/*
|
|
* This needs to be cleared on the return functions
|
|
* when the depth is zero.
|
|
*/
|
|
trace_recursion_set(TRACE_GRAPH_BIT);
|
|
trace_recursion_set_depth(trace->depth);
|
|
|
|
/*
|
|
* If no irqs are to be traced, but a set_graph_function
|
|
* is set, and called by an interrupt handler, we still
|
|
* want to trace it.
|
|
*/
|
|
if (in_irq())
|
|
trace_recursion_set(TRACE_IRQ_BIT);
|
|
else
|
|
trace_recursion_clear(TRACE_IRQ_BIT);
|
|
ret = 1;
|
|
}
|
|
|
|
out:
|
|
preempt_enable_notrace();
|
|
return ret;
|
|
}
|
|
|
|
static inline void ftrace_graph_addr_finish(struct ftrace_graph_ret *trace)
|
|
{
|
|
if (trace_recursion_test(TRACE_GRAPH_BIT) &&
|
|
trace->depth == trace_recursion_depth())
|
|
trace_recursion_clear(TRACE_GRAPH_BIT);
|
|
}
|
|
|
|
static inline int ftrace_graph_notrace_addr(unsigned long addr)
|
|
{
|
|
int ret = 0;
|
|
struct ftrace_hash *notrace_hash;
|
|
|
|
preempt_disable_notrace();
|
|
|
|
/*
|
|
* Have to open code "rcu_dereference_sched()" because the
|
|
* function graph tracer can be called when RCU is not
|
|
* "watching".
|
|
* Protected with schedule_on_each_cpu(ftrace_sync)
|
|
*/
|
|
notrace_hash = rcu_dereference_protected(ftrace_graph_notrace_hash,
|
|
!preemptible());
|
|
|
|
if (ftrace_lookup_ip(notrace_hash, addr))
|
|
ret = 1;
|
|
|
|
preempt_enable_notrace();
|
|
return ret;
|
|
}
|
|
#else
|
|
static inline int ftrace_graph_addr(struct ftrace_graph_ent *trace)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
static inline int ftrace_graph_notrace_addr(unsigned long addr)
|
|
{
|
|
return 0;
|
|
}
|
|
static inline void ftrace_graph_addr_finish(struct ftrace_graph_ret *trace)
|
|
{ }
|
|
#endif /* CONFIG_DYNAMIC_FTRACE */
|
|
|
|
extern unsigned int fgraph_max_depth;
|
|
|
|
static inline bool ftrace_graph_ignore_func(struct ftrace_graph_ent *trace)
|
|
{
|
|
/* trace it when it is-nested-in or is a function enabled. */
|
|
return !(trace_recursion_test(TRACE_GRAPH_BIT) ||
|
|
ftrace_graph_addr(trace)) ||
|
|
(trace->depth < 0) ||
|
|
(fgraph_max_depth && trace->depth >= fgraph_max_depth);
|
|
}
|
|
|
|
#else /* CONFIG_FUNCTION_GRAPH_TRACER */
|
|
static inline enum print_line_t
|
|
print_graph_function_flags(struct trace_iterator *iter, u32 flags)
|
|
{
|
|
return TRACE_TYPE_UNHANDLED;
|
|
}
|
|
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
|
|
|
|
extern struct list_head ftrace_pids;
|
|
|
|
#ifdef CONFIG_FUNCTION_TRACER
|
|
struct ftrace_func_command {
|
|
struct list_head list;
|
|
char *name;
|
|
int (*func)(struct trace_array *tr,
|
|
struct ftrace_hash *hash,
|
|
char *func, char *cmd,
|
|
char *params, int enable);
|
|
};
|
|
extern bool ftrace_filter_param __initdata;
|
|
static inline int ftrace_trace_task(struct trace_array *tr)
|
|
{
|
|
return !this_cpu_read(tr->trace_buffer.data->ftrace_ignore_pid);
|
|
}
|
|
extern int ftrace_is_dead(void);
|
|
int ftrace_create_function_files(struct trace_array *tr,
|
|
struct dentry *parent);
|
|
void ftrace_destroy_function_files(struct trace_array *tr);
|
|
void ftrace_init_global_array_ops(struct trace_array *tr);
|
|
void ftrace_init_array_ops(struct trace_array *tr, ftrace_func_t func);
|
|
void ftrace_reset_array_ops(struct trace_array *tr);
|
|
int using_ftrace_ops_list_func(void);
|
|
void ftrace_init_tracefs(struct trace_array *tr, struct dentry *d_tracer);
|
|
void ftrace_init_tracefs_toplevel(struct trace_array *tr,
|
|
struct dentry *d_tracer);
|
|
void ftrace_clear_pids(struct trace_array *tr);
|
|
int init_function_trace(void);
|
|
void ftrace_pid_follow_fork(struct trace_array *tr, bool enable);
|
|
#else
|
|
static inline int ftrace_trace_task(struct trace_array *tr)
|
|
{
|
|
return 1;
|
|
}
|
|
static inline int ftrace_is_dead(void) { return 0; }
|
|
static inline int
|
|
ftrace_create_function_files(struct trace_array *tr,
|
|
struct dentry *parent)
|
|
{
|
|
return 0;
|
|
}
|
|
static inline void ftrace_destroy_function_files(struct trace_array *tr) { }
|
|
static inline __init void
|
|
ftrace_init_global_array_ops(struct trace_array *tr) { }
|
|
static inline void ftrace_reset_array_ops(struct trace_array *tr) { }
|
|
static inline void ftrace_init_tracefs(struct trace_array *tr, struct dentry *d) { }
|
|
static inline void ftrace_init_tracefs_toplevel(struct trace_array *tr, struct dentry *d) { }
|
|
static inline void ftrace_clear_pids(struct trace_array *tr) { }
|
|
static inline int init_function_trace(void) { return 0; }
|
|
static inline void ftrace_pid_follow_fork(struct trace_array *tr, bool enable) { }
|
|
/* ftace_func_t type is not defined, use macro instead of static inline */
|
|
#define ftrace_init_array_ops(tr, func) do { } while (0)
|
|
#endif /* CONFIG_FUNCTION_TRACER */
|
|
|
|
#if defined(CONFIG_FUNCTION_TRACER) && defined(CONFIG_DYNAMIC_FTRACE)
|
|
|
|
struct ftrace_probe_ops {
|
|
void (*func)(unsigned long ip,
|
|
unsigned long parent_ip,
|
|
struct trace_array *tr,
|
|
struct ftrace_probe_ops *ops,
|
|
void *data);
|
|
int (*init)(struct ftrace_probe_ops *ops,
|
|
struct trace_array *tr,
|
|
unsigned long ip, void *init_data,
|
|
void **data);
|
|
void (*free)(struct ftrace_probe_ops *ops,
|
|
struct trace_array *tr,
|
|
unsigned long ip, void *data);
|
|
int (*print)(struct seq_file *m,
|
|
unsigned long ip,
|
|
struct ftrace_probe_ops *ops,
|
|
void *data);
|
|
};
|
|
|
|
struct ftrace_func_mapper;
|
|
typedef int (*ftrace_mapper_func)(void *data);
|
|
|
|
struct ftrace_func_mapper *allocate_ftrace_func_mapper(void);
|
|
void **ftrace_func_mapper_find_ip(struct ftrace_func_mapper *mapper,
|
|
unsigned long ip);
|
|
int ftrace_func_mapper_add_ip(struct ftrace_func_mapper *mapper,
|
|
unsigned long ip, void *data);
|
|
void *ftrace_func_mapper_remove_ip(struct ftrace_func_mapper *mapper,
|
|
unsigned long ip);
|
|
void free_ftrace_func_mapper(struct ftrace_func_mapper *mapper,
|
|
ftrace_mapper_func free_func);
|
|
|
|
extern int
|
|
register_ftrace_function_probe(char *glob, struct trace_array *tr,
|
|
struct ftrace_probe_ops *ops, void *data);
|
|
extern int
|
|
unregister_ftrace_function_probe_func(char *glob, struct trace_array *tr,
|
|
struct ftrace_probe_ops *ops);
|
|
extern void clear_ftrace_function_probes(struct trace_array *tr);
|
|
|
|
int register_ftrace_command(struct ftrace_func_command *cmd);
|
|
int unregister_ftrace_command(struct ftrace_func_command *cmd);
|
|
|
|
void ftrace_create_filter_files(struct ftrace_ops *ops,
|
|
struct dentry *parent);
|
|
void ftrace_destroy_filter_files(struct ftrace_ops *ops);
|
|
#else
|
|
struct ftrace_func_command;
|
|
|
|
static inline __init int register_ftrace_command(struct ftrace_func_command *cmd)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
static inline __init int unregister_ftrace_command(char *cmd_name)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
static inline void clear_ftrace_function_probes(struct trace_array *tr)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* The ops parameter passed in is usually undefined.
|
|
* This must be a macro.
|
|
*/
|
|
#define ftrace_create_filter_files(ops, parent) do { } while (0)
|
|
#define ftrace_destroy_filter_files(ops) do { } while (0)
|
|
#endif /* CONFIG_FUNCTION_TRACER && CONFIG_DYNAMIC_FTRACE */
|
|
|
|
bool ftrace_event_is_function(struct trace_event_call *call);
|
|
|
|
/*
|
|
* struct trace_parser - servers for reading the user input separated by spaces
|
|
* @cont: set if the input is not complete - no final space char was found
|
|
* @buffer: holds the parsed user input
|
|
* @idx: user input length
|
|
* @size: buffer size
|
|
*/
|
|
struct trace_parser {
|
|
bool cont;
|
|
char *buffer;
|
|
unsigned idx;
|
|
unsigned size;
|
|
};
|
|
|
|
static inline bool trace_parser_loaded(struct trace_parser *parser)
|
|
{
|
|
return (parser->idx != 0);
|
|
}
|
|
|
|
static inline bool trace_parser_cont(struct trace_parser *parser)
|
|
{
|
|
return parser->cont;
|
|
}
|
|
|
|
static inline void trace_parser_clear(struct trace_parser *parser)
|
|
{
|
|
parser->cont = false;
|
|
parser->idx = 0;
|
|
}
|
|
|
|
extern int trace_parser_get_init(struct trace_parser *parser, int size);
|
|
extern void trace_parser_put(struct trace_parser *parser);
|
|
extern int trace_get_user(struct trace_parser *parser, const char __user *ubuf,
|
|
size_t cnt, loff_t *ppos);
|
|
|
|
/*
|
|
* Only create function graph options if function graph is configured.
|
|
*/
|
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
|
# define FGRAPH_FLAGS \
|
|
C(DISPLAY_GRAPH, "display-graph"),
|
|
#else
|
|
# define FGRAPH_FLAGS
|
|
#endif
|
|
|
|
#ifdef CONFIG_BRANCH_TRACER
|
|
# define BRANCH_FLAGS \
|
|
C(BRANCH, "branch"),
|
|
#else
|
|
# define BRANCH_FLAGS
|
|
#endif
|
|
|
|
#ifdef CONFIG_FUNCTION_TRACER
|
|
# define FUNCTION_FLAGS \
|
|
C(FUNCTION, "function-trace"), \
|
|
C(FUNC_FORK, "function-fork"),
|
|
# define FUNCTION_DEFAULT_FLAGS TRACE_ITER_FUNCTION
|
|
#else
|
|
# define FUNCTION_FLAGS
|
|
# define FUNCTION_DEFAULT_FLAGS 0UL
|
|
# define TRACE_ITER_FUNC_FORK 0UL
|
|
#endif
|
|
|
|
#ifdef CONFIG_STACKTRACE
|
|
# define STACK_FLAGS \
|
|
C(STACKTRACE, "stacktrace"),
|
|
#else
|
|
# define STACK_FLAGS
|
|
#endif
|
|
|
|
/*
|
|
* trace_iterator_flags is an enumeration that defines bit
|
|
* positions into trace_flags that controls the output.
|
|
*
|
|
* NOTE: These bits must match the trace_options array in
|
|
* trace.c (this macro guarantees it).
|
|
*/
|
|
#define TRACE_FLAGS \
|
|
C(PRINT_PARENT, "print-parent"), \
|
|
C(SYM_OFFSET, "sym-offset"), \
|
|
C(SYM_ADDR, "sym-addr"), \
|
|
C(VERBOSE, "verbose"), \
|
|
C(RAW, "raw"), \
|
|
C(HEX, "hex"), \
|
|
C(BIN, "bin"), \
|
|
C(BLOCK, "block"), \
|
|
C(PRINTK, "trace_printk"), \
|
|
C(ANNOTATE, "annotate"), \
|
|
C(USERSTACKTRACE, "userstacktrace"), \
|
|
C(SYM_USEROBJ, "sym-userobj"), \
|
|
C(PRINTK_MSGONLY, "printk-msg-only"), \
|
|
C(CONTEXT_INFO, "context-info"), /* Print pid/cpu/time */ \
|
|
C(LATENCY_FMT, "latency-format"), \
|
|
C(RECORD_CMD, "record-cmd"), \
|
|
C(RECORD_TGID, "record-tgid"), \
|
|
C(OVERWRITE, "overwrite"), \
|
|
C(STOP_ON_FREE, "disable_on_free"), \
|
|
C(IRQ_INFO, "irq-info"), \
|
|
C(MARKERS, "markers"), \
|
|
C(EVENT_FORK, "event-fork"), \
|
|
FUNCTION_FLAGS \
|
|
FGRAPH_FLAGS \
|
|
STACK_FLAGS \
|
|
BRANCH_FLAGS
|
|
|
|
/*
|
|
* By defining C, we can make TRACE_FLAGS a list of bit names
|
|
* that will define the bits for the flag masks.
|
|
*/
|
|
#undef C
|
|
#define C(a, b) TRACE_ITER_##a##_BIT
|
|
|
|
enum trace_iterator_bits {
|
|
TRACE_FLAGS
|
|
/* Make sure we don't go more than we have bits for */
|
|
TRACE_ITER_LAST_BIT
|
|
};
|
|
|
|
/*
|
|
* By redefining C, we can make TRACE_FLAGS a list of masks that
|
|
* use the bits as defined above.
|
|
*/
|
|
#undef C
|
|
#define C(a, b) TRACE_ITER_##a = (1 << TRACE_ITER_##a##_BIT)
|
|
|
|
enum trace_iterator_flags { TRACE_FLAGS };
|
|
|
|
/*
|
|
* TRACE_ITER_SYM_MASK masks the options in trace_flags that
|
|
* control the output of kernel symbols.
|
|
*/
|
|
#define TRACE_ITER_SYM_MASK \
|
|
(TRACE_ITER_PRINT_PARENT|TRACE_ITER_SYM_OFFSET|TRACE_ITER_SYM_ADDR)
|
|
|
|
extern struct tracer nop_trace;
|
|
|
|
#ifdef CONFIG_BRANCH_TRACER
|
|
extern int enable_branch_tracing(struct trace_array *tr);
|
|
extern void disable_branch_tracing(void);
|
|
static inline int trace_branch_enable(struct trace_array *tr)
|
|
{
|
|
if (tr->trace_flags & TRACE_ITER_BRANCH)
|
|
return enable_branch_tracing(tr);
|
|
return 0;
|
|
}
|
|
static inline void trace_branch_disable(void)
|
|
{
|
|
/* due to races, always disable */
|
|
disable_branch_tracing();
|
|
}
|
|
#else
|
|
static inline int trace_branch_enable(struct trace_array *tr)
|
|
{
|
|
return 0;
|
|
}
|
|
static inline void trace_branch_disable(void)
|
|
{
|
|
}
|
|
#endif /* CONFIG_BRANCH_TRACER */
|
|
|
|
/* set ring buffers to default size if not already done so */
|
|
int tracing_update_buffers(void);
|
|
|
|
struct ftrace_event_field {
|
|
struct list_head link;
|
|
const char *name;
|
|
const char *type;
|
|
int filter_type;
|
|
int offset;
|
|
int size;
|
|
int is_signed;
|
|
};
|
|
|
|
struct event_filter {
|
|
int n_preds; /* Number assigned */
|
|
int a_preds; /* allocated */
|
|
struct filter_pred __rcu *preds;
|
|
struct filter_pred __rcu *root;
|
|
char *filter_string;
|
|
};
|
|
|
|
struct event_subsystem {
|
|
struct list_head list;
|
|
const char *name;
|
|
struct event_filter *filter;
|
|
int ref_count;
|
|
};
|
|
|
|
struct trace_subsystem_dir {
|
|
struct list_head list;
|
|
struct event_subsystem *subsystem;
|
|
struct trace_array *tr;
|
|
struct dentry *entry;
|
|
int ref_count;
|
|
int nr_events;
|
|
};
|
|
|
|
extern int call_filter_check_discard(struct trace_event_call *call, void *rec,
|
|
struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event);
|
|
|
|
void trace_buffer_unlock_commit_regs(struct trace_array *tr,
|
|
struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event,
|
|
unsigned long flags, int pc,
|
|
struct pt_regs *regs);
|
|
|
|
static inline void trace_buffer_unlock_commit(struct trace_array *tr,
|
|
struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event,
|
|
unsigned long flags, int pc)
|
|
{
|
|
trace_buffer_unlock_commit_regs(tr, buffer, event, flags, pc, NULL);
|
|
}
|
|
|
|
DECLARE_PER_CPU(struct ring_buffer_event *, trace_buffered_event);
|
|
DECLARE_PER_CPU(int, trace_buffered_event_cnt);
|
|
void trace_buffered_event_disable(void);
|
|
void trace_buffered_event_enable(void);
|
|
|
|
static inline void
|
|
__trace_event_discard_commit(struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event)
|
|
{
|
|
if (this_cpu_read(trace_buffered_event) == event) {
|
|
/* Simply release the temp buffer */
|
|
this_cpu_dec(trace_buffered_event_cnt);
|
|
return;
|
|
}
|
|
ring_buffer_discard_commit(buffer, event);
|
|
}
|
|
|
|
/*
|
|
* Helper function for event_trigger_unlock_commit{_regs}().
|
|
* If there are event triggers attached to this event that requires
|
|
* filtering against its fields, then they wil be called as the
|
|
* entry already holds the field information of the current event.
|
|
*
|
|
* It also checks if the event should be discarded or not.
|
|
* It is to be discarded if the event is soft disabled and the
|
|
* event was only recorded to process triggers, or if the event
|
|
* filter is active and this event did not match the filters.
|
|
*
|
|
* Returns true if the event is discarded, false otherwise.
|
|
*/
|
|
static inline bool
|
|
__event_trigger_test_discard(struct trace_event_file *file,
|
|
struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event,
|
|
void *entry,
|
|
enum event_trigger_type *tt)
|
|
{
|
|
unsigned long eflags = file->flags;
|
|
|
|
if (eflags & EVENT_FILE_FL_TRIGGER_COND)
|
|
*tt = event_triggers_call(file, entry);
|
|
|
|
if (test_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &file->flags) ||
|
|
(unlikely(file->flags & EVENT_FILE_FL_FILTERED) &&
|
|
!filter_match_preds(file->filter, entry))) {
|
|
__trace_event_discard_commit(buffer, event);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* event_trigger_unlock_commit - handle triggers and finish event commit
|
|
* @file: The file pointer assoctiated to the event
|
|
* @buffer: The ring buffer that the event is being written to
|
|
* @event: The event meta data in the ring buffer
|
|
* @entry: The event itself
|
|
* @irq_flags: The state of the interrupts at the start of the event
|
|
* @pc: The state of the preempt count at the start of the event.
|
|
* @len: The length of the payload data required for stm logging.
|
|
*
|
|
* This is a helper function to handle triggers that require data
|
|
* from the event itself. It also tests the event against filters and
|
|
* if the event is soft disabled and should be discarded.
|
|
*/
|
|
static inline void
|
|
event_trigger_unlock_commit(struct trace_event_file *file,
|
|
struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event,
|
|
void *entry, unsigned long irq_flags, int pc,
|
|
unsigned long len)
|
|
{
|
|
enum event_trigger_type tt = ETT_NONE;
|
|
|
|
if (!__event_trigger_test_discard(file, buffer, event, entry, &tt)) {
|
|
if (len)
|
|
stm_log(OST_ENTITY_FTRACE_EVENTS, entry, len);
|
|
|
|
trace_buffer_unlock_commit(file->tr, buffer, event, irq_flags, pc);
|
|
}
|
|
|
|
if (tt)
|
|
event_triggers_post_call(file, tt, entry);
|
|
}
|
|
|
|
/**
|
|
* event_trigger_unlock_commit_regs - handle triggers and finish event commit
|
|
* @file: The file pointer assoctiated to the event
|
|
* @buffer: The ring buffer that the event is being written to
|
|
* @event: The event meta data in the ring buffer
|
|
* @entry: The event itself
|
|
* @irq_flags: The state of the interrupts at the start of the event
|
|
* @pc: The state of the preempt count at the start of the event.
|
|
*
|
|
* This is a helper function to handle triggers that require data
|
|
* from the event itself. It also tests the event against filters and
|
|
* if the event is soft disabled and should be discarded.
|
|
*
|
|
* Same as event_trigger_unlock_commit() but calls
|
|
* trace_buffer_unlock_commit_regs() instead of trace_buffer_unlock_commit().
|
|
*/
|
|
static inline void
|
|
event_trigger_unlock_commit_regs(struct trace_event_file *file,
|
|
struct ring_buffer *buffer,
|
|
struct ring_buffer_event *event,
|
|
void *entry, unsigned long irq_flags, int pc,
|
|
struct pt_regs *regs)
|
|
{
|
|
enum event_trigger_type tt = ETT_NONE;
|
|
|
|
if (!__event_trigger_test_discard(file, buffer, event, entry, &tt))
|
|
trace_buffer_unlock_commit_regs(file->tr, buffer, event,
|
|
irq_flags, pc, regs);
|
|
|
|
if (tt)
|
|
event_triggers_post_call(file, tt, entry);
|
|
}
|
|
|
|
#define FILTER_PRED_INVALID ((unsigned short)-1)
|
|
#define FILTER_PRED_IS_RIGHT (1 << 15)
|
|
#define FILTER_PRED_FOLD (1 << 15)
|
|
|
|
/*
|
|
* The max preds is the size of unsigned short with
|
|
* two flags at the MSBs. One bit is used for both the IS_RIGHT
|
|
* and FOLD flags. The other is reserved.
|
|
*
|
|
* 2^14 preds is way more than enough.
|
|
*/
|
|
#define MAX_FILTER_PRED 16384
|
|
|
|
struct filter_pred;
|
|
struct regex;
|
|
|
|
typedef int (*filter_pred_fn_t) (struct filter_pred *pred, void *event);
|
|
|
|
typedef int (*regex_match_func)(char *str, struct regex *r, int len);
|
|
|
|
enum regex_type {
|
|
MATCH_FULL = 0,
|
|
MATCH_FRONT_ONLY,
|
|
MATCH_MIDDLE_ONLY,
|
|
MATCH_END_ONLY,
|
|
MATCH_GLOB,
|
|
};
|
|
|
|
struct regex {
|
|
char pattern[MAX_FILTER_STR_VAL];
|
|
int len;
|
|
int field_len;
|
|
regex_match_func match;
|
|
};
|
|
|
|
struct filter_pred {
|
|
filter_pred_fn_t fn;
|
|
u64 val;
|
|
struct regex regex;
|
|
unsigned short *ops;
|
|
struct ftrace_event_field *field;
|
|
int offset;
|
|
int not;
|
|
int op;
|
|
unsigned short index;
|
|
unsigned short parent;
|
|
unsigned short left;
|
|
unsigned short right;
|
|
};
|
|
|
|
static inline bool is_string_field(struct ftrace_event_field *field)
|
|
{
|
|
return field->filter_type == FILTER_DYN_STRING ||
|
|
field->filter_type == FILTER_STATIC_STRING ||
|
|
field->filter_type == FILTER_PTR_STRING ||
|
|
field->filter_type == FILTER_COMM;
|
|
}
|
|
|
|
static inline bool is_function_field(struct ftrace_event_field *field)
|
|
{
|
|
return field->filter_type == FILTER_TRACE_FN;
|
|
}
|
|
|
|
extern enum regex_type
|
|
filter_parse_regex(char *buff, int len, char **search, int *not);
|
|
extern void print_event_filter(struct trace_event_file *file,
|
|
struct trace_seq *s);
|
|
extern int apply_event_filter(struct trace_event_file *file,
|
|
char *filter_string);
|
|
extern int apply_subsystem_event_filter(struct trace_subsystem_dir *dir,
|
|
char *filter_string);
|
|
extern void print_subsystem_event_filter(struct event_subsystem *system,
|
|
struct trace_seq *s);
|
|
extern int filter_assign_type(const char *type);
|
|
extern int create_event_filter(struct trace_event_call *call,
|
|
char *filter_str, bool set_str,
|
|
struct event_filter **filterp);
|
|
extern void free_event_filter(struct event_filter *filter);
|
|
|
|
struct ftrace_event_field *
|
|
trace_find_event_field(struct trace_event_call *call, char *name);
|
|
|
|
extern void trace_event_enable_cmd_record(bool enable);
|
|
extern void trace_event_enable_tgid_record(bool enable);
|
|
|
|
extern int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr);
|
|
extern int event_trace_del_tracer(struct trace_array *tr);
|
|
|
|
extern struct trace_event_file *find_event_file(struct trace_array *tr,
|
|
const char *system,
|
|
const char *event);
|
|
|
|
static inline void *event_file_data(struct file *filp)
|
|
{
|
|
return ACCESS_ONCE(file_inode(filp)->i_private);
|
|
}
|
|
|
|
extern struct mutex event_mutex;
|
|
extern struct list_head ftrace_events;
|
|
|
|
extern const struct file_operations event_trigger_fops;
|
|
extern const struct file_operations event_hist_fops;
|
|
|
|
#ifdef CONFIG_HIST_TRIGGERS
|
|
extern int register_trigger_hist_cmd(void);
|
|
extern int register_trigger_hist_enable_disable_cmds(void);
|
|
#else
|
|
static inline int register_trigger_hist_cmd(void) { return 0; }
|
|
static inline int register_trigger_hist_enable_disable_cmds(void) { return 0; }
|
|
#endif
|
|
|
|
extern int register_trigger_cmds(void);
|
|
extern void clear_event_triggers(struct trace_array *tr);
|
|
|
|
struct event_trigger_data {
|
|
unsigned long count;
|
|
int ref;
|
|
struct event_trigger_ops *ops;
|
|
struct event_command *cmd_ops;
|
|
struct event_filter __rcu *filter;
|
|
char *filter_str;
|
|
void *private_data;
|
|
bool paused;
|
|
bool paused_tmp;
|
|
struct list_head list;
|
|
char *name;
|
|
struct list_head named_list;
|
|
struct event_trigger_data *named_data;
|
|
};
|
|
|
|
/* Avoid typos */
|
|
#define ENABLE_EVENT_STR "enable_event"
|
|
#define DISABLE_EVENT_STR "disable_event"
|
|
#define ENABLE_HIST_STR "enable_hist"
|
|
#define DISABLE_HIST_STR "disable_hist"
|
|
|
|
struct enable_trigger_data {
|
|
struct trace_event_file *file;
|
|
bool enable;
|
|
bool hist;
|
|
};
|
|
|
|
extern int event_enable_trigger_print(struct seq_file *m,
|
|
struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data);
|
|
extern void event_enable_trigger_free(struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data);
|
|
extern int event_enable_trigger_func(struct event_command *cmd_ops,
|
|
struct trace_event_file *file,
|
|
char *glob, char *cmd, char *param);
|
|
extern int event_enable_register_trigger(char *glob,
|
|
struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data,
|
|
struct trace_event_file *file);
|
|
extern void event_enable_unregister_trigger(char *glob,
|
|
struct event_trigger_ops *ops,
|
|
struct event_trigger_data *test,
|
|
struct trace_event_file *file);
|
|
extern void trigger_data_free(struct event_trigger_data *data);
|
|
extern int event_trigger_init(struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data);
|
|
extern int trace_event_trigger_enable_disable(struct trace_event_file *file,
|
|
int trigger_enable);
|
|
extern void update_cond_flag(struct trace_event_file *file);
|
|
extern void unregister_trigger(char *glob, struct event_trigger_ops *ops,
|
|
struct event_trigger_data *test,
|
|
struct trace_event_file *file);
|
|
extern int set_trigger_filter(char *filter_str,
|
|
struct event_trigger_data *trigger_data,
|
|
struct trace_event_file *file);
|
|
extern struct event_trigger_data *find_named_trigger(const char *name);
|
|
extern bool is_named_trigger(struct event_trigger_data *test);
|
|
extern int save_named_trigger(const char *name,
|
|
struct event_trigger_data *data);
|
|
extern void del_named_trigger(struct event_trigger_data *data);
|
|
extern void pause_named_trigger(struct event_trigger_data *data);
|
|
extern void unpause_named_trigger(struct event_trigger_data *data);
|
|
extern void set_named_trigger_data(struct event_trigger_data *data,
|
|
struct event_trigger_data *named_data);
|
|
extern int register_event_command(struct event_command *cmd);
|
|
extern int unregister_event_command(struct event_command *cmd);
|
|
extern int register_trigger_hist_enable_disable_cmds(void);
|
|
|
|
/**
|
|
* struct event_trigger_ops - callbacks for trace event triggers
|
|
*
|
|
* The methods in this structure provide per-event trigger hooks for
|
|
* various trigger operations.
|
|
*
|
|
* All the methods below, except for @init() and @free(), must be
|
|
* implemented.
|
|
*
|
|
* @func: The trigger 'probe' function called when the triggering
|
|
* event occurs. The data passed into this callback is the data
|
|
* that was supplied to the event_command @reg() function that
|
|
* registered the trigger (see struct event_command) along with
|
|
* the trace record, rec.
|
|
*
|
|
* @init: An optional initialization function called for the trigger
|
|
* when the trigger is registered (via the event_command reg()
|
|
* function). This can be used to perform per-trigger
|
|
* initialization such as incrementing a per-trigger reference
|
|
* count, for instance. This is usually implemented by the
|
|
* generic utility function @event_trigger_init() (see
|
|
* trace_event_triggers.c).
|
|
*
|
|
* @free: An optional de-initialization function called for the
|
|
* trigger when the trigger is unregistered (via the
|
|
* event_command @reg() function). This can be used to perform
|
|
* per-trigger de-initialization such as decrementing a
|
|
* per-trigger reference count and freeing corresponding trigger
|
|
* data, for instance. This is usually implemented by the
|
|
* generic utility function @event_trigger_free() (see
|
|
* trace_event_triggers.c).
|
|
*
|
|
* @print: The callback function invoked to have the trigger print
|
|
* itself. This is usually implemented by a wrapper function
|
|
* that calls the generic utility function @event_trigger_print()
|
|
* (see trace_event_triggers.c).
|
|
*/
|
|
struct event_trigger_ops {
|
|
void (*func)(struct event_trigger_data *data,
|
|
void *rec);
|
|
int (*init)(struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data);
|
|
void (*free)(struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data);
|
|
int (*print)(struct seq_file *m,
|
|
struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data);
|
|
};
|
|
|
|
/**
|
|
* struct event_command - callbacks and data members for event commands
|
|
*
|
|
* Event commands are invoked by users by writing the command name
|
|
* into the 'trigger' file associated with a trace event. The
|
|
* parameters associated with a specific invocation of an event
|
|
* command are used to create an event trigger instance, which is
|
|
* added to the list of trigger instances associated with that trace
|
|
* event. When the event is hit, the set of triggers associated with
|
|
* that event is invoked.
|
|
*
|
|
* The data members in this structure provide per-event command data
|
|
* for various event commands.
|
|
*
|
|
* All the data members below, except for @post_trigger, must be set
|
|
* for each event command.
|
|
*
|
|
* @name: The unique name that identifies the event command. This is
|
|
* the name used when setting triggers via trigger files.
|
|
*
|
|
* @trigger_type: A unique id that identifies the event command
|
|
* 'type'. This value has two purposes, the first to ensure that
|
|
* only one trigger of the same type can be set at a given time
|
|
* for a particular event e.g. it doesn't make sense to have both
|
|
* a traceon and traceoff trigger attached to a single event at
|
|
* the same time, so traceon and traceoff have the same type
|
|
* though they have different names. The @trigger_type value is
|
|
* also used as a bit value for deferring the actual trigger
|
|
* action until after the current event is finished. Some
|
|
* commands need to do this if they themselves log to the trace
|
|
* buffer (see the @post_trigger() member below). @trigger_type
|
|
* values are defined by adding new values to the trigger_type
|
|
* enum in include/linux/trace_events.h.
|
|
*
|
|
* @flags: See the enum event_command_flags below.
|
|
*
|
|
* All the methods below, except for @set_filter() and @unreg_all(),
|
|
* must be implemented.
|
|
*
|
|
* @func: The callback function responsible for parsing and
|
|
* registering the trigger written to the 'trigger' file by the
|
|
* user. It allocates the trigger instance and registers it with
|
|
* the appropriate trace event. It makes use of the other
|
|
* event_command callback functions to orchestrate this, and is
|
|
* usually implemented by the generic utility function
|
|
* @event_trigger_callback() (see trace_event_triggers.c).
|
|
*
|
|
* @reg: Adds the trigger to the list of triggers associated with the
|
|
* event, and enables the event trigger itself, after
|
|
* initializing it (via the event_trigger_ops @init() function).
|
|
* This is also where commands can use the @trigger_type value to
|
|
* make the decision as to whether or not multiple instances of
|
|
* the trigger should be allowed. This is usually implemented by
|
|
* the generic utility function @register_trigger() (see
|
|
* trace_event_triggers.c).
|
|
*
|
|
* @unreg: Removes the trigger from the list of triggers associated
|
|
* with the event, and disables the event trigger itself, after
|
|
* initializing it (via the event_trigger_ops @free() function).
|
|
* This is usually implemented by the generic utility function
|
|
* @unregister_trigger() (see trace_event_triggers.c).
|
|
*
|
|
* @unreg_all: An optional function called to remove all the triggers
|
|
* from the list of triggers associated with the event. Called
|
|
* when a trigger file is opened in truncate mode.
|
|
*
|
|
* @set_filter: An optional function called to parse and set a filter
|
|
* for the trigger. If no @set_filter() method is set for the
|
|
* event command, filters set by the user for the command will be
|
|
* ignored. This is usually implemented by the generic utility
|
|
* function @set_trigger_filter() (see trace_event_triggers.c).
|
|
*
|
|
* @get_trigger_ops: The callback function invoked to retrieve the
|
|
* event_trigger_ops implementation associated with the command.
|
|
*/
|
|
struct event_command {
|
|
struct list_head list;
|
|
char *name;
|
|
enum event_trigger_type trigger_type;
|
|
int flags;
|
|
int (*func)(struct event_command *cmd_ops,
|
|
struct trace_event_file *file,
|
|
char *glob, char *cmd, char *params);
|
|
int (*reg)(char *glob,
|
|
struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data,
|
|
struct trace_event_file *file);
|
|
void (*unreg)(char *glob,
|
|
struct event_trigger_ops *ops,
|
|
struct event_trigger_data *data,
|
|
struct trace_event_file *file);
|
|
void (*unreg_all)(struct trace_event_file *file);
|
|
int (*set_filter)(char *filter_str,
|
|
struct event_trigger_data *data,
|
|
struct trace_event_file *file);
|
|
struct event_trigger_ops *(*get_trigger_ops)(char *cmd, char *param);
|
|
};
|
|
|
|
/**
|
|
* enum event_command_flags - flags for struct event_command
|
|
*
|
|
* @POST_TRIGGER: A flag that says whether or not this command needs
|
|
* to have its action delayed until after the current event has
|
|
* been closed. Some triggers need to avoid being invoked while
|
|
* an event is currently in the process of being logged, since
|
|
* the trigger may itself log data into the trace buffer. Thus
|
|
* we make sure the current event is committed before invoking
|
|
* those triggers. To do that, the trigger invocation is split
|
|
* in two - the first part checks the filter using the current
|
|
* trace record; if a command has the @post_trigger flag set, it
|
|
* sets a bit for itself in the return value, otherwise it
|
|
* directly invokes the trigger. Once all commands have been
|
|
* either invoked or set their return flag, the current record is
|
|
* either committed or discarded. At that point, if any commands
|
|
* have deferred their triggers, those commands are finally
|
|
* invoked following the close of the current event. In other
|
|
* words, if the event_trigger_ops @func() probe implementation
|
|
* itself logs to the trace buffer, this flag should be set,
|
|
* otherwise it can be left unspecified.
|
|
*
|
|
* @NEEDS_REC: A flag that says whether or not this command needs
|
|
* access to the trace record in order to perform its function,
|
|
* regardless of whether or not it has a filter associated with
|
|
* it (filters make a trigger require access to the trace record
|
|
* but are not always present).
|
|
*/
|
|
enum event_command_flags {
|
|
EVENT_CMD_FL_POST_TRIGGER = 1,
|
|
EVENT_CMD_FL_NEEDS_REC = 2,
|
|
};
|
|
|
|
static inline bool event_command_post_trigger(struct event_command *cmd_ops)
|
|
{
|
|
return cmd_ops->flags & EVENT_CMD_FL_POST_TRIGGER;
|
|
}
|
|
|
|
static inline bool event_command_needs_rec(struct event_command *cmd_ops)
|
|
{
|
|
return cmd_ops->flags & EVENT_CMD_FL_NEEDS_REC;
|
|
}
|
|
|
|
extern int trace_event_enable_disable(struct trace_event_file *file,
|
|
int enable, int soft_disable);
|
|
extern int tracing_alloc_snapshot(void);
|
|
|
|
extern const char *__start___trace_bprintk_fmt[];
|
|
extern const char *__stop___trace_bprintk_fmt[];
|
|
|
|
extern const char *__start___tracepoint_str[];
|
|
extern const char *__stop___tracepoint_str[];
|
|
|
|
void trace_printk_control(bool enabled);
|
|
void trace_printk_init_buffers(void);
|
|
void trace_printk_start_comm(void);
|
|
int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set);
|
|
int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled);
|
|
|
|
/*
|
|
* Normal trace_printk() and friends allocates special buffers
|
|
* to do the manipulation, as well as saves the print formats
|
|
* into sections to display. But the trace infrastructure wants
|
|
* to use these without the added overhead at the price of being
|
|
* a bit slower (used mainly for warnings, where we don't care
|
|
* about performance). The internal_trace_puts() is for such
|
|
* a purpose.
|
|
*/
|
|
#define internal_trace_puts(str) __trace_puts(_THIS_IP_, str, strlen(str))
|
|
|
|
#undef FTRACE_ENTRY
|
|
#define FTRACE_ENTRY(call, struct_name, id, tstruct, print, filter) \
|
|
extern struct trace_event_call \
|
|
__aligned(4) event_##call;
|
|
#undef FTRACE_ENTRY_DUP
|
|
#define FTRACE_ENTRY_DUP(call, struct_name, id, tstruct, print, filter) \
|
|
FTRACE_ENTRY(call, struct_name, id, PARAMS(tstruct), PARAMS(print), \
|
|
filter)
|
|
#undef FTRACE_ENTRY_PACKED
|
|
#define FTRACE_ENTRY_PACKED(call, struct_name, id, tstruct, print, filter) \
|
|
FTRACE_ENTRY(call, struct_name, id, PARAMS(tstruct), PARAMS(print), \
|
|
filter)
|
|
|
|
#include "trace_entries.h"
|
|
|
|
#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_FUNCTION_TRACER)
|
|
int perf_ftrace_event_register(struct trace_event_call *call,
|
|
enum trace_reg type, void *data);
|
|
#else
|
|
#define perf_ftrace_event_register NULL
|
|
#endif
|
|
|
|
#ifdef CONFIG_FTRACE_SYSCALLS
|
|
void init_ftrace_syscalls(void);
|
|
const char *get_syscall_name(int syscall);
|
|
#else
|
|
static inline void init_ftrace_syscalls(void) { }
|
|
static inline const char *get_syscall_name(int syscall)
|
|
{
|
|
return NULL;
|
|
}
|
|
#endif
|
|
|
|
#ifdef CONFIG_EVENT_TRACING
|
|
void trace_event_init(void);
|
|
void trace_event_eval_update(struct trace_eval_map **map, int len);
|
|
#else
|
|
static inline void __init trace_event_init(void) { }
|
|
static inline void trace_event_eval_update(struct trace_eval_map **map, int len) { }
|
|
#endif
|
|
|
|
#ifdef CONFIG_TRACER_SNAPSHOT
|
|
void tracing_snapshot_instance(struct trace_array *tr);
|
|
int tracing_alloc_snapshot_instance(struct trace_array *tr);
|
|
#else
|
|
static inline void tracing_snapshot_instance(struct trace_array *tr) { }
|
|
static inline int tracing_alloc_snapshot_instance(struct trace_array *tr)
|
|
{
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
extern struct trace_iterator *tracepoint_print_iter;
|
|
|
|
/*
|
|
* Reset the state of the trace_iterator so that it can read consumed data.
|
|
* Normally, the trace_iterator is used for reading the data when it is not
|
|
* consumed, and must retain state.
|
|
*/
|
|
static __always_inline void trace_iterator_reset(struct trace_iterator *iter)
|
|
{
|
|
const size_t offset = offsetof(struct trace_iterator, seq);
|
|
|
|
/*
|
|
* Keep gcc from complaining about overwriting more than just one
|
|
* member in the structure.
|
|
*/
|
|
memset((char *)iter + offset, 0, sizeof(struct trace_iterator) - offset);
|
|
|
|
iter->pos = -1;
|
|
}
|
|
|
|
#endif /* _LINUX_KERNEL_TRACE_H */
|