* refs/heads/tmp-204dd19:
UPSTREAM: driver core: Avoid deferred probe due to fw_devlink_pause/resume()
UPSTREAM: driver core: Rename dev_links_info.defer_sync to defer_hook
UPSTREAM: driver core: Don't do deferred probe in parallel with kernel_init thread
Restore sdcardfs feature
Revert rpmh and usb changes
Linux 4.19.136
regmap: debugfs: check count when read regmap file
rtnetlink: Fix memory(net_device) leak when ->newlink fails
udp: Improve load balancing for SO_REUSEPORT.
udp: Copy has_conns in reuseport_grow().
sctp: shrink stream outq when fails to do addstream reconf
sctp: shrink stream outq only when new outcnt < old outcnt
AX.25: Prevent integer overflows in connect and sendmsg
tcp: allow at most one TLP probe per flight
rxrpc: Fix sendmsg() returning EPIPE due to recvmsg() returning ENODATA
qrtr: orphan socket in qrtr_release()
net: udp: Fix wrong clean up for IS_UDPLITE macro
net-sysfs: add a newline when printing 'tx_timeout' by sysfs
ip6_gre: fix null-ptr-deref in ip6gre_init_net()
drivers/net/wan/x25_asy: Fix to make it work
dev: Defer free of skbs in flush_backlog
AX.25: Prevent out-of-bounds read in ax25_sendmsg()
AX.25: Fix out-of-bounds read in ax25_connect()
Linux 4.19.135
ath9k: Fix regression with Atheros 9271
ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb
dm integrity: fix integrity recalculation that is improperly skipped
ASoC: qcom: Drop HAS_DMA dependency to fix link failure
ASoC: rt5670: Add new gpio1_is_ext_spk_en quirk and enable it on the Lenovo Miix 2 10
x86, vmlinux.lds: Page-align end of ..page_aligned sections
parisc: Add atomic64_set_release() define to avoid CPU soft lockups
drm/amd/powerplay: fix a crash when overclocking Vega M
drm/amdgpu: Fix NULL dereference in dpm sysfs handlers
io-mapping: indicate mapping failure
mm: memcg/slab: fix memory leak at non-root kmem_cache destroy
mm: memcg/slab: synchronize access to kmem_cache dying flag using a spinlock
mm/memcg: fix refcount error while moving and swapping
Makefile: Fix GCC_TOOLCHAIN_DIR prefix for Clang cross compilation
vt: Reject zero-sized screen buffer size.
fbdev: Detect integer underflow at "struct fbcon_ops"->clear_margins.
serial: 8250_mtk: Fix high-speed baud rates clamping
serial: 8250: fix null-ptr-deref in serial8250_start_tx()
staging: comedi: addi_apci_1564: check INSN_CONFIG_DIGITAL_TRIG shift
staging: comedi: addi_apci_1500: check INSN_CONFIG_DIGITAL_TRIG shift
staging: comedi: ni_6527: fix INSN_CONFIG_DIGITAL_TRIG support
staging: comedi: addi_apci_1032: check INSN_CONFIG_DIGITAL_TRIG shift
staging: wlan-ng: properly check endpoint types
Revert "cifs: Fix the target file was deleted when rename failed."
usb: xhci: Fix ASM2142/ASM3142 DMA addressing
usb: xhci-mtk: fix the failure of bandwidth allocation
binder: Don't use mmput() from shrinker function.
RISC-V: Upgrade smp_mb__after_spinlock() to iorw,iorw
x86: math-emu: Fix up 'cmp' insn for clang ias
arm64: Use test_tsk_thread_flag() for checking TIF_SINGLESTEP
hwmon: (scmi) Fix potential buffer overflow in scmi_hwmon_probe()
hwmon: (adm1275) Make sure we are reading enough data for different chips
usb: gadget: udc: gr_udc: fix memleak on error handling path in gr_ep_init()
Input: synaptics - enable InterTouch for ThinkPad X1E 1st gen
dmaengine: ioat setting ioat timeout as module parameter
hwmon: (aspeed-pwm-tacho) Avoid possible buffer overflow
regmap: dev_get_regmap_match(): fix string comparison
spi: mediatek: use correct SPI_CFG2_REG MACRO
Input: add `SW_MACHINE_COVER`
dmaengine: tegra210-adma: Fix runtime PM imbalance on error
HID: apple: Disable Fn-key key-re-mapping on clone keyboards
HID: steam: fixes race in handling device list.
HID: alps: support devices with report id 2
HID: i2c-hid: add Mediacom FlexBook edge13 to descriptor override
scripts/gdb: fix lx-symbols 'gdb.error' while loading modules
scripts/decode_stacktrace: strip basepath from all paths
serial: exar: Fix GPIO configuration for Sealevel cards based on XR17V35X
bonding: check return value of register_netdevice() in bond_newlink()
i2c: rcar: always clear ICSAR to avoid side effects
net: ethernet: ave: Fix error returns in ave_init
ipvs: fix the connection sync failed in some cases
qed: suppress "don't support RoCE & iWARP" flooding on HW init
mlxsw: destroy workqueue when trap_register in mlxsw_emad_init
bonding: check error value of register_netdevice() immediately
net: smc91x: Fix possible memory leak in smc_drv_probe()
drm: sun4i: hdmi: Fix inverted HPD result
ieee802154: fix one possible memleak in adf7242_probe
net: dp83640: fix SIOCSHWTSTAMP to update the struct with actual configuration
ax88172a: fix ax88172a_unbind() failures
hippi: Fix a size used in a 'pci_free_consistent()' in an error handling path
fpga: dfl: fix bug in port reset handshake
bnxt_en: Fix race when modifying pause settings.
btrfs: fix page leaks after failure to lock page for delalloc
btrfs: fix mount failure caused by race with umount
btrfs: fix double free on ulist after backref resolution failure
ASoC: rt5670: Correct RT5670_LDO_SEL_MASK
ALSA: info: Drop WARN_ON() from buffer NULL sanity check
uprobes: Change handle_swbp() to send SIGTRAP with si_code=SI_KERNEL, to fix GDB regression
IB/umem: fix reference count leak in ib_umem_odp_get()
tipc: clean up skb list lock handling on send path
spi: spi-fsl-dspi: Exit the ISR with IRQ_NONE when it's not ours
SUNRPC reverting d03727b248d0 ("NFSv4 fix CLOSE not waiting for direct IO compeletion")
irqdomain/treewide: Keep firmware node unconditionally allocated
fuse: fix weird page warning
drivers/firmware/psci: Fix memory leakage in alloc_init_cpu_groups()
drm/nouveau/i2c/g94-: increase NV_PMGR_DP_AUXCTL_TRANSACTREQ timeout
net: sky2: initialize return of gm_phy_read
drivers/net/wan/lapbether: Fixed the value of hard_header_len
xtensa: update *pos in cpuinfo_op.next
xtensa: fix __sync_fetch_and_{and,or}_4 declarations
scsi: scsi_transport_spi: Fix function pointer check
mac80211: allow rx of mesh eapol frames with default rx key
pinctrl: amd: fix npins for uart0 in kerncz_groups
gpio: arizona: put pm_runtime in case of failure
gpio: arizona: handle pm_runtime_get_sync failure case
soc: qcom: rpmh: Dirt can only make you dirtier, not cleaner
ANDROID: build: update ABI definitions
ANDROID: update the kernel release format for GKI
ANDROID: Incremental fs: magic number compatible 32-bit
ANDROID: kbuild: don't merge .*..compoundliteral in modules
ANDROID: GKI: preserve ABI for struct sock_cgroup_data
Revert "genetlink: remove genl_bind"
Revert "arm64/alternatives: use subsections for replacement sequences"
Linux 4.19.134
spi: sprd: switch the sequence of setting WDG_LOAD_LOW and _HIGH
rxrpc: Fix trace string
libceph: don't omit recovery_deletes in target_copy()
printk: queue wake_up_klogd irq_work only if per-CPU areas are ready
genirq/affinity: Handle affinity setting on inactive interrupts correctly
sched/fair: handle case of task_h_load() returning 0
sched: Fix unreliable rseq cpu_id for new tasks
arm64: compat: Ensure upper 32 bits of x0 are zero on syscall return
arm64: ptrace: Consistently use pseudo-singlestep exceptions
arm64: ptrace: Override SPSR.SS when single-stepping is enabled
thermal/drivers/cpufreq_cooling: Fix wrong frequency converted from power
misc: atmel-ssc: lock with mutex instead of spinlock
dmaengine: fsl-edma: Fix NULL pointer exception in fsl_edma_tx_handler
intel_th: Fix a NULL dereference when hub driver is not loaded
intel_th: pci: Add Emmitsburg PCH support
intel_th: pci: Add Tiger Lake PCH-H support
intel_th: pci: Add Jasper Lake CPU support
powerpc/book3s64/pkeys: Fix pkey_access_permitted() for execute disable pkey
hwmon: (emc2103) fix unable to change fan pwm1_enable attribute
riscv: use 16KB kernel stack on 64-bit
MIPS: Fix build for LTS kernel caused by backporting lpj adjustment
timer: Fix wheel index calculation on last level
timer: Prevent base->clk from moving backward
uio_pdrv_genirq: fix use without device tree and no interrupt
Input: i8042 - add Lenovo XiaoXin Air 12 to i8042 nomux list
mei: bus: don't clean driver pointer
Revert "zram: convert remaining CLASS_ATTR() to CLASS_ATTR_RO()"
fuse: Fix parameter for FS_IOC_{GET,SET}FLAGS
ovl: fix unneeded call to ovl_change_flags()
ovl: relax WARN_ON() when decoding lower directory file handle
ovl: inode reference leak in ovl_is_inuse true case.
serial: mxs-auart: add missed iounmap() in probe failure and remove
virtio: virtio_console: add missing MODULE_DEVICE_TABLE() for rproc serial
virt: vbox: Fix guest capabilities mask check
virt: vbox: Fix VBGL_IOCTL_VMMDEV_REQUEST_BIG and _LOG req numbers to match upstream
USB: serial: option: add Quectel EG95 LTE modem
USB: serial: option: add GosunCn GM500 series
USB: serial: ch341: add new Product ID for CH340
USB: serial: cypress_m8: enable Simply Automated UPB PIM
USB: serial: iuu_phoenix: fix memory corruption
usb: gadget: function: fix missing spinlock in f_uac1_legacy
usb: chipidea: core: add wakeup support for extcon
usb: dwc2: Fix shutdown callback in platform
USB: c67x00: fix use after free in c67x00_giveback_urb
ALSA: hda/realtek - Enable Speaker for ASUS UX533 and UX534
ALSA: hda/realtek - change to suitable link model for ASUS platform
ALSA: usb-audio: Fix race against the error recovery URB submission
ALSA: line6: Sync the pending work cancel at disconnection
ALSA: line6: Perform sanity check for each URB creation
HID: quirks: Ignore Simply Automated UPB PIM
HID: quirks: Always poll Obins Anne Pro 2 keyboard
HID: magicmouse: do not set up autorepeat
slimbus: core: Fix mismatch in of_node_get/put
mtd: rawnand: oxnas: Release all devices in the _remove() path
mtd: rawnand: oxnas: Unregister all devices on error
mtd: rawnand: oxnas: Keep track of registered devices
mtd: rawnand: brcmnand: fix CS0 layout
mtd: rawnand: timings: Fix default tR_max and tCCS_min timings
mtd: rawnand: marvell: Fix probe error path
mtd: rawnand: marvell: Use nand_cleanup() when the device is not yet registered
soc: qcom: rpmh-rsc: Allow using free WAKE TCS for active request
soc: qcom: rpmh-rsc: Clear active mode configuration for wake TCS
soc: qcom: rpmh: Invalidate SLEEP and WAKE TCSes before flushing new data
soc: qcom: rpmh: Update dirty flag only when data changes
perf stat: Zero all the 'ena' and 'run' array slot stats for interval mode
apparmor: ensure that dfa state tables have entries
copy_xstate_to_kernel: Fix typo which caused GDB regression
regmap: debugfs: Don't sleep while atomic for fast_io regmaps
ARM: dts: socfpga: Align L2 cache-controller nodename with dtschema
Revert "thermal: mediatek: fix register index error"
staging: comedi: verify array index is correct before using it
usb: gadget: udc: atmel: fix uninitialized read in debug printk
spi: spi-sun6i: sun6i_spi_transfer_one(): fix setting of clock rate
arm64: dts: meson: add missing gxl rng clock
phy: sun4i-usb: fix dereference of pointer phy0 before it is null checked
iio:health:afe4404 Fix timestamp alignment and prevent data leak.
ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Flight S
ACPI: video: Use native backlight on Acer TravelMate 5735Z
Input: mms114 - add extra compatible for mms345l
ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Alpha S
ACPI: video: Use native backlight on Acer Aspire 5783z
ALSA: usb-audio: Rewrite registration quirk handling
mmc: sdhci: do not enable card detect interrupt for gpio cd type
doc: dt: bindings: usb: dwc3: Update entries for disabling SS instances in park mode
ALSA: usb-audio: Create a registration quirk for Kingston HyperX Amp (0951:16d8)
scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled
ARM: at91: pm: add quirk for sam9x60's ulp1
HID: quirks: Remove ITE 8595 entry from hid_have_special_driver
net: sfp: add some quirks for GPON modules
net: sfp: add support for module quirks
Revert "usb/ehci-platform: Set PM runtime as active on resume"
Revert "usb/xhci-plat: Set PM runtime as active on resume"
Revert "usb/ohci-platform: Fix a warning when hibernating"
of: of_mdio: Correct loop scanning logic
net: dsa: bcm_sf2: Fix node reference count
spi: spi-fsl-dspi: Fix lockup if device is shutdown during SPI transfer
spi: fix initial SPI_SR value in spi-fsl-dspi
iio:health:afe4403 Fix timestamp alignment and prevent data leak.
iio:pressure:ms5611 Fix buffer element alignment
iio:humidity:hts221 Fix alignment and data leak issues
iio: pressure: zpa2326: handle pm_runtime_get_sync failure
iio: mma8452: Add missed iio_device_unregister() call in mma8452_probe()
iio: magnetometer: ak8974: Fix runtime PM imbalance on error
iio:humidity:hdc100x Fix alignment and data leak issues
iio:magnetometer:ak8974: Fix alignment and data leak issues
arm64/alternatives: don't patch up internal branches
i2c: eg20t: Load module automatically if ID matches
gfs2: read-only mounts should grab the sd_freeze_gl glock
tpm_tis: extra chip->ops check on error path in tpm_tis_core_init
arm64/alternatives: use subsections for replacement sequences
m68k: mm: fix node memblock init
m68k: nommu: register start of the memory with memblock
drm/exynos: fix ref count leak in mic_pre_enable
drm/msm: fix potential memleak in error branch
vlan: consolidate VLAN parsing code and limit max parsing depth
sched: consistently handle layer3 header accesses in the presence of VLANs
cgroup: Fix sock_cgroup_data on big-endian.
cgroup: fix cgroup_sk_alloc() for sk_clone_lock()
tcp: md5: allow changing MD5 keys in all socket states
tcp: md5: refine tcp_md5_do_add()/tcp_md5_hash_key() barriers
tcp: md5: do not send silly options in SYNCOOKIES
tcp: md5: add missing memory barriers in tcp_md5_do_add()/tcp_md5_hash_key()
tcp: make sure listeners don't initialize congestion-control state
tcp: fix SO_RCVLOWAT possible hangs under high mem pressure
net: usb: qmi_wwan: add support for Quectel EG95 LTE modem
net_sched: fix a memory leak in atm_tc_init()
net: Added pointer check for dst->ops->neigh_lookup in dst_neigh_lookup_skb
llc: make sure applications use ARPHRD_ETHER
l2tp: remove skb_dst_set() from l2tp_xmit_skb()
ipv4: fill fl4_icmp_{type,code} in ping_v4_sendmsg
genetlink: remove genl_bind
net: rmnet: fix lower interface leak
perf: Make perf able to build with latest libbfd
UPSTREAM: media: v4l2-ctrl: Add H264 profile and levels
UPSTREAM: media: v4l2-ctrl: Add control for h.264 chroma qp offset
ANDROID: GKI: ASoC: compress: revert some code to avoid race condition
ANDROID: GKI: Update the ABI xml representation.
ANDROID: GKI: kernel: tick-sched: Add an API for wakeup callbacks
ANDROID: ASoC: Compress: Check and set pcm_new driver op
Revert "ANDROID: GKI: arm64: gki_defconfig: Disable CONFIG_ARM64_TAGGED_ADDR_ABI"
ANDROID: arm64: configs: enabe CONFIG_TMPFS
Revert "ALSA: compress: fix partial_drain completion state"
ANDROID: GKI: enable CONFIG_EXT4_FS_POSIX_ACL.
ANDROID: GKI: set CONFIG_STATIC_USERMODEHELPER_PATH
Linux 4.19.133
s390/mm: fix huge pte soft dirty copying
ARC: elf: use right ELF_ARCH
ARC: entry: fix potential EFA clobber when TIF_SYSCALL_TRACE
dm: use noio when sending kobject event
drm/radeon: fix double free
btrfs: fix fatal extent_buffer readahead vs releasepage race
Revert "ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb"
bpf: Check correct cred for CAP_SYSLOG in bpf_dump_raw_ok()
kprobes: Do not expose probe addresses to non-CAP_SYSLOG
module: Do not expose section addresses to non-CAP_SYSLOG
module: Refactor section attr into bin attribute
kernel: module: Use struct_size() helper
kallsyms: Refactor kallsyms_show_value() to take cred
KVM: x86: Mark CR4.TSD as being possibly owned by the guest
KVM: x86: Inject #GP if guest attempts to toggle CR4.LA57 in 64-bit mode
KVM: x86: bit 8 of non-leaf PDPEs is not reserved
KVM: arm64: Stop clobbering x0 for HVC_SOFT_RESTART
KVM: arm64: Fix definition of PAGE_HYP_DEVICE
ALSA: usb-audio: add quirk for MacroSilicon MS2109
ALSA: hda - let hs_mic be picked ahead of hp_mic
ALSA: opl3: fix infoleak in opl3
mlxsw: spectrum_router: Remove inappropriate usage of WARN_ON()
net: macb: mark device wake capable when "magic-packet" property present
bnxt_en: fix NULL dereference in case SR-IOV configuration fails
cxgb4: fix all-mask IP address comparison
nbd: Fix memory leak in nbd_add_socket
arm64: kgdb: Fix single-step exception handling oops
ALSA: compress: fix partial_drain completion state
net: hns3: fix use-after-free when doing self test
smsc95xx: avoid memory leak in smsc95xx_bind
smsc95xx: check return value of smsc95xx_reset
net: cxgb4: fix return error value in t4_prep_fw
drm/mediatek: Check plane visibility in atomic_update
net: qrtr: Fix an out of bounds read qrtr_endpoint_post()
x86/entry: Increase entry_stack size to a full page
nvme-rdma: assign completion vector correctly
block: release bip in a right way in error path
usb: dwc3: pci: Fix reference count leak in dwc3_pci_resume_work
scsi: mptscsih: Fix read sense data size
ARM: imx6: add missing put_device() call in imx6q_suspend_init()
cifs: update ctime and mtime during truncate
s390/kasan: fix early pgm check handler execution
drm: panel-orientation-quirks: Use generic orientation-data for Acer S1003
drm: panel-orientation-quirks: Add quirk for Asus T101HA panel
i40e: protect ring accesses with READ- and WRITE_ONCE
ixgbe: protect ring accesses with READ- and WRITE_ONCE
spi: spidev: fix a potential use-after-free in spidev_release()
spi: spidev: fix a race between spidev_release and spidev_remove
gpu: host1x: Detach driver on unregister
drm/tegra: hub: Do not enable orphaned window group
ARM: dts: omap4-droid4: Fix spi configuration and increase rate
regmap: fix alignment issue
spi: spi-fsl-dspi: Fix external abort on interrupt in resume or exit paths
spi: spi-fsl-dspi: use IRQF_SHARED mode to request IRQ
spi: spi-fsl-dspi: Fix lockup if device is removed during SPI transfer
spi: spi-fsl-dspi: Adding shutdown hook
KVM: s390: reduce number of IO pins to 1
ANDROID: GKI: update abi based on padding fields being added
ANDROID: GKI: USB: Gadget: add Android ABI padding to struct usb_gadget
ANDROID: GKI: sound/usb/card.h: add Android ABI padding to struct snd_usb_endpoint
ANDROID: fscrypt: fix DUN contiguity with inline encryption + IV_INO_LBLK_32 policies
ANDROID: f2fs: add back compress inode check
Linux 4.19.132
efi: Make it possible to disable efivar_ssdt entirely
dm zoned: assign max_io_len correctly
irqchip/gic: Atomically update affinity
MIPS: Add missing EHB in mtc0 -> mfc0 sequence for DSPen
cifs: Fix the target file was deleted when rename failed.
SMB3: Honor lease disabling for multiuser mounts
SMB3: Honor persistent/resilient handle flags for multiuser mounts
SMB3: Honor 'seal' flag for multiuser mounts
Revert "ALSA: usb-audio: Improve frames size computation"
nfsd: apply umask on fs without ACL support
i2c: mlxcpld: check correct size of maximum RECV_LEN packet
i2c: algo-pca: Add 0x78 as SCL stuck low status for PCA9665
nvme: fix a crash in nvme_mpath_add_disk
SMB3: Honor 'posix' flag for multiuser mounts
virtio-blk: free vblk-vqs in error path of virtblk_probe()
drm: sun4i: hdmi: Remove extra HPD polling
hwmon: (acpi_power_meter) Fix potential memory leak in acpi_power_meter_add()
hwmon: (max6697) Make sure the OVERT mask is set correctly
cxgb4: fix SGE queue dump destination buffer context
cxgb4: use correct type for all-mask IP address comparison
cxgb4: parse TC-U32 key values and masks natively
cxgb4: use unaligned conversion for fetching timestamp
drm/msm/dpu: fix error return code in dpu_encoder_init
crypto: af_alg - fix use-after-free in af_alg_accept() due to bh_lock_sock()
kgdb: Avoid suspicious RCU usage warning
nvme-multipath: fix deadlock between ana_work and scan_work
nvme-multipath: set bdi capabilities once
s390/debug: avoid kernel warning on too large number of pages
usb: usbtest: fix missing kfree(dev->buf) in usbtest_disconnect
mm/slub: fix stack overruns with SLUB_STATS
mm/slub.c: fix corrupted freechain in deactivate_slab()
usbnet: smsc95xx: Fix use-after-free after removal
EDAC/amd64: Read back the scrub rate PCI register on F15h
mm: fix swap cache node allocation mask
btrfs: fix a block group ref counter leak after failure to remove block group
ANDROID: Update ABI representation for libabigail update
ANDROID: Update the ABI representation
ANDROID: Update the ABI xml representation
ANDROID: GKI: fix ABI diffs caused by GPU heap and pool vmstat additions
ANDROID: sched: consider stune boost margin when computing energy
ANDROID: GKI: move abi files to android/
ANDROID: GKI: drop unneeded "_whitelist" off of symbol filenames
UPSTREAM: binder: fix null deref of proc->context
ANDROID: cpufreq: schedutil: maintain raw cache when next_f is not changed
UPSTREAM: net: bpf: Make bpf_ktime_get_ns() available to non GPL programs
UPSTREAM: usb: musb: mediatek: add reset FADDR to zero in reset interrupt handle
ANDROID: GKI: scripts: Makefile: update the lz4 command (#2)
ANDROID: Update the ABI xml representation
Revert "drm/dsi: Fix byte order of DCS set/get brightness"
Linux 4.19.131
Revert "tty: hvc: Fix data abort due to race in hvc_open"
xfs: add agf freeblocks verify in xfs_agf_verify
dm writecache: add cond_resched to loop in persistent_memory_claim()
dm writecache: correct uncommitted_block when discarding uncommitted entry
NFSv4 fix CLOSE not waiting for direct IO compeletion
pNFS/flexfiles: Fix list corruption if the mirror count changes
SUNRPC: Properly set the @subbuf parameter of xdr_buf_subsegment()
sunrpc: fixed rollback in rpc_gssd_dummy_populate()
Staging: rtl8723bs: prevent buffer overflow in update_sta_support_rate()
drm/radeon: fix fb_div check in ni_init_smc_spll_table()
drm: rcar-du: Fix build error
ring-buffer: Zero out time extend if it is nested and not absolute
tracing: Fix event trigger to accept redundant spaces
arm64: perf: Report the PC value in REGS_ABI_32 mode
ocfs2: fix panic on nfs server over ocfs2
ocfs2: fix value of OCFS2_INVALID_SLOT
ocfs2: load global_inode_alloc
ocfs2: avoid inode removal while nfsd is accessing it
mm/slab: use memzero_explicit() in kzfree()
btrfs: fix failure of RWF_NOWAIT write into prealloc extent beyond eof
btrfs: fix data block group relocation failure due to concurrent scrub
x86/asm/64: Align start of __clear_user() loop to 16-bytes
KVM: nVMX: Plumb L2 GPA through to PML emulation
KVM: X86: Fix MSR range of APIC registers in X2APIC mode
erofs: fix partially uninitialized misuse in z_erofs_onlinepage_fixup
ACPI: sysfs: Fix pm_profile_attr type
ALSA: hda/realtek - Add quirk for MSI GE63 laptop
ALSA: hda: Add NVIDIA codec IDs 9a & 9d through a0 to patch table
RISC-V: Don't allow write+exec only page mapping request in mmap
blktrace: break out of blktrace setup on concurrent calls
kbuild: improve cc-option to clean up all temporary files
arm64: sve: Fix build failure when ARM64_SVE=y and SYSCTL=n
s390/vdso: fix vDSO clock_getres()
s390/ptrace: fix setting syscall number
net: alx: fix race condition in alx_remove
ibmvnic: Harden device login requests
hwrng: ks-sa - Fix runtime PM imbalance on error
riscv/atomic: Fix sign extension for RV64I
drm/amd/display: Use kfree() to free rgb_user in calculate_user_regamma_ramp()
ata/libata: Fix usage of page address by page_address in ata_scsi_mode_select_xlat function
sata_rcar: handle pm_runtime_get_sync failure cases
sched/core: Fix PI boosting between RT and DEADLINE tasks
sched/deadline: Initialize ->dl_boosted
i2c: core: check returned size of emulated smbus block read
i2c: fsi: Fix the port number field in status register
net: bcmgenet: use hardware padding of runt frames
netfilter: ipset: fix unaligned atomic access
usb: gadget: udc: Potential Oops in error handling code
ARM: imx5: add missing put_device() call in imx_suspend_alloc_ocram()
cxgb4: move handling L2T ARP failures to caller
net: qed: fix excessive QM ILT lines consumption
net: qed: fix NVMe login fails over VFs
net: qed: fix left elements count calculation
RDMA/mad: Fix possible memory leak in ib_mad_post_receive_mads()
ASoC: rockchip: Fix a reference count leak.
RDMA/cma: Protect bind_list and listen_list while finding matching cm id
RDMA/qedr: Fix KASAN: use-after-free in ucma_event_handler+0x532
rxrpc: Fix handling of rwind from an ACK packet
ARM: dts: NSP: Correct FA2 mailbox node
regmap: Fix memory leak from regmap_register_patch
x86/resctrl: Fix a NULL vs IS_ERR() static checker warning in rdt_cdp_peer_get()
ARM: dts: Fix duovero smsc interrupt for suspend
ASoC: fsl_ssi: Fix bclk calculation for mono channel
regualtor: pfuze100: correct sw1a/sw2 on pfuze3000
efi/esrt: Fix reference count leak in esre_create_sysfs_entry.
ASoC: q6asm: handle EOS correctly
xfrm: Fix double ESP trailer insertion in IPsec crypto offload.
cifs/smb3: Fix data inconsistent when zero file range
cifs/smb3: Fix data inconsistent when punch hole
IB/mad: Fix use after free when destroying MAD agent
loop: replace kill_bdev with invalidate_bdev
cdc-acm: Add DISABLE_ECHO quirk for Microchip/SMSC chip
xhci: Return if xHCI doesn't support LPM
xhci: Fix enumeration issue when setting max packet size for FS devices.
xhci: Fix incorrect EP_STATE_MASK
scsi: zfcp: Fix panic on ERP timeout for previously dismissed ERP action
ALSA: usb-audio: Fix OOB access of mixer element list
ALSA: usb-audio: add quirk for Samsung USBC Headset (AKG)
ALSA: usb-audio: add quirk for Denon DCD-1500RE
usb: typec: tcpci_rt1711h: avoid screaming irq causing boot hangs
usb: host: ehci-exynos: Fix error check in exynos_ehci_probe()
xhci: Poll for U0 after disabling USB2 LPM
usb: host: xhci-mtk: avoid runtime suspend when removing hcd
USB: ehci: reopen solution for Synopsys HC bug
usb: add USB_QUIRK_DELAY_INIT for Logitech C922
usb: dwc2: Postponed gadget registration to the udc class driver
USB: ohci-sm501: Add missed iounmap() in remove
net: core: reduce recursion limit value
net: Do not clear the sock TX queue in sk_set_socket()
net: Fix the arp error in some cases
sch_cake: don't call diffserv parsing code when it is not needed
tcp_cubic: fix spurious HYSTART_DELAY exit upon drop in min RTT
sch_cake: fix a few style nits
sch_cake: don't try to reallocate or unshare skb unconditionally
ip_tunnel: fix use-after-free in ip_tunnel_lookup()
net: phy: Check harder for errors in get_phy_id()
ip6_gre: fix use-after-free in ip6gre_tunnel_lookup()
tg3: driver sleeps indefinitely when EEH errors exceed eeh_max_freezes
tcp: grow window for OOO packets only for SACK flows
tcp: don't ignore ECN CWR on pure ACK
sctp: Don't advertise IPv4 addresses if ipv6only is set on the socket
rxrpc: Fix notification call on completion of discarded calls
rocker: fix incorrect error handling in dma_rings_init
net: usb: ax88179_178a: fix packet alignment padding
net: increment xmit_recursion level in dev_direct_xmit()
net: use correct this_cpu primitive in dev_recursion_level
net: place xmit recursion in softnet data
net: fix memleak in register_netdevice()
net: bridge: enfore alignment for ethernet address
mld: fix memory leak in ipv6_mc_destroy_dev()
ibmveth: Fix max MTU limit
apparmor: don't try to replace stale label in ptraceme check
ALSA: hda/realtek - Enable micmute LED on and HP system
ALSA: hda/realtek: Enable mute LED on an HP system
ALSA: hda/realtek - Enable the headset of ASUS B9450FA with ALC294
fix a braino in "sparc32: fix register window handling in genregs32_[gs]et()"
i2c: tegra: Fix Maximum transfer size
i2c: tegra: Add missing kerneldoc for some fields
i2c: tegra: Cleanup kerneldoc comments
EDAC/amd64: Add Family 17h Model 30h PCI IDs
net: sched: export __netdev_watchdog_up()
net: bcmgenet: remove HFB_CTRL access
mtd: rawnand: marvell: Fix the condition on a return code
fanotify: fix ignore mask logic for events on child and on dir
block/bio-integrity: don't free 'buf' if bio_integrity_add_page() failed
net: be more gentle about silly gso requests coming from user
ANDROID: lib/vdso: do not update timespec if clock_getres() fails
Revert "ANDROID: fscrypt: add key removal notifier chain"
ANDROID: update the ABI xml and qcom whitelist
ANDROID: fs: export vfs_{read|write}
ANDROID: GKI: update abi definitions now that sdcardfs is gone
Revert "ANDROID: sdcardfs: Enable modular sdcardfs"
Revert "ANDROID: vfs: Add setattr2 for filesystems with per mount permissions"
Revert "ANDROID: vfs: fix export symbol type"
Revert "ANDROID: vfs: Add permission2 for filesystems with per mount permissions"
Revert "ANDROID: vfs: fix export symbol types"
Revert "ANDROID: vfs: add d_canonical_path for stacked filesystem support"
Revert "ANDROID: fs: Restore vfs_path_lookup() export"
ANDROID: sdcardfs: remove sdcardfs from system
Revert "ALSA: usb-audio: Improve frames size computation"
ANDROID: Makefile: append BUILD_NUMBER to version string when defined
ANDROID: GKI: Update ABI for incremental fs
ANDROID: GKI: Update cuttlefish whitelist
ANDROID: GKI: Disable INCREMENTAL_FS on x86 too
ANDROID: cpufreq: schedutil: drop cache when update skipped due to rate limit
Linux 4.19.130
KVM: x86/mmu: Set mmio_value to '0' if reserved #PF can't be generated
kvm: x86: Fix reserved bits related calculation errors caused by MKTME
kvm: x86: Move kvm_set_mmio_spte_mask() from x86.c to mmu.c
md: add feature flag MD_FEATURE_RAID0_LAYOUT
Revert "dpaa_eth: fix usage as DSA master, try 3"
net: core: device_rename: Use rwsem instead of a seqcount
sched/rt, net: Use CONFIG_PREEMPTION.patch
kretprobe: Prevent triggering kretprobe from within kprobe_flush_task
net: octeon: mgmt: Repair filling of RX ring
e1000e: Do not wake up the system via WOL if device wakeup is disabled
kprobes: Fix to protect kick_kprobe_optimizer() by kprobe_mutex
crypto: algboss - don't wait during notifier callback
crypto: algif_skcipher - Cap recv SG list at ctx->used
drm/i915/icl+: Fix hotplug interrupt disabling after storm detection
drm/i915: Whitelist context-local timestamp in the gen9 cmdparser
s390: fix syscall_get_error for compat processes
mtd: rawnand: tmio: Fix the probe error path
mtd: rawnand: mtk: Fix the probe error path
mtd: rawnand: plat_nand: Fix the probe error path
mtd: rawnand: socrates: Fix the probe error path
mtd: rawnand: oxnas: Fix the probe error path
mtd: rawnand: oxnas: Add of_node_put()
mtd: rawnand: orion: Fix the probe error path
mtd: rawnand: xway: Fix the probe error path
mtd: rawnand: sharpsl: Fix the probe error path
mtd: rawnand: diskonchip: Fix the probe error path
mtd: rawnand: Pass a nand_chip object to nand_release()
mtd: rawnand: Pass a nand_chip object to nand_scan()
block: nr_sects_write(): Disable preemption on seqcount write
x86/boot/compressed: Relax sed symbol type regex for LLVM ld.lld
drm/dp_mst: Increase ACT retry timeout to 3s
ext4: avoid race conditions when remounting with options that change dax
ext4: fix partial cluster initialization when splitting extent
selinux: fix double free
drm/amdgpu: Replace invalid device ID with a valid device ID
drm/qxl: Use correct notify port address when creating cursor ring
drm/dp_mst: Reformat drm_dp_check_act_status() a bit
drm: encoder_slave: fix refcouting error for modules
libata: Use per port sync for detach
arm64: hw_breakpoint: Don't invoke overflow handler on uaccess watchpoints
block: Fix use-after-free in blkdev_get()
afs: afs_write_end() should change i_size under the right lock
afs: Fix non-setting of mtime when writing into mmap
bcache: fix potential deadlock problem in btree_gc_coalesce
ext4: stop overwrite the errcode in ext4_setup_super
perf report: Fix NULL pointer dereference in hists__fprintf_nr_sample_events()
usb/ehci-platform: Set PM runtime as active on resume
usb: host: ehci-platform: add a quirk to avoid stuck
usb/xhci-plat: Set PM runtime as active on resume
xdp: Fix xsk_generic_xmit errno
net/filter: Permit reading NET in load_bytes_relative when MAC not set
x86/idt: Keep spurious entries unset in system_vectors
scsi: acornscsi: Fix an error handling path in acornscsi_probe()
drm/sun4i: hdmi ddc clk: Fix size of m divider
ASoC: rt5645: Add platform-data for Asus T101HA
ASoC: Intel: bytcr_rt5640: Add quirk for Toshiba Encore WT10-A tablet
ASoC: core: only convert non DPCM link to DPCM link
afs: Fix memory leak in afs_put_sysnames()
selftests/net: in timestamping, strncpy needs to preserve null byte
drivers/perf: hisi: Fix wrong value for all counters enable
NTB: ntb_test: Fix bug when counting remote files
NTB: perf: Fix race condition when run with ntb_test
NTB: perf: Fix support for hardware that doesn't have port numbers
NTB: perf: Don't require one more memory window than number of peers
NTB: Revert the change to use the NTB device dev for DMA allocations
NTB: ntb_tool: reading the link file should not end in a NULL byte
ntb_tool: pass correct struct device to dma_alloc_coherent
ntb_perf: pass correct struct device to dma_alloc_coherent
gfs2: fix use-after-free on transaction ail lists
blktrace: fix endianness for blk_log_remap()
blktrace: fix endianness in get_pdu_int()
blktrace: use errno instead of bi_status
selftests/vm/pkeys: fix alloc_random_pkey() to make it really random
elfnote: mark all .note sections SHF_ALLOC
include/linux/bitops.h: avoid clang shift-count-overflow warnings
lib/zlib: remove outdated and incorrect pre-increment optimization
geneve: change from tx_error to tx_dropped on missing metadata
crypto: omap-sham - add proper load balancing support for multicore
pinctrl: freescale: imx: Fix an error handling path in 'imx_pinctrl_probe()'
pinctrl: imxl: Fix an error handling path in 'imx1_pinctrl_core_probe()'
scsi: ufs: Don't update urgent bkops level when toggling auto bkops
scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj
gfs2: Allow lock_nolock mount to specify jid=X
openrisc: Fix issue with argument clobbering for clone/fork
rxrpc: Adjust /proc/net/rxrpc/calls to display call->debug_id not user_ID
vfio/mdev: Fix reference count leak in add_mdev_supported_type
ASoC: fsl_asrc_dma: Fix dma_chan leak when config DMA channel failed
extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()'
powerpc/4xx: Don't unmap NULL mbase
of: Fix a refcounting bug in __of_attach_node_sysfs()
NFSv4.1 fix rpc_call_done assignment for BIND_CONN_TO_SESSION
net: sunrpc: Fix off-by-one issues in 'rpc_ntop6'
clk: sprd: return correct type of value for _sprd_pll_recalc_rate
KVM: PPC: Book3S HV: Ignore kmemleak false positives
scsi: ufs-qcom: Fix scheduling while atomic issue
clk: bcm2835: Fix return type of bcm2835_register_gate
scsi: target: tcmu: Fix a use after free in tcmu_check_expired_queue_cmd()
ASoC: fix incomplete error-handling in img_i2s_in_probe.
x86/apic: Make TSC deadline timer detection message visible
RDMA/iw_cxgb4: cleanup device debugfs entries on ULD remove
usb: gadget: Fix issue with config_ep_by_speed function
usb: gadget: fix potential double-free in m66592_probe.
usb: gadget: lpc32xx_udc: don't dereference ep pointer before null check
USB: gadget: udc: s3c2410_udc: Remove pointless NULL check in s3c2410_udc_nuke
usb: dwc2: gadget: move gadget resume after the core is in L0 state
watchdog: da9062: No need to ping manually before setting timeout
IB/cma: Fix ports memory leak in cma_configfs
PCI: dwc: Fix inner MSI IRQ domain registration
PCI/PTM: Inherit Switch Downstream Port PTM settings from Upstream Port
dm zoned: return NULL if dmz_get_zone_for_reclaim() fails to find a zone
powerpc/64s/pgtable: fix an undefined behaviour
arm64: tegra: Fix ethernet phy-mode for Jetson Xavier
scsi: target: tcmu: Userspace must not complete queued commands
clk: samsung: exynos5433: Add IGNORE_UNUSED flag to sclk_i2s1
fpga: dfl: afu: Corrected error handling levels
tty: n_gsm: Fix bogus i++ in gsm_data_kick
USB: host: ehci-mxc: Add error handling in ehci_mxc_drv_probe()
ASoC: Intel: bytcr_rt5640: Add quirk for Toshiba Encore WT8-A tablet
drm/msm/mdp5: Fix mdp5_init error path for failed mdp5_kms allocation
usb/ohci-platform: Fix a warning when hibernating
vfio-pci: Mask cap zero
powerpc/ps3: Fix kexec shutdown hang
powerpc/pseries/ras: Fix FWNMI_VALID off by one
ipmi: use vzalloc instead of kmalloc for user creation
HID: Add quirks for Trust Panora Graphic Tablet
tty: n_gsm: Fix waking up upper tty layer when room available
tty: n_gsm: Fix SOF skipping
powerpc/64: Don't initialise init_task->thread.regs
PCI: Fix pci_register_host_bridge() device_register() error handling
clk: ti: composite: fix memory leak
dlm: remove BUG() before panic()
pinctrl: rockchip: fix memleak in rockchip_dt_node_to_map
scsi: mpt3sas: Fix double free warnings
power: supply: smb347-charger: IRQSTAT_D is volatile
power: supply: lp8788: Fix an error handling path in 'lp8788_charger_probe()'
scsi: qla2xxx: Fix warning after FC target reset
PCI/ASPM: Allow ASPM on links to PCIe-to-PCI/PCI-X Bridges
PCI: rcar: Fix incorrect programming of OB windows
drivers: base: Fix NULL pointer exception in __platform_driver_probe() if a driver developer is foolish
serial: amba-pl011: Make sure we initialize the port.lock spinlock
i2c: pxa: fix i2c_pxa_scream_blue_murder() debug output
PCI: v3-semi: Fix a memory leak in v3_pci_probe() error handling paths
staging: sm750fb: add missing case while setting FB_VISUAL
usb: dwc3: gadget: Properly handle failed kick_transfer
thermal/drivers/ti-soc-thermal: Avoid dereferencing ERR_PTR
slimbus: ngd: get drvdata from correct device
tty: hvc: Fix data abort due to race in hvc_open
s390/qdio: put thinint indicator after early error
ALSA: usb-audio: Fix racy list management in output queue
ALSA: usb-audio: Improve frames size computation
staging: gasket: Fix mapping refcnt leak when register/store fails
staging: gasket: Fix mapping refcnt leak when put attribute fails
firmware: qcom_scm: fix bogous abuse of dma-direct internals
pinctrl: rza1: Fix wrong array assignment of rza1l_swio_entries
scsi: qedf: Fix crash when MFW calls for protocol stats while function is still probing
gpio: dwapb: Append MODULE_ALIAS for platform driver
ARM: dts: sun8i-h2-plus-bananapi-m2-zero: Fix led polarity
scsi: qedi: Do not flush offload work if ARP not resolved
arm64: dts: mt8173: fix unit name warnings
staging: greybus: fix a missing-check bug in gb_lights_light_config()
x86/purgatory: Disable various profiling and sanitizing options
apparmor: fix nnp subset test for unconfined
scsi: ibmvscsi: Don't send host info in adapter info MAD after LPM
scsi: sr: Fix sr_probe() missing deallocate of device minor
ASoC: meson: add missing free_irq() in error path
apparmor: check/put label on apparmor_sk_clone_security()
apparmor: fix introspection of of task mode for unconfined tasks
mksysmap: Fix the mismatch of '.L' symbols in System.map
NTB: Fix the default port and peer numbers for legacy drivers
NTB: ntb_pingpong: Choose doorbells based on port number
yam: fix possible memory leak in yam_init_driver
pwm: img: Call pm_runtime_put() in pm_runtime_get_sync() failed case
powerpc/crashkernel: Take "mem=" option into account
PCI: vmd: Filter resource type bits from shadow register
nfsd: Fix svc_xprt refcnt leak when setup callback client failed
powerpc/perf/hv-24x7: Fix inconsistent output values incase multiple hv-24x7 events run
clk: clk-flexgen: fix clock-critical handling
scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event
mfd: wm8994: Fix driver operation if loaded as modules
gpio: dwapb: Call acpi_gpiochip_free_interrupts() on GPIO chip de-registration
m68k/PCI: Fix a memory leak in an error handling path
RDMA/mlx5: Add init2init as a modify command
vfio/pci: fix memory leaks in alloc_perm_bits()
ps3disk: use the default segment boundary
PCI: aardvark: Don't blindly enable ASPM L0s and don't write to read-only register
dm mpath: switch paths in dm_blk_ioctl() code path
serial: 8250: Fix max baud limit in generic 8250 port
usblp: poison URBs upon disconnect
clk: samsung: Mark top ISP and CAM clocks on Exynos542x as critical
i2c: pxa: clear all master action bits in i2c_pxa_stop_message()
f2fs: report delalloc reserve as non-free in statfs for project quota
iio: bmp280: fix compensation of humidity
scsi: qla2xxx: Fix issue with adapter's stopping state
PCI: Allow pci_resize_resource() for devices on root bus
ALSA: isa/wavefront: prevent out of bounds write in ioctl
ALSA: hda/realtek - Introduce polarity for micmute LED GPIO
scsi: qedi: Check for buffer overflow in qedi_set_path()
ARM: integrator: Add some Kconfig selections
ASoC: davinci-mcasp: Fix dma_chan refcnt leak when getting dma type
backlight: lp855x: Ensure regulators are disabled on probe failure
clk: qcom: msm8916: Fix the address location of pll->config_reg
remoteproc: Fix IDR initialisation in rproc_alloc()
iio: pressure: bmp280: Tolerate IRQ before registering
i2c: piix4: Detect secondary SMBus controller on AMD AM4 chipsets
ASoC: tegra: tegra_wm8903: Support nvidia, headset property
clk: sunxi: Fix incorrect usage of round_down()
power: supply: bq24257_charger: Replace depends on REGMAP_I2C with select
ANDROID: ext4: Optimize match for casefolded encrypted dirs
ANDROID: ext4: Handle casefolding with encryption
ANDROID: extcon: Remove redundant EXPORT_SYMBOL_GPL
ANDROID: update the ABI xml representation
ANDROID: GKI: cfg80211: add ABI changes for CONFIG_NL80211_TESTMODE
ANDROID: gki_defconfig: x86: Enable KERNEL_LZ4
ANDROID: GKI: scripts: Makefile: update the lz4 command
FROMLIST: f2fs: fix use-after-free when accessing bio->bi_crypt_context
UPSTREAM: fdt: Update CRC check for rng-seed
ANDROID: GKI: Update ABI for incremental fs
ANDROID: GKI: Update whitelist and defconfig for incfs
ANDROID: Use depmod from the hermetic toolchain
Linux 4.19.129
perf symbols: Fix debuginfo search for Ubuntu
perf probe: Check address correctness by map instead of _etext
perf probe: Fix to check blacklist address correctly
perf probe: Do not show the skipped events
w1: omap-hdq: cleanup to add missing newline for some dev_dbg
mtd: rawnand: pasemi: Fix the probe error path
mtd: rawnand: brcmnand: fix hamming oob layout
sunrpc: clean up properly in gss_mech_unregister()
sunrpc: svcauth_gss_register_pseudoflavor must reject duplicate registrations.
kbuild: force to build vmlinux if CONFIG_MODVERSION=y
powerpc/64s: Save FSCR to init_task.thread.fscr after feature init
powerpc/64s: Don't let DT CPU features set FSCR_DSCR
drivers/macintosh: Fix memleak in windfarm_pm112 driver
ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on Aries
ARM: dts: at91: sama5d2_ptc_ek: fix vbus pin
ARM: dts: exynos: Fix GPIO polarity for thr GalaxyS3 CM36651 sensor's bus
ARM: tegra: Correct PL310 Auxiliary Control Register initialization
kernel/cpu_pm: Fix uninitted local in cpu_pm
alpha: fix memory barriers so that they conform to the specification
dm crypt: avoid truncating the logical block size
sparc64: fix misuses of access_process_vm() in genregs32_[sg]et()
sparc32: fix register window handling in genregs32_[gs]et()
gnss: sirf: fix error return code in sirf_probe()
pinctrl: samsung: Save/restore eint_mask over suspend for EINT_TYPE GPIOs
pinctrl: samsung: Correct setting of eint wakeup mask on s5pv210
power: vexpress: add suppress_bind_attrs to true
igb: Report speed and duplex as unknown when device is runtime suspended
media: ov5640: fix use of destroyed mutex
b43_legacy: Fix connection problem with WPA3
b43: Fix connection problem with WPA3
b43legacy: Fix case where channel status is corrupted
Bluetooth: hci_bcm: fix freeing not-requested IRQ
media: go7007: fix a miss of snd_card_free
carl9170: remove P2P_GO support
e1000e: Relax condition to trigger reset for ME workaround
e1000e: Disable TSO for buffer overrun workaround
PCI: Program MPS for RCiEP devices
ima: Call ima_calc_boot_aggregate() in ima_eventdigest_init()
btrfs: fix wrong file range cleanup after an error filling dealloc range
btrfs: fix error handling when submitting direct I/O bio
PCI: Generalize multi-function power dependency device links
PCI: Unify ACS quirk desired vs provided checking
PCI: Make ACS quirk implementations more uniform
serial: 8250_pci: Move Pericom IDs to pci_ids.h
PCI: Add Loongson vendor ID
x86/amd_nb: Add Family 19h PCI IDs
PCI: vmd: Add device id for VMD device 8086:9A0B
PCI: Add Amazon's Annapurna Labs vendor ID
PCI: Add Genesys Logic, Inc. Vendor ID
ALSA: lx6464es - add support for LX6464ESe pci express variant
x86/amd_nb: Add PCI device IDs for family 17h, model 70h
PCI: mediatek: Add controller support for MT7629
PCI: Enable NVIDIA HDA controllers
PCI: Add NVIDIA GPU multi-function power dependencies
PCI: Add Synopsys endpoint EDDA Device ID
misc: pci_endpoint_test: Add support to test PCI EP in AM654x
misc: pci_endpoint_test: Add the layerscape EP device support
PCI: Move Rohm Vendor ID to generic list
PCI: Move Synopsys HAPS platform device IDs
PCI: add USR vendor id and use it in r8169 and w6692 driver
x86/amd_nb: Add PCI device IDs for family 17h, model 30h
hwmon/k10temp, x86/amd_nb: Consolidate shared device IDs
pci:ipmi: Move IPMI PCI class id defines to pci_ids.h
PCI: Remove unused NFP32xx IDs
PCI: Add ACS quirk for Intel Root Complex Integrated Endpoints
PCI: Add ACS quirk for iProc PAXB
PCI: Avoid FLR for AMD Starship USB 3.0
PCI: Avoid FLR for AMD Matisse HD Audio & USB 3.0
PCI: Avoid Pericom USB controller OHCI/EHCI PME# defect
ext4: fix race between ext4_sync_parent() and rename()
ext4: fix error pointer dereference
ext4: fix EXT_MAX_EXTENT/INDEX to check for zeroed eh_max
evm: Fix possible memory leak in evm_calc_hmac_or_hash()
ima: Directly assign the ima_default_policy pointer to ima_rules
ima: Fix ima digest hash table key calculation
mm: initialize deferred pages with interrupts enabled
mm: thp: make the THP mapcount atomic against __split_huge_pmd_locked()
btrfs: send: emit file capabilities after chown
btrfs: include non-missing as a qualifier for the latest_bdev
string.h: fix incompatibility between FORTIFY_SOURCE and KASAN
platform/x86: intel-vbtn: Only blacklist SW_TABLET_MODE on the 9 / "Laptop" chasis-type
platform/x86: intel-hid: Add a quirk to support HP Spectre X2 (2015)
platform/x86: hp-wmi: Convert simple_strtoul() to kstrtou32()
cpuidle: Fix three reference count leaks
spi: dw: Return any value retrieved from the dma_transfer callback
mmc: sdhci-esdhc-imx: fix the mask for tuning start point
ixgbe: fix signed-integer-overflow warning
mmc: via-sdmmc: Respect the cmd->busy_timeout from the mmc core
staging: greybus: sdio: Respect the cmd->busy_timeout from the mmc core
mmc: sdhci-msm: Set SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 quirk
bcache: fix refcount underflow in bcache_device_free()
MIPS: Fix IRQ tracing when call handle_fpe() and handle_msa_fpe()
PCI: Don't disable decoding when mmio_always_on is set
macvlan: Skip loopback packets in RX handler
btrfs: qgroup: mark qgroup inconsistent if we're inherting snapshot to a new qgroup
m68k: mac: Don't call via_flush_cache() on Mac IIfx
x86/mm: Stop printing BRK addresses
crypto: stm32/crc32 - fix multi-instance
crypto: stm32/crc32 - fix run-time self test issue.
crypto: stm32/crc32 - fix ext4 chksum BUG_ON()
mips: Add udelay lpj numbers adjustment
mips: MAAR: Use more precise address mask
x86/boot: Correct relocation destination on old linkers
mwifiex: Fix memory corruption in dump_station
rtlwifi: Fix a double free in _rtl_usb_tx_urb_setup()
net/mlx5e: IPoIB, Drop multicast packets that this interface sent
veth: Adjust hard_start offset on redirect XDP frames
md: don't flush workqueue unconditionally in md_open
mt76: avoid rx reorder buffer overflow
net: qed*: Reduce RX and TX default ring count when running inside kdump kernel
wcn36xx: Fix error handling path in 'wcn36xx_probe()'
ath10k: Remove msdu from idr when management pkt send fails
nvme: refine the Qemu Identify CNS quirk
platform/x86: intel-vbtn: Also handle tablet-mode switch on "Detachable" and "Portable" chassis-types
platform/x86: intel-vbtn: Do not advertise switches to userspace if they are not there
platform/x86: intel-vbtn: Split keymap into buttons and switches parts
platform/x86: intel-vbtn: Use acpi_evaluate_integer()
xfs: fix duplicate verification from xfs_qm_dqflush()
xfs: reset buffer write failure state on successful completion
kgdb: Fix spurious true from in_dbg_master()
mips: cm: Fix an invalid error code of INTVN_*_ERR
MIPS: Truncate link address into 32bit for 32bit kernel
Crypto/chcr: fix for ccm(aes) failed test
xfs: clean up the error handling in xfs_swap_extents
powerpc/spufs: fix copy_to_user while atomic
net: allwinner: Fix use correct return type for ndo_start_xmit()
media: cec: silence shift wrapping warning in __cec_s_log_addrs()
net: lpc-enet: fix error return code in lpc_mii_init()
drivers/perf: hisi: Fix typo in events attribute array
sched/core: Fix illegal RCU from offline CPUs
exit: Move preemption fixup up, move blocking operations down
lib/mpi: Fix 64-bit MIPS build with Clang
net: bcmgenet: set Rx mode before starting netif
selftests/bpf: Fix memory leak in extract_build_id()
netfilter: nft_nat: return EOPNOTSUPP if type or flags are not supported
audit: fix a net reference leak in audit_list_rules_send()
Bluetooth: btbcm: Add 2 missing models to subver tables
MIPS: Make sparse_init() using top-down allocation
media: platform: fcp: Set appropriate DMA parameters
media: dvb: return -EREMOTEIO on i2c transfer failure.
audit: fix a net reference leak in audit_send_reply()
dt-bindings: display: mediatek: control dpi pins mode to avoid leakage
e1000: Distribute switch variables for initialization
tools api fs: Make xxx__mountpoint() more scalable
brcmfmac: fix wrong location to get firmware feature
staging: android: ion: use vmap instead of vm_map_ram
net: vmxnet3: fix possible buffer overflow caused by bad DMA value in vmxnet3_get_rss()
x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
spi: dw: Fix Rx-only DMA transfers
mmc: meson-mx-sdio: trigger a soft reset after a timeout or CRC error
batman-adv: Revert "disable ethtool link speed detection when auto negotiation off"
ARM: 8978/1: mm: make act_mm() respect THREAD_SIZE
btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums
clocksource: dw_apb_timer_of: Fix missing clockevent timers
clocksource: dw_apb_timer: Make CPU-affiliation being optional
spi: dw: Enable interrupts in accordance with DMA xfer mode
kgdb: Prevent infinite recursive entries to the debugger
kgdb: Disable WARN_CONSOLE_UNLOCKED for all kgdb
Bluetooth: Add SCO fallback for invalid LMP parameters error
MIPS: Loongson: Build ATI Radeon GPU driver as module
ixgbe: Fix XDP redirect on archs with PAGE_SIZE above 4K
arm64: insn: Fix two bugs in encoding 32-bit logical immediates
spi: dw: Zero DMA Tx and Rx configurations on stack
arm64: cacheflush: Fix KGDB trap detection
efi/libstub/x86: Work around LLVM ELF quirk build regression
net: ena: fix error returning in ena_com_get_hash_function()
net: atlantic: make hw_get_regs optional
spi: pxa2xx: Apply CS clk quirk to BXT
objtool: Ignore empty alternatives
media: si2157: Better check for running tuner in init
crypto: ccp -- don't "select" CONFIG_DMADEVICES
drm: bridge: adv7511: Extend list of audio sample rates
ACPI: GED: use correct trigger type field in _Exx / _Lxx handling
KVM: arm64: Synchronize sysreg state on injecting an AArch32 exception
xen/pvcalls-back: test for errors when calling backend_connect()
mmc: sdio: Fix potential NULL pointer error in mmc_sdio_init_card()
ARM: dts: at91: sama5d2_ptc_ek: fix sdmmc0 node description
mmc: sdhci-msm: Clear tuning done flag while hs400 tuning
agp/intel: Reinforce the barrier after GTT updates
perf: Add cond_resched() to task_function_call()
fat: don't allow to mount if the FAT length == 0
mm/slub: fix a memory leak in sysfs_slab_add()
drm/vkms: Hold gem object while still in-use
Smack: slab-out-of-bounds in vsscanf
ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb
ath9x: Fix stack-out-of-bounds Write in ath9k_hif_usb_rx_cb
ath9k: Fix use-after-free Write in ath9k_htc_rx_msg
ath9k: Fix use-after-free Read in ath9k_wmi_ctrl_rx
scsi: megaraid_sas: TM command refire leads to controller firmware crash
KVM: arm64: Make vcpu_cp1x() work on Big Endian hosts
KVM: MIPS: Fix VPN2_MASK definition for variable cpu_vmbits
KVM: MIPS: Define KVM_ENTRYHI_ASID to cpu_asid_mask(&boot_cpu_data)
KVM: nVMX: Consult only the "basic" exit reason when routing nested exit
KVM: nSVM: leave ASID aside in copy_vmcb_control_area
KVM: nSVM: fix condition for filtering async PF
video: fbdev: w100fb: Fix a potential double free.
proc: Use new_inode not new_inode_pseudo
ovl: initialize error in ovl_copy_xattr
selftests/net: in rxtimestamp getopt_long needs terminating null entry
crypto: virtio: Fix dest length calculation in __virtio_crypto_skcipher_do_req()
crypto: virtio: Fix src/dst scatterlist calculation in __virtio_crypto_skcipher_do_req()
crypto: virtio: Fix use-after-free in virtio_crypto_skcipher_finalize_req()
spi: pxa2xx: Fix runtime PM ref imbalance on probe error
spi: pxa2xx: Balance runtime PM enable/disable on error
spi: bcm2835: Fix controller unregister order
spi: pxa2xx: Fix controller unregister order
spi: Fix controller unregister order
spi: No need to assign dummy value in spi_unregister_controller()
x86/speculation: PR_SPEC_FORCE_DISABLE enforcement for indirect branches.
x86/speculation: Avoid force-disabling IBPB based on STIBP and enhanced IBRS.
x86/speculation: Add support for STIBP always-on preferred mode
x86/speculation: Change misspelled STIPB to STIBP
KVM: x86: only do L1TF workaround on affected processors
KVM: x86/mmu: Consolidate "is MMIO SPTE" code
kvm: x86: Fix L1TF mitigation for shadow MMU
KVM: x86: Fix APIC page invalidation race
x86/{mce,mm}: Unmap the entire page if the whole page is affected and poisoned
ALSA: pcm: disallow linking stream to itself
crypto: cavium/nitrox - Fix 'nitrox_get_first_device()' when ndevlist is fully iterated
PM: runtime: clk: Fix clk_pm_runtime_get() error path
spi: bcm-qspi: when tx/rx buffer is NULL set to 0
spi: bcm2835aux: Fix controller unregister order
spi: dw: Fix controller unregister order
nilfs2: fix null pointer dereference at nilfs_segctor_do_construct()
cgroup, blkcg: Prepare some symbols for module and !CONFIG_CGROUP usages
ACPI: PM: Avoid using power resources if there are none for D0
ACPI: GED: add support for _Exx / _Lxx handler methods
ACPI: CPPC: Fix reference count leak in acpi_cppc_processor_probe()
ACPI: sysfs: Fix reference count leak in acpi_sysfs_add_hotplug_profile()
ALSA: usb-audio: Add vendor, product and profile name for HP Thunderbolt Dock
ALSA: usb-audio: Fix inconsistent card PM state after resume
ALSA: hda/realtek - add a pintbl quirk for several Lenovo machines
ALSA: es1688: Add the missed snd_card_free()
efi/efivars: Add missing kobject_put() in sysfs entry creation error path
x86/reboot/quirks: Add MacBook6,1 reboot quirk
x86/speculation: Prevent rogue cross-process SSBD shutdown
x86/PCI: Mark Intel C620 MROMs as having non-compliant BARs
x86_64: Fix jiffies ODR violation
btrfs: tree-checker: Check level for leaves and nodes
aio: fix async fsync creds
mm: add kvfree_sensitive() for freeing sensitive data objects
perf probe: Accept the instance number of kretprobe event
x86/cpu/amd: Make erratum #1054 a legacy erratum
RDMA/uverbs: Make the event_queue fds return POLLERR when disassociated
ath9k_htc: Silence undersized packet warnings
powerpc/xive: Clear the page tables for the ESB IO mapping
drivers/net/ibmvnic: Update VNIC protocol version reporting
Input: synaptics - add a second working PNP_ID for Lenovo T470s
sched/fair: Don't NUMA balance for kthreads
ARM: 8977/1: ptrace: Fix mask for thumb breakpoint hook
Input: mms114 - fix handling of mms345l
crypto: talitos - fix ECB and CBC algs ivsize
btrfs: Detect unbalanced tree with empty leaf before crashing btree operations
btrfs: merge btrfs_find_device and find_device
lib: Reduce user_access_begin() boundaries in strncpy_from_user() and strnlen_user()
x86: uaccess: Inhibit speculation past access_ok() in user_access_begin()
arch/openrisc: Fix issues with access_ok()
Fix 'acccess_ok()' on alpha and SH
make 'user_access_begin()' do 'access_ok()'
selftests: bpf: fix use of undeclared RET_IF macro
tun: correct header offsets in napi frags mode
vxlan: Avoid infinite loop when suppressing NS messages with invalid options
bridge: Avoid infinite loop when suppressing NS messages with invalid options
net_failover: fixed rollback in net_failover_open()
ipv6: fix IPV6_ADDRFORM operation logic
writeback: Drop I_DIRTY_TIME_EXPIRE
writeback: Fix sync livelock due to b_dirty_time processing
writeback: Avoid skipping inode writeback
writeback: Protect inode->i_io_list with inode->i_lock
Revert "writeback: Avoid skipping inode writeback"
ANDROID: gki_defconfig: increase vbus_draw to 500mA
fscrypt: remove stale definition
fs-verity: remove unnecessary extern keywords
fs-verity: fix all kerneldoc warnings
fscrypt: add support for IV_INO_LBLK_32 policies
fscrypt: make test_dummy_encryption use v2 by default
fscrypt: support test_dummy_encryption=v2
fscrypt: add fscrypt_add_test_dummy_key()
linux/parser.h: add include guards
fscrypt: remove unnecessary extern keywords
fscrypt: name all function parameters
fscrypt: fix all kerneldoc warnings
ANDROID: Update the ABI
ANDROID: GKI: power: power-supply: Add POWER_SUPPLY_PROP_CHARGER_STATUS property
ANDROID: GKI: add dev to usb_gsi_request
ANDROID: GKI: dma-buf: add dent_count to dma_buf
ANDROID: Update the ABI xml and whitelist
ANDROID: GKI: update whitelist
ANDROID: extcon: Export symbol of `extcon_get_edev_name`
ANDROID: kbuild: merge more sections with LTO
UPSTREAM: timekeeping/vsyscall: Update VDSO data unconditionally
ANDROID: GKI: Revert "genetlink: disallow subscribing to unknown mcast groups"
BACKPORT: usb: musb: Add support for MediaTek musb controller
UPSTREAM: usb: musb: Add musb_clearb/w() interface
UPSTREAM: usb: musb: Add noirq type of dma create interface
UPSTREAM: usb: musb: Add get/set toggle hooks
UPSTREAM: dt-bindings: usb: musb: Add support for MediaTek musb controller
FROMGIT: driver core: Remove unnecessary is_fwnode_dev variable in device_add()
FROMGIT: driver core: Remove check in driver_deferred_probe_force_trigger()
FROMGIT: of: platform: Batch fwnode parsing when adding all top level devices
FROMGIT: BACKPORT: driver core: fw_devlink: Add support for batching fwnode parsing
BACKPORT: driver core: Look for waiting consumers only for a fwnode's primary device
BACKPORT: driver core: Add device links from fwnode only for the primary device
Linux 4.19.128
Revert "net/mlx5: Annotate mutex destroy for root ns"
uprobes: ensure that uprobe->offset and ->ref_ctr_offset are properly aligned
x86/speculation: Add Ivy Bridge to affected list
x86/speculation: Add SRBDS vulnerability and mitigation documentation
x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation
x86/cpu: Add 'table' argument to cpu_matches()
x86/cpu: Add a steppings field to struct x86_cpu_id
nvmem: qfprom: remove incorrect write support
CDC-ACM: heed quirk also in error handling
staging: rtl8712: Fix IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK
tty: hvc_console, fix crashes on parallel open/close
vt: keyboard: avoid signed integer overflow in k_ascii
usb: musb: Fix runtime PM imbalance on error
usb: musb: start session in resume for host port
iio: vcnl4000: Fix i2c swapped word reading.
USB: serial: option: add Telit LE910C1-EUX compositions
USB: serial: usb_wwan: do not resubmit rx urb on fatal errors
USB: serial: qcserial: add DW5816e QDL support
net: check untrusted gso_size at kernel entry
vsock: fix timeout in vsock_accept()
NFC: st21nfca: add missed kfree_skb() in an error path
net: usb: qmi_wwan: add Telit LE910C1-EUX composition
l2tp: do not use inet_hash()/inet_unhash()
l2tp: add sk_family checks to l2tp_validate_socket
devinet: fix memleak in inetdev_init()
Revert "ANDROID: Remove default y on BRIDGE_IGMP_SNOOPING"
ANDROID: Update the ABI xml and whitelist
ANDROID: GKI: update whitelist
ANDROID: arch: arm64: vdso: export the symbols for time()
ANDROID: Incremental fs: Remove dependency on PKCS7_MESSAGE_PARSER
ANDROID: dm-bow: Add block_size option
f2fs: attach IO flags to the missing cases
f2fs: add node_io_flag for bio flags likewise data_io_flag
f2fs: remove unused parameter of f2fs_put_rpages_mapping()
f2fs: handle readonly filesystem in f2fs_ioc_shutdown()
f2fs: avoid utf8_strncasecmp() with unstable name
f2fs: don't return vmalloc() memory from f2fs_kmalloc()
ANDROID: GKI: set CONFIG_BLK_DEV_LOOP_MIN_COUNT to 16
ANDROID: Incremental fs: Cache successful hash calculations
ANDROID: Incremental fs: Fix four error-path bugs
Linux 4.19.127
net: smsc911x: Fix runtime PM imbalance on error
net: ethernet: stmmac: Enable interface clocks on probe for IPQ806x
net/ethernet/freescale: rework quiesce/activate for ucc_geth
null_blk: return error for invalid zone size
s390/mm: fix set_huge_pte_at() for empty ptes
drm/edid: Add Oculus Rift S to non-desktop list
net: bmac: Fix read of MAC address from ROM
x86/mmiotrace: Use cpumask_available() for cpumask_var_t variables
i2c: altera: Fix race between xfer_msg and isr thread
evm: Fix RCU list related warnings
ARC: [plat-eznps]: Restrict to CONFIG_ISA_ARCOMPACT
ARC: Fix ICCM & DCCM runtime size checks
s390/ftrace: save traced function caller
spi: dw: use "smp_mb()" to avoid sending spi data error
powerpc/powernv: Avoid re-registration of imc debugfs directory
scsi: hisi_sas: Check sas_port before using it
drm/i915: fix port checks for MST support on gen >= 11
airo: Fix read overflows sending packets
net: dsa: mt7530: set CPU port to fallback mode
scsi: ufs: Release clock if DMA map fails
mmc: fix compilation of user API
kernel/relay.c: handle alloc_percpu returning NULL in relay_open
p54usb: add AirVasT USB stick device-id
HID: i2c-hid: add Schneider SCL142ALM to descriptor override
HID: sony: Fix for broken buttons on DS3 USB dongles
mm: Fix mremap not considering huge pmd devmap
libnvdimm: Fix endian conversion issues
Revert "cgroup: Add memory barriers to plug cgroup_rstat_updated() race window"
f2fs: fix retry logic in f2fs_write_cache_pages()
ANDROID: Update ABI representation
Linux 4.19.126
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.
crypto: chelsio/chtls: properly set tp->lsndtime
qlcnic: fix missing release in qlcnic_83xx_interrupt_test.
xsk: Add overflow check for u64 division, stored into u32
bnxt_en: Fix accumulation of bp->net_stats_prev.
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 interface: fix oops when deleting a x-netns interface
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
RDMA/core: Fix double destruction of uobject
mmc: core: Fix recursive locking issue in CQE recovery path
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()
IB/ipoib: Fix double free of skb in case of multicast traffic in CM mode
libceph: ignore pool overlay and cache logic on redirects
ALSA: hda/realtek - Add new codec supported for ALC287
ALSA: usb-audio: Quirks for Gigabyte TRX40 Aorus Master onboard audio
exec: Always set cap_ambient in cap_bprm_set_creds
ALSA: usb-audio: mixer: volume quirk for ESS Technology Asus USB DAC
ALSA: hda/realtek - Add a model for Thinkpad T570 without DAC workaround
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: bcm: HR2: Fix PPI interrupt types
ARM: dts: bcm2835-rpi-zero-w: Fix led polarity
ARM: dts/imx6q-bx50v3: Set display interface clock parents
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
ARM: 8970/1: decompressor: increase tag size
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
riscv: stacktrace: Fix undefined reference to `walk_stackframe'
IB/i40iw: Remove bogus call to netdev_master_upper_dev_get()
net: freescale: select CONFIG_FIXED_PHY where needed
usb: gadget: legacy: fix redundant initialization warnings
usb: dwc3: pci: Enable extcon driver for Intel Merrifield
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
ALSA: usb-audio: add mapping for ASRock TRX40 Creator
gpio: tegra: mask GPIO IRQs during IRQ shutdown
ARM: dts: rockchip: fix pinctrl sub nodename for spi in rk322x.dtsi
ARM: dts: rockchip: swap clock-names of gpu nodes
arm64: dts: rockchip: swap interrupts interrupt-names rk3399 gpu node
arm64: dts: rockchip: fix status for &gmac2phy in rk3328-evb.dts
ARM: dts: rockchip: fix phy nodename for rk3228-evb
mlxsw: spectrum: Fix use-after-free of split/unsplit/type_set in case reload fails
net/mlx4_core: fix a memory leak bug.
net: sun: fix missing release regions in cas_init_one().
net/mlx5: Annotate mutex destroy for root ns
net/mlx5e: Update netdev txq on completions during closure
sctp: Start shutdown on association restart if in SHUTDOWN-SENT state and socket is closed
sctp: Don't add the shutdown timer if its already been added
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: qrtr: Fix passing invalid reference to qrtr_local_enqueue()
net/mlx5: Add command entry handling completion
net: ipip: fix wrong address family in init error path
net: inet_csk: Fix so_reuseport bind-address cache in tb->fast*
__netif_receive_skb_core: pass skb by reference
net: dsa: mt7530: fix roaming from DSA user ports
dpaa_eth: fix usage as DSA master, try 3
ax25: fix setsockopt(SO_BINDTODEVICE)
ANDROID: modules: fix lockprove warning
FROMGIT: USB: dummy-hcd: use configurable endpoint naming scheme
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
f2fs: fix wrong discard space
f2fs: compress: don't compress any datas after cp stop
f2fs: remove unneeded return value of __insert_discard_tree()
f2fs: fix wrong value of tracepoint parameter
f2fs: protect new segment allocation in expand_inode_data
f2fs: code cleanup by removing ifdef macro surrounding
writeback: Avoid skipping inode writeback
ANDROID: GKI: Update the ABI
ANDROID: GKI: update whitelist
ANDROID: GKI: support mm_event for FS/IO/UFS path
ANDROID: net: bpf: permit redirect from ingress L3 to egress L2 devices at near max mtu
FROMGIT: driver core: Update device link status correctly for SYNC_STATE_ONLY links
UPSTREAM: driver core: Fix handling of SYNC_STATE_ONLY + STATELESS device links
BACKPORT: driver core: Fix SYNC_STATE_ONLY device link implementation
ANDROID: Bulk update the ABI xml and qcom whitelist
Revert "ANDROID: Incremental fs: Avoid continually recalculating hashes"
f2fs: avoid inifinite loop to wait for flushing node pages at cp_error
f2fs: compress: fix zstd data corruption
f2fs: add compressed/gc data read IO stat
f2fs: fix potential use-after-free issue
f2fs: compress: don't handle non-compressed data in workqueue
f2fs: remove redundant assignment to variable err
f2fs: refactor resize_fs to avoid meta updates in progress
f2fs: use round_up to enhance calculation
f2fs: introduce F2FS_IOC_RESERVE_COMPRESS_BLOCKS
f2fs: Avoid double lock for cp_rwsem during checkpoint
f2fs: report delalloc reserve as non-free in statfs for project quota
f2fs: Fix wrong stub helper update_sit_info
f2fs: compress: let lz4 compressor handle output buffer budget properly
f2fs: remove blk_plugging in block_operations
f2fs: introduce F2FS_IOC_RELEASE_COMPRESS_BLOCKS
f2fs: shrink spinlock coverage
f2fs: correctly fix the parent inode number during fsync()
f2fs: introduce mempool for {,de}compress intermediate page allocation
f2fs: introduce f2fs_bmap_compress()
f2fs: support fiemap on compressed inode
f2fs: support partial truncation on compressed inode
f2fs: remove redundant compress inode check
f2fs: use strcmp() in parse_options()
f2fs: Use the correct style for SPDX License Identifier
Conflicts:
Documentation/devicetree/bindings
Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
Documentation/devicetree/bindings/usb/dwc3.txt
drivers/media/v4l2-core/v4l2-ctrls.c
drivers/mmc/core/queue.c
drivers/mmc/host/sdhci-msm.c
drivers/scsi/ufs/ufs-qcom.c
drivers/slimbus/qcom-ngd-ctrl.c
drivers/usb/gadget/composite.c
fs/crypto/keyring.c
fs/f2fs/data.c
include/linux/fs.h
include/linux/usb/gadget.h
include/uapi/linux/v4l2-controls.h
kernel/sched/cpufreq_schedutil.c
kernel/sched/fair.c
kernel/time/tick-sched.c
mm/vmalloc.c
net/netlink/genetlink.c
net/qrtr/qrtr.c
sound/core/compress_offload.c
sound/soc/soc-compress.c
Fixed errors:
drivers/scsi/ufs/ufshcd.c
drivers/soc/qcom/rq_stats.c
Change-Id: I06ea6a6c3f239045e2947f27af617aa6f523bfdb
Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
669 lines
26 KiB
C
669 lines
26 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* composite.h -- framework for usb gadgets which are composite devices
|
|
*
|
|
* Copyright (C) 2006-2008 David Brownell
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef __LINUX_USB_COMPOSITE_H
|
|
#define __LINUX_USB_COMPOSITE_H
|
|
|
|
/*
|
|
* This framework is an optional layer on top of the USB Gadget interface,
|
|
* making it easier to build (a) Composite devices, supporting multiple
|
|
* functions within any single configuration, and (b) Multi-configuration
|
|
* devices, also supporting multiple functions but without necessarily
|
|
* having more than one function per configuration.
|
|
*
|
|
* Example: a device with a single configuration supporting both network
|
|
* link and mass storage functions is a composite device. Those functions
|
|
* might alternatively be packaged in individual configurations, but in
|
|
* the composite model the host can use both functions at the same time.
|
|
*/
|
|
|
|
#include <linux/bcd.h>
|
|
#include <linux/version.h>
|
|
#include <linux/usb/ch9.h>
|
|
#include <linux/usb/gadget.h>
|
|
#include <linux/log2.h>
|
|
#include <linux/configfs.h>
|
|
|
|
/* FUNCTION_SUSPEND: suspend options from usb 3.0 spec Table 9-7 */
|
|
#define FUNC_SUSPEND_OPT_SUSP_MASK BIT(0)
|
|
#define FUNC_SUSPEND_OPT_RW_EN_MASK BIT(1)
|
|
|
|
#define FUNC_WAKEUP_CAPABLE_SHIFT 0
|
|
#define FUNC_WAKEUP_ENABLE_SHIFT 1
|
|
|
|
/*
|
|
* USB function drivers should return USB_GADGET_DELAYED_STATUS if they
|
|
* wish to delay the data/status stages of the control transfer till they
|
|
* are ready. The control transfer will then be kept from completing till
|
|
* all the function drivers that requested for USB_GADGET_DELAYED_STAUS
|
|
* invoke usb_composite_setup_continue().
|
|
*/
|
|
#define USB_GADGET_DELAYED_STATUS 0x7fff /* Impossibly large value */
|
|
|
|
/* big enough to hold our biggest descriptor */
|
|
#define USB_COMP_EP0_BUFSIZ 4096
|
|
|
|
/* OS feature descriptor length <= 4kB */
|
|
#define USB_COMP_EP0_OS_DESC_BUFSIZ 4096
|
|
|
|
#define USB_MS_TO_HS_INTERVAL(x) (ilog2((x * 1000 / 125)) + 1)
|
|
struct usb_configuration;
|
|
|
|
/**
|
|
* struct usb_os_desc_ext_prop - describes one "Extended Property"
|
|
* @entry: used to keep a list of extended properties
|
|
* @type: Extended Property type
|
|
* @name_len: Extended Property unicode name length, including terminating '\0'
|
|
* @name: Extended Property name
|
|
* @data_len: Length of Extended Property blob (for unicode store double len)
|
|
* @data: Extended Property blob
|
|
* @item: Represents this Extended Property in configfs
|
|
*/
|
|
struct usb_os_desc_ext_prop {
|
|
struct list_head entry;
|
|
u8 type;
|
|
int name_len;
|
|
char *name;
|
|
int data_len;
|
|
char *data;
|
|
struct config_item item;
|
|
};
|
|
|
|
/**
|
|
* struct usb_os_desc - describes OS descriptors associated with one interface
|
|
* @ext_compat_id: 16 bytes of "Compatible ID" and "Subcompatible ID"
|
|
* @ext_prop: Extended Properties list
|
|
* @ext_prop_len: Total length of Extended Properties blobs
|
|
* @ext_prop_count: Number of Extended Properties
|
|
* @opts_mutex: Optional mutex protecting config data of a usb_function_instance
|
|
* @group: Represents OS descriptors associated with an interface in configfs
|
|
* @owner: Module associated with this OS descriptor
|
|
*/
|
|
struct usb_os_desc {
|
|
char *ext_compat_id;
|
|
struct list_head ext_prop;
|
|
int ext_prop_len;
|
|
int ext_prop_count;
|
|
struct mutex *opts_mutex;
|
|
struct config_group group;
|
|
struct module *owner;
|
|
};
|
|
|
|
/**
|
|
* struct usb_os_desc_table - describes OS descriptors associated with one
|
|
* interface of a usb_function
|
|
* @if_id: Interface id
|
|
* @os_desc: "Extended Compatibility ID" and "Extended Properties" of the
|
|
* interface
|
|
*
|
|
* Each interface can have at most one "Extended Compatibility ID" and a
|
|
* number of "Extended Properties".
|
|
*/
|
|
struct usb_os_desc_table {
|
|
int if_id;
|
|
struct usb_os_desc *os_desc;
|
|
};
|
|
|
|
/**
|
|
* struct usb_function - describes one function of a configuration
|
|
* @name: For diagnostics, identifies the function.
|
|
* @intf_id: Interface ID
|
|
* @strings: tables of strings, keyed by identifiers assigned during bind()
|
|
* and by language IDs provided in control requests
|
|
* @fs_descriptors: Table of full (or low) speed descriptors, using interface and
|
|
* string identifiers assigned during @bind(). If this pointer is null,
|
|
* the function will not be available at full speed (or at low speed).
|
|
* @hs_descriptors: Table of high speed descriptors, using interface and
|
|
* string identifiers assigned during @bind(). If this pointer is null,
|
|
* the function will not be available at high speed.
|
|
* @ss_descriptors: Table of super speed descriptors, using interface and
|
|
* string identifiers assigned during @bind(). If this
|
|
* pointer is null after initiation, the function will not
|
|
* be available at super speed.
|
|
* @ssp_descriptors: Table of super speed plus descriptors, using
|
|
* interface and string identifiers assigned during @bind(). If
|
|
* this pointer is null after initiation, the function will not
|
|
* be available at super speed plus.
|
|
* @config: assigned when @usb_add_function() is called; this is the
|
|
* configuration with which this function is associated.
|
|
* @os_desc_table: Table of (interface id, os descriptors) pairs. The function
|
|
* can expose more than one interface. If an interface is a member of
|
|
* an IAD, only the first interface of IAD has its entry in the table.
|
|
* @os_desc_n: Number of entries in os_desc_table
|
|
* @bind: Before the gadget can register, all of its functions bind() to the
|
|
* available resources including string and interface identifiers used
|
|
* in interface or class descriptors; endpoints; I/O buffers; and so on.
|
|
* @unbind: Reverses @bind; called as a side effect of unregistering the
|
|
* driver which added this function.
|
|
* @free_func: free the struct usb_function.
|
|
* @mod: (internal) points to the module that created this structure.
|
|
* @set_alt: (REQUIRED) Reconfigures altsettings; function drivers may
|
|
* initialize usb_ep.driver data at this time (when it is used).
|
|
* Note that setting an interface to its current altsetting resets
|
|
* interface state, and that all interfaces have a disabled state.
|
|
* @get_alt: Returns the active altsetting. If this is not provided,
|
|
* then only altsetting zero is supported.
|
|
* @disable: (REQUIRED) Indicates the function should be disabled. Reasons
|
|
* include host resetting or reconfiguring the gadget, and disconnection.
|
|
* @setup: Used for interface-specific control requests.
|
|
* @req_match: Tests if a given class request can be handled by this function.
|
|
* @suspend: Notifies functions when the host stops sending USB traffic.
|
|
* @resume: Notifies functions when the host restarts USB traffic.
|
|
* @get_status: Returns function status as a reply to
|
|
* GetStatus() request when the recipient is Interface.
|
|
* @func_suspend: callback to be called when
|
|
* SetFeature(FUNCTION_SUSPEND) is received
|
|
* @func_is_suspended: Tells whether the function is currently in
|
|
* Function Suspend state (used in Super Speed mode only).
|
|
* @func_wakeup_allowed: Tells whether Function Remote Wakeup has been allowed
|
|
* by the USB host (used in Super Speed mode only).
|
|
* @func_wakeup_pending: Marks that the function has issued a Function Wakeup
|
|
* while the USB bus was suspended and therefore a Function Wakeup
|
|
* notification needs to be sent once the USB bus is resumed.
|
|
*
|
|
* A single USB function uses one or more interfaces, and should in most
|
|
* cases support operation at both full and high speeds. Each function is
|
|
* associated by @usb_add_function() with a one configuration; that function
|
|
* causes @bind() to be called so resources can be allocated as part of
|
|
* setting up a gadget driver. Those resources include endpoints, which
|
|
* should be allocated using @usb_ep_autoconfig().
|
|
*
|
|
* To support dual speed operation, a function driver provides descriptors
|
|
* for both high and full speed operation. Except in rare cases that don't
|
|
* involve bulk endpoints, each speed needs different endpoint descriptors.
|
|
*
|
|
* Function drivers choose their own strategies for managing instance data.
|
|
* The simplest strategy just declares it "static', which means the function
|
|
* can only be activated once. If the function needs to be exposed in more
|
|
* than one configuration at a given speed, it needs to support multiple
|
|
* usb_function structures (one for each configuration).
|
|
*
|
|
* A more complex strategy might encapsulate a @usb_function structure inside
|
|
* a driver-specific instance structure to allows multiple activations. An
|
|
* example of multiple activations might be a CDC ACM function that supports
|
|
* two or more distinct instances within the same configuration, providing
|
|
* several independent logical data links to a USB host.
|
|
*/
|
|
|
|
struct usb_function {
|
|
const char *name;
|
|
int intf_id;
|
|
struct usb_gadget_strings **strings;
|
|
struct usb_descriptor_header **fs_descriptors;
|
|
struct usb_descriptor_header **hs_descriptors;
|
|
struct usb_descriptor_header **ss_descriptors;
|
|
struct usb_descriptor_header **ssp_descriptors;
|
|
|
|
struct usb_configuration *config;
|
|
|
|
struct usb_os_desc_table *os_desc_table;
|
|
unsigned os_desc_n;
|
|
|
|
/* REVISIT: bind() functions can be marked __init, which
|
|
* makes trouble for section mismatch analysis. See if
|
|
* we can't restructure things to avoid mismatching.
|
|
* Related: unbind() may kfree() but bind() won't...
|
|
*/
|
|
|
|
/* configuration management: bind/unbind */
|
|
int (*bind)(struct usb_configuration *,
|
|
struct usb_function *);
|
|
void (*unbind)(struct usb_configuration *,
|
|
struct usb_function *);
|
|
void (*free_func)(struct usb_function *f);
|
|
struct module *mod;
|
|
|
|
/* runtime state management */
|
|
int (*set_alt)(struct usb_function *,
|
|
unsigned interface, unsigned alt);
|
|
int (*get_alt)(struct usb_function *,
|
|
unsigned interface);
|
|
void (*disable)(struct usb_function *);
|
|
int (*setup)(struct usb_function *,
|
|
const struct usb_ctrlrequest *);
|
|
bool (*req_match)(struct usb_function *,
|
|
const struct usb_ctrlrequest *,
|
|
bool config0);
|
|
void (*suspend)(struct usb_function *);
|
|
void (*resume)(struct usb_function *);
|
|
|
|
/* USB 3.0 additions */
|
|
int (*get_status)(struct usb_function *);
|
|
int (*func_suspend)(struct usb_function *,
|
|
u8 suspend_opt);
|
|
unsigned func_is_suspended:1;
|
|
unsigned func_wakeup_allowed:1;
|
|
unsigned func_wakeup_pending:1;
|
|
/* private: */
|
|
/* internals */
|
|
struct list_head list;
|
|
DECLARE_BITMAP(endpoints, 32);
|
|
const struct usb_function_instance *fi;
|
|
|
|
unsigned int bind_deactivated:1;
|
|
};
|
|
|
|
int usb_add_function(struct usb_configuration *, struct usb_function *);
|
|
|
|
int usb_function_deactivate(struct usb_function *);
|
|
int usb_function_activate(struct usb_function *);
|
|
|
|
int usb_interface_id(struct usb_configuration *, struct usb_function *);
|
|
int usb_func_wakeup(struct usb_function *func);
|
|
|
|
int usb_get_func_interface_id(struct usb_function *func);
|
|
|
|
int config_ep_by_speed_and_alt(struct usb_gadget *g, struct usb_function *f,
|
|
struct usb_ep *_ep, u8 alt);
|
|
|
|
int config_ep_by_speed(struct usb_gadget *g, struct usb_function *f,
|
|
struct usb_ep *_ep);
|
|
|
|
#define MAX_CONFIG_INTERFACES 16 /* arbitrary; max 255 */
|
|
|
|
/**
|
|
* struct usb_configuration - represents one gadget configuration
|
|
* @label: For diagnostics, describes the configuration.
|
|
* @strings: Tables of strings, keyed by identifiers assigned during @bind()
|
|
* and by language IDs provided in control requests.
|
|
* @descriptors: Table of descriptors preceding all function descriptors.
|
|
* Examples include OTG and vendor-specific descriptors.
|
|
* @unbind: Reverses @bind; called as a side effect of unregistering the
|
|
* driver which added this configuration.
|
|
* @setup: Used to delegate control requests that aren't handled by standard
|
|
* device infrastructure or directed at a specific interface.
|
|
* @bConfigurationValue: Copied into configuration descriptor.
|
|
* @iConfiguration: Copied into configuration descriptor.
|
|
* @bmAttributes: Copied into configuration descriptor.
|
|
* @MaxPower: Power consumtion in mA. Used to compute bMaxPower in the
|
|
* configuration descriptor after considering the bus speed.
|
|
* @cdev: assigned by @usb_add_config() before calling @bind(); this is
|
|
* the device associated with this configuration.
|
|
*
|
|
* Configurations are building blocks for gadget drivers structured around
|
|
* function drivers. Simple USB gadgets require only one function and one
|
|
* configuration, and handle dual-speed hardware by always providing the same
|
|
* functionality. Slightly more complex gadgets may have more than one
|
|
* single-function configuration at a given speed; or have configurations
|
|
* that only work at one speed.
|
|
*
|
|
* Composite devices are, by definition, ones with configurations which
|
|
* include more than one function.
|
|
*
|
|
* The lifecycle of a usb_configuration includes allocation, initialization
|
|
* of the fields described above, and calling @usb_add_config() to set up
|
|
* internal data and bind it to a specific device. The configuration's
|
|
* @bind() method is then used to initialize all the functions and then
|
|
* call @usb_add_function() for them.
|
|
*
|
|
* Those functions would normally be independent of each other, but that's
|
|
* not mandatory. CDC WMC devices are an example where functions often
|
|
* depend on other functions, with some functions subsidiary to others.
|
|
* Such interdependency may be managed in any way, so long as all of the
|
|
* descriptors complete by the time the composite driver returns from
|
|
* its bind() routine.
|
|
*/
|
|
struct usb_configuration {
|
|
const char *label;
|
|
struct usb_gadget_strings **strings;
|
|
const struct usb_descriptor_header **descriptors;
|
|
|
|
/* REVISIT: bind() functions can be marked __init, which
|
|
* makes trouble for section mismatch analysis. See if
|
|
* we can't restructure things to avoid mismatching...
|
|
*/
|
|
|
|
/* configuration management: unbind/setup */
|
|
void (*unbind)(struct usb_configuration *);
|
|
int (*setup)(struct usb_configuration *,
|
|
const struct usb_ctrlrequest *);
|
|
|
|
/* fields in the config descriptor */
|
|
u8 bConfigurationValue;
|
|
u8 iConfiguration;
|
|
u8 bmAttributes;
|
|
u16 MaxPower;
|
|
|
|
struct usb_composite_dev *cdev;
|
|
|
|
/* private: */
|
|
/* internals */
|
|
struct list_head list;
|
|
struct list_head functions;
|
|
u8 next_interface_id;
|
|
unsigned superspeed:1;
|
|
unsigned highspeed:1;
|
|
unsigned fullspeed:1;
|
|
unsigned superspeed_plus:1;
|
|
struct usb_function *interface[MAX_CONFIG_INTERFACES];
|
|
};
|
|
|
|
int usb_add_config(struct usb_composite_dev *,
|
|
struct usb_configuration *,
|
|
int (*)(struct usb_configuration *));
|
|
|
|
void usb_remove_config(struct usb_composite_dev *,
|
|
struct usb_configuration *);
|
|
|
|
/* predefined index for usb_composite_driver */
|
|
enum {
|
|
USB_GADGET_MANUFACTURER_IDX = 0,
|
|
USB_GADGET_PRODUCT_IDX,
|
|
USB_GADGET_SERIAL_IDX,
|
|
USB_GADGET_FIRST_AVAIL_IDX,
|
|
};
|
|
|
|
/**
|
|
* struct usb_composite_driver - groups configurations into a gadget
|
|
* @name: For diagnostics, identifies the driver.
|
|
* @dev: Template descriptor for the device, including default device
|
|
* identifiers.
|
|
* @strings: tables of strings, keyed by identifiers assigned during @bind
|
|
* and language IDs provided in control requests. Note: The first entries
|
|
* are predefined. The first entry that may be used is
|
|
* USB_GADGET_FIRST_AVAIL_IDX
|
|
* @max_speed: Highest speed the driver supports.
|
|
* @needs_serial: set to 1 if the gadget needs userspace to provide
|
|
* a serial number. If one is not provided, warning will be printed.
|
|
* @bind: (REQUIRED) Used to allocate resources that are shared across the
|
|
* whole device, such as string IDs, and add its configurations using
|
|
* @usb_add_config(). This may fail by returning a negative errno
|
|
* value; it should return zero on successful initialization.
|
|
* @unbind: Reverses @bind; called as a side effect of unregistering
|
|
* this driver.
|
|
* @disconnect: optional driver disconnect method
|
|
* @suspend: Notifies when the host stops sending USB traffic,
|
|
* after function notifications
|
|
* @resume: Notifies configuration when the host restarts USB traffic,
|
|
* before function notifications
|
|
* @gadget_driver: Gadget driver controlling this driver
|
|
*
|
|
* Devices default to reporting self powered operation. Devices which rely
|
|
* on bus powered operation should report this in their @bind method.
|
|
*
|
|
* Before returning from @bind, various fields in the template descriptor
|
|
* may be overridden. These include the idVendor/idProduct/bcdDevice values
|
|
* normally to bind the appropriate host side driver, and the three strings
|
|
* (iManufacturer, iProduct, iSerialNumber) normally used to provide user
|
|
* meaningful device identifiers. (The strings will not be defined unless
|
|
* they are defined in @dev and @strings.) The correct ep0 maxpacket size
|
|
* is also reported, as defined by the underlying controller driver.
|
|
*/
|
|
struct usb_composite_driver {
|
|
const char *name;
|
|
const struct usb_device_descriptor *dev;
|
|
struct usb_gadget_strings **strings;
|
|
enum usb_device_speed max_speed;
|
|
unsigned needs_serial:1;
|
|
|
|
int (*bind)(struct usb_composite_dev *cdev);
|
|
int (*unbind)(struct usb_composite_dev *);
|
|
|
|
void (*disconnect)(struct usb_composite_dev *);
|
|
|
|
/* global suspend hooks */
|
|
void (*suspend)(struct usb_composite_dev *);
|
|
void (*resume)(struct usb_composite_dev *);
|
|
struct usb_gadget_driver gadget_driver;
|
|
};
|
|
|
|
extern int usb_composite_probe(struct usb_composite_driver *driver);
|
|
extern void usb_composite_unregister(struct usb_composite_driver *driver);
|
|
|
|
/**
|
|
* module_usb_composite_driver() - Helper macro for registering a USB gadget
|
|
* composite driver
|
|
* @__usb_composite_driver: usb_composite_driver struct
|
|
*
|
|
* Helper macro for USB gadget composite drivers which do not do anything
|
|
* special in module init/exit. This eliminates a lot of boilerplate. Each
|
|
* module may only use this macro once, and calling it replaces module_init()
|
|
* and module_exit()
|
|
*/
|
|
#define module_usb_composite_driver(__usb_composite_driver) \
|
|
module_driver(__usb_composite_driver, usb_composite_probe, \
|
|
usb_composite_unregister)
|
|
|
|
extern void usb_composite_setup_continue(struct usb_composite_dev *cdev);
|
|
extern int composite_dev_prepare(struct usb_composite_driver *composite,
|
|
struct usb_composite_dev *cdev);
|
|
extern int composite_os_desc_req_prepare(struct usb_composite_dev *cdev,
|
|
struct usb_ep *ep0);
|
|
void composite_dev_cleanup(struct usb_composite_dev *cdev);
|
|
|
|
static inline struct usb_composite_driver *to_cdriver(
|
|
struct usb_gadget_driver *gdrv)
|
|
{
|
|
return container_of(gdrv, struct usb_composite_driver, gadget_driver);
|
|
}
|
|
|
|
#define OS_STRING_QW_SIGN_LEN 14
|
|
#define OS_STRING_IDX 0xEE
|
|
|
|
/**
|
|
* struct usb_composite_device - represents one composite usb gadget
|
|
* @gadget: read-only, abstracts the gadget's usb peripheral controller
|
|
* @req: used for control responses; buffer is pre-allocated
|
|
* @os_desc_req: used for OS descriptors responses; buffer is pre-allocated
|
|
* @config: the currently active configuration
|
|
* @qw_sign: qwSignature part of the OS string
|
|
* @b_vendor_code: bMS_VendorCode part of the OS string
|
|
* @use_os_string: false by default, interested gadgets set it
|
|
* @os_desc_config: the configuration to be used with OS descriptors
|
|
* @setup_pending: true when setup request is queued but not completed
|
|
* @os_desc_pending: true when os_desc request is queued but not completed
|
|
*
|
|
* One of these devices is allocated and initialized before the
|
|
* associated device driver's bind() is called.
|
|
*
|
|
* OPEN ISSUE: it appears that some WUSB devices will need to be
|
|
* built by combining a normal (wired) gadget with a wireless one.
|
|
* This revision of the gadget framework should probably try to make
|
|
* sure doing that won't hurt too much.
|
|
*
|
|
* One notion for how to handle Wireless USB devices involves:
|
|
*
|
|
* (a) a second gadget here, discovery mechanism TBD, but likely
|
|
* needing separate "register/unregister WUSB gadget" calls;
|
|
* (b) updates to usb_gadget to include flags "is it wireless",
|
|
* "is it wired", plus (presumably in a wrapper structure)
|
|
* bandgroup and PHY info;
|
|
* (c) presumably a wireless_ep wrapping a usb_ep, and reporting
|
|
* wireless-specific parameters like maxburst and maxsequence;
|
|
* (d) configurations that are specific to wireless links;
|
|
* (e) function drivers that understand wireless configs and will
|
|
* support wireless for (additional) function instances;
|
|
* (f) a function to support association setup (like CBAF), not
|
|
* necessarily requiring a wireless adapter;
|
|
* (g) composite device setup that can create one or more wireless
|
|
* configs, including appropriate association setup support;
|
|
* (h) more, TBD.
|
|
*/
|
|
struct usb_composite_dev {
|
|
struct usb_gadget *gadget;
|
|
struct usb_request *req;
|
|
struct usb_request *os_desc_req;
|
|
|
|
struct usb_configuration *config;
|
|
|
|
/* OS String is a custom (yet popular) extension to the USB standard. */
|
|
u8 qw_sign[OS_STRING_QW_SIGN_LEN];
|
|
u8 b_vendor_code;
|
|
struct usb_configuration *os_desc_config;
|
|
unsigned int use_os_string:1;
|
|
|
|
/* private: */
|
|
/* internals */
|
|
unsigned int suspended:1;
|
|
struct usb_device_descriptor desc;
|
|
struct list_head configs;
|
|
struct list_head gstrings;
|
|
struct usb_composite_driver *driver;
|
|
u8 next_string_id;
|
|
char *def_manufacturer;
|
|
|
|
/* the gadget driver won't enable the data pullup
|
|
* while the deactivation count is nonzero.
|
|
*/
|
|
unsigned deactivations;
|
|
|
|
/* the composite driver won't complete the control transfer's
|
|
* data/status stages till delayed_status is zero.
|
|
*/
|
|
int delayed_status;
|
|
|
|
/* protects deactivations and delayed_status counts*/
|
|
spinlock_t lock;
|
|
|
|
/* public: */
|
|
unsigned int setup_pending:1;
|
|
unsigned int os_desc_pending:1;
|
|
};
|
|
|
|
extern int usb_string_id(struct usb_composite_dev *c);
|
|
extern int usb_string_ids_tab(struct usb_composite_dev *c,
|
|
struct usb_string *str);
|
|
extern struct usb_string *usb_gstrings_attach(struct usb_composite_dev *cdev,
|
|
struct usb_gadget_strings **sp, unsigned n_strings);
|
|
|
|
extern int usb_string_ids_n(struct usb_composite_dev *c, unsigned n);
|
|
|
|
extern void composite_disconnect(struct usb_gadget *gadget);
|
|
extern int composite_setup(struct usb_gadget *gadget,
|
|
const struct usb_ctrlrequest *ctrl);
|
|
extern void composite_suspend(struct usb_gadget *gadget);
|
|
extern void composite_resume(struct usb_gadget *gadget);
|
|
|
|
/*
|
|
* Some systems will need runtime overrides for the product identifiers
|
|
* published in the device descriptor, either numbers or strings or both.
|
|
* String parameters are in UTF-8 (superset of ASCII's 7 bit characters).
|
|
*/
|
|
struct usb_composite_overwrite {
|
|
u16 idVendor;
|
|
u16 idProduct;
|
|
u16 bcdDevice;
|
|
char *serial_number;
|
|
char *manufacturer;
|
|
char *product;
|
|
};
|
|
#define USB_GADGET_COMPOSITE_OPTIONS() \
|
|
static struct usb_composite_overwrite coverwrite; \
|
|
\
|
|
module_param_named(idVendor, coverwrite.idVendor, ushort, S_IRUGO); \
|
|
MODULE_PARM_DESC(idVendor, "USB Vendor ID"); \
|
|
\
|
|
module_param_named(idProduct, coverwrite.idProduct, ushort, S_IRUGO); \
|
|
MODULE_PARM_DESC(idProduct, "USB Product ID"); \
|
|
\
|
|
module_param_named(bcdDevice, coverwrite.bcdDevice, ushort, S_IRUGO); \
|
|
MODULE_PARM_DESC(bcdDevice, "USB Device version (BCD)"); \
|
|
\
|
|
module_param_named(iSerialNumber, coverwrite.serial_number, charp, \
|
|
S_IRUGO); \
|
|
MODULE_PARM_DESC(iSerialNumber, "SerialNumber string"); \
|
|
\
|
|
module_param_named(iManufacturer, coverwrite.manufacturer, charp, \
|
|
S_IRUGO); \
|
|
MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string"); \
|
|
\
|
|
module_param_named(iProduct, coverwrite.product, charp, S_IRUGO); \
|
|
MODULE_PARM_DESC(iProduct, "USB Product string")
|
|
|
|
void usb_composite_overwrite_options(struct usb_composite_dev *cdev,
|
|
struct usb_composite_overwrite *covr);
|
|
|
|
static inline u16 get_default_bcdDevice(void)
|
|
{
|
|
u16 bcdDevice;
|
|
|
|
bcdDevice = bin2bcd((LINUX_VERSION_CODE >> 16 & 0xff)) << 8;
|
|
bcdDevice |= bin2bcd((LINUX_VERSION_CODE >> 8 & 0xff));
|
|
return bcdDevice;
|
|
}
|
|
|
|
struct usb_function_driver {
|
|
const char *name;
|
|
struct module *mod;
|
|
struct list_head list;
|
|
struct usb_function_instance *(*alloc_inst)(void);
|
|
struct usb_function *(*alloc_func)(struct usb_function_instance *inst);
|
|
};
|
|
|
|
struct usb_function_instance {
|
|
struct config_group group;
|
|
struct list_head cfs_list;
|
|
struct usb_function_driver *fd;
|
|
struct usb_function *f;
|
|
int (*set_inst_name)(struct usb_function_instance *inst,
|
|
const char *name);
|
|
void (*free_func_inst)(struct usb_function_instance *inst);
|
|
};
|
|
|
|
void usb_function_unregister(struct usb_function_driver *f);
|
|
int usb_function_register(struct usb_function_driver *newf);
|
|
void usb_put_function_instance(struct usb_function_instance *fi);
|
|
void usb_put_function(struct usb_function *f);
|
|
struct usb_function_instance *usb_get_function_instance(const char *name);
|
|
struct usb_function *usb_get_function(struct usb_function_instance *fi);
|
|
|
|
struct usb_configuration *usb_get_config(struct usb_composite_dev *cdev,
|
|
int val);
|
|
int usb_add_config_only(struct usb_composite_dev *cdev,
|
|
struct usb_configuration *config);
|
|
void usb_remove_function(struct usb_configuration *c, struct usb_function *f);
|
|
|
|
#define DECLARE_USB_FUNCTION(_name, _inst_alloc, _func_alloc) \
|
|
static struct usb_function_driver _name ## usb_func = { \
|
|
.name = __stringify(_name), \
|
|
.mod = THIS_MODULE, \
|
|
.alloc_inst = _inst_alloc, \
|
|
.alloc_func = _func_alloc, \
|
|
}; \
|
|
MODULE_ALIAS("usbfunc:"__stringify(_name));
|
|
|
|
#define DECLARE_USB_FUNCTION_INIT(_name, _inst_alloc, _func_alloc) \
|
|
DECLARE_USB_FUNCTION(_name, _inst_alloc, _func_alloc) \
|
|
static int __init _name ## mod_init(void) \
|
|
{ \
|
|
return usb_function_register(&_name ## usb_func); \
|
|
} \
|
|
static void __exit _name ## mod_exit(void) \
|
|
{ \
|
|
usb_function_unregister(&_name ## usb_func); \
|
|
} \
|
|
module_init(_name ## mod_init); \
|
|
module_exit(_name ## mod_exit)
|
|
|
|
/* messaging utils */
|
|
#define DBG(d, fmt, args...) \
|
|
dev_dbg(&(d)->gadget->dev , fmt , ## args)
|
|
#define VDBG(d, fmt, args...) \
|
|
dev_vdbg(&(d)->gadget->dev , fmt , ## args)
|
|
#define ERROR(d, fmt, args...) \
|
|
dev_err(&(d)->gadget->dev , fmt , ## args)
|
|
#define WARNING(d, fmt, args...) \
|
|
dev_warn(&(d)->gadget->dev , fmt , ## args)
|
|
#define INFO(d, fmt, args...) \
|
|
dev_info(&(d)->gadget->dev , fmt , ## args)
|
|
|
|
#endif /* __LINUX_USB_COMPOSITE_H */
|