Files
kernel_google_redbull/include/linux/iova.h
Wilson Sung 093b8e0c7f Merge android-4.19-stable (4.19.266) into android-msm-pixel-4.19-tm-lts
Merge 4.19.266 into android-4.19-stable
Linux 4.19.266
    x86/speculation: Add RSB VM Exit protections
    x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts
    x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current
    x86/speculation: Disable RRSBA behavior
    x86/bugs: Add Cannon lake to RETBleed affected CPU list
    x86/cpu/amd: Enumerate BTC_NO
    x86/common: Stamp out the stepping madness
    x86/speculation: Fill RSB on vmexit for IBRS
    KVM: VMX: Fix IBRS handling after vmexit
    KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS
    x86/speculation: Remove x86_spec_ctrl_mask
    x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit
    x86/speculation: Fix SPEC_CTRL write on SMT state change
    x86/speculation: Fix firmware entry SPEC_CTRL handling
    x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
    x86/speculation: Change FILL_RETURN_BUFFER to work with objtool
    intel_idle: Disable IBRS during long idle
    x86/bugs: Report Intel retbleed vulnerability
    x86/bugs: Split spectre_v2_select_mitigation() and spectre_v2_user_select_mitigation()
    x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS
    x86/bugs: Optimize SPEC_CTRL MSR writes
    x86/entry: Add kernel IBRS implementation
    x86/entry: Remove skip_r11rcx
    x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value
    x86/bugs: Add AMD retbleed= boot parameter
  * x86/bugs: Report AMD retbleed vulnerability
      drivers/base/cpu.c
      include/linux/cpu.h
    x86/cpufeatures: Move RETPOLINE flags to word 11
  * x86/cpu: Add a steppings field to struct x86_cpu_id
      include/linux/kvm_host.h
      include/linux/mod_devicetable.h
    x86/cpu: Add consistent CPU match macros
  * x86/devicetable: Move x86 specific macro out of generic code
      include/linux/mod_devicetable.h
    x86/cpufeature: Fix various quality problems in the <asm/cpu_device_hd.h> header
    x86/cpufeature: Add facility to check for min microcode revisions
  * Revert "x86/cpu: Add a steppings field to struct x86_cpu_id"
      include/linux/mod_devicetable.h
    Revert "x86/speculation: Add RSB VM Exit protections"
  * ANDROID: preserve CRC for some DRM functions
      include/linux/bits.h
  * Revert "tcp/udp: Make early_demux back namespacified."
      include/net/protocol.h
      include/net/tcp.h
      include/net/udp.h
      net/ipv4/af_inet.c
      net/ipv4/ip_input.c
      net/ipv4/sysctl_net_ipv4.c
      net/ipv6/ip6_input.c
      net/ipv6/tcp_ipv6.c
      net/ipv6/udp.c
    Merge 4.19.265 into android-4.19-stable
Linux 4.19.265
    wifi: brcmfmac: Fix potential buffer overflow in brcmf_fweh_event_worker()
  * linux/bits.h: make BIT(), GENMASK(), and friends available in assembly
      include/linux/bits.h
    KVM: x86: emulator: update the emulation mode after CR0 write
    KVM: x86: emulator: introduce emulator_recalc_and_set_mode
    KVM: x86: emulator: em_sysexit should update ctxt->mode
    KVM: x86: Mask off reserved bits in CPUID.80000008H
  * ext4: fix warning in 'ext4_da_release_space'
      fs/ext4/migrate.c
    parisc: Avoid printing the hardware path twice
    parisc: Export iosapic_serial_irq() symbol for serial port driver
  * parisc: Make 8250_gsc driver dependend on CONFIG_PARISC
      drivers/tty/serial/8250/Kconfig
  * efi: random: reduce seed size to 32 bytes
      include/linux/efi.h
  * ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices
      sound/usb/quirks-table.h
      sound/usb/quirks.c
  * capabilities: fix potential memleak on error path from vfs_getxattr_alloc()
      security/commoncap.c
    tracing/histogram: Update document for KEYS_MAX size
    kprobe: reverse kp->flags when arm_kprobe failed
  * tcp/udp: Make early_demux back namespacified.
      include/net/protocol.h
      include/net/tcp.h
      include/net/udp.h
      net/ipv4/af_inet.c
      net/ipv4/ip_input.c
      net/ipv4/sysctl_net_ipv4.c
      net/ipv6/ip6_input.c
      net/ipv6/tcp_ipv6.c
      net/ipv6/udp.c
    btrfs: fix type of parameter generation in btrfs_get_dentry
    block, bfq: protect 'bfqd->queued' by 'bfqd->lock'
  * Bluetooth: L2CAP: Fix attempting to access uninitialized memory
      net/bluetooth/l2cap_core.c
    i2c: xiic: Add platform module alias
  * HID: saitek: add madcatz variant of MMO7 mouse device ID
      drivers/hid/hid-ids.h
      drivers/hid/hid-quirks.c
    media: dvb-frontends/drxk: initialize err to 0
    media: cros-ec-cec: limit msg.len to CEC_MAX_MSG_SIZE
    media: s5p_cec: limit msg.len to CEC_MAX_MSG_SIZE
  * ipv6: fix WARNING in ip6_route_net_exit_late()
      net/ipv6/route.c
  * net, neigh: Fix null-ptr-deref in neigh_table_clear()
      net/core/neighbour.c
  * net: mdio: fix undefined behavior in bit shift for __mdiobus_register
      drivers/net/phy/mdio_bus.c
  * Bluetooth: L2CAP: fix use-after-free in l2cap_conn_del()
      net/bluetooth/l2cap_core.c
  * Bluetooth: L2CAP: Fix use-after-free caused by l2cap_reassemble_sdu
      net/bluetooth/l2cap_core.c
    btrfs: fix ulist leaks in error paths of qgroup self tests
    btrfs: fix inode list leak during backref walking at resolve_indirect_refs()
    isdn: mISDN: netjet: fix wrong check of device registration
    mISDN: fix possible memory leak in mISDN_register_device()
    rose: Fix NULL pointer dereference in rose_send_frame()
    ipvs: fix WARNING in ip_vs_app_net_cleanup()
    ipvs: fix WARNING in __ip_vs_cleanup_batch()
    ipvs: use explicitly signed chars
  * net: tun: fix bugs for oversize packet when napi frags enabled
      drivers/net/tun.c
    net: sched: Fix use after free in red_enqueue()
    ata: pata_legacy: fix pdc20230_set_piomode()
    net: fec: fix improper use of NETDEV_TX_BUSY
    nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send()
    nfc: s3fwrn5: Fix potential memory leak in s3fwrn5_nci_send()
    RDMA/qedr: clean up work queue on failure in qedr_alloc_resources()
    net: dsa: Fix possible memory leaks in dsa_loop_init()
    nfs4: Fix kmemleak when allocate slot failed
    NFSv4.1: We must always send RECLAIM_COMPLETE after a reboot
    NFSv4.1: Handle RECLAIM_COMPLETE trunking errors
    BACKPORT: ARM: 9039/1: assembler: generalize byte swapping macro into rev_l
    BACKPORT: ARM: 9035/1: uncompress: Add be32tocpu macro
    Merge 4.19.264 into android-4.19-stable
Linux 4.19.264
    can: rcar_canfd: rcar_canfd_handle_global_receive(): fix IRQ storm on global FIFO receive
    net/mlx5e: Do not increment ESN when updating IPsec ESN state
    net: ehea: fix possible memory leak in ehea_register_port()
    openvswitch: switch from WARN to pr_warn
    ALSA: aoa: Fix I2S device accounting
    ALSA: aoa: i2sbus: fix possible memory leak in i2sbus_add_dev()
  * PM: domains: Fix handling of unavailable/disabled idle states
      drivers/base/power/domain.c
    net: ksz884x: fix missing pci_disable_device() on error in pcidev_init()
    i40e: Fix flow-type by setting GL_HASH_INSET registers
    i40e: Fix VF hang when reset is triggered on another VF
    i40e: Fix ethtool rx-flow-hash setting for X722
  * media: videodev2.h: V4L2_DV_BT_BLANKING_HEIGHT should check 'interlaced'
      include/uapi/linux/videodev2.h
  * media: v4l2-dv-timings: add sanity checks for blanking values
      drivers/media/v4l2-core/v4l2-dv-timings.c
    media: vivid: dev->bitmap_cap wasn't freed in all cases
    media: vivid: s_fbuf: add more sanity checks
    PM: hibernate: Allow hybrid sleep to work with s2idle
    can: mscan: mpc5xxx: mpc5xxx_can_probe(): add missing put_clock() in error path
  * tcp: fix indefinite deferral of RTO with SACK reneging
      net/ipv4/tcp_input.c
    net: lantiq_etop: don't free skb when returning NETDEV_TX_BUSY
  * net: fix UAF issue in nfqnl_nf_hook_drop() when ops_init() failed
      net/core/net_namespace.c
    kcm: annotate data-races around kcm->rx_wait
    kcm: annotate data-races around kcm->rx_psock
    amd-xgbe: add the bit rate quirk for Molex cables
    amd-xgbe: fix the SFP compliance codes check for DAC cables
    x86/unwind/orc: Fix unreliable stack dump with gcov
    net: netsec: fix error handling in netsec_register_mdio()
  * tipc: fix a null-ptr-deref in tipc_topsrv_accept
      net/tipc/topsrv.c
    ALSA: ac97: fix possible memory leak in snd_ac97_dev_register()
    arc: iounmap() arg is volatile
    drm/msm: Fix return type of mdp4_lvds_connector_mode_valid
    net: ieee802154: fix error return code in dgram_bind()
    mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages
    xen/gntdev: Prevent leaking grants
    Xen/gntdev: don't ignore kernel unmapping error
    s390/futex: add missing EX_TABLE entry to __futex_atomic_op()
    perf auxtrace: Fix address filter symbol name match for modules
  * kernfs: fix use-after-free in __kernfs_remove
      fs/kernfs/dir.c
    mmc: core: Fix kernel panic when remove non-standard SDIO card
    drm/msm/hdmi: fix memory corruption with too many bridges
    drm/msm/dsi: fix memory corruption with too many bridges
    mac802154: Fix LQI recording
    fbdev: smscufx: Fix several use-after-free bugs
    iio: light: tsl2583: Fix module unloading
    tools: iio: iio_utils: fix digit calculation
  * xhci: Remove device endpoints from bandwidth list when freeing the device
      drivers/usb/host/xhci-mem.c
  * usb: xhci: add XHCI_SPURIOUS_SUCCESS to ASM1042 despite being a V0.96 controller
      drivers/usb/host/xhci-pci.c
    usb: bdc: change state when port disconnected
  * usb: dwc3: gadget: Don't set IMI for no_interrupt
      drivers/usb/dwc3/gadget.c
  * usb: dwc3: gadget: Stop processing more requests on IMI
      drivers/usb/dwc3/gadget.c
  * USB: add RESET_RESUME quirk for NVIDIA Jetson devices in RCM
      drivers/usb/core/quirks.c
    ALSA: au88x0: use explicitly signed char
    ALSA: Use del_timer_sync() before freeing timer
    can: kvaser_usb: Fix possible completions during init_completion
  * mm: /proc/pid/smaps_rollup: fix no vma's null-deref
      fs/proc/task_mmu.c
    hv_netvsc: Fix race between VF offering and VF association message from host
  * Makefile.debug: re-enable debug info for .S files
      Makefile
    ACPI: video: Force backlight native for more TongFang devices
  * media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across ioctls
      drivers/media/v4l2-core/v4l2-mem2mem.c
    iommu/vt-d: Clean up si_domain in the init_dmars() error path
    net: hns: fix possible memory leak in hnae_ae_register()
    net: sched: cake: fix null pointer access issue when cake_init() fails
    net/atm: fix proc_mpc_write incorrect return value
  * HID: magicmouse: Do not set BTN_MOUSE on double report
      drivers/hid/hid-magicmouse.c
  * tipc: fix an information leak in tipc_topsrv_kern_subscr
      net/tipc/topsrv.c
  * tipc: Fix recognition of trial period
      net/tipc/discover.c
    ACPI: extlog: Handle multiple records
    btrfs: fix processing of delayed tree block refs during backref walking
    btrfs: fix processing of delayed data refs during backref walking
  * r8152: add PID for the Lenovo OneLink+ Dock
      drivers/net/usb/cdc_ether.c
      drivers/net/usb/r8152.c
  * arm64: errata: Remove AES hwcap for COMPAT tasks
      arch/arm64/Kconfig
      arch/arm64/include/asm/cpucaps.h
      arch/arm64/kernel/cpu_errata.c
      arch/arm64/kernel/cpufeature.c
    media: venus: dec: Handle the case where find_format fails
    KVM: arm64: vgic: Fix exit condition in scan_its_table()
    ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS
    ata: ahci-imx: Fix MODULE_ALIAS
    hwmon/coretemp: Handle large core ID value
    x86/microcode/AMD: Apply the patch early on every logical thread
    ocfs2: fix BUG when iput after ocfs2_mknod fails
    ocfs2: clear dinode links count in case of error
    Merge 4.19.263 into android-4.19-stable
  * UPSTREAM: once: fix section mismatch on clang builds
      include/linux/once.h
    Revert "serial: 8250: Fix restoring termios speed after suspend"
    UPSTREAM: ARM: 8788/1: ftrace: remove old mcount support
Linux 4.19.263
  * once: fix section mismatch on clang builds
      include/linux/once.h
    Merge 4.19.262 into android-4.19-stable
Linux 4.19.262
    gcov: support GCC 12.1 and newer compilers
    thermal: intel_powerclamp: Use first online CPU as control_cpu
  * inet: fully convert sk->sk_rx_dst to RCU rules
      include/net/sock.h
      net/ipv4/af_inet.c
      net/ipv4/tcp.c
      net/ipv4/tcp_input.c
      net/ipv4/tcp_ipv4.c
      net/ipv4/udp.c
      net/ipv6/tcp_ipv6.c
      net/ipv6/udp.c
    efi: libstub: drop pointless get_memory_map() call
    md: Replace snprintf with scnprintf
  * ext4: continue to expand file system when the target size doesn't reach
      fs/ext4/resize.c
    net/ieee802154: don't warn zero-sized raw_sendmsg()
  * net: ieee802154: return -EINVAL for unknown addr type
      include/net/ieee802154_netdev.h
    perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc
    clk: bcm2835: Make peripheral PLLC critical
    usb: idmouse: fix an uninit-value in idmouse_open
    nvme: copy firmware_rev on each init
  * Revert "usb: storage: Add quirk for Samsung Fit flash"
      drivers/usb/storage/unusual_devs.h
    usb: musb: Fix musb_gadget.c rxstate overflow bug
  * usb: host: xhci: Fix potential memory leak in xhci_alloc_stream_info()
      drivers/usb/host/xhci-mem.c
    md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d
    HID: roccat: Fix use-after-free in roccat_read()
    ata: libahci_platform: Sanity check the DT child nodes number
    staging: vt6655: fix potential memory leak
    power: supply: adp5061: fix out-of-bounds read in adp5061_get_chg_type()
    nbd: Fix hung when signal interrupts nbd_start_device_ioctl()
    scsi: 3w-9xxx: Avoid disabling device if failing to enable it
    media: cx88: Fix a null-ptr-deref bug in buffer_prepare()
    ARM: dts: imx6sx: add missing properties for sram
    ARM: dts: imx6sll: add missing properties for sram
    ARM: dts: imx6sl: add missing properties for sram
    ARM: dts: imx6qp: add missing properties for sram
    ARM: dts: imx6dl: add missing properties for sram
    ARM: dts: imx6q: add missing properties for sram
    ARM: dts: imx7d-sdb: config the max pressure for tsc2046
    drm/amdgpu: fix initial connector audio value
    platform/x86: msi-laptop: Change DMI match / alias strings to fix module autoloading
  * drm: panel-orientation-quirks: Add quirk for Anbernic Win600
      drivers/gpu/drm/drm_panel_orientation_quirks.c
    drm/vc4: vec: Fix timings for VEC modes
    drm/amd/display: fix overflow on MIN_I64 definition
  * drm: Prevent drm_copy_field() to attempt copying a NULL pointer
      drivers/gpu/drm/drm_ioctl.c
  * drm: Use size_t type for len variable in drm_copy_field()
      drivers/gpu/drm/drm_ioctl.c
  * r8152: Rate limit overflow messages
      drivers/net/usb/r8152.c
  * Bluetooth: L2CAP: Fix user-after-free
      net/bluetooth/l2cap_core.c
  * net: If sock is dead don't access sock's sk_wq in sk_stream_wait_memory
      net/core/stream.c
    wifi: rt2x00: correctly set BBP register 86 for MT7620
    wifi: rt2x00: set SoC wmac clock register
    wifi: rt2x00: set correct TX_SW_CFG1 MAC register for MT7620
    wifi: rt2x00: don't run Rt5592 IQ calibration on MT7620
    can: bcm: check the result of can_send() in bcm_can_tx()
  * Bluetooth: hci_sysfs: Fix attempting to call device_add multiple times
      net/bluetooth/hci_sysfs.c
  * Bluetooth: L2CAP: initialize delayed works at l2cap_chan_create()
      net/bluetooth/l2cap_core.c
    wifi: brcmfmac: fix use-after-free bug in brcmf_netdev_start_xmit()
  * xfrm: Update ipcomp_scratches with NULL when freed
      net/xfrm/xfrm_ipcomp.c
    wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg()
  * tcp: annotate data-race around tcp_md5sig_pool_populated
      net/ipv4/tcp.c
    openvswitch: Fix overreporting of drops in dropwatch
    openvswitch: Fix double reporting of drops in dropwatch
    wifi: brcmfmac: fix invalid address access when enabling SCAN log level
    NFSD: Return nfserr_serverfault if splice_ok but buf->pages have data
    thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash
    powercap: intel_rapl: fix UBSAN shift-out-of-bounds issue
    MIPS: BCM47XX: Cast memcmp() of function to (void *)
    ACPI: video: Add Toshiba Satellite/Portege Z830 quirk
  * f2fs: fix race condition on setting FI_NO_EXTENT flag
      fs/f2fs/extent_cache.c
    crypto: cavium - prevent integer overflow loading firmware
  * iommu/iova: Fix module config properly
      include/linux/iova.h
    iommu/omap: Fix buffer overflow in debugfs
    powerpc: Fix SPE Power ISA properties for e500v1 platforms
    powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5
    x86/hyperv: Fix 'struct hv_enlightened_vmcs' definition
    powerpc/powernv: add missing of_node_put() in opal_export_attrs()
    powerpc/pci_dn: Add missing of_node_put()
    powerpc/sysdev/fsl_msi: Add missing of_node_put()
    powerpc/math_emu/efp: Include module.h
    mailbox: bcm-ferxrm-mailbox: Fix error check for dma_map_sg
    clk: ti: dra7-atl: Fix reference leak in of_dra7_atl_clk_probe
    clk: bcm2835: fix bcm2835_clock_rate_from_divisor declaration
  * spmi: pmic-arb: correct duplicate APID to PPID mapping logic
      drivers/spmi/spmi-pmic-arb.c
    dmaengine: ioat: stop mod_timer from resurrecting deleted timer in __cleanup()
    mfd: sm501: Add check for platform_driver_register()
    mfd: lp8788: Fix an error handling path in lp8788_irq_init() and lp8788_irq_init()
    mfd: lp8788: Fix an error handling path in lp8788_probe()
    mfd: fsl-imx25: Fix an error handling path in mx25_tsadc_setup_irq()
    mfd: intel_soc_pmic: Fix an error handling path in intel_soc_pmic_i2c_probe()
    fsi: core: Check error number after calling ida_simple_get
    serial: 8250: Fix restoring termios speed after suspend
    firmware: google: Test spinlock on panic path to avoid lockups
    staging: vt6655: fix some erroneous memory clean-up loops
    phy: qualcomm: call clk_disable_unprepare in the error handling
    drivers: serial: jsm: fix some leaks in probe
    usb: gadget: function: fix dangling pnp_string in f_printer.c
  * xhci: Don't show warning for reinit on known broken suspend
      drivers/usb/host/xhci.c
    md/raid5: Ensure stripe_fill happens on non-read IO with journal
  * ata: fix ata_id_has_dipm()
      include/linux/ata.h
  * ata: fix ata_id_has_ncq_autosense()
      include/linux/ata.h
  * ata: fix ata_id_has_devslp()
      include/linux/ata.h
  * ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting()
      include/linux/ata.h
    mtd: devices: docg3: check the return value of devm_ioremap() in the probe
    dyndbg: let query-modname override actual module name
  * dyndbg: fix module.dyndbg handling
      include/linux/dynamic_debug.h
    RDMA/rxe: Fix the error caused by qp->sk
    RDMA/rxe: Fix "kernel NULL pointer dereference" error
    media: xilinx: vipp: Fix refcount leak in xvip_graph_dma_init
    tty: xilinx_uartps: Fix the ignore_status
    media: exynos4-is: fimc-is: Add of_node_put() when breaking out of loop
    HSI: omap_ssi_port: Fix dma_map_sg error check
    HSI: omap_ssi: Fix refcount leak in ssi_probe
    clk: tegra20: Fix refcount leak in tegra20_clock_init
    clk: tegra: Fix refcount leak in tegra114_clock_init
    clk: tegra: Fix refcount leak in tegra210_clock_init
    clk: berlin: Add of_node_put() for of_get_parent()
    clk: oxnas: Hold reference returned by of_get_parent()
    iio: ABI: Fix wrong format of differential capacitance channel ABI.
  * iio: inkern: only release the device node when done with it
      drivers/iio/inkern.c
    iio: adc: at91-sama5d2_adc: check return status for pressure and touch
    iio: adc: at91-sama5d2_adc: fix AT91_SAMA5D2_MR_TRACKTIM_MAX
    ARM: dts: exynos: fix polarity of VBUS GPIO of Origen
    ARM: Drop CMDLINE_* dependency on ATAGS
    ARM: dts: exynos: correct s5k6a3 reset polarity on Midas family
    ARM: dts: kirkwood: lsxl: remove first ethernet port
    ARM: dts: kirkwood: lsxl: fix serial line
    ARM: dts: turris-omnia: Fix mpp26 pin name and comment
  * soc: qcom: smem_state: Add refcounting for the 'state->of_node'
      drivers/soc/qcom/smem_state.c
    soc: qcom: smsm: Fix refcount leak bugs in qcom_smsm_probe()
    memory: of: Fix refcount leak bug in of_get_ddr_timings()
    ASoC: wm5102: Fix PM disable depth imbalance in wm5102_probe
    ASoC: wm5110: Fix PM disable depth imbalance in wm5110_probe
    ASoC: wm8997: Fix PM disable depth imbalance in wm8997_probe
    mmc: wmt-sdmmc: Fix an error handling path in wmt_mci_probe()
    ALSA: dmaengine: increment buffer pointer atomically
    drm/msm/dpu: index dpu_kms->hw_vbif using vbif_idx
    ASoC: eureka-tlv320: Hold reference returned from of_find_xxx API
    mmc: au1xmmc: Fix an error handling path in au1xmmc_probe()
    drm/bridge: megachips: Fix a null pointer dereference bug
    platform/x86: msi-laptop: Fix resource cleanup
    platform/x86: msi-laptop: Fix old-ec check for backlight registering
    platform/chrome: fix double-free in chromeos_laptop_prepare()
  * drm/mipi-dsi: Detach devices when removing the host
      drivers/gpu/drm/drm_mipi_dsi.c
    drm: bridge: adv7511: fix CEC power down control register offset
    net: mvpp2: fix mvpp2 debugfs leak
  * once: add DO_ONCE_SLOW() for sleepable contexts
      include/linux/once.h
      lib/once.c
      net/ipv4/inet_hashtables.c
    bnx2x: fix potential memory leak in bnx2x_tpa_stop()
    net: rds: don't hold sock lock when cancelling work from rds_tcp_reset_callbacks()
  * tcp: fix tcp_cwnd_validate() to not forget is_cwnd_limited
      include/linux/tcp.h
      include/net/tcp.h
      net/ipv4/tcp.c
      net/ipv4/tcp_output.c
  * sctp: handle the error returned from sctp_auth_asoc_init_active_key
      net/sctp/auth.c
    mISDN: fix use-after-free bugs in l1oip timer handlers
    vhost/vsock: Use kvmalloc/kvfree for larger packets.
    spi: s3c64xx: Fix large transfers with DMA
    netfilter: nft_fib: Fix for rpath check with VRF devices
    spi/omap100k:Fix PM disable depth imbalance in omap1_spi100k_probe
  * bpf: Ensure correct locking around vulnerable function find_vpid()
      kernel/bpf/syscall.c
    net: fs_enet: Fix wrong check in do_pd_setup
    wifi: rtl8xxxu: gen2: Fix mistake in path B IQ calibration
  * bpf: btf: fix truncated last_member_type_id in btf_struct_resolve
      kernel/bpf/btf.c
    wifi: rtl8xxxu: Fix skb misuse in TX queue selection
    spi: qup: add missing clk_disable_unprepare on error in spi_qup_pm_resume_runtime()
    spi: qup: add missing clk_disable_unprepare on error in spi_qup_resume()
    wifi: rtl8xxxu: tighten bounds checking in rtl8xxxu_read_efuse()
    spi: mt7621: Fix an error message in mt7621_spi_probe()
    bpftool: Fix a wrong type cast in btf_dumper_int
    wifi: mac80211: allow bw change during channel switch in mesh
    wifi: ath10k: add peer map clean up for peer delete in ath10k_sta_state()
    sh: machvec: Use char[] for section boundaries
    selinux: use "grep -E" instead of "egrep"
    KVM: nVMX: Unconditionally purge queued/injected events on nested "exit"
    KVM: x86/emulator: Fix handing of POP SS to correctly set interruptibility
  * ring-buffer: Fix race between reset page and reading page
      kernel/trace/ring_buffer.c
  * ring-buffer: Check pending waiters when doing wake ups as well
      kernel/trace/ring_buffer.c
  * ring-buffer: Allow splice to read previous partially read pages
      kernel/trace/ring_buffer.c
    ftrace: Properly unset FTRACE_HASH_FL_MOD
    livepatch: fix race between fork and KLP transition
  * ext4: place buffer head allocation before handle start
      fs/ext4/inode.c
  * ext4: make ext4_lazyinit_thread freezable
      fs/ext4/super.c
  * ext4: fix null-ptr-deref in ext4_write_info
      fs/ext4/super.c
  * ext4: avoid crash when inline data creation follows DIO write
      fs/ext4/file.c
    nilfs2: fix use-after-free bug of struct nilfs_root
    riscv: fix build with binutils 2.38
    btrfs: fix race between quota enable and quota rescan ioctl
    fbdev: smscufx: Fix use-after-free in ufx_ops_open()
  * PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge
      drivers/pci/setup-res.c
    UM: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK
    riscv: Allow PROT_WRITE-only mmap()
    parisc: fbdev/stifb: Align graphics memory size to 4MB
  * Revert "fs: check FMODE_LSEEK to control internal pipe splicing"
      fs/splice.c
    regulator: qcom_rpm: Fix circular deferral regression
  * quota: Check next/prev free block number after reading from quota file
      fs/quota/quota_tree.c
  * HID: multitouch: Add memory barriers
      drivers/hid/hid-multitouch.c
    fs: dlm: handle -EBUSY first in lock arg validation
    fs: dlm: fix race between test_bit() and queue_work()
    can: kvaser_usb_leaf: Fix CAN state after restart
    can: kvaser_usb_leaf: Fix TX queue out of sync after restart
    can: kvaser_usb_leaf: Fix overread with an invalid command
    can: kvaser_usb: Fix use of uninitialized completion
  * usb: add quirks for Lenovo OneLink+ Dock
      drivers/usb/core/quirks.c
    iio: dac: ad5593r: Fix i2c read protocol requirements
    mtd: rawnand: atmel: Unmap streaming DMA mappings
    ALSA: hda/realtek: remove ALC289_FIXUP_DUAL_SPK for Dell 5530
  * ALSA: usb-audio: Fix NULL dererence at error path
      sound/usb/endpoint.c
  * ALSA: usb-audio: Fix potential memory leaks
      sound/usb/endpoint.c
  * ALSA: rawmidi: Drop register_mutex in snd_rawmidi_free()
      sound/core/rawmidi.c
    ALSA: oss: Fix potential deadlock at unregistration
  * Input: xpad - fix wireless 360 controller breaking after suspend
      drivers/input/joystick/xpad.c
  * Input: xpad - add supported devices as contributed on github
      drivers/input/joystick/xpad.c
    wifi: mac80211_hwsim: avoid mac80211 warning on bad rate
  * random: use expired timer rather than wq for mixing fast pool
      drivers/char/random.c
  * random: avoid reading two cache lines on irq randomness
      drivers/char/random.c
  * random: restore O_NONBLOCK support
      drivers/char/mem.c
      drivers/char/random.c
    USB: serial: qcserial: add new usb-id for Dell branded EM7455
  * scsi: stex: Properly zero out the passthrough command structure
      include/scsi/scsi_cmnd.h
    ALSA: hda: Fix position reporting on Poulsbo
  * random: clamp credited irq bits to maximum mixed
      drivers/char/random.c
    ceph: don't truncate file in atomic_open
    nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure
    nilfs2: fix leak of nilfs_root in case of writer thread creation failure
    nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level()
  * rpmsg: qcom: glink: replace strncpy() with strscpy_pad()
      drivers/rpmsg/qcom_glink_native.c
    mmc: core: Terminate infinite loop in SD-UHS voltage switch
    mmc: core: Replace with already defined values for readability
    USB: serial: ftdi_sio: fix 300 bps rate for SIO
    usb: mon: make mmapped memory read only
    um: Cleanup compiler warning in arch/x86/um/tls_32.c
    um: Cleanup syscall_handler_t cast in syscalls_32.h
  * net/ieee802154: fix uninit value bug in dgram_sendmsg
      include/net/ieee802154_netdev.h
    scsi: qedf: Fix a UAF bug in __qedf_probe()
    ARM: dts: fix Moxa SDIO 'compatible', remove 'sdhci' misnomer
    dmaengine: xilinx_dma: Report error in case of dma_set_mask_and_coherent API failure
    dmaengine: xilinx_dma: cleanup for fetching xlnx,num-fstores property
    firmware: arm_scmi: Add SCMI PM driver remove routine
  * fs: fix UAF/GPF bug in nilfs_mdt_destroy
      fs/inode.c
    ARM: fix function graph tracer and unwinder dependencies
    docs: update mediator information in CoC docs
  * Makefile.extrawarn: Move -Wcast-function-type-strict to W=1
      scripts/Makefile.extrawarn
  * BACKPORT: arm64: compat: vdso: Use legacy syscalls as fallback
      arch/arm64/include/asm/vdso/compat_gettimeofday.h
    ANDROID: Drop explicit 'CONFIG_INIT_STACK_ALL_ZERO=y' from gki_defconfig
  * UPSTREAM: hardening: Remove Clang's enable flag for -ftrivial-auto-var-init=zero
      Makefile
      security/Kconfig.hardening
  * UPSTREAM: hardening: Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO
      Makefile
      security/Kconfig.hardening
  * UPSTREAM: hardening: Clarify Kconfig text for auto-var-init
      security/Kconfig.hardening
  * ANDROID: Fix kenelci build-break for !CONFIG_PERF_EVENTS
      kernel/cpu.c
  * UPSTREAM: f2fs: guarantee to write dirty data when enabling checkpoint back
      fs/f2fs/file.c
      fs/f2fs/super.c

Change-Id: I93dd0c0e8482eb513f664fbd041b8db270b77d45


Bug: 260299968
Change-Id: I93dd0c0e8482eb513f664fbd041b8db270b77d45
Signed-off-by: Wilson Sung <wilsonsung@google.com>
Signed-off-by: JohnnLee <johnnlee@google.com>
2022-12-14 02:48:05 +00:00

285 lines
7.2 KiB
C

/*
* Copyright (c) 2006, Intel Corporation.
*
* This file is released under the GPLv2.
*
* Copyright (C) 2006-2008 Intel Corporation
* Author: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
*
*/
#ifndef _IOVA_H_
#define _IOVA_H_
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/rbtree.h>
#include <linux/atomic.h>
#include <linux/dma-mapping.h>
/* iova structure */
struct iova {
struct rb_node node;
unsigned long pfn_hi; /* Highest allocated pfn */
unsigned long pfn_lo; /* Lowest allocated pfn */
};
struct iova_magazine;
struct iova_cpu_rcache;
#define IOVA_RANGE_CACHE_MAX_SIZE 6 /* log of max cached IOVA range size (in pages) */
#define MAX_GLOBAL_MAGS 32 /* magazines per bin */
struct iova_rcache {
spinlock_t lock;
unsigned long depot_size;
struct iova_magazine *depot[MAX_GLOBAL_MAGS];
struct iova_cpu_rcache __percpu *cpu_rcaches;
};
struct iova_domain;
/* Call-Back from IOVA code into IOMMU drivers */
typedef void (* iova_flush_cb)(struct iova_domain *domain);
/* Destructor for per-entry data */
typedef void (* iova_entry_dtor)(unsigned long data);
/* Number of entries per Flush Queue */
#define IOVA_FQ_SIZE 256
/* Timeout (in ms) after which entries are flushed from the Flush-Queue */
#define IOVA_FQ_TIMEOUT 10
/* Flush Queue entry for defered flushing */
struct iova_fq_entry {
unsigned long iova_pfn;
unsigned long pages;
unsigned long data;
u64 counter; /* Flush counter when this entrie was added */
};
/* Per-CPU Flush Queue structure */
struct iova_fq {
struct iova_fq_entry entries[IOVA_FQ_SIZE];
unsigned head, tail;
spinlock_t lock;
};
/* holds all the iova translations for a domain */
struct iova_domain {
spinlock_t iova_rbtree_lock; /* Lock to protect update of rbtree */
struct rb_root rbroot; /* iova domain rbtree root */
struct rb_node *cached_node; /* Save last alloced node */
struct rb_node *cached32_node; /* Save last 32-bit alloced node */
unsigned long granule; /* pfn granularity for this domain */
unsigned long start_pfn; /* Lower limit for this domain */
unsigned long end_pfn; /* Upper limit for this domain */
unsigned long dma_32bit_pfn;
struct iova anchor; /* rbtree lookup anchor */
struct iova_rcache rcaches[IOVA_RANGE_CACHE_MAX_SIZE]; /* IOVA range caches */
iova_flush_cb flush_cb; /* Call-Back function to flush IOMMU
TLBs */
iova_entry_dtor entry_dtor; /* IOMMU driver specific destructor for
iova entry */
struct iova_fq __percpu *fq; /* Flush Queue */
atomic64_t fq_flush_start_cnt; /* Number of TLB flushes that
have been started */
atomic64_t fq_flush_finish_cnt; /* Number of TLB flushes that
have been finished */
struct timer_list fq_timer; /* Timer to regularily empty the
flush-queues */
atomic_t fq_timer_on; /* 1 when timer is active, 0
when not */
bool best_fit;
};
static inline unsigned long iova_size(struct iova *iova)
{
return iova->pfn_hi - iova->pfn_lo + 1;
}
static inline unsigned long iova_shift(struct iova_domain *iovad)
{
return __ffs(iovad->granule);
}
static inline unsigned long iova_mask(struct iova_domain *iovad)
{
return iovad->granule - 1;
}
static inline size_t iova_offset(struct iova_domain *iovad, dma_addr_t iova)
{
return iova & iova_mask(iovad);
}
static inline size_t iova_align(struct iova_domain *iovad, size_t size)
{
return ALIGN(size, iovad->granule);
}
static inline dma_addr_t iova_dma_addr(struct iova_domain *iovad, struct iova *iova)
{
return (dma_addr_t)iova->pfn_lo << iova_shift(iovad);
}
static inline unsigned long iova_pfn(struct iova_domain *iovad, dma_addr_t iova)
{
return iova >> iova_shift(iovad);
}
#if IS_REACHABLE(CONFIG_IOMMU_IOVA)
int iova_cache_get(void);
void iova_cache_put(void);
struct iova *alloc_iova_mem(void);
void free_iova_mem(struct iova *iova);
void free_iova(struct iova_domain *iovad, unsigned long pfn);
void __free_iova(struct iova_domain *iovad, struct iova *iova);
struct iova *alloc_iova(struct iova_domain *iovad, unsigned long size,
unsigned long limit_pfn,
bool size_aligned);
void free_iova_fast(struct iova_domain *iovad, unsigned long pfn,
unsigned long size);
void queue_iova(struct iova_domain *iovad,
unsigned long pfn, unsigned long pages,
unsigned long data);
unsigned long alloc_iova_fast(struct iova_domain *iovad, unsigned long size,
unsigned long limit_pfn, bool flush_rcache);
struct iova *reserve_iova(struct iova_domain *iovad, unsigned long pfn_lo,
unsigned long pfn_hi);
void copy_reserved_iova(struct iova_domain *from, struct iova_domain *to);
void init_iova_domain(struct iova_domain *iovad, unsigned long granule,
unsigned long start_pfn);
bool has_iova_flush_queue(struct iova_domain *iovad);
int init_iova_flush_queue(struct iova_domain *iovad,
iova_flush_cb flush_cb, iova_entry_dtor entry_dtor);
struct iova *find_iova(struct iova_domain *iovad, unsigned long pfn);
void put_iova_domain(struct iova_domain *iovad);
struct iova *split_and_remove_iova(struct iova_domain *iovad,
struct iova *iova, unsigned long pfn_lo, unsigned long pfn_hi);
void free_cpu_cached_iovas(unsigned int cpu, struct iova_domain *iovad);
void free_global_cached_iovas(struct iova_domain *iovad);
#else
static inline int iova_cache_get(void)
{
return -ENOTSUPP;
}
static inline void iova_cache_put(void)
{
}
static inline struct iova *alloc_iova_mem(void)
{
return NULL;
}
static inline void free_iova_mem(struct iova *iova)
{
}
static inline void free_iova(struct iova_domain *iovad, unsigned long pfn)
{
}
static inline void __free_iova(struct iova_domain *iovad, struct iova *iova)
{
}
static inline struct iova *alloc_iova(struct iova_domain *iovad,
unsigned long size,
unsigned long limit_pfn,
bool size_aligned)
{
return NULL;
}
static inline void free_iova_fast(struct iova_domain *iovad,
unsigned long pfn,
unsigned long size)
{
}
static inline void queue_iova(struct iova_domain *iovad,
unsigned long pfn, unsigned long pages,
unsigned long data)
{
}
static inline unsigned long alloc_iova_fast(struct iova_domain *iovad,
unsigned long size,
unsigned long limit_pfn,
bool flush_rcache)
{
return 0;
}
static inline struct iova *reserve_iova(struct iova_domain *iovad,
unsigned long pfn_lo,
unsigned long pfn_hi)
{
return NULL;
}
static inline void copy_reserved_iova(struct iova_domain *from,
struct iova_domain *to)
{
}
static inline void init_iova_domain(struct iova_domain *iovad,
unsigned long granule,
unsigned long start_pfn)
{
}
static inline bool has_iova_flush_queue(struct iova_domain *iovad)
{
return false;
}
static inline int init_iova_flush_queue(struct iova_domain *iovad,
iova_flush_cb flush_cb,
iova_entry_dtor entry_dtor)
{
return -ENODEV;
}
static inline struct iova *find_iova(struct iova_domain *iovad,
unsigned long pfn)
{
return NULL;
}
static inline void put_iova_domain(struct iova_domain *iovad)
{
}
static inline struct iova *split_and_remove_iova(struct iova_domain *iovad,
struct iova *iova,
unsigned long pfn_lo,
unsigned long pfn_hi)
{
return NULL;
}
static inline void free_cpu_cached_iovas(unsigned int cpu,
struct iova_domain *iovad)
{
}
static inline void free_global_cached_iovas(struct iova_domain *iovad)
{
}
#endif
#endif