Linux 5.10.237
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.237 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 5 arch/arm/mach-exynos/Kconfig | 1 arch/arm64/boot/dts/mediatek/mt8173.dtsi | 6 arch/arm64/include/asm/cputype.h | 4 arch/arm64/kernel/proton-pack.c | 1 arch/mips/dec/prom/init.c | 2 arch/mips/include/asm/ds1287.h | 2 arch/mips/include/asm/mips-cm.h | 22 + arch/mips/kernel/cevt-ds1287.c | 1 arch/mips/kernel/mips-cm.c | 14 + arch/parisc/kernel/pdt.c | 2 arch/powerpc/kernel/rtas.c | 4 arch/riscv/include/asm/kgdb.h | 9 arch/riscv/include/asm/syscall.h | 7 arch/riscv/kernel/kgdb.c | 6 arch/s390/kvm/trace-s390.h | 4 arch/sparc/mm/tlb.c | 5 arch/x86/entry/entry.S | 2 arch/x86/events/intel/ds.c | 8 arch/x86/events/intel/uncore_snbep.c | 49 --- arch/x86/kernel/cpu/amd.c | 2 arch/x86/kernel/cpu/bugs.c | 8 arch/x86/kernel/e820.c | 17 - arch/x86/kvm/svm/avic.c | 60 ++-- arch/x86/kvm/vmx/posted_intr.c | 28 -- arch/x86/platform/pvh/head.S | 7 block/blk-cgroup.c | 24 + block/blk-iocost.c | 7 crypto/crypto_null.c | 39 +- drivers/acpi/pptt.c | 4 drivers/ata/ahci.c | 2 drivers/ata/libata-eh.c | 11 drivers/ata/pata_pxa.c | 6 drivers/ata/sata_sx4.c | 118 +++----- drivers/bluetooth/btrtl.c | 2 drivers/bluetooth/hci_ldisc.c | 19 + drivers/bluetooth/hci_uart.h | 1 drivers/char/virtio_console.c | 7 drivers/clk/clk.c | 4 drivers/clocksource/timer-stm32-lp.c | 4 drivers/cpufreq/cpufreq.c | 8 drivers/cpufreq/scpi-cpufreq.c | 13 drivers/crypto/atmel-sha204a.c | 7 drivers/crypto/caam/qi.c | 6 drivers/crypto/ccp/sp-pci.c | 15 - drivers/dma-buf/udmabuf.c | 2 drivers/dma/dmatest.c | 6 drivers/gpio/gpio-zynq.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 9 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 6 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 10 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 - drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c | 2 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_thermal.c | 4 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c | 4 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_thermal.c | 2 drivers/gpu/drm/drm_atomic_helper.c | 2 drivers/gpu/drm/drm_panel.c | 5 drivers/gpu/drm/drm_panel_orientation_quirks.c | 10 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 7 drivers/gpu/drm/mediatek/mtk_dpi.c | 9 drivers/gpu/drm/nouveau/nouveau_bo.c | 3 drivers/gpu/drm/nouveau/nouveau_gem.c | 3 drivers/gpu/drm/sti/Makefile | 2 drivers/gpu/drm/tiny/repaper.c | 4 drivers/hid/usbhid/hid-pidff.c | 60 +++- drivers/hsi/clients/ssi_protocol.c | 1 drivers/i2c/busses/i2c-cros-ec-tunnel.c | 3 drivers/i3c/master.c | 3 drivers/iio/adc/ad7768-1.c | 5 drivers/infiniband/core/umem_odp.c | 6 drivers/infiniband/hw/hns/hns_roce_main.c | 2 drivers/infiniband/hw/qib/qib_fs.c | 1 drivers/infiniband/hw/usnic/usnic_ib_main.c | 14 - drivers/iommu/amd/iommu.c | 2 drivers/mcb/mcb-parse.c | 2 drivers/md/dm-cache-target.c | 24 + drivers/md/dm-integrity.c | 3 drivers/md/raid1.c | 26 + drivers/media/common/siano/smsdvb-main.c | 2 drivers/media/i2c/adv748x/adv748x.h | 2 drivers/media/i2c/ov7251.c | 4 drivers/media/platform/qcom/venus/Makefile | 3 drivers/media/platform/qcom/venus/core.c | 17 - drivers/media/platform/qcom/venus/core.h | 41 --- drivers/media/platform/qcom/venus/helpers.c | 60 ++-- drivers/media/platform/qcom/venus/helpers.h | 2 drivers/media/platform/qcom/venus/hfi.c | 18 + drivers/media/platform/qcom/venus/hfi_parser.c | 159 +++++++++--- drivers/media/platform/qcom/venus/hfi_parser.h | 2 drivers/media/platform/qcom/venus/hfi_platform.c | 49 +++ drivers/media/platform/qcom/venus/hfi_platform.h | 61 ++++ drivers/media/platform/qcom/venus/hfi_platform_v4.c | 60 ++++ drivers/media/platform/qcom/venus/hfi_venus.c | 18 + drivers/media/platform/qcom/venus/pm_helpers.c | 12 drivers/media/platform/qcom/venus/vdec.c | 8 drivers/media/platform/qcom/venus/venc.c | 91 ++++-- drivers/media/rc/streamzap.c | 135 ++++------ drivers/media/test-drivers/vim2m.c | 6 drivers/media/v4l2-core/v4l2-dv-timings.c | 4 drivers/mfd/ene-kb3930.c | 2 drivers/misc/mei/hw-me-regs.h | 1 drivers/misc/mei/pci-me.c | 1 drivers/misc/pci_endpoint_test.c | 6 drivers/mtd/inftlcore.c | 9 drivers/mtd/mtdpstore.c | 9 drivers/mtd/nand/raw/brcmnand/brcmnand.c | 2 drivers/mtd/nand/raw/r852.c | 3 drivers/net/dsa/b53/b53_common.c | 10 drivers/net/dsa/mv88e6xxx/chip.c | 25 + drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 1 drivers/net/ethernet/intel/igc/igc_main.c | 1 drivers/net/ethernet/intel/igc/igc_ptp.c | 7 drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c | 15 - drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 33 ++ drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 3 drivers/net/phy/phy_led_triggers.c | 23 - drivers/net/ppp/ppp_synctty.c | 5 drivers/net/wireless/ath/ath10k/sdio.c | 5 drivers/net/wireless/atmel/at76c50x-usb.c | 2 drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 1 drivers/net/wireless/ti/wl1251/tx.c | 4 drivers/ntb/hw/idt/ntb_hw_idt.c | 18 - drivers/ntb/ntb_transport.c | 2 drivers/nvme/host/core.c | 10 drivers/nvme/target/fc.c | 14 - drivers/nvme/target/fcloop.c | 2 drivers/of/irq.c | 13 drivers/pci/controller/pcie-brcmstb.c | 13 drivers/pci/pci.c | 103 ++++--- drivers/pci/probe.c | 58 +++- drivers/pci/remove.c | 7 drivers/perf/arm_pmu.c | 8 drivers/phy/tegra/xusb.c | 2 drivers/pinctrl/qcom/pinctrl-msm.c | 12 drivers/platform/x86/asus-laptop.c | 9 drivers/platform/x86/intel_speed_select_if/isst_if_common.c | 2 drivers/pwm/pwm-fsl-ftm.c | 6 drivers/pwm/pwm-mediatek.c | 20 + drivers/pwm/pwm-rcar.c | 24 - drivers/s390/block/dasd.c | 5 drivers/scsi/lpfc/lpfc_hbadisc.c | 2 drivers/scsi/pm8001/pm8001_sas.c | 1 drivers/scsi/scsi_transport_iscsi.c | 7 drivers/scsi/st.c | 2 drivers/scsi/ufs/ufs_bsg.c | 1 drivers/soc/samsung/Kconfig | 12 drivers/soc/samsung/Makefile | 3 drivers/soc/samsung/exynos-asv.c | 45 --- drivers/soc/samsung/exynos-asv.h | 2 drivers/soc/samsung/exynos-chipid.c | 137 ++++++++-- drivers/soc/ti/omap_prm.c | 2 drivers/spi/spi-cadence-quadspi.c | 6 drivers/staging/comedi/drivers/jr3_pci.c | 15 - drivers/staging/rtl8723bs/core/rtw_mlme.c | 2 drivers/thermal/rockchip_thermal.c | 1 drivers/tty/serial/sifive.c | 6 drivers/usb/cdns3/gadget.c | 2 drivers/usb/core/quirks.c | 9 drivers/usb/dwc3/gadget.c | 6 drivers/usb/gadget/udc/aspeed-vhub/dev.c | 3 drivers/usb/host/max3421-hcd.c | 7 drivers/usb/host/ohci-pci.c | 23 + drivers/usb/serial/ftdi_sio.c | 2 drivers/usb/serial/ftdi_sio_ids.h | 5 drivers/usb/serial/option.c | 3 drivers/usb/serial/usb-serial-simple.c | 7 drivers/usb/storage/unusual_uas.h | 7 drivers/vdpa/mlx5/core/mr.c | 7 drivers/vfio/pci/vfio_pci.c | 13 drivers/video/backlight/led_bl.c | 5 drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 6 drivers/xen/xenfs/xensyms.c | 4 fs/Kconfig | 1 fs/btrfs/super.c | 3 fs/cifs/cifs_debug.c | 6 fs/cifs/cifsglob.h | 9 fs/cifs/cifsproto.h | 7 fs/cifs/connect.c | 2 fs/cifs/smb2misc.c | 11 fs/cifs/smb2ops.c | 48 ++- fs/cifs/smb2pdu.c | 10 fs/cifs/transport.c | 43 +-- fs/ext4/block_validity.c | 5 fs/ext4/inode.c | 76 ++++- fs/ext4/namei.c | 2 fs/ext4/super.c | 19 + fs/ext4/xattr.c | 11 fs/f2fs/node.c | 9 fs/fuse/virtio_fs.c | 3 fs/hfs/bnode.c | 6 fs/hfsplus/bnode.c | 6 fs/isofs/export.c | 2 fs/jbd2/journal.c | 1 fs/jfs/jfs_dmap.c | 12 fs/jfs/jfs_imap.c | 2 fs/namespace.c | 3 fs/nfs/Kconfig | 2 fs/nfs/internal.h | 22 - fs/nfs/nfs4session.h | 4 fs/nfsd/Kconfig | 1 fs/nfsd/nfs4state.c | 2 fs/nfsd/nfsfh.h | 7 fs/proc/array.c | 52 ++- include/linux/backing-dev.h | 1 include/linux/blk-cgroup.h | 1 include/linux/filter.h | 4 include/linux/nfs.h | 13 include/linux/pci.h | 12 include/linux/soc/samsung/exynos-chipid.h | 6 include/net/net_namespace.h | 1 include/net/sctp/structs.h | 3 include/uapi/linux/kfd_ioctl.h | 2 include/xen/interface/xen-mca.h | 2 init/Kconfig | 3 kernel/bpf/helpers.c | 11 kernel/bpf/syscall.c | 17 - kernel/dma/contiguous.c | 3 kernel/locking/lockdep.c | 3 kernel/resource.c | 41 --- kernel/sched/cpufreq_schedutil.c | 18 + kernel/trace/ftrace.c | 1 kernel/trace/trace.h | 4 kernel/trace/trace_events.c | 4 kernel/trace/trace_events_filter.c | 4 kernel/trace/trace_events_hist.c | 7 kernel/trace/trace_events_synth.c | 82 ++++++ kernel/trace/trace_synth.h | 1 lib/sg_split.c | 2 mm/memory.c | 4 mm/vmscan.c | 2 net/8021q/vlan_dev.c | 31 -- net/bluetooth/hci_event.c | 5 net/core/dev.c | 1 net/core/filter.c | 80 +++--- net/core/net_namespace.c | 21 + net/core/page_pool.c | 8 net/ipv4/inet_connection_sock.c | 19 + net/mac80211/iface.c | 3 net/mac80211/mesh_hwmp.c | 14 - net/mptcp/protocol.c | 45 +++ net/mptcp/subflow.c | 15 - net/netfilter/ipvs/ip_vs_ctl.c | 10 net/netfilter/nft_set_pipapo_avx2.c | 3 net/openvswitch/actions.c | 4 net/openvswitch/flow_netlink.c | 3 net/sched/sch_hfsc.c | 23 + net/sctp/socket.c | 22 + net/sctp/transport.c | 2 net/tipc/link.c | 1 net/tipc/monitor.c | 3 net/tls/tls_main.c | 6 sound/pci/hda/hda_intel.c | 15 + sound/soc/codecs/wcd934x.c | 2 sound/soc/qcom/qdsp6/q6asm-dai.c | 19 - sound/usb/midi.c | 80 +++++- tools/objtool/check.c | 3 tools/power/cpupower/bench/parse.c | 4 tools/testing/selftests/mincore/mincore_selftest.c | 3 tools/testing/selftests/ublk/test_stripe_04.sh | 24 + tools/testing/selftests/vm/charge_reserved_hugetlb.sh | 4 tools/testing/selftests/vm/hugetlb_reparenting_test.sh | 2 265 files changed, 2371 insertions(+), 1187 deletions(-)
Abdun Nihaal (3):
wifi: at76c50x: fix use after free access in at76_disconnect
wifi: wl1251: fix memory leak in wl1251_tx_work
cxgb4: fix memory leak in cxgb4_init_ethtool_filters() error pathAbhinav Kumar (1):
drm: allow encoder mode_set even when connectors change for crtc
Abhishek Sahu (1):
vfio/pci: fix memory leak during D3hot to D0 transition
Adam Xue (1):
USB: serial: option: add Sierra Wireless EM9291
Al Viro (1):
qibfs: fix _another_ leak
Alexander Stein (1):
usb: host: max3421-hcd: Add missing spi_device_id table
Alexander Usyskin (1):
mei: me: add panther lake H DID
Alexandra Diupina (1):
cifs: avoid NULL pointer dereference in dbg call
Alexandre Torgue (1):
clocksource/drivers/stm32-lptimer: Use wakeup capable instead of init wakeup
Alexey Klimov (1):
ASoC: qdsp6: q6asm-dai: fix q6asm_dai_compr_set_params error path
Andreas Gruenbacher (1):
writeback: fix false warning in inode_to_wb()
Andrew Wyatt (2):
drm: panel-orientation-quirks: Add support for AYANEO 2S
drm: panel-orientation-quirks: Add new quirk for GPD Win 2
Andrii Nakryiko (1):
bpf: avoid holding freeze_mutex during mmap operation
AngeloGioacchino Del Regno (1):
drm/mediatek: mtk_dpi: Explicitly manage TVD clock in power on/off
Ard Biesheuvel (1):
x86/pvh: Call C code via the kernel virtual mapping
Arnaud Lecomte (1):
net: ppp: Add bound checking for skb data on ppp_sync_txmung
Arnd Bergmann (2):
dma/contiguous: avoid warning about unused size_bytes
ntb: reduce stack usage in idt_scan_mws
Arseniy Krasnov (2):
Bluetooth: hci_uart: fix race during initialization
Bluetooth: hci_uart: Fix another race during initialization
Artem Sadovnikov (1):
ext4: fix off-by-one error in do_split
Ben Dooks (1):
bpf: Add endian modifiers to fix endian warnings
Bhupesh (1):
ext4: ignore xattrs past end
Boqun Feng (2):
locking/lockdep: Decrease nr_unused_locks if lock unused in zap_class()
PCI: Introduce domain_nr in pci_host_bridge
Chao Yu (1):
f2fs: fix to avoid out-of-bounds access in f2fs_truncate_inode_blocks()
Chen Hanxiao (1):
ipvs: properly dereference pe in ip_vs_add_service
Chen-Yu Tsai (1):
arm64: dts: mediatek: mt8173: Fix disp-pwm compatible string
Chengchang Tang (1):
RDMA/hns: Fix wrong maximum DMA segment size
Chenyuan Yang (3):
mfd: ene-kb3930: Fix a potential NULL pointer dereference
soc: samsung: exynos-chipid: Add NULL pointer check in exynos_chipid_probe()
usb: gadget: aspeed: Add NULL pointer check in ast_vhub_init_dev()
Chris Bainbridge (1):
drm/nouveau: prime: fix ttm_bo_delayed_delete oops
Chris Wilson (1):
drm/i915/gt: Cleanup partial engine discovery failures
Christopher S M Hall (2):
igc: handle the IGC_PTP_ENABLED flag correctly
igc: cleanup PTP module if probe fails
Chunguang Xu (1):
nvme: avoid double free special payload
Colin Ian King (1):
media: venus: Fix uninitialized variable count being checked for zero
Cong Wang (2):
net_sched: hfsc: Fix a UAF vulnerability in class handling
net_sched: hfsc: Fix a potential UAF in hfsc_dequeue() too
Craig Hesling (1):
USB: serial: simple: add OWON HDS200 series oscilloscope support
Dan Carpenter (1):
Bluetooth: btrtl: Prevent potential NULL dereference
Daniel Golle (1):
pwm: mediatek: always use bus clock for PWM on MT7622
Daniel Kral (1):
ahci: add PCI ID for Marvell 88SE9215 SATA Controller
Daniel Wagner (1):
nvmet-fcloop: swap list_add_tail arguments
Dapeng Mi (1):
perf/x86/intel: Allow to update user space GPRs from PEBS records
David Yat Sin (1):
drm/amdkfd: clamp queue size to minimum
Denis Arefev (4):
asus-laptop: Fix an uninitialized variable drm/amd/pm/powerplay: Prevent division by zero drm/amd/pm/powerplay/hwmgr/smu7_thermal: Prevent division by zero drm/amd/pm/powerplay/hwmgr/vega20_thermal: Prevent division by zero
Douglas Anderson (3):
arm64: cputype: Add QCOM_CPU_PART_KRYO_3XX_GOLD
arm64: cputype: Add MIDR_CORTEX_A76AE
arm64: errata: Add QCOM_KRYO_4XX_GOLD to the spectre_bhb_k24_list
Douglas Raillard (1):
tracing: Fix synth event printk format for str fields
Duoming Zhou (1):
drivers: staging: rtl8723bs: Fix deadlock in rtw_surveydone_event_callback()
Edward Adam Davis (3):
jfs: Prevent copying of nlink with value 0 from disk inode
jfs: add sanity check for agwidth in dbMount
isofs: Prevent the use of too small fid
Enzo Matsumiya (2):
smb: client: fix UAF in async decryption
cifs: print TIDs as hex
Eric Biggers (2):
ext4: reject casefold inode flag without casefold feature
nfs: add missing selections of CONFIG_CRC32
Eric Dumazet (1):
net: defer final 'struct net' free in netns dismantle
Fabien Parent (1):
pwm: mediatek: Always use bus clock
Fedor Pchelkin (1):
ntb: use 64-bit arithmetic for the MSI doorbell mask
Felix Huettner (1):
net: openvswitch: fix race on port output
Florian Westphal (1):
nft_set_pipapo: fix incorrect avx2 match of 5th field octet
Frode Isaksen (1):
usb: dwc3: gadget: check that event count does not exceed event buffer length
Gabriele Paoloni (1):
tracing: fix return value in __ftrace_event_enable_disable for TRACE_REG_UNREGISTER
Gang Yan (1):
mptcp: fix NULL pointer in can_accept_new_subflow
Gavrilov Ilia (1):
wifi: mac80211: fix integer overflow in hwmp_route_info_get()
Geert Uytterhoeven (1):
pwm: rcar: Simplify multiplication/shift logic
Greg Kroah-Hartman (1):
Linux 5.10.237
Gregory CLEMENT (1):
MIPS: cm: Detect CM quirks from device tree
Guixin Liu (1):
scsi: ufs: bsg: Set bsg_queue to NULL after removal
Halil Pasic (1):
virtio_console: fix missing byte order handling for cols and rows
Hannes Reinecke (4):
ata: sata_sx4: Drop pointless VPRINTK() calls and convert the remaining ones
nvme: requeue namespace scan on missed AENs
nvme: re-read ANA log page after ns scan completes
nvme: fixup scan failure for non-ANA multipath controllers
Hans de Goede (1):
drivers: staging: rtl8723bs: Fix locking in rtw_scan_timeout_handler()
Haoxiang Li (1):
mcb: fix a double free bug in chameleon_parse_gdd()
Heiko Stuebner (1):
clk: check for disabled clock-provider in of_clk_get_hw_from_clkspec()
Henry Martin (2):
ata: pata_pxa: Fix potential NULL pointer dereference in pxa_ata_probe()
cpufreq: scpi: Fix null-ptr-deref in scpi_cpufreq_get_rate()
Herbert Xu (2):
crypto: caam/qi - Fix drv_ctx refcount bug
crypto: null - Use spin lock instead of mutex
Hersen Wu (1):
drm/amd/display: Stop amdgpu_dm initialize when link nums greater than max_links
Herve Codina (1):
backlight: led_bl: Hold led_access lock when calling led_sysfs_disable()
Hou Tao (1):
bpf: Check rcu_read_lock_trace_held() before calling bpf map helpers
Huacai Chen (1):
USB: OHCI: Add quirk for LS7A OHCI controller (rev 0x02)
Ian Abbott (1):
comedi: jr3_pci: Fix synchronous deletion of timer
Icenowy Zheng (1):
wifi: mt76: mt76x2u: add TP-Link TL-WDN6200 ID to device table
Igor Pylypiv (1):
scsi: pm80xx: Set phy_attached to zero when device is gone
Ilya Maximets (2):
net: openvswitch: fix nested key length validation in the set() action
openvswitch: fix lockup on tx to unregistering netdev with carrier
Jakub Kicinski (1):
net: tls: explicitly disallow disconnect
Jan Beulich (1):
xenfs/xensyms: respect hypervisor's "next" indication
Jan Kara (1):
jbd2: remove wrong sb->s_sequence check
Jann Horn (1):
ext4: don't treat fhandle lookup of ea_inode as FS corruption
Jason Xing (1):
page_pool: avoid infinite loop to schedule delayed worker
Jean-Marc Eurin (1):
ACPI PPTT: Fix coding mistakes in a couple of sizeof() calls
Jeff Layton (1):
nfs: move nfs_fhandle_hash to common include file
Jiasheng Jiang (1):
mtd: Replace kcalloc() with devm_kcalloc()
Johannes Berg (1):
Revert "wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue()"
Johannes Kimmel (1):
btrfs: correctly escape subvol in btrfs_show_options()
Jonas Gorski (1):
net: b53: enable BPDU reception for management port
Jonathan Cameron (1):
iio: adc: ad7768-1: Move setting of val a bit later to avoid unnecessary return value check
Josh Poimboeuf (5):
pwm: mediatek: Prevent divide-by-zero in pwm_mediatek_config()
objtool, ASoC: codecs: wcd934x: Remove potential undefined behavior in wcd934x_slim_irq_handler()
objtool: Stop UNRET validation on UD2
x86/bugs: Use SBPB in write_ibpb() if applicable
x86/bugs: Don't fill RSB on VMEXIT with eIBRS+retpoline
Kai Mäkisara (1):
scsi: st: Fix array overflow in st_setup()
Kai-Heng Feng (1):
PCI: Coalesce host bridge contiguous apertures
Kaixin Wang (1):
HSI: ssi_protocol: Fix use after free vulnerability in ssi_protocol Driver Due to Race Condition
Kamal Dasu (1):
mtd: rawnand: brcmnand: fix PM resume warning
Kan Liang (2):
perf/x86/intel/uncore: Fix the scale of IIO free running counters on SNR perf/x86/intel/uncore: Fix the scale of IIO free running counters on ICX
Kang Yang (1):
wifi: ath10k: avoid NULL pointer error during sdio remove
Karina Yankevich (1):
media: v4l2-dv-timings: prevent possible overflow in v4l2_detect_gtf()
Kees Cook (1):
xen/mcelog: Add __nonstring annotations for unterminated strings
Kirill A. Shutemov (1):
mm: fix apply_to_existing_page_range()
Krzysztof Kozlowski (5):
gpio: zynq: Fix wakeup source leaks on device unbind
soc: samsung: exynos-chipid: initialize later - with arch_initcall
soc: samsung: exynos-chipid: convert to driver and merge exynos-asv
soc: samsung: exynos-chipid: avoid soc_device_to_device()
soc: samsung: exynos-chipid: correct helpers __init annotation
Kunihiko Hayashi (3):
misc: pci_endpoint_test: Avoid issue of interrupts remaining after request_irq error
misc: pci_endpoint_test: Fix displaying 'irq_type' after 'request_irq' error
misc: pci_endpoint_test: Fix 'irq_type' to convey the correct type
Kuniyuki Iwashima (1):
tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().
Kunwu Chan (1):
pmdomain: ti: Add a null pointer check to the omap_prm_domain_init
Lee Jones (1):
drm/amd/amdgpu/amdgpu_vram_mgr: Add missing descriptions for 'dev' and 'dir'
Leonid Arapov (1):
fbdev: omapfb: Add 'plane' value check
Li Lingfeng (1):
nfsd: decrease sc_count directly if fail to queue dl_recall
Li Nan (1):
blk-iocost: do not WARN if iocg was already offlined
Luca Ceresoli (1):
drm/bridge: panel: forbid initializing a panel with unknown connector type
Luiz Augusto von Dentz (1):
Bluetooth: hci_event: Fix sending MGMT_EV_DEVICE_FOUND for invalid address
Ma Ke (2):
PCI: Fix reference leak in pci_alloc_child_bus()
PCI: Fix reference leak in pci_register_host_bridge()
Manjunatha Venkatesh (1):
i3c: Add NULL pointer check in i3c_master_queue_ibi()
Marek Behún (3):
net: dsa: mv88e6xxx: workaround RGMII transmit delay erratum for 6320 family
net: dsa: mv88e6xxx: fix VTU methods for 6320 family
crypto: atmel-sha204a - Set hwrng quality to lowest possible
Mark Brown (1):
selftests/mm: generate a temporary mountpoint for cgroup filesystem
Mark Rutland (1):
perf: arm_pmu: Don't disable counter in armpmu_add()
Mathieu Desnoyers (1):
mm: add missing release barrier on PGDAT_RECLAIM_LOCKED unlock
Matthew Auld (1):
drm/amdgpu/dma_buf: fix page_link check
Matthew Majewski (1):
media: vim2m: print device name after registering device
Matthieu Baerts (NGI0) (2):
mptcp: only inc MPJoinAckHMacFailure for HMAC failures
mptcp: sockopt: fix getting IPV6_V6ONLY
Max Grobecker (1):
x86/cpu: Don't clear X86_FEATURE_LAHF_LM flag in init_amd_k8() on AMD when running in a virtual machine
Maxim Mikityanskiy (1):
ALSA: hda: intel: Fix Optimus when GPU has no sound
Meir Elisha (1):
md/raid1: Add check for missing source disk in process_checks()
Miao Li (2):
usb: quirks: add DELAY_INIT quirk for Silicon Motion Flash Drive
usb: quirks: Add delay init quirk for SanDisk 3.2Gen1 Flash Drive
Miaohe Lin (1):
kernel/resource: fix kfree() of bootmem memory again
Miaoqian Lin (2):
scsi: iscsi: Fix missing scsi_host_put() in error path
phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function
Michael Ehrenreich (1):
USB: serial: ftdi_sio: add support for Abacus Electrics Optical Probe
Mikulas Patocka (1):
dm-integrity: set ti->error on memory allocation failure
Ming Lei (1):
selftests: ublk: fix test_stripe_04
Ming-Hung Tsai (1):
dm cache: fix flushing uninitialized delayed_work on cache_ctr error
Miquel Raynal (1):
spi: cadence-qspi: Fix probe on AM62A LP SK
Miroslav Franc (1):
s390/dasd: fix double module refcount decrement
Murad Masimov (2):
media: streamzap: prevent processing IR data on URB failure
media: streamzap: fix race between device disconnection and urb callback
Myrrh Periwinkle (1):
x86/e820: Fix handling of subpage regions when calculating nosave ranges in e820__register_nosave_regions()
Nathan Chancellor (2):
riscv: Avoid fortify warning in syscall_get_arguments()
kbuild: Add '-fno-builtin-wcslen'
Nathan Lynch (1):
powerpc/rtas: Prevent Spectre v1 gadget construction in sys_rtas()
Nikita Zhandarovich (1):
drm/repaper: fix integer overflows in repeat functions
Niklas Cassel (1):
ata: libata-eh: Do not use ATAPI DMA for a device limited to PIO mode
Niklas Söderlund (1):
media: i2c: adv748x: Fix test pattern selection mask
Ojaswin Mujoo (2):
ext4: protect ext4_release_dquot against freezing
ext4: make block validity check resistent to sb bh corruption
Oleg Nesterov (2):
fs/proc: do_task_stat: use sig->stats_lock to gather the threads/children stats sched/isolation: Make CONFIG_CPU_ISOLATION depend on CONFIG_SMP
Oliver Neukum (2):
USB: storage: quirk for ADATA Portable HDD CH94
USB: VLI disk crashes if LPM is used
Pali Rohár (1):
PCI: Assign PCI domain IDs by ida_alloc()
Paulo Alcantara (5):
smb: client: fix potential UAF in cifs_debug_files_proc_show()
smb: client: fix use-after-free bug in cifs_debug_data_proc_show()
smb: client: fix potential deadlock when releasing mids
smb: client: fix potential UAF in cifs_stats_proc_show()
smb: client: fix NULL ptr deref in crypto_aead_setkey()
Pei Li (1):
jfs: Fix shift-out-of-bounds in dbDiscardAG
Philip Yang (1):
drm/amdkfd: Fix pqm_destroy_queue race with GPU reset
Qingfang Deng (1):
net: phy: leds: fix memory leak
Qiuxu Zhuo (1):
selftests/mincore: Allow read-ahead pages to reach the end of the file
Rafael J. Wysocki (2):
cpufreq/sched: Fix the usage of CPUFREQ_NEED_UPDATE_LIMITS
cpufreq: Reference count policy in cpufreq_update_limits()
Ralph Siemsen (1):
usb: cdns3: Fix deadlock when using NCM gadget
Ramesh Errabolu (1):
drm/amdgpu: Remove amdgpu_device arg from free_sgt api (v2)
Rand Deeb (2):
fs/jfs: cast inactags to s64 to prevent potential overflow fs/jfs: Prevent integer overflow in AG size calculation
Remi Pommarel (2):
wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue()
wifi: mac80211: Purge vif txq in ieee80211_do_stop()
Ricard Wanderlof (1):
ALSA: usb-audio: Fix CME quirk for UF series keyboards
Ricardo Cañuelo Navarro (1):
sctp: detect and prevent references to a freed transport in sendmsg
Rob Herring (1):
PCI: Fix use-after-free in pci_bus_release_domain_nr()
Rolf Eike Beer (1):
drm/sti: remove duplicate object names
Ryan Roberts (1):
sparc/mm: disable preemption in lazy mmu mode
Ryo Takakura (1):
serial: sifive: lock port in startup()/shutdown() callbacks
Sakari Ailus (2):
media: i2c: ov7251: Set enable GPIO low in probe
media: i2c: ov7251: Introduce 1 ms delay between regulators and en GPIO
Sam Protsenko (1):
soc: samsung: exynos-chipid: Pass revision reg offsets
Sean Christopherson (3):
iommu/amd: Return an error if vCPU affinity is set for non-vCPU IRTE
KVM: SVM: Allocate IR data using atomic allocation
KVM: x86: Reset IRTE to host control if *new* route isn't postable
Sean Young (4):
media: streamzap: remove unnecessary ir_raw_event_reset and handle
media: streamzap: no need for usb pid/vid in device name
media: streamzap: less chatter
media: streamzap: remove unused struct members
Sebastian Andrzej Siewior (1):
xdp: Reset bpf_redirect_info before running a xdp's BPF prog.
Sergiu Cuciurean (1):
iio: adc: ad7768-1: Fix conversion result sign
Shay Drory (1):
RDMA/core: Silence oversized kvmalloc() warning
Si-Wei Liu (1):
vdpa/mlx5: Fix oversized null mkey longer than 32bit
Srinivas Pandruvada (1):
platform/x86: ISST: Correct command storage data length
Srinivasan Shanmugam (1):
drm/amd/display: Fix out-of-bounds access in 'dcn21_link_encoder_create'
Stanimir Varbanov (10):
PCI: brcmstb: Fix missing of_node_put() in brcm_pcie_probe()
media: venus: venc: Init the session only once in queue_setup
media: venus: Limit HFI sessions to the maximum supported
media: venus: hfi: Correct session init return error
media: venus: pm_helpers: Check instance state when calculate instance frequency
media: venus: Create hfi platform and move vpp/vsp there
media: venus: Rename venus_caps to hfi_plat_caps
media: venus: hfi_plat: Add codecs and capabilities ops
media: venus: Get codecs and capabilities from hfi platform
media: venus: hfi_parser: Check for instance after hfi platform get
Stanislav Fomichev (1):
net: vlan: don't propagate flags on open
Stephan Gerhold (1):
pinctrl: qcom: Clear latched interrupt status when changing IRQ type
Steven Rostedt (1):
tracing: Fix filter string testing
Steven Rostedt (Google) (1):
tracing: Allow synthetic events to pass around stacktraces
T Pratham (1):
lib: scatterlist: fix sg_split_phys to preserve original scatterlist offsets
Thadeu Lima de Souza Cascardo (1):
i2c: cros-ec-tunnel: defer probe if parent EC is not present
Thomas Bogendoerfer (1):
MIPS: cm: Fix warning if MIPS_CM is disabled
Thomas Weißschuh (1):
KVM: s390: Don't use %pK through tracepoints
Thorsten Leemhuis (1):
module: sign with sha512 instead of sha1 by default
Tom Lendacky (1):
crypto: ccp - Fix check for the primary ASP device
Tomasz Pakuła (3):
HID: pidff: Convert infinite length from Linux API to PID standard
HID: pidff: Do not send effect envelope if it's empty
HID: pidff: Fix null pointer dereference in pidff_find_fields
Trevor Woerner (1):
thermal/drivers/rockchip: Add missing rk3328 mapping entry
Trond Myklebust (1):
umount: Allow superblock owners to force umount
Tung Nguyen (2):
tipc: fix memory leak in tipc_link_xmit
tipc: fix NULL pointer dereference in tipc_mon_reinit_self()
Tuo Li (1):
scsi: lpfc: Fix a possible data race in lpfc_unregister_fcf_rescan()
Uwe Kleine-König (2):
pwm: rcar: Improve register calculation
pwm: fsl-ftm: Handle clk_get_rate() returning 0
Vasiliy Kovalev (1):
hfs/hfsplus: fix slab-out-of-bounds in hfs_bnode_read_key
Vikash Garodia (4):
media: venus: hfi: add a check to handle OOB in sfr region
media: venus: hfi: add check to handle incorrect queue size
media: venus: hfi_parser: add check to avoid out of bound access
media: venus: hfi_parser: refactor hfi packet parsing logic
Vinicius Costa Gomes (1):
dmaengine: dmatest: Fix dmatest waiting less when interrupted
Vlad Buslov (1):
net/mlx5e: Fix use-after-free of encap entry in neigh update handler
WangYuli (6):
riscv: KGDB: Do not inline arch_kgdb_breakpoint()
riscv: KGDB: Remove ".option norvc/.option rvc" for kgdb_compiled_break
nvmet-fc: Remove unused functions
MIPS: dec: Declare which_prom() as static
MIPS: cevt-ds1287: Add missing ds1287.h include
MIPS: ds1287: Match ds1287_set_base_clock() function types
Wentao Liang (3):
ata: sata_sx4: Add error handling in pdc20621_i2c_read()
mtd: inftlcore: Add error check for inftl_read_oob()
mtd: rawnand: Add status chack in r852_ready()
Willem de Bruijn (1):
bpf: support SKF_NET_OFF and SKF_LL_OFF on skb frags
Xiangsheng Hou (1):
virtiofs: add filesystem context source name check
Xiaogang Chen (1):
udmabuf: fix a buf size overflow issue during udmabuf creation
Xiaxi Shen (1):
ext4: fix timer use-after-free on failed mount
Yu Kuai (1):
blk-cgroup: support to track if policy is online
Yu-Chun Lin (1):
parisc: PDT: Fix missing prototype warning
Yuan Can (1):
media: siano: Fix error handling in smsdvb_module_init()
Yue Haibing (1):
RDMA/usnic: Fix passing zero to PTR_ERR in usnic_ib_pci_probe()
Zhang Xiaoxu (1):
cifs: Fix UAF in cifs_demultiplex_thread()
Zhongqiu Han (1):
pm: cpupower: bench: Prevent NULL dereference on malloc failure
Zijun Hu (3):
of/irq: Fix device node refcount leakages in of_irq_count() of/irq: Fix device node refcount leakage in API irq_of_parse_and_map() of/irq: Fix device node refcount leakages in of_irq_init()
zhoumin (1):
ftrace: Add cond_resched() to ftrace_graph_set_hash()
Greg Kroah-Hartman
maintainerMakefile +4 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 236 +SUBLEVEL = 237 EXTRAVERSION = NAME = Dare mighty things
@@ -976,6 +976,9 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types) # Require designated initializers for all marked structures KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init) +# Ensure compilers do not transform certain loops into calls to wcslen() +KBUILD_CFLAGS += -fno-builtin-wcslen + # change __FILE__ to the relative path from the srctree KBUILD_CPPFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
arch/arm/mach-exynos/Kconfig +0 -1
@@ -13,7 +13,6 @@ menuconfig ARCH_EXYNOS select ARM_GIC select EXYNOS_IRQ_COMBINER select COMMON_CLK_SAMSUNG - select EXYNOS_ASV select EXYNOS_CHIPID select EXYNOS_THERMAL select EXYNOS_PMU
arch/arm64/boot/dts/mediatek/mt8173.dtsi +2 -4
@@ -1193,8 +1193,7 @@ dpi0_out: endpoint { }; pwm0: pwm@1401e000 { - compatible = "mediatek,mt8173-disp-pwm", - "mediatek,mt6595-disp-pwm"; + compatible = "mediatek,mt8173-disp-pwm"; reg = <0 0x1401e000 0 0x1000>; #pwm-cells = <2>; clocks = <&mmsys CLK_MM_DISP_PWM026M>,
@@ -1204,8 +1203,7 @@ pwm0: pwm@1401e000 { }; pwm1: pwm@1401f000 { - compatible = "mediatek,mt8173-disp-pwm", - "mediatek,mt6595-disp-pwm"; + compatible = "mediatek,mt8173-disp-pwm"; reg = <0 0x1401f000 0 0x1000>; #pwm-cells = <2>; clocks = <&mmsys CLK_MM_DISP_PWM126M>,
arch/arm64/include/asm/cputype.h +4 -0
@@ -74,6 +74,7 @@#define ARM_CPU_PART_CORTEX_A76 0xD0B#define ARM_CPU_PART_NEOVERSE_N1 0xD0C#define ARM_CPU_PART_CORTEX_A77 0xD0D +#define ARM_CPU_PART_CORTEX_A76AE 0xD0E#define ARM_CPU_PART_NEOVERSE_V1 0xD40#define ARM_CPU_PART_CORTEX_A78 0xD41#define ARM_CPU_PART_CORTEX_A78AE 0xD42
@@ -110,6 +111,7 @@#define QCOM_CPU_PART_KRYO 0x200#define QCOM_CPU_PART_KRYO_2XX_GOLD 0x800#define QCOM_CPU_PART_KRYO_2XX_SILVER 0x801 +#define QCOM_CPU_PART_KRYO_3XX_GOLD 0x802#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803#define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805
@@ -136,6 +138,7 @@#define MIDR_CORTEX_A76 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76)#define MIDR_NEOVERSE_N1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N1)#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77) +#define MIDR_CORTEX_A76AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76AE)#define MIDR_NEOVERSE_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1)#define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78)#define MIDR_CORTEX_A78AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78AE)
@@ -167,6 +170,7 @@#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)#define MIDR_QCOM_KRYO_2XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_GOLD)#define MIDR_QCOM_KRYO_2XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_SILVER) +#define MIDR_QCOM_KRYO_3XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_GOLD)#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER)#define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD)#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER)
arch/arm64/kernel/proton-pack.c +1 -0
@@ -874,6 +874,7 @@ u8 spectre_bhb_loop_affected(int scope)MIDR_ALL_VERSIONS (MIDR_CORTEX_A76 ),MIDR_ALL_VERSIONS (MIDR_CORTEX_A77 ),MIDR_ALL_VERSIONS (MIDR_NEOVERSE_N1 ), + MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_4XX_GOLD), {}, };static const struct midr_range spectre_bhb_k11_list[] = {
arch/mips/dec/prom/init.c +1 -1
@@ -42,7 +42,7 @@ int (*__pmax_close)(int);* Detect which PROM the DECSTATION has, and set the callback vectors * appropriately. */ -void __init which_prom (s32 magic,s32 *prom_vec) +static void __init which_prom (s32 magic,s32 *prom_vec) {/* * No sign of the REX PROM's magic number means we assume a non-REX
arch/mips/include/asm/ds1287.h +1 -1
@@ -8,7 +8,7 @@#define __ASM_DS1287_Hextern int ds1287_timer_state (void ); -extern void ds1287_set_base_clock (unsigned int clock); +extern int ds1287_set_base_clock (unsigned int hz);extern int ds1287_clockevent_init (int irq);#endif
arch/mips/include/asm/mips-cm.h +22 -0
@@ -47,6 +47,16 @@ extern phys_addr_t __mips_cm_phys_base(void);*/ extern int mips_cm_is64; +/* +* mips_cm_is_l2_hci_broken - determine if HCI is broken +* +* Some CM reports show that Hardware Cache Initialization is +* complete, but in reality it's not the case. They also incorrectly +* indicate that Hardware Cache Initialization is supported. This +* flags allows warning about this broken feature. +*/ +extern bool mips_cm_is_l2_hci_broken; +/** * mips_cm_error_report - Report CM cache errors */
@@ -85,6 +95,18 @@ static inline bool mips_cm_present(void)#endif } +/** +* mips_cm_update_property - update property from the device tree +* +* Retrieve the properties from the device tree if a CM node exist and +* update the internal variable based on this. +*/ +#ifdef CONFIG_MIPS_CM +extern void mips_cm_update_property (void ); +#else +static inline void mips_cm_update_property (void ) {} +#endif +/** * mips_cm_has_l2sync - determine whether an L2-only sync region is present *
arch/mips/kernel/cevt-ds1287.c +1 -0
@@ -10,6 +10,7 @@#include <linux/mc146818rtc.h> #include <linux/irq.h> +#include <asm/ds1287.h> #include <asm/time.h> int ds1287_timer_state (void )
arch/mips/kernel/mips-cm.c +14 -0
@@ -5,6 +5,7 @@*/ #include <linux/errno.h> +#include <linux/of.h> #include <linux/percpu.h> #include <linux/spinlock.h>
@@ -14,6 +15,7 @@void __iomem *mips_gcr_base;void __iomem *mips_cm_l2sync_base;int mips_cm_is64; +bool mips_cm_is_l2_hci_broken;static char *cm2_tr[8 ] = {"mem" ,"gcr" ,"gic" ,"mmio" ,
@@ -238,6 +240,18 @@ static void mips_cm_probe_l2sync(void) mips_cm_l2sync_base =ioremap (addr,MIPS_CM_L2SYNC_SIZE ); } +void mips_cm_update_property (void ) +{ +struct device_node *cm_node; + + cm_node =of_find_compatible_node (of_root,NULL ,"mobileye,eyeq6-cm" ); +if (!cm_node) +return ; +pr_info ("HCI (Hardware Cache Init for the L2 cache) in GCR_L2_RAM_CONFIG from the CM3 is broken" ); + mips_cm_is_l2_hci_broken = true; +of_node_put (cm_node); +} +int mips_cm_probe (void ) {phys_addr_t addr;
arch/parisc/kernel/pdt.c +2 -0
@@ -62,6 +62,7 @@ static unsigned long pdt_entry[MAX_PDT_ENTRIES] __page_aligned_bss;#define PDT_ADDR_PERM_ERR (pdt_type != PDT_PDC ? 2UL : 0UL)#define PDT_ADDR_SINGLE_ERR 1UL +#ifdef CONFIG_PROC_FS /* report PDT entries via /proc/meminfo */ void arch_report_meminfo (struct seq_file *m) {
@@ -73,6 +74,7 @@ void arch_report_meminfo(struct seq_file *m)seq_printf (m,"PDT_cur_entries: %7lu\n" , pdt_status.pdt_entries); } +#endif static int get_info_pat_new (void ) {
arch/powerpc/kernel/rtas.c +4 -0
@@ -16,6 +16,7 @@#include <linux/capability.h> #include <linux/delay.h> #include <linux/cpu.h> +#include <linux/nospec.h> #include <linux/sched.h> #include <linux/smp.h> #include <linux/completion.h>
@@ -1173,6 +1174,9 @@ SYSCALL_DEFINE1(rtas, struct rtas_args __user *, uargs) || nargs + nret > ARRAY_SIZE(args.args))return -EINVAL ; + nargs =array_index_nospec (nargs,ARRAY_SIZE (args.args)); + nret =array_index_nospec (nret,ARRAY_SIZE (args.args) - nargs); +/* Copy in args. */ if (copy_from_user (args.args, uargs->args, nargs *sizeof (rtas_arg_t)) !=0 )
arch/riscv/include/asm/kgdb.h +1 -8
@@ -19,16 +19,9 @@#ifndef __ASSEMBLY__ +void arch_kgdb_breakpoint (void );extern unsigned long kgdb_compiled_break; -static inline void arch_kgdb_breakpoint (void ) -{ - asm(".global kgdb_compiled_break\n" -".option norvc\n" -"kgdb_compiled_break: ebreak\n" -".option rvc\n" ); -} -#endif /* !__ASSEMBLY__ */ #define DBG_REG_ZERO "zero"
arch/riscv/include/asm/syscall.h +5 -2
@@ -60,8 +60,11 @@ static inline void syscall_get_arguments(struct task_struct *task, unsigned long *args) { args[0 ] = regs->orig_a0; - args++; -memcpy (args, ®s->a1,5 *sizeof (args[0 ])); + args[1 ] = regs->a1; + args[2 ] = regs->a2; + args[3 ] = regs->a3; + args[4 ] = regs->a4; + args[5 ] = regs->a5; } static inline void syscall_set_arguments(struct task_struct *task,
arch/riscv/kernel/kgdb.c +6 -0
@@ -273,6 +273,12 @@ void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc) regs->epc = pc; } +noinline void arch_kgdb_breakpoint(void) +{ + asm(".global kgdb_compiled_break\n" +"kgdb_compiled_break: ebreak\n" ); +} +void kgdb_arch_handle_qxfer_pkt (char *remcom_in_buffer,char *remcom_out_buffer) {
arch/s390/kvm/trace-s390.h +2 -2
@@ -56,7 +56,7 @@ TRACE_EVENT(kvm_s390_create_vcpu, __entry->sie_block = sie_block; ), -TP_printk ("create cpu %d at 0x%pK, sie block at 0x%pK" , +TP_printk ("create cpu %d at 0x%p, sie block at 0x%p" , __entry->id, __entry->vcpu, __entry->sie_block) );
@@ -255,7 +255,7 @@ TRACE_EVENT(kvm_s390_enable_css, __entry->kvm = kvm; ), -TP_printk ("enabling channel I/O support (kvm @ %pK)\n" , +TP_printk ("enabling channel I/O support (kvm @ %p)\n" , __entry->kvm) );
arch/sparc/mm/tlb.c +4 -1
@@ -51,8 +51,10 @@ void flush_tlb_pending(void)void arch_enter_lazy_mmu_mode (void ) { -struct tlb_batch *tb =this_cpu_ptr (&tlb_batch); +struct tlb_batch *tb; +preempt_disable (); + tb =this_cpu_ptr (&tlb_batch); tb->active =1 ; }
@@ -63,6 +65,7 @@ void arch_leave_lazy_mmu_mode(void)if (tb->tlb_nr)flush_tlb_pending (); tb->active =0 ; +preempt_enable (); } static void tlb_batch_add_one(struct mm_struct *mm, unsigned long vaddr,
arch/x86/entry/entry.S +1 -1
@@ -16,7 +16,7 @@ SYM_FUNC_START(entry_ibpb) movl $MSR_IA32_PRED_CMD, %ecx - movl $PRED_CMD_IBPB, %eax + movl _ASM_RIP(x86_pred_cmd), %eax xorl %edx, %edx wrmsr
arch/x86/events/intel/ds.c +5 -3
@@ -988,8 +988,10 @@ static u64 pebs_update_adaptive_cfg(struct perf_event *event)* + precise_ip < 2 for the non event IP * + For RTM TSX weight we need GPRs for the abort code. */ - gprs = (sample_type &PERF_SAMPLE_REGS_INTR ) && - (attr->sample_regs_intr &PEBS_GP_REGS ); + gprs = ((sample_type &PERF_SAMPLE_REGS_INTR ) && + (attr->sample_regs_intr &PEBS_GP_REGS )) || + ((sample_type &PERF_SAMPLE_REGS_USER ) && + (attr->sample_regs_user &PEBS_GP_REGS )); tsx_weight = (sample_type & PERF_SAMPLE_WEIGHT) && ((attr->config & INTEL_ARCH_EVENT_MASK) ==
@@ -1572,7 +1574,7 @@ static void setup_pebs_adaptive_sample_data(struct perf_event *event, regs->flags &= ~PERF_EFLAGS_EXACT ; } -if (sample_type &PERF_SAMPLE_REGS_INTR ) +if (sample_type & (PERF_SAMPLE_REGS_INTR |PERF_SAMPLE_REGS_USER ))adaptive_pebs_save_regs (regs, gprs); }
arch/x86/events/intel/uncore_snbep.c +9 -40
81 lines not on this page · raw message
arch/x86/kernel/cpu/amd.c +1 -1
@@ -839,7 +839,7 @@ static void init_amd_k8(struct cpuinfo_x86 *c)* (model = 0x14) and later actually support it. * (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM ) && !cpu_has (c,X86_FEATURE_HYPERVISOR )) {clear_cpu_cap (c,X86_FEATURE_LAHF_LM );if (!rdmsrl_amd_safe (0xc001100d , &value)) { value &= ~BIT_64 (32 );
arch/x86/kernel/cpu/bugs.c +4 -4
@@ -1543,20 +1543,20 @@ static void __init spectre_v2_determine_rsb_fill_type_at_vmexit(enum spectre_v2_case SPECTRE_V2_NONE :return ; -case SPECTRE_V2_EIBRS_LFENCE :case SPECTRE_V2_EIBRS : +case SPECTRE_V2_EIBRS_LFENCE : +case SPECTRE_V2_EIBRS_RETPOLINE :if (boot_cpu_has_bug (X86_BUG_EIBRS_PBRSB )) { -setup_force_cpu_cap (X86_FEATURE_RSB_VMEXIT_LITE );pr_info ("Spectre v2 / PBRSB-eIBRS: Retire a single CALL on VMEXIT\n" ); +setup_force_cpu_cap (X86_FEATURE_RSB_VMEXIT_LITE ); }return ; -case SPECTRE_V2_EIBRS_RETPOLINE :case SPECTRE_V2_RETPOLINE :case SPECTRE_V2_LFENCE :case SPECTRE_V2_IBRS : -setup_force_cpu_cap (X86_FEATURE_RSB_VMEXIT );pr_info ("Spectre v2 / SpectreRSB : Filling RSB on VMEXIT\n" ); +setup_force_cpu_cap (X86_FEATURE_RSB_VMEXIT );return ; }
arch/x86/kernel/e820.c +8 -9
@@ -753,22 +753,21 @@ void __init e820__memory_setup_extended(u64 phys_addr, u32 data_len)void __init e820__register_nosave_regions (unsigned long limit_pfn) {int i; -unsigned long pfn =0 ; +u64 last_addr =0 ;for (i =0 ; i < e820_table->nr_entries; i++) {struct e820_entry *entry = &e820_table->entries[i]; -if (pfn <PFN_UP (entry->addr)) -register_nosave_region (pfn,PFN_UP (entry->addr)); - - pfn =PFN_DOWN (entry->addr + entry->size); -if (entry->type !=E820_TYPE_RAM && entry->type !=E820_TYPE_RESERVED_KERN ) -register_nosave_region (PFN_UP (entry->addr), pfn); +continue ; -if (pfn >= limit_pfn) -break ; +if (last_addr < entry->addr) +register_nosave_region (PFN_DOWN (last_addr),PFN_UP (entry->addr)); + + last_addr = entry->addr + entry->size; } + +register_nosave_region (PFN_DOWN (last_addr), limit_pfn); }#ifdef CONFIG_ACPI
arch/x86/kvm/svm/avic.c +32 -28
90 lines not on this page · raw message
arch/x86/kvm/vmx/posted_intr.c +10 -18
@@ -255,6 +255,7 @@ int pi_update_irte(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq, {struct kvm_kernel_irq_routing_entry *e;struct kvm_irq_routing_table *irq_rt; +bool enable_remapped_mode = true;struct kvm_lapic_irq irq;struct kvm_vcpu *vcpu;struct vcpu_data vcpu_info;
@@ -293,21 +294,8 @@ int pi_update_irte(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq,kvm_set_msi_irq (kvm, e, &irq);if (!kvm_intr_is_single_vcpu (kvm, &irq, &vcpu) || - !kvm_irq_is_postable (&irq)) { -/* -* Make sure the IRTE is in remapped mode if -* we don't handle it in posted mode. -*/ - ret =irq_set_vcpu_affinity (host_irq,NULL ); -if (ret <0 ) { -printk (KERN_INFO -"failed to back to remapped mode, irq: %u\n" , - host_irq); - goto out; - } - + !kvm_irq_is_postable (&irq))continue ; - } vcpu_info.pi_desc_addr =__pa (&to_vmx (vcpu)->pi_desc); vcpu_info.vector = irq.vector;
@@ -315,11 +303,12 @@ int pi_update_irte(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq,trace_kvm_pi_irte_update (host_irq, vcpu->vcpu_id, e->gsi, vcpu_info.vector, vcpu_info.pi_desc_addr, set); -if (set) - ret =irq_set_vcpu_affinity (host_irq, &vcpu_info); -else - ret =irq_set_vcpu_affinity (host_irq,NULL ); +if (!set) +continue ; + + enable_remapped_mode = false; + ret =irq_set_vcpu_affinity (host_irq, &vcpu_info);if (ret <0 ) {printk (KERN_INFO "%s: failed to update PI IRTE\n" , __func__);
@@ -327,6 +316,9 @@ int pi_update_irte(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq, } } +if (enable_remapped_mode) + ret =irq_set_vcpu_affinity (host_irq,NULL ); + ret =0 ; out:srcu_read_unlock (&kvm->irq_srcu, idx);
arch/x86/platform/pvh/head.S +6 -1
@@ -99,7 +99,12 @@ SYM_CODE_START_LOCAL(pvh_start_xen) xor %edx, %edx wrmsr - call xen_prepare_pvh + /* Call xen_prepare_pvh() via the kernel virtual mapping */ + leaq xen_prepare_pvh(%rip), %rax + subq phys_base(%rip), %rax + addq $__START_KERNEL_map, %rax + ANNOTATE_RETPOLINE_SAFE + call *%rax /* startup_64 expects boot_params in %rsi. */ mov $_pa(pvh_bootparams), %rsi
block/blk-cgroup.c +17 -7
@@ -191,6 +191,7 @@ static struct blkcg_gq *blkg_alloc(struct blkcg *blkcg, struct request_queue *q, blkg->pd[i] = pd; pd->blkg = blkg; pd->plid = i; + pd->online = false; }return blkg;
@@ -288,8 +289,11 @@ static struct blkcg_gq *blkg_create(struct blkcg *blkcg,for (i =0 ; i <BLKCG_MAX_POLS ; i++) {struct blkcg_policy *pol = blkcg_policy[i]; -if (blkg->pd[i] && pol->pd_online_fn) - pol->pd_online_fn (blkg->pd[i]); +if (blkg->pd[i]) { +if (pol->pd_online_fn) + pol->pd_online_fn (blkg->pd[i]); + blkg->pd[i]->online = true; + } } } blkg->online = true;
@@ -389,8 +393,11 @@ static void blkg_destroy(struct blkcg_gq *blkg)for (i =0 ; i <BLKCG_MAX_POLS ; i++) {struct blkcg_policy *pol = blkcg_policy[i]; -if (blkg->pd[i] && pol->pd_offline_fn) - pol->pd_offline_fn (blkg->pd[i]); +if (blkg->pd[i] && blkg->pd[i]->online) { +if (pol->pd_offline_fn) + pol->pd_offline_fn (blkg->pd[i]); + blkg->pd[i]->online = false; + } } blkg->online = false;
@@ -1364,6 +1371,7 @@ int blkcg_activate_policy(struct request_queue *q, blkg->pd[pol->plid] = pd; pd->blkg = blkg; pd->plid = pol->plid; + pd->online = false; }/* all allocated, init in the same order */
@@ -1371,9 +1379,11 @@ int blkcg_activate_policy(struct request_queue *q,list_for_each_entry_reverse (blkg, &q->blkg_list, q_node) pol->pd_init_fn (blkg->pd[pol->plid]); -if (pol->pd_online_fn) -list_for_each_entry_reverse (blkg, &q->blkg_list, q_node) +list_for_each_entry_reverse (blkg, &q->blkg_list, q_node) { +if (pol->pd_online_fn) pol->pd_online_fn (blkg->pd[pol->plid]); + blkg->pd[pol->plid]->online = true; + }__set_bit (pol->plid, q->blkcg_pols); ret =0 ;
@@ -1435,7 +1445,7 @@ void blkcg_deactivate_policy(struct request_queue *q,spin_lock (&blkcg->lock);if (blkg->pd[pol->plid]) { -if (pol->pd_offline_fn) +if (blkg->pd[pol->plid]->online && pol->pd_offline_fn) pol->pd_offline_fn (blkg->pd[pol->plid]); pol->pd_free_fn (blkg->pd[pol->plid]); blkg->pd[pol->plid] =NULL ;
block/blk-iocost.c +5 -2
@@ -1389,8 +1389,11 @@ static void iocg_pay_debt(struct ioc_gq *iocg, u64 abs_vpay,lockdep_assert_held (&iocg->ioc->lock);lockdep_assert_held (&iocg->waitq.lock); -/* make sure that nobody messed with @iocg */ -WARN_ON_ONCE (list_empty (&iocg->active_list)); +/* +* make sure that nobody messed with @iocg. Check iocg->pd.online +* to avoid warn when removing blkcg or disk. +*/ +WARN_ON_ONCE (list_empty (&iocg->active_list) && iocg->pd.online);WARN_ON_ONCE (iocg->inuse >1 ); iocg->abs_vdebt -=min (abs_vpay, iocg->abs_vdebt);
crypto/crypto_null.c +26 -13
@@ -17,10 +17,10 @@#include <crypto/internal/skcipher.h> #include <linux/init.h> #include <linux/module.h> -#include <linux/mm.h> +#include <linux/spinlock.h> #include <linux/string.h> -static DEFINE_MUTEX (crypto_default_null_skcipher_lock); +static DEFINE_SPINLOCK (crypto_default_null_skcipher_lock);static struct crypto_sync_skcipher *crypto_default_null_skcipher;static int crypto_default_null_skcipher_refcnt;
@@ -152,23 +152,32 @@ MODULE_ALIAS_CRYPTO("cipher_null");struct crypto_sync_skcipher *crypto_get_default_null_skcipher (void ) { +struct crypto_sync_skcipher *ntfm =NULL ;struct crypto_sync_skcipher *tfm; -mutex_lock (&crypto_default_null_skcipher_lock); +spin_lock_bh (&crypto_default_null_skcipher_lock); tfm = crypto_default_null_skcipher;if (!tfm) { - tfm =crypto_alloc_sync_skcipher ("ecb(cipher_null)" ,0 ,0 ); -if (IS_ERR (tfm)) - goto unlock; - - crypto_default_null_skcipher = tfm; +spin_unlock_bh (&crypto_default_null_skcipher_lock); + + ntfm =crypto_alloc_sync_skcipher ("ecb(cipher_null)" ,0 ,0 ); +if (IS_ERR (ntfm)) +return ntfm; + +spin_lock_bh (&crypto_default_null_skcipher_lock); + tfm = crypto_default_null_skcipher; +if (!tfm) { + tfm = ntfm; + ntfm =NULL ; + crypto_default_null_skcipher = tfm; + } } crypto_default_null_skcipher_refcnt++; +spin_unlock_bh (&crypto_default_null_skcipher_lock); -unlock: -mutex_unlock (&crypto_default_null_skcipher_lock); +crypto_free_sync_skcipher (ntfm);return tfm; }
@@ -176,12 +185,16 @@ EXPORT_SYMBOL_GPL(crypto_get_default_null_skcipher);void crypto_put_default_null_skcipher (void ) { -mutex_lock (&crypto_default_null_skcipher_lock); +struct crypto_sync_skcipher *tfm =NULL ; + +spin_lock_bh (&crypto_default_null_skcipher_lock);if (!--crypto_default_null_skcipher_refcnt) { -crypto_free_sync_skcipher (crypto_default_null_skcipher); + tfm = crypto_default_null_skcipher; crypto_default_null_skcipher =NULL ; } -mutex_unlock (&crypto_default_null_skcipher_lock); +spin_unlock_bh (&crypto_default_null_skcipher_lock); + +crypto_free_sync_skcipher (tfm); }EXPORT_SYMBOL_GPL (crypto_put_default_null_skcipher);
drivers/acpi/pptt.c +2 -2
@@ -217,7 +217,7 @@ static int acpi_pptt_leaf_node(struct acpi_table_header *table_hdr, node_entry =ACPI_PTR_DIFF (node, table_hdr); entry = ACPI_ADD_PTR(struct acpi_subtable_header, table_hdr,sizeof (struct acpi_table_pptt )); - proc_sz =sizeof (struct acpi_pptt_processor *); + proc_sz =sizeof (struct acpi_pptt_processor );while ((unsigned long )entry + proc_sz < table_end) { cpu_node = (struct acpi_pptt_processor *)entry;
@@ -258,7 +258,7 @@ static struct acpi_pptt_processor *acpi_find_processor_node(struct acpi_table_he table_end = (unsigned long )table_hdr + table_hdr->length; entry = ACPI_ADD_PTR(struct acpi_subtable_header, table_hdr,sizeof (struct acpi_table_pptt )); - proc_sz =sizeof (struct acpi_pptt_processor *); + proc_sz =sizeof (struct acpi_pptt_processor );/* find the processor structure associated with this cpuid */ while ((unsigned long )entry + proc_sz < table_end) {
drivers/ata/ahci.c +2 -0
@@ -591,6 +591,8 @@ static const struct pci_device_id ahci_pci_tbl[] = { .driver_data = board_ahci_yes_fbs }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x91a3), .driver_data = board_ahci_yes_fbs }, + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9215), + .driver_data = board_ahci_yes_fbs }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9230), .driver_data = board_ahci_yes_fbs }, { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0642), /* highpoint rocketraid 642L */
drivers/ata/libata-eh.c +9 -2
@@ -1479,8 +1479,15 @@ unsigned int atapi_eh_request_sense(struct ata_device *dev, tf.flags |=ATA_TFLAG_ISADDR |ATA_TFLAG_DEVICE ; tf.command =ATA_CMD_PACKET ; -/* is it pointless to prefer PIO for "safety reasons"? */ -if (ap->flags &ATA_FLAG_PIO_DMA ) { +/* +* Do not use DMA if the connected device only supports PIO, even if the +* port prefers PIO commands via DMA. +* +* Ideally, we should call atapi_check_dma() to check if it is safe for +* the LLD to use DMA for REQUEST_SENSE, but we don't have a qc. +* Since we can't check the command, perhaps we should only use pio? +*/ +if ((ap->flags &ATA_FLAG_PIO_DMA ) && !(dev->flags &ATA_DFLAG_PIO )) { tf.protocol =ATAPI_PROT_DMA ; tf.feature |=ATAPI_PKT_DMA ; }else {
drivers/ata/pata_pxa.c +6 -0
@@ -223,10 +223,16 @@ static int pxa_ata_probe(struct platform_device *pdev) ap->ioaddr.cmd_addr =devm_ioremap (&pdev->dev, cmd_res->start,resource_size (cmd_res)); +if (!ap->ioaddr.cmd_addr) +return -ENOMEM ; ap->ioaddr.ctl_addr =devm_ioremap (&pdev->dev, ctl_res->start,resource_size (ctl_res)); +if (!ap->ioaddr.ctl_addr) +return -ENOMEM ; ap->ioaddr.bmdma_addr =devm_ioremap (&pdev->dev, dma_res->start,resource_size (dma_res)); +if (!ap->ioaddr.bmdma_addr) +return -ENOMEM ;/* * Adjust register offsets
drivers/ata/sata_sx4.c +44 -74
322 lines not on this page · raw message
drivers/bluetooth/btrtl.c +2 -0
@@ -625,6 +625,8 @@ struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,rtl_dev_err (hdev,"mandatory config file %s not found" , btrtl_dev->ic_info->cfg_name); ret = btrtl_dev->cfg_len; +if (!ret) + ret = -EINVAL ; goto err_free; } }
drivers/bluetooth/hci_ldisc.c +14 -5
@@ -102,7 +102,8 @@ static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu)if (!skb) {percpu_down_read (&hu->proto_lock); -if (test_bit (HCI_UART_PROTO_READY , &hu->flags)) +if (test_bit (HCI_UART_PROTO_READY , &hu->flags) || +test_bit (HCI_UART_PROTO_INIT , &hu->flags)) skb = hu->proto->dequeue (hu);percpu_up_read (&hu->proto_lock);
@@ -124,7 +125,8 @@ int hci_uart_tx_wakeup(struct hci_uart *hu)if (!percpu_down_read_trylock (&hu->proto_lock))return 0 ; -if (!test_bit (HCI_UART_PROTO_READY , &hu->flags)) +if (!test_bit (HCI_UART_PROTO_READY , &hu->flags) && + !test_bit (HCI_UART_PROTO_INIT , &hu->flags)) goto no_schedule;set_bit (HCI_UART_TX_WAKEUP , &hu->tx_state);
@@ -278,7 +280,8 @@ static int hci_uart_send_frame(struct hci_dev *hdev, struct sk_buff *skb)percpu_down_read (&hu->proto_lock); -if (!test_bit (HCI_UART_PROTO_READY , &hu->flags)) { +if (!test_bit (HCI_UART_PROTO_READY , &hu->flags) && + !test_bit (HCI_UART_PROTO_INIT , &hu->flags)) {percpu_up_read (&hu->proto_lock);return -EUNATCH ; }
@@ -579,7 +582,8 @@ static void hci_uart_tty_wakeup(struct tty_struct *tty)if (tty != hu->tty)return ; -if (test_bit (HCI_UART_PROTO_READY , &hu->flags)) +if (test_bit (HCI_UART_PROTO_READY , &hu->flags) || +test_bit (HCI_UART_PROTO_INIT , &hu->flags))hci_uart_tx_wakeup (hu); }
@@ -605,7 +609,8 @@ static void hci_uart_tty_receive(struct tty_struct *tty, const u8 *data,percpu_down_read (&hu->proto_lock); -if (!test_bit (HCI_UART_PROTO_READY , &hu->flags)) { +if (!test_bit (HCI_UART_PROTO_READY , &hu->flags) && + !test_bit (HCI_UART_PROTO_INIT , &hu->flags)) {percpu_up_read (&hu->proto_lock);return ; }
@@ -706,12 +711,16 @@ static int hci_uart_set_proto(struct hci_uart *hu, int id) hu->proto = p; +set_bit (HCI_UART_PROTO_INIT , &hu->flags); + err =hci_uart_register_dev (hu);if (err) {return err; }set_bit (HCI_UART_PROTO_READY , &hu->flags); +clear_bit (HCI_UART_PROTO_INIT , &hu->flags); +return 0 ; }
drivers/bluetooth/hci_uart.h +1 -0
@@ -89,6 +89,7 @@ struct hci_uart {#define HCI_UART_PROTO_SET 0#define HCI_UART_REGISTERED 1#define HCI_UART_PROTO_READY 2 +#define HCI_UART_PROTO_INIT 4/* TX states */ #define HCI_UART_SENDING 1
drivers/char/virtio_console.c +4 -3
@@ -1617,8 +1617,8 @@ static void handle_control_message(struct virtio_device *vdev,break ;case VIRTIO_CONSOLE_RESIZE : {struct { -__u16 rows; -__u16 cols; +__virtio16 rows; +__virtio16 cols; } size;if (!is_console_port (port))
@@ -1626,7 +1626,8 @@ static void handle_control_message(struct virtio_device *vdev,memcpy (&size, buf->buf + buf->offset +sizeof (*cpkt),sizeof (size)); -set_console_size (port, size.rows, size.cols); +set_console_size (port,virtio16_to_cpu (vdev, size.rows), +virtio16_to_cpu (vdev, size.cols)); port->cons.hvc->irq_requested =1 ;resize_console (port);
drivers/clk/clk.c +4 -0
@@ -4858,6 +4858,10 @@ of_clk_get_hw_from_clkspec(struct of_phandle_args *clkspec)if (!clkspec)return ERR_PTR (-EINVAL ); +/* Check if node in clkspec is in disabled/fail state */ +if (!of_device_is_available (clkspec->np)) +return ERR_PTR (-ENOENT ); +mutex_lock (&of_clk_mutex);list_for_each_entry (provider, &of_clk_providers, link) {if (provider->node == clkspec->np) {
drivers/clocksource/timer-stm32-lp.c +1 -3
@@ -168,9 +168,7 @@ static int stm32_clkevent_lp_probe(struct platform_device *pdev) }if (of_property_read_bool (pdev->dev.parent->of_node,"wakeup-source" )) { - ret =device_init_wakeup (&pdev->dev, true); -if (ret) - goto out_clk_disable; +device_set_wakeup_capable (&pdev->dev, true); ret =dev_pm_set_wake_irq (&pdev->dev, irq);if (ret)
drivers/cpufreq/cpufreq.c +8 -0
@@ -2593,10 +2593,18 @@ EXPORT_SYMBOL(cpufreq_update_policy);*/ void cpufreq_update_limits (unsigned int cpu) { +struct cpufreq_policy *policy; + + policy =cpufreq_cpu_get (cpu); +if (!policy) +return ; +if (cpufreq_driver->update_limits) cpufreq_driver->update_limits (cpu);else cpufreq_update_policy (cpu); + +cpufreq_cpu_put (policy); }EXPORT_SYMBOL_GPL (cpufreq_update_limits);
drivers/cpufreq/scpi-cpufreq.c +10 -3
@@ -37,9 +37,16 @@ static struct scpi_ops *scpi_ops;static unsigned int scpi_cpufreq_get_rate (unsigned int cpu) { -struct cpufreq_policy *policy =cpufreq_cpu_get_raw (cpu); -struct scpi_data *priv = policy->driver_data; -unsigned long rate =clk_get_rate (priv->clk); +struct cpufreq_policy *policy; +struct scpi_data *priv; +unsigned long rate; + + policy =cpufreq_cpu_get_raw (cpu); +if (unlikely (!policy)) +return 0 ; + + priv = policy->driver_data; + rate =clk_get_rate (priv->clk);return rate /1000 ; }
drivers/crypto/atmel-sha204a.c +6 -1
@@ -107,7 +107,12 @@ static int atmel_sha204a_probe(struct i2c_client *client, i2c_priv->hwrng.name =dev_name (&client->dev); i2c_priv->hwrng.read = atmel_sha204a_rng_read; - i2c_priv->hwrng.quality =1024 ; + +/* +* According to review by Bill Cox [1], this HWRNG has very low entropy. +* [1] https://www.metzdowd.com/pipermail/cryptography/2014-December/023858.html +*/ + i2c_priv->hwrng.quality =1 ; ret =devm_hwrng_register (&client->dev, &i2c_priv->hwrng);if (ret)
drivers/crypto/caam/qi.c +3 -3
@@ -115,12 +115,12 @@ int caam_qi_enqueue(struct device *qidev, struct caam_drv_req *req)qm_fd_addr_set64 (&fd, addr); do { + refcount_inc(&req->drv_ctx->refcnt); ret = qman_enqueue(req->drv_ctx->req_fq, &fd); - if (likely(!ret)) { - refcount_inc(&req->drv_ctx->refcnt); + if (likely(!ret)) return 0; - } + refcount_dec(&req->drv_ctx->refcnt); if (ret != -EBUSY) break; num_retries++;
drivers/crypto/ccp/sp-pci.c +9 -6
@@ -118,14 +118,17 @@ static bool sp_pci_is_master(struct sp_device *sp) pdev_new =to_pci_dev (dev_new); pdev_cur =to_pci_dev (dev_cur); -if (pdev_new->bus->number < pdev_cur->bus->number) -return true; +if (pci_domain_nr (pdev_new->bus) !=pci_domain_nr (pdev_cur->bus)) +return pci_domain_nr (pdev_new->bus) <pci_domain_nr (pdev_cur->bus); -if (PCI_SLOT (pdev_new->devfn) <PCI_SLOT (pdev_cur->devfn)) -return true; +if (pdev_new->bus->number != pdev_cur->bus->number) +return pdev_new->bus->number < pdev_cur->bus->number; -if (PCI_FUNC (pdev_new->devfn) <PCI_FUNC (pdev_cur->devfn)) -return true; +if (PCI_SLOT (pdev_new->devfn) !=PCI_SLOT (pdev_cur->devfn)) +return PCI_SLOT (pdev_new->devfn) <PCI_SLOT (pdev_cur->devfn); + +if (PCI_FUNC (pdev_new->devfn) !=PCI_FUNC (pdev_cur->devfn)) +return PCI_FUNC (pdev_new->devfn) <PCI_FUNC (pdev_cur->devfn);return false; }
drivers/dma-buf/udmabuf.c +1 -1
@@ -177,7 +177,7 @@ static long udmabuf_create(struct miscdevice *device,if (!ubuf)return -ENOMEM ; - pglimit = (size_limit_mb *1024 *1024 ) >>PAGE_SHIFT ; + pglimit = ((u64 )size_limit_mb *1024 *1024 ) >>PAGE_SHIFT ;for (i =0 ; i < head->count; i++) {if (!IS_ALIGNED (list[i].offset,PAGE_SIZE )) goto err;
drivers/dma/dmatest.c +3 -3
@@ -825,9 +825,9 @@ static int dmatest_func(void *data) }else {dma_async_issue_pending (chan); -wait_event_freezable_timeout (thread->done_wait, - done->done, -msecs_to_jiffies (params->timeout)); +wait_event_timeout (thread->done_wait, + done->done, +msecs_to_jiffies (params->timeout)); status =dma_async_is_tx_complete (chan, cookie,NULL ,NULL );
drivers/gpio/gpio-zynq.c +1 -0
@@ -1016,6 +1016,7 @@ static int zynq_gpio_remove(struct platform_device *pdev) ret =pm_runtime_get_sync (&pdev->dev);if (ret <0 )dev_warn (&pdev->dev,"pm_runtime_get_sync() Failed\n" ); +device_init_wakeup (&pdev->dev,0 );gpiochip_remove (&gpio->chip);clk_disable_unprepare (gpio->clk);device_set_wakeup_capable (&pdev->dev,0 );
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c +2 -7
@@ -357,17 +357,12 @@ static void amdgpu_dma_buf_unmap(struct dma_buf_attachment *attach, struct sg_table *sgt, enum dma_data_direction dir) { -struct dma_buf *dma_buf = attach->dmabuf; -struct drm_gem_object *obj = dma_buf->priv; -struct amdgpu_bo *bo =gem_to_amdgpu_bo (obj); -struct amdgpu_device *adev =amdgpu_ttm_adev (bo->tbo.bdev); - -if (sgt->sgl->page_link) { + if (sg_page(sgt->sgl)) { dma_unmap_sgtable(attach->dev, sgt, dir, 0); sg_free_table(sgt); kfree(sgt); } else { -amdgpu_vram_mgr_free_sgt (adev, attach->dev, dir, sgt); +amdgpu_vram_mgr_free_sgt (attach->dev, dir, sgt); } }
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h +1 -2
@@ -113,8 +113,7 @@ int amdgpu_vram_mgr_alloc_sgt(struct amdgpu_device *adev,struct device *dev, enum dma_data_direction dir, struct sg_table **sgt); -void amdgpu_vram_mgr_free_sgt (struct amdgpu_device *adev, -struct device *dev, +void amdgpu_vram_mgr_free_sgt (struct device *dev,enum dma_data_direction dir,struct sg_table *sgt);uint64_t amdgpu_vram_mgr_usage (struct ttm_resource_manager *man);
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +3 -3
@@ -530,13 +530,13 @@ int amdgpu_vram_mgr_alloc_sgt(struct amdgpu_device *adev,/** * amdgpu_vram_mgr_alloc_sgt - allocate and fill a sg table * -* @adev: amdgpu device pointer +* @dev: device pointer +* @dir: data direction of resource to unmap * @sgt: sg table to free * * Free a previously allocate sg table. */ -void amdgpu_vram_mgr_free_sgt (struct amdgpu_device *adev, -struct device *dev, +void amdgpu_vram_mgr_free_sgt (struct device *dev,enum dma_data_direction dir,struct sg_table *sgt) {
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +10 -0
@@ -190,6 +190,11 @@ static int set_queue_properties_from_user(struct queue_properties *q_properties,return -EINVAL ; } +if (args->ring_size <KFD_MIN_QUEUE_RING_SIZE ) { + args->ring_size =KFD_MIN_QUEUE_RING_SIZE ; +pr_debug ("Size lower. clamped to KFD_MIN_QUEUE_RING_SIZE" ); + } +if (!access_ok ((const void __user *) args->read_pointer_address,sizeof (uint32_t ))) {pr_err ("Can't access read pointer\n" );
@@ -394,6 +399,11 @@ static int kfd_ioctl_update_queue(struct file *filp, struct kfd_process *p,return -EINVAL ; } +if (args->ring_size <KFD_MIN_QUEUE_RING_SIZE ) { + args->ring_size =KFD_MIN_QUEUE_RING_SIZE ; +pr_debug ("Size lower. clamped to KFD_MIN_QUEUE_RING_SIZE" ); + } + properties.queue_address = args->ring_base_address; properties.queue_size = args->ring_size; properties.queue_percent = args->queue_percentage;
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +1 -1
@@ -384,7 +384,7 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)pr_err ("Pasid 0x%x destroy queue %d failed, ret %d\n" , pqm->process->pasid, pqn->q->properties.queue_id, retval); -if (retval != -ETIME ) +if (retval != -ETIME && retval != -EIO ) goto err_destroy_queue; }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +7 -7
@@ -3397,17 +3397,17 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev) goto fail; } +if (link_cnt > (MAX_PIPES *2 )) { +DRM_ERROR ( +"KMS: Cannot support more than %d display indexes\n" , +MAX_PIPES *2 ); + goto fail; + } +/* loops over all connectors on the board */ for (i =0 ; i < link_cnt; i++) {struct dc_link *link =NULL ; -if (i >AMDGPU_DM_MAX_DISPLAY_INDEX ) { -DRM_ERROR ( -"KMS: Cannot support more than %d display indexes\n" , -AMDGPU_DM_MAX_DISPLAY_INDEX ); -continue ; - } - aconnector =kzalloc (sizeof (*aconnector),GFP_KERNEL );if (!aconnector) goto fail;
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +1 -1
@@ -1698,7 +1698,7 @@ static struct link_encoder *dcn21_link_encoder_create(kzalloc (sizeof (struct dcn21_link_encoder ),GFP_KERNEL );int link_regs_id; -if (!enc21) +if (!enc21 || enc_init_data->hpd_source >=ARRAY_SIZE (link_enc_hpd_regs))return NULL ; link_regs_id =
drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_thermal.c +2 -2
@@ -261,10 +261,10 @@ int smu7_fan_ctrl_set_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t speed)if (hwmgr->thermal_controller.fanInfo.bNoFan || (hwmgr->thermal_controller.fanInfo. ucTachometerPulsesPerRevolution ==0 ) || - speed ==0 || + (!speed || speed >UINT_MAX /8 ) || (speed < hwmgr->thermal_controller.fanInfo.ulMinRPM) || (speed > hwmgr->thermal_controller.fanInfo.ulMaxRPM)) -return 0 ; +return -EINVAL ;if (PP_CAP (PHM_PlatformCaps_MicrocodeFanControl))smu7_fan_ctrl_stop_smc_fan_control (hwmgr);
drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c +2 -2
@@ -311,10 +311,10 @@ int vega10_fan_ctrl_set_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t speed)int result =0 ;if (hwmgr->thermal_controller.fanInfo.bNoFan || - speed ==0 || + (!speed || speed >UINT_MAX /8 ) || (speed < hwmgr->thermal_controller.fanInfo.ulMinRPM) || (speed > hwmgr->thermal_controller.fanInfo.ulMaxRPM)) -return -1 ; +return -EINVAL ;if (PP_CAP (PHM_PlatformCaps_MicrocodeFanControl)) result =vega10_fan_ctrl_stop_smc_fan_control (hwmgr);
drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_thermal.c +1 -1
@@ -189,7 +189,7 @@ int vega20_fan_ctrl_set_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t speed)uint32_t tach_period, crystal_clock_freq;int result =0 ; -if (!speed) +if (!speed || speed >UINT_MAX /8 )return -EINVAL ;if (PP_CAP (PHM_PlatformCaps_MicrocodeFanControl)) {
drivers/gpu/drm/drm_atomic_helper.c +1 -1
@@ -1268,7 +1268,7 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state) mode = &new_crtc_state->mode; adjusted_mode = &new_crtc_state->adjusted_mode; -if (!new_crtc_state->mode_changed) +if (!new_crtc_state->mode_changed && !new_crtc_state->connectors_changed)continue ; DRM_DEBUG_ATOMIC("modeset on [ENCODER:%d:%s]\n",
drivers/gpu/drm/drm_panel.c +4 -1
@@ -49,7 +49,7 @@ static LIST_HEAD(panel_list);* @dev: parent device of the panel * @funcs: panel operations * @connector_type: the connector type (DRM_MODE_CONNECTOR_*) corresponding to -* the panel interface +* the panel interface (must NOT be DRM_MODE_CONNECTOR_Unknown) * * Initialize the panel structure for subsequent registration with * drm_panel_add().
@@ -57,6 +57,9 @@ static LIST_HEAD(panel_list);void drm_panel_init (struct drm_panel *panel,struct device *dev,const struct drm_panel_funcs *funcs,int connector_type) { +if (connector_type == DRM_MODE_CONNECTOR_Unknown) +DRM_WARN ("%s: %s: a valid connector type is required!\n" , __func__,dev_name (dev)); +INIT_LIST_HEAD (&panel->list); panel->dev = dev; panel->funcs = funcs;
drivers/gpu/drm/drm_panel_orientation_quirks.c +8 -2
@@ -166,10 +166,10 @@ static const struct dmi_system_id orientation_data[] = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T103HAF"), }, .driver_data = (void *)&lcd800x1280_rightside_up, - }, { /* AYA NEO AYANEO 2 */ + }, { /* AYA NEO AYANEO 2/2S */ .matches = {DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"AYANEO" ), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AYANEO 2"), + DMI_MATCH(DMI_PRODUCT_NAME, "AYANEO 2"), }, .driver_data = (void *)&lcd1200x1920_rightside_up, }, { /* AYA NEO 2021 */
@@ -235,6 +235,12 @@ static const struct dmi_system_id orientation_data[] = { DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), }, .driver_data = (void *)&gpd_win2, + }, { /* GPD Win 2 (correct DMI strings) */ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"GPD" ), +DMI_EXACT_MATCH (DMI_PRODUCT_NAME ,"WIN2" ) + }, + .driver_data = (void *)&lcd720x1280_rightside_up, }, { /* GPD Win 3 */ .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"),
drivers/gpu/drm/i915/gt/intel_engine_cs.c +6 -1
@@ -904,8 +904,13 @@ int intel_engines_init(struct intel_gt *gt)return err; err =setup (engine); -if (err) +if (err) { +intel_engine_cleanup_common (engine);return err; + } + +/* The backend should now be responsible for cleanup */ +GEM_BUG_ON (engine->release ==NULL ); err =engine_init_common (engine);if (err)
drivers/gpu/drm/mediatek/mtk_dpi.c +9 -0
@@ -369,6 +369,7 @@ static void mtk_dpi_power_off(struct mtk_dpi *dpi)mtk_dpi_disable (dpi);clk_disable_unprepare (dpi->pixel_clk); +clk_disable_unprepare (dpi->tvd_clk);clk_disable_unprepare (dpi->engine_clk); }
@@ -385,6 +386,12 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi) goto err_refcount; } + ret =clk_prepare_enable (dpi->tvd_clk); +if (ret) { +dev_err (dpi->dev,"Failed to enable tvd pll: %d\n" , ret); + goto err_engine; + } + ret =clk_prepare_enable (dpi->pixel_clk);if (ret) {dev_err (dpi->dev,"Failed to enable pixel clock: %d\n" , ret);
@@ -394,6 +401,8 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi)return 0 ; err_pixel: +clk_disable_unprepare (dpi->tvd_clk); +err_engine:clk_disable_unprepare (dpi->engine_clk); err_refcount: dpi->refcount--;
drivers/gpu/drm/nouveau/nouveau_bo.c +3 -0
@@ -143,6 +143,9 @@ nouveau_bo_del_ttm(struct ttm_buffer_object *bo)nouveau_bo_del_io_reserve_lru (bo);nv10_bo_put_tile_region (dev, nvbo->tile,NULL ); +if (bo->base.import_attach) +drm_prime_gem_destroy (&bo->base, bo->sg); +/* * If nouveau_bo_new() allocated this buffer, the GEM object was never * initialized, so don't attempt to release it.
drivers/gpu/drm/nouveau/nouveau_gem.c +0 -3
@@ -51,9 +51,6 @@ nouveau_gem_object_del(struct drm_gem_object *gem)return ; } -if (gem->import_attach) -drm_prime_gem_destroy (gem, nvbo->bo.sg); -ttm_bo_put (&nvbo->bo);pm_runtime_mark_last_busy (dev);
drivers/gpu/drm/sti/Makefile +0 -2
@@ -7,8 +7,6 @@ sti-drm-y := \ sti_compositor.o \ sti_crtc.o \ sti_plane.o \ - sti_crtc.o \ - sti_plane.o \ sti_hdmi.o \ sti_hdmi_tx3g4c28phy.o \ sti_dvo.o \
drivers/gpu/drm/tiny/repaper.c +2 -2
@@ -454,7 +454,7 @@ static void repaper_frame_fixed_repeat(struct repaper_epd *epd, u8 fixed_value, enum repaper_stage stage) {u64 start =local_clock (); -u64 end = start + (epd->factored_stage_time *1000 *1000 ); +u64 end = start + ((u64 )epd->factored_stage_time *1000 *1000 ); do { repaper_frame_fixed(epd, fixed_value, stage);
@@ -465,7 +465,7 @@ static void repaper_frame_data_repeat(struct repaper_epd *epd, const u8 *image, const u8 *mask, enum repaper_stage stage) { u64 start = local_clock(); -u64 end = start + (epd->factored_stage_time *1000 *1000 ); +u64 end = start + ((u64 )epd->factored_stage_time *1000 *1000 ); do { repaper_frame_data(epd, image, mask, stage);
drivers/hid/usbhid/hid-pidff.c +41 -19
109 lines not on this page · raw message
drivers/hsi/clients/ssi_protocol.c +1 -0
@@ -403,6 +403,7 @@ static void ssip_reset(struct hsi_client *cl)del_timer (&ssi->rx_wd);del_timer (&ssi->tx_wd);del_timer (&ssi->keep_alive); +cancel_work_sync (&ssi->work); ssi->main_state =0 ; ssi->send_state =0 ; ssi->recv_state =0 ;
drivers/i2c/busses/i2c-cros-ec-tunnel.c +3 -0
@@ -247,6 +247,9 @@ static int ec_i2c_probe(struct platform_device *pdev)u32 remote_bus;int err; +if (!ec) +return dev_err_probe (dev, -EPROBE_DEFER ,"couldn't find parent EC device\n" ); +if (!ec->cmd_xfer) {dev_err (dev,"Missing sendrecv\n" );return -EINVAL ;
drivers/i3c/master.c +3 -0
@@ -2282,6 +2282,9 @@ static void i3c_master_unregister_i3c_devs(struct i3c_master_controller *master)*/ void i3c_master_queue_ibi (struct i3c_dev_desc *dev,struct i3c_ibi_slot *slot) { +if (!dev->ibi || !slot) +return ; +atomic_inc (&dev->ibi->pending_ibis);queue_work (dev->common.master->wq, &slot->work); }
drivers/iio/adc/ad7768-1.c +2 -3
@@ -142,7 +142,7 @@ static const struct iio_chan_spec ad7768_channels[] = { .channel = 0, .scan_index = 0, .scan_type = { - .sign = 'u', + .sign = 's', .realbits = 24, .storagebits = 32, .shift = 8,
@@ -369,12 +369,11 @@ static int ad7768_read_raw(struct iio_dev *indio_dev,return ret; ret =ad7768_scan_direct (indio_dev); -if (ret >=0 ) - *val = ret;iio_device_release_direct_mode (indio_dev);if (ret <0 )return ret; + *val =sign_extend32 (ret, chan->scan_type.realbits -1 );return IIO_VAL_INT ;
drivers/infiniband/core/umem_odp.c +4 -2
@@ -78,12 +78,14 @@ static inline int ib_init_umem_odp(struct ib_umem_odp *umem_odp, npfns = (end - start) >>PAGE_SHIFT ; umem_odp->pfn_list =kvcalloc ( - npfns,sizeof (*umem_odp->pfn_list),GFP_KERNEL ); + npfns,sizeof (*umem_odp->pfn_list), +GFP_KERNEL | __GFP_NOWARN);if (!umem_odp->pfn_list)return -ENOMEM ; umem_odp->dma_list =kvcalloc ( - ndmas,sizeof (*umem_odp->dma_list),GFP_KERNEL ); + ndmas,sizeof (*umem_odp->dma_list), +GFP_KERNEL | __GFP_NOWARN);if (!umem_odp->dma_list) { ret = -ENOMEM ; goto out_pfn_list;
drivers/infiniband/hw/hns/hns_roce_main.c +1 -1
@@ -552,7 +552,7 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)if (ret)return ret; } -dma_set_max_seg_size (dev,UINT_MAX ); +dma_set_max_seg_size (dev,SZ_2G ); ret =ib_register_device (ib_dev,"hns_%d" , dev);if (ret) {dev_err (dev,"ib_register_device failed!\n" );
drivers/infiniband/hw/qib/qib_fs.c +1 -0
@@ -56,6 +56,7 @@ static int qibfs_mknod(struct inode *dir, struct dentry *dentry,struct inode *inode =new_inode (dir->i_sb);if (!inode) { +dput (dentry); error = -EPERM ; goto bail; }
drivers/infiniband/hw/usnic/usnic_ib_main.c +7 -7
@@ -378,7 +378,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev)if (!us_ibdev) {usnic_err ("Device %s context alloc failed\n" ,netdev_name (pci_get_drvdata (dev))); -return ERR_PTR (-EFAULT ); +return NULL ; } us_ibdev->ufdev =usnic_fwd_dev_alloc (dev);
@@ -519,8 +519,8 @@ static struct usnic_ib_dev *usnic_ib_discover_pf(struct usnic_vnic *vnic) } us_ibdev =usnic_ib_device_add (parent_pci); -if (IS_ERR_OR_NULL (us_ibdev)) { - us_ibdev = us_ibdev ? us_ibdev :ERR_PTR (-EFAULT ); +if (!us_ibdev) { + us_ibdev =ERR_PTR (-EFAULT ); goto out; }
@@ -583,10 +583,10 @@ static int usnic_ib_pci_probe(struct pci_dev *pdev, } pf =usnic_ib_discover_pf (vf->vnic); -if (IS_ERR_OR_NULL (pf)) { -usnic_err ("Failed to discover pf of vnic %s with err%ld\n" , -pci_name (pdev),PTR_ERR (pf)); - err = pf ?PTR_ERR (pf) : -EFAULT ; +if (IS_ERR (pf)) { + err =PTR_ERR (pf); +usnic_err ("Failed to discover pf of vnic %s with err%d\n" , +pci_name (pdev), err); goto out_clean_vnic; }
drivers/iommu/amd/iommu.c +1 -1
@@ -3979,7 +3979,7 @@ static int amd_ir_set_vcpu_affinity(struct irq_data *data, void *vcpu_info)* we should not modify the IRTE */ if (!dev_data || !dev_data->use_vapic) -return 0 ; +return -EINVAL ; ir_data->cfg =irqd_cfg (data); pi_data->ir_data = ir_data;
drivers/mcb/mcb-parse.c +1 -1
@@ -101,7 +101,7 @@ static int chameleon_parse_gdd(struct mcb_bus *bus, ret =mcb_device_register (bus, mdev);if (ret <0 ) - goto err; +return ret;return 0 ;
drivers/md/dm-cache-target.c +15 -9
@@ -1960,16 +1960,13 @@ static void check_migrations(struct work_struct *ws)* This function gets called on the error paths of the constructor, so we * have to cope with a partially initialised struct. */ -static void destroy (struct cache *cache) +static void __destroy (struct cache *cache) { -unsigned i; -mempool_exit (&cache->migration_pool);if (cache->prison)dm_bio_prison_destroy_v2 (cache->prison); -cancel_delayed_work_sync (&cache->waker);if (cache->wq)destroy_workqueue (cache->wq);
@@ -1997,13 +1994,22 @@ static void destroy(struct cache *cache)if (cache->policy)dm_cache_policy_destroy (cache->policy); +bioset_exit (&cache->bs); + +kfree (cache); +} + +static void destroy (struct cache *cache) +{ +unsigned int i; + +cancel_delayed_work_sync (&cache->waker); +for (i =0 ; i < cache->nr_ctr_args ; i++)kfree (cache->ctr_args[i]);kfree (cache->ctr_args); -bioset_exit (&cache->bs); - -kfree (cache); +__destroy (cache); }static void cache_dtr (struct dm_target *ti)
@@ -2616,7 +2622,7 @@ static int cache_create(struct cache_args *ca, struct cache **result) *result = cache;return 0 ; bad: -destroy (cache); +__destroy (cache);return r; }
@@ -2667,7 +2673,7 @@ static int cache_ctr(struct dm_target *ti, unsigned argc, char **argv) r =copy_ctr_args (cache, argc -3 , (const char **)argv +3 );if (r) { -destroy (cache); +__destroy (cache); goto out; }
drivers/md/dm-integrity.c +3 -0
@@ -4303,16 +4303,19 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv) ic->recalc_bitmap =dm_integrity_alloc_page_list (n_bitmap_pages);if (!ic->recalc_bitmap) { + ti->error ="Could not allocate memory for bitmap" ; r = -ENOMEM ; goto bad; } ic->may_write_bitmap =dm_integrity_alloc_page_list (n_bitmap_pages);if (!ic->may_write_bitmap) { + ti->error ="Could not allocate memory for bitmap" ; r = -ENOMEM ; goto bad; } ic->bbs =kvmalloc_array (ic->n_bitmap_blocks,sizeof (struct bitmap_block_status ),GFP_KERNEL );if (!ic->bbs) { + ti->error ="Could not allocate memory for bitmap" ; r = -ENOMEM ; goto bad; }
drivers/md/raid1.c +16 -10
@@ -2034,14 +2034,9 @@ static int fix_sync_read_error(struct r1bio *r1_bio)if (!rdev_set_badblocks (rdev, sect, s,0 )) abort =1 ; } -if (abort) { - conf->recovery_disabled = - mddev->recovery_disabled; -set_bit (MD_RECOVERY_INTR , &mddev->recovery); -md_done_sync (mddev, r1_bio->sectors,0 ); -put_buf (r1_bio); +if (abort)return 0 ; - } +/* Try next page */ sectors -= s; sect += s;
@@ -2181,10 +2176,21 @@ static void sync_request_write(struct mddev *mddev, struct r1bio *r1_bio)int disks = conf->raid_disks *2 ;struct bio *wbio; -if (!test_bit (R1BIO_Uptodate, &r1_bio->state)) -/* ouch - failed to read all of that. */ -if (!fix_sync_read_error (r1_bio)) +if (!test_bit (R1BIO_Uptodate, &r1_bio->state)) { +/* +* ouch - failed to read all of that. +* No need to fix read error for check/repair +* because all member disks are read. +*/ +if (test_bit (MD_RECOVERY_REQUESTED , &mddev->recovery) || + !fix_sync_read_error (r1_bio)) { + conf->recovery_disabled = mddev->recovery_disabled; +set_bit (MD_RECOVERY_INTR , &mddev->recovery); +md_done_sync (mddev, r1_bio->sectors,0 ); +put_buf (r1_bio);return ; + } + }if (test_bit (MD_RECOVERY_REQUESTED , &mddev->recovery))process_checks (r1_bio);
drivers/media/common/siano/smsdvb-main.c +2 -0
@@ -1210,6 +1210,8 @@ static int __init smsdvb_module_init(void)smsdvb_debugfs_register (); rc =smscore_register_hotplug (smsdvb_hotplug); +if (rc) +smsdvb_debugfs_unregister ();pr_debug ("\n" );
drivers/media/i2c/adv748x/adv748x.h +1 -1
@@ -322,7 +322,7 @@ struct adv748x_state {/* Free run pattern select */ #define ADV748X_SDP_FRP 0x14 -#define ADV748X_SDP_FRP_MASK GENMASK(3, 1) +#define ADV748X_SDP_FRP_MASK GENMASK(2, 0)/* Saturation */ #define ADV748X_SDP_SD_SAT_U 0xe3/* user_map_rw_reg_e3 */
drivers/media/i2c/ov7251.c +3 -1
@@ -748,6 +748,8 @@ static int ov7251_set_power_on(struct ov7251 *ov7251)return ret; } +usleep_range (1000 ,1100 ); +gpiod_set_value_cansleep (ov7251->enable_gpio,1 );/* wait at least 65536 external clock cycles */
@@ -1330,7 +1332,7 @@ static int ov7251_probe(struct i2c_client *client)return PTR_ERR (ov7251->analog_regulator); } - ov7251->enable_gpio =devm_gpiod_get (dev,"enable" ,GPIOD_OUT_HIGH ); + ov7251->enable_gpio =devm_gpiod_get (dev,"enable" ,GPIOD_OUT_LOW );if (IS_ERR (ov7251->enable_gpio)) {dev_err (dev,"cannot get enable gpio\n" );return PTR_ERR (ov7251->enable_gpio);
drivers/media/platform/qcom/venus/Makefile +2 -1
@@ -3,7 +3,8 @@ venus-core-objs += core.o helpers.o firmware.o \ hfi_venus.o hfi_msgs.o hfi_cmds.o hfi.o \ - hfi_parser.o pm_helpers.o dbgfs.o + hfi_parser.o pm_helpers.o dbgfs.o \ + hfi_platform.o hfi_platform_v4.o \ venus-dec-objs += vdec.o vdec_ctrls.o venus-enc-objs += venc.o venc_ctrls.o
drivers/media/platform/qcom/venus/core.c +0 -17
@@ -529,17 +529,6 @@ static const struct freq_tbl sdm845_freq_table[] = { { 244800, 100000000 }, /* 1920x1080@30 */ }; -static const struct codec_freq_data sdm845_codec_freq_data[] = { - {V4L2_PIX_FMT_H264 ,VIDC_SESSION_TYPE_ENC ,675 ,10 }, - {V4L2_PIX_FMT_HEVC ,VIDC_SESSION_TYPE_ENC ,675 ,10 }, - {V4L2_PIX_FMT_VP8 ,VIDC_SESSION_TYPE_ENC ,675 ,10 }, - {V4L2_PIX_FMT_MPEG2 ,VIDC_SESSION_TYPE_DEC ,200 ,10 }, - {V4L2_PIX_FMT_H264 ,VIDC_SESSION_TYPE_DEC ,200 ,10 }, - {V4L2_PIX_FMT_HEVC ,VIDC_SESSION_TYPE_DEC ,200 ,10 }, - {V4L2_PIX_FMT_VP8 ,VIDC_SESSION_TYPE_DEC ,200 ,10 }, - {V4L2_PIX_FMT_VP9 ,VIDC_SESSION_TYPE_DEC ,200 ,10 }, -}; -static const struct bw_tbl sdm845_bw_table_enc[] = { {1944000 ,1612000 ,0 ,2416000 ,0 },/* 3840x2160@60 */ { 972000, 951000, 0, 1434000, 0 }, /* 3840x2160@30 */
@@ -561,8 +550,6 @@ static const struct venus_resources sdm845_res = { .bw_tbl_enc_size = ARRAY_SIZE(sdm845_bw_table_enc), .bw_tbl_dec = sdm845_bw_table_dec, .bw_tbl_dec_size = ARRAY_SIZE(sdm845_bw_table_dec), - .codec_freq_data = sdm845_codec_freq_data, - .codec_freq_data_size = ARRAY_SIZE(sdm845_codec_freq_data), .clks = {"core", "iface", "bus" }, .clks_num = 3, .vcodec0_clks = { "core", "bus" },
@@ -584,8 +571,6 @@ static const struct venus_resources sdm845_res_v2 = { .bw_tbl_enc_size = ARRAY_SIZE(sdm845_bw_table_enc), .bw_tbl_dec = sdm845_bw_table_dec, .bw_tbl_dec_size = ARRAY_SIZE(sdm845_bw_table_dec), - .codec_freq_data = sdm845_codec_freq_data, - .codec_freq_data_size = ARRAY_SIZE(sdm845_codec_freq_data), .clks = {"core", "iface", "bus" }, .clks_num = 3, .vcodec0_clks = { "vcodec0_core", "vcodec0_bus" },
@@ -635,8 +620,6 @@ static const struct venus_resources sc7180_res = { .bw_tbl_enc_size = ARRAY_SIZE(sc7180_bw_table_enc), .bw_tbl_dec = sc7180_bw_table_dec, .bw_tbl_dec_size = ARRAY_SIZE(sc7180_bw_table_dec), - .codec_freq_data = sdm845_codec_freq_data, - .codec_freq_data_size = ARRAY_SIZE(sdm845_codec_freq_data), .clks = {"core", "iface", "bus" }, .clks_num = 3, .vcodec0_clks = { "vcodec0_core", "vcodec0_bus" },
drivers/media/platform/qcom/venus/core.h +5 -36
83 lines not on this page · raw message
drivers/media/platform/qcom/venus/helpers.c +27 -33
96 lines not on this page · raw message
drivers/media/platform/qcom/venus/helpers.h +1 -1
@@ -33,7 +33,6 @@ int venus_helper_set_output_resolution(struct venus_inst *inst, unsigned int width, unsigned int height, u32 buftype);int venus_helper_set_work_mode (struct venus_inst *inst,u32 mode); -int venus_helper_init_codec_freq_data (struct venus_inst *inst);int venus_helper_set_num_bufs (struct venus_inst *inst,unsigned int input_bufs,unsigned int output_bufs,unsigned int output2_bufs);
@@ -48,6 +47,7 @@ unsigned int venus_helper_get_opb_size(struct venus_inst *inst);void venus_helper_acquire_buf_ref (struct vb2_v4l2_buffer *vbuf);void venus_helper_release_buf_ref (struct venus_inst *inst,unsigned int idx);void venus_helper_init_instance (struct venus_inst *inst); +int venus_helper_session_init (struct venus_inst *inst);int venus_helper_get_out_fmts (struct venus_inst *inst,u32 fmt,u32 *out_fmt,u32 *out2_fmt,bool ubwc);int venus_helper_alloc_dpb_bufs (struct venus_inst *inst);
drivers/media/platform/qcom/venus/hfi.c +14 -4
@@ -178,6 +178,8 @@ static int wait_session_msg(struct venus_inst *inst)int hfi_session_create (struct venus_inst *inst,const struct hfi_inst_ops *ops) {struct venus_core *core = inst->core; +bool max; +int ret;if (!ops)return -EINVAL ;
@@ -187,11 +189,19 @@ int hfi_session_create(struct venus_inst *inst, const struct hfi_inst_ops *ops) inst->ops = ops;mutex_lock (&core->lock); -list_add_tail (&inst->list, &core->instances); -atomic_inc (&core->insts_count); + + max =atomic_add_unless (&core->insts_count,1 , + core->max_sessions_supported); +if (!max) { + ret = -EAGAIN ; + }else { +list_add_tail (&inst->list, &core->instances); + ret =0 ; + } +mutex_unlock (&core->lock); -return 0 ; +return ret; }EXPORT_SYMBOL_GPL (hfi_session_create);
@@ -202,7 +212,7 @@ int hfi_session_init(struct venus_inst *inst, u32 pixfmt)int ret;if (inst->state !=INST_UNINIT ) -return -EINVAL ; +return -EALREADY ; inst->hfi_codec =to_codec_type (pixfmt);reinit_completion (&inst->done);
drivers/media/platform/qcom/venus/hfi_parser.c +124 -35
333 lines not on this page · raw message
drivers/media/platform/qcom/venus/hfi_parser.h +1 -1
@@ -16,7 +16,7 @@ static inline u32 get_cap(struct venus_inst *inst, u32 type, u32 which) {struct venus_core *core = inst->core;struct hfi_capability *cap =NULL ; -struct venus_caps *caps; +struct hfi_plat_caps *caps;unsigned int i; caps =venus_caps_by_codec (core, inst->hfi_codec, inst->session_type);
drivers/media/platform/qcom/venus/hfi_platform.c new file +49 -0
49 lines not on this page · raw message
drivers/media/platform/qcom/venus/hfi_platform.h new file +61 -0
61 lines not on this page · raw message
drivers/media/platform/qcom/venus/hfi_platform_v4.c new file +60 -0
60 lines not on this page · raw message
drivers/media/platform/qcom/venus/hfi_venus.c +16 -2
@@ -188,6 +188,9 @@ static int venus_write_queue(struct venus_hfi_device *hdev,/* ensure rd/wr indices's are read from memory */ rmb (); +if (qsize >IFACEQ_QUEUE_SIZE /4 ) +return -EINVAL ; +if (wr_idx >= rd_idx) empty_space = qsize - (wr_idx - rd_idx);else
@@ -256,6 +259,9 @@ static int venus_read_queue(struct venus_hfi_device *hdev, wr_idx = qhdr->write_idx; qsize = qhdr->q_size; +if (qsize >IFACEQ_QUEUE_SIZE /4 ) +return -EINVAL ; +/* make sure data is valid before using it */ rmb ();
@@ -978,18 +984,26 @@ static void venus_sfr_print(struct venus_hfi_device *hdev) {struct device *dev = hdev->core->dev;struct hfi_sfr *sfr = hdev->sfr.kva; +u32 size;void *p;if (!sfr)return ; - p =memchr (sfr->data,'\0' , sfr->buf_size); + size = sfr->buf_size; +if (!size) +return ; + +if (size >ALIGNED_SFR_SIZE ) + size =ALIGNED_SFR_SIZE ; + + p =memchr (sfr->data,'\0' , size);/* * SFR isn't guaranteed to be NULL terminated since SYS_ERROR indicates * that Venus is in the process of crashing. */ if (!p) - sfr->data[sfr->buf_size -1 ] ='\0' ; + sfr->data[size -1 ] ='\0' ;dev_err_ratelimited (dev,"SFR message from FW: %s\n" , sfr->data); }
drivers/media/platform/qcom/venus/pm_helpers.c +8 -4
@@ -18,6 +18,7 @@#include "hfi_parser.h" #include "hfi_venus_io.h" #include "pm_helpers.h" +#include "hfi_platform.h" static bool legacy_binding;
@@ -506,7 +507,7 @@ min_loaded_core(struct venus_inst *inst, u32 *min_coreid, u32 *min_load)if (inst_pos->state !=INST_START )continue ; - vpp_freq = inst_pos->clk_data.codec_freq_data->vpp_freq; + vpp_freq = inst_pos->clk_data.vpp_freq; coreid = inst_pos->clk_data.core_id; mbs_per_sec =load_per_instance (inst_pos);
@@ -555,7 +556,7 @@ static int decide_core(struct venus_inst *inst)return 0 ; inst_load =load_per_instance (inst); - inst_load *= inst->clk_data.codec_freq_data->vpp_freq; + inst_load *= inst->clk_data.vpp_freq; max_freq = core->res->freq_tbl[0 ].freq;min_loaded_core (inst, &min_coreid, &min_load);
@@ -937,10 +938,13 @@ static unsigned long calculate_inst_freq(struct venus_inst *inst, mbs_per_sec =load_per_instance (inst) / fps; - vpp_freq = mbs_per_sec * inst->clk_data.codec_freq_data->vpp_freq; +if (inst->state !=INST_START ) +return 0 ; + + vpp_freq = mbs_per_sec * inst->clk_data.vpp_freq;/* 21 / 20 is overhead factor */ vpp_freq += vpp_freq /20 ; - vsp_freq = mbs_per_sec * inst->clk_data.codec_freq_data->vsp_freq; + vsp_freq = mbs_per_sec * inst->clk_data.vsp_freq;/* 10 / 7 is overhead factor */ if (inst->session_type ==VIDC_SESSION_TYPE_ENC )
drivers/media/platform/qcom/venus/vdec.c +2 -6
@@ -767,8 +767,8 @@ static int vdec_session_init(struct venus_inst *inst) {int ret; - ret =hfi_session_init (inst, inst->fmt_out->pixfmt); -if (ret == -EINVAL ) + ret =venus_helper_session_init (inst); +if (ret == -EALREADY )return 0 ;else if (ret)return ret;
@@ -778,10 +778,6 @@ static int vdec_session_init(struct venus_inst *inst)if (ret) goto deinit; - ret =venus_helper_init_codec_freq_data (inst); -if (ret) - goto deinit; -return 0 ; deinit:hfi_session_deinit (inst);
drivers/media/platform/qcom/venus/venc.c +65 -26
97 lines not on this page · raw message
drivers/media/rc/streamzap.c +55 -80
135 lines not on this page · raw message
drivers/media/v4l2-core/v4l2-dv-timings.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/brcmnand/brcmnand.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_ptp.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c +6 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +1 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +30 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/atmel/at76c50x-usb.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x2/usb.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/pci/pci.c +60 -43
103 lines not on this page · raw message
drivers/pci/probe.c +50 -8
58 lines not on this page · raw message
drivers/platform/x86/intel_speed_select_if/isst_if_common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/soc/samsung/exynos-asv.c +11 -34
45 lines not on this page · raw message
drivers/soc/samsung/exynos-chipid.c +106 -31
137 lines not on this page · raw message
drivers/staging/comedi/drivers/jr3_pci.c +11 -4
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/aspeed-vhub/dev.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +5 -1
Lines of this file are not shown. View the raw message.
fs/cifs/smb2ops.c +28 -20
48 lines not on this page · raw message
fs/cifs/transport.c +24 -19
43 lines not on this page · raw message
fs/ext4/inode.c +54 -22
76 lines not on this page · raw message
fs/proc/array.c +30 -22
52 lines not on this page · raw message
include/linux/soc/samsung/exynos-chipid.h +2 -4
Lines of this file are not shown. View the raw message.
kernel/resource.c +8 -33
41 lines not on this page · raw message
kernel/trace/trace_events_synth.c +80 -2
82 lines not on this page · raw message
net/core/filter.c +44 -36
80 lines not on this page · raw message
net/mptcp/protocol.c +45 -0
45 lines not on this page · raw message
sound/usb/midi.c +74 -6
80 lines not on this page · raw message
tools/testing/selftests/mincore/mincore_selftest.c +0 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ublk/test_stripe_04.sh new file +24 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vm/charge_reserved_hugetlb.sh +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vm/hugetlb_reparenting_test.sh +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.