Linux 5.15.87
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.87 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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 | 2 arch/arm/include/asm/thread_info.h | 13 arch/arm/nwfpe/Makefile | 6 arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 5 arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 arch/powerpc/kernel/rtas.c | 20 arch/riscv/include/asm/mmu.h | 2 arch/riscv/include/asm/pgtable.h | 2 arch/riscv/include/asm/tlbflush.h | 18 arch/riscv/include/asm/uaccess.h | 2 arch/riscv/kernel/probes/simulate-insn.h | 4 arch/riscv/kernel/stacktrace.c | 2 arch/riscv/mm/context.c | 10 arch/riscv/mm/tlbflush.c | 28 arch/x86/events/intel/uncore.h | 1 arch/x86/events/intel/uncore_snbep.c | 22 arch/x86/kernel/cpu/bugs.c | 2 arch/x86/kernel/cpu/mce/amd.c | 37 - arch/x86/kernel/cpu/mce/core.c | 95 +-- arch/x86/kernel/cpu/mce/internal.h | 12 arch/x86/kernel/cpu/microcode/intel.c | 8 arch/x86/kernel/crash.c | 4 arch/x86/kernel/ftrace.c | 2 arch/x86/kernel/kprobes/core.c | 10 arch/x86/kernel/kprobes/opt.c | 28 arch/x86/kvm/vmx/nested.c | 47 + arch/x86/kvm/vmx/sgx.c | 4 block/bfq-iosched.c | 2 block/blk-merge.c | 10 block/mq-deadline.c | 84 ++ drivers/acpi/resource.c | 78 ++ drivers/acpi/x86/s2idle.c | 10 drivers/ata/ahci.c | 32 - drivers/base/dd.c | 6 drivers/char/ipmi/ipmi_msghandler.c | 4 drivers/char/ipmi/ipmi_si_intf.c | 27 drivers/char/tpm/eventlog/acpi.c | 12 drivers/char/tpm/tpm_crb.c | 29 - drivers/char/tpm/tpm_tis.c | 9 drivers/cpufreq/cpufreq.c | 2 drivers/crypto/ccp/sp-pci.c | 11 drivers/crypto/n2_core.c | 6 drivers/devfreq/devfreq.c | 6 drivers/devfreq/governor_userspace.c | 12 drivers/firmware/efi/efi.c | 4 drivers/firmware/efi/libstub/efistub.h | 2 drivers/firmware/efi/libstub/random.c | 42 + drivers/gpio/gpio-sifive.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 13 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 drivers/gpu/drm/drm_connector.c | 3 drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 4 drivers/gpu/drm/i915/gt/intel_migrate.c | 8 drivers/gpu/drm/i915/gvt/debugfs.c | 17 drivers/gpu/drm/i915/gvt/scheduler.c | 1 drivers/gpu/drm/imx/ipuv3-plane.c | 14 drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 6 drivers/gpu/drm/meson/meson_viu.c | 5 drivers/gpu/drm/mgag200/mgag200_pll.c | 3 drivers/gpu/drm/panfrost/panfrost_drv.c | 27 drivers/gpu/drm/panfrost/panfrost_gem.c | 16 drivers/gpu/drm/panfrost/panfrost_gem.h | 5 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 drivers/hid/hid-ids.h | 3 drivers/hid/hid-multitouch.c | 4 drivers/hid/hid-plantronics.c | 9 drivers/infiniband/hw/mlx5/counters.c | 6 drivers/infiniband/hw/mlx5/qp.c | 49 + drivers/iommu/amd/init.c | 7 drivers/md/dm-cache-metadata.c | 54 + drivers/md/dm-cache-target.c | 11 drivers/md/dm-clone-target.c | 1 drivers/md/dm-integrity.c | 2 drivers/md/dm-thin-metadata.c | 60 +- drivers/md/dm-thin.c | 18 drivers/md/md-bitmap.c | 20 drivers/md/md.c | 9 drivers/media/dvb-core/dmxdev.c | 8 drivers/media/dvb-core/dvbdev.c | 1 drivers/media/dvb-frontends/stv0288.c | 5 drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c | 4 drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 12 drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 14 drivers/mfd/mt6360-core.c | 14 drivers/mmc/host/sdhci-sprd.c | 16 drivers/mmc/host/vub300.c | 2 drivers/mtd/spi-nor/core.c | 2 drivers/net/bonding/bond_3ad.c | 1 drivers/net/dsa/mv88e6xxx/Kconfig | 4 drivers/net/ethernet/amazon/ena/ena_com.c | 29 - drivers/net/ethernet/amazon/ena/ena_ethtool.c | 6 drivers/net/ethernet/amazon/ena/ena_netdev.c | 83 ++ drivers/net/ethernet/amazon/ena/ena_netdev.h | 17 drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 drivers/net/ethernet/amd/xgbe/xgbe-i2c.c | 4 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 178 ++---- drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 7 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 75 +- drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 3 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 30 - drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c | 11 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 12 drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 4 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c | 7 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c | 33 - drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 30 - drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 6 drivers/net/ethernet/mellanox/mlx5/core/health.c | 6 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 4 drivers/net/ethernet/mellanox/mlx5/core/main.c | 2 drivers/net/ethernet/microchip/sparx5/sparx5_main.c | 2 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 8 drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 8 drivers/net/ethernet/renesas/ravb_main.c | 2 drivers/net/phy/xilinx_gmii2rgmii.c | 1 drivers/net/usb/rndis_host.c | 3 drivers/net/veth.c | 5 drivers/net/vmxnet3/vmxnet3_drv.c | 8 drivers/net/wireless/microchip/wilc1000/sdio.c | 1 drivers/nvme/host/core.c | 32 - drivers/nvme/host/nvme.h | 2 drivers/nvme/host/pci.c | 37 - drivers/nvme/target/admin-cmd.c | 35 - drivers/nvme/target/passthru.c | 11 drivers/of/kexec.c | 10 drivers/parisc/led.c | 3 drivers/pci/pci-sysfs.c | 13 drivers/pci/pci.c | 2 drivers/phy/qualcomm/phy-qcom-qmp.c | 8 drivers/remoteproc/remoteproc_core.c | 9 drivers/rtc/rtc-ds1347.c | 2 drivers/soc/qcom/Kconfig | 1 drivers/soc/ux500/ux500-soc-id.c | 10 drivers/soundwire/dmi-quirks.c | 8 drivers/soundwire/intel.c | 8 drivers/soundwire/qcom.c | 8 drivers/soundwire/stream.c | 4 drivers/staging/media/ipu3/ipu3-v4l2.c | 57 +- drivers/staging/media/tegra-video/csi.c | 4 drivers/staging/media/tegra-video/csi.h | 2 drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c | 4 drivers/usb/dwc3/dwc3-qcom.c | 13 drivers/vdpa/vdpa_sim/vdpa_sim.c | 3 drivers/vdpa/vdpa_sim/vdpa_sim_blk.c | 4 drivers/vdpa/vdpa_sim/vdpa_sim_net.c | 4 drivers/vhost/vhost.c | 4 drivers/vhost/vringh.c | 5 drivers/vhost/vsock.c | 9 drivers/video/fbdev/matrox/matroxfb_base.c | 4 fs/binfmt_elf_fdpic.c | 5 fs/btrfs/backref.c | 4 fs/btrfs/disk-io.c | 35 - fs/btrfs/disk-io.h | 6 fs/btrfs/ioctl.c | 9 fs/btrfs/rcu-string.h | 6 fs/btrfs/super.c | 76 ++ fs/btrfs/tree-defrag.c | 6 fs/btrfs/volumes.c | 43 - fs/ceph/caps.c | 2 fs/ceph/locks.c | 4 fs/ceph/super.h | 1 fs/cifs/cifsfs.c | 8 fs/cifs/cifsglob.h | 69 ++ fs/cifs/cifsproto.h | 4 fs/cifs/connect.c | 4 fs/cifs/misc.c | 4 fs/cifs/smb2ops.c | 143 ++--- fs/dlm/lowcomms.c | 9 fs/ext4/balloc.c | 2 fs/ext4/ext4.h | 9 fs/ext4/ext4_jbd2.c | 3 fs/ext4/extents.c | 8 fs/ext4/extents_status.c | 3 fs/ext4/fast_commit.c | 285 ++++++---- fs/ext4/fast_commit.h | 7 fs/ext4/indirect.c | 13 fs/ext4/inode.c | 50 + fs/ext4/ioctl.c | 13 fs/ext4/namei.c | 47 - fs/ext4/orphan.c | 26 fs/ext4/resize.c | 6 fs/ext4/super.c | 52 + fs/ext4/verity.c | 2 fs/ext4/xattr.c | 19 fs/f2fs/gc.c | 1 fs/f2fs/node.c | 3 fs/hfs/inode.c | 13 fs/hfsplus/hfsplus_fs.h | 2 fs/hfsplus/inode.c | 16 fs/hfsplus/options.c | 4 fs/ksmbd/auth.c | 3 fs/ksmbd/connection.c | 7 fs/ksmbd/transport_tcp.c | 5 fs/locks.c | 23 fs/mbcache.c | 121 +--- fs/nfsd/nfs4xdr.c | 11 fs/nfsd/nfssvc.c | 2 fs/ntfs3/attrib.c | 18 fs/ntfs3/attrlist.c | 5 fs/ntfs3/bitmap.c | 2 fs/ntfs3/file.c | 4 fs/ntfs3/frecord.c | 14 fs/ntfs3/fslog.c | 35 - fs/ntfs3/fsntfs.c | 10 fs/ntfs3/index.c | 6 fs/ntfs3/inode.c | 9 fs/ntfs3/record.c | 10 fs/ntfs3/super.c | 9 fs/overlayfs/dir.c | 46 + fs/pnode.c | 2 fs/pstore/ram.c | 2 fs/pstore/zone.c | 2 fs/quota/dquot.c | 2 fs/udf/inode.c | 2 include/linux/devfreq.h | 7 include/linux/efi.h | 2 include/linux/fs.h | 6 include/linux/mbcache.h | 33 - include/linux/mlx5/device.h | 5 include/linux/mlx5/mlx5_ifc.h | 3 include/linux/netfilter/ipset/ip_set.h | 2 include/linux/nvme.h | 3 include/linux/sunrpc/rpc_pipe_fs.h | 5 include/net/mptcp.h | 12 include/net/netfilter/nf_tables.h | 25 include/sound/soc-dai.h | 32 - include/trace/events/ext4.h | 7 include/trace/events/jbd2.h | 44 - io_uring/io_uring.c | 13 kernel/events/core.c | 6 kernel/kcsan/core.c | 50 + kernel/rcu/tasks.h | 20 kernel/trace/Kconfig | 2 kernel/trace/trace.c | 38 - kernel/trace/trace.h | 27 kernel/trace/trace_eprobe.c | 3 kernel/trace/trace_events_hist.c | 11 kernel/trace/trace_events_synth.c | 2 kernel/trace/trace_probe.c | 2 mm/compaction.c | 18 net/caif/cfctrl.c | 6 net/core/filter.c | 7 net/ipv4/syncookies.c | 7 net/mptcp/subflow.c | 76 ++ net/netfilter/ipset/ip_set_core.c | 7 net/netfilter/ipset/ip_set_hash_ip.c | 14 net/netfilter/ipset/ip_set_hash_ipmark.c | 13 net/netfilter/ipset/ip_set_hash_ipport.c | 13 net/netfilter/ipset/ip_set_hash_ipportip.c | 13 net/netfilter/ipset/ip_set_hash_ipportnet.c | 13 net/netfilter/ipset/ip_set_hash_net.c | 17 net/netfilter/ipset/ip_set_hash_netiface.c | 15 net/netfilter/ipset/ip_set_hash_netnet.c | 23 net/netfilter/ipset/ip_set_hash_netport.c | 19 net/netfilter/ipset/ip_set_hash_netportnet.c | 40 - net/netfilter/nf_tables_api.c | 261 ++++++--- net/nfc/netlink.c | 52 + net/packet/af_packet.c | 20 net/sched/cls_tcindex.c | 12 net/sched/sch_atm.c | 5 net/sched/sch_cbq.c | 4 net/sunrpc/auth_gss/auth_gss.c | 19 net/sunrpc/auth_gss/svcauth_gss.c | 9 security/device_cgroup.c | 33 + security/integrity/ima/ima_template.c | 5 security/integrity/platform_certs/load_uefi.c | 1 sound/pci/hda/patch_realtek.c | 50 + sound/soc/codecs/hdac_hda.c | 22 sound/soc/codecs/max98373-sdw.c | 2 sound/soc/codecs/rt1308-sdw.c | 2 sound/soc/codecs/rt1316-sdw.c | 2 sound/soc/codecs/rt5682-sdw.c | 2 sound/soc/codecs/rt700.c | 2 sound/soc/codecs/rt711-sdca.c | 2 sound/soc/codecs/rt711.c | 2 sound/soc/codecs/rt715-sdca.c | 2 sound/soc/codecs/rt715.c | 2 sound/soc/codecs/sdw-mockup.c | 2 sound/soc/codecs/wcd938x.c | 2 sound/soc/codecs/wsa881x.c | 2 sound/soc/intel/boards/bytcr_rt5640.c | 15 sound/soc/intel/boards/sof_sdw.c | 6 sound/soc/intel/skylake/skl-pcm.c | 7 sound/soc/jz4740/jz4740-i2s.c | 39 + sound/soc/qcom/sdm845.c | 4 sound/soc/qcom/sm8250.c | 4 sound/soc/sof/intel/hda-dai.c | 7 sound/usb/line6/driver.c | 3 sound/usb/line6/midi.c | 6 sound/usb/line6/midibuf.c | 25 sound/usb/line6/midibuf.h | 5 sound/usb/line6/pod.c | 3 tools/objtool/check.c | 2 tools/perf/util/cgroup.c | 23 tools/perf/util/data.c | 2 tools/perf/util/dwarf-aux.c | 23 tools/testing/ktest/ktest.pl | 23 tools/testing/selftests/Makefile | 26 tools/testing/selftests/bpf/config | 4 tools/testing/selftests/bpf/prog_tests/bpf_nf.c | 48 - tools/testing/selftests/bpf/progs/test_bpf_nf.c | 109 --- tools/testing/selftests/lib.mk | 5 305 files changed, 3238 insertions(+), 1866 deletions(-)
Adam Vodopjan (1):
ata: ahci: Fix PCS quirk application for suspend
Adham Faris (1):
net/mlx5e: Fix hw mtu initializing at XDP SQ allocation
Aditya Garg (2):
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
efi: Add iMac Pro 2017 to uefi skip cert quirk
Adrian Freund (1):
ACPI: resource: do IRQ override on Lenovo 14ALC7
Aidan MacDonald (1):
ASoC: jz4740-i2s: Handle independent FIFO flush bits
Alex Deucher (2):
drm/amdgpu: handle polaris10/11 overlap asics (v2) drm/amdgpu: make display pinning more flexible (v2)
Alexander Antonov (2):
perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D perf/x86/intel/uncore: Clear attr_update properly
Alexander Aring (2):
fs: dlm: fix sock release if listen fails
fs: dlm: retry accept() until -EAGAIN or error returns
Alexander Potapenko (1):
fs: ext4: initialize fsdata in pagecache_write()
Alexander Sverdlin (1):
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
Ard Biesheuvel (1):
efi: random: combine bootloader provided RNG seed with RNG protocol output
Arnd Bergmann (1):
hfs/hfsplus: use WARN_ON for sanity check
Artem Egorkine (2):
ALSA: line6: correct midi status byte when receiving data from podxt
ALSA: line6: fix stack overflow in line6_midi_transmit
Ashok Raj (1):
x86/microcode/intel: Do not retry microcode reloading on the APs
Baokun Li (8):
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
ext4: fix use-after-free in ext4_orphan_cleanup
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
ext4: add helper to check quota inums
ext4: fix bug_on in __es_tree_search caused by bad quota inode
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
ext4: fix corruption when online resizing a 1K bigalloc fs
ext4: correct inconsistent error msg in nojournal mode
Ben Dooks (1):
riscv: uaccess: fix type of 0 variable on error in get_user()
Biju Das (1):
ravb: Fix "failed to switch device to config mode" message during unbind
Bixuan Cui (1):
jbd2: use the correct print format
Björn Töpel (1):
riscv, kprobes: Stricter c.jr/c.jalr decoding
Boris Burkov (1):
btrfs: fix resolving backrefs for inline extent followed by prealloc
Borislav Petkov (1):
x86/mce: Get rid of msr_ops
Carlo Caione (1):
drm/meson: Reduce the FIFO lines held when AFBC is not used
ChiYuan Huang (1):
mfd: mt6360: Add bounds checking in Regmap read/write call-backs
Chris Chiu (1):
ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
Chris Mi (1):
net/mlx5e: Always clear dest encap in neigh-update-del
Christian Brauner (1):
pnode: terminate at peers of source
Christoph Hellwig (4):
nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
nvmet: don't defer passthrough commands with trivial effects to the workqueue
nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it
nvme: also return I/O command effects from nvme_command_effects
Christophe Leroy (1):
objtool: Fix SEGFAULT
Chuck Lever (1):
SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
Corentin Labbe (1):
crypto: n2 - add missing hash statesize
Damien Le Moal (2):
block: mq-deadline: Do not break sequential write streams to zoned HDDs
block: mq-deadline: Fix dd_finish_request() for zoned devices
Dan Carpenter (3):
fs/ntfs3: Delete duplicate condition in ntfs_read_mft()
ipmi: fix use after free in _ipmi_destroy_user() drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
Daniil Tatianin (2):
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure drivers/net/bonding/bond_3ad: return when there's no aggregator
David Arinzon (7):
net: ena: Fix toeplitz initial hash value
net: ena: Don't register memory info on XDP exchange
net: ena: Account for the number of processed bytes in XDP
net: ena: Use bitmask to indicate packet redirection
net: ena: Fix rx_copybreak value update
net: ena: Set default value for RX interrupt moderation
net: ena: Update NUMA TPH hint register upon NUMA node update
Deren Wu (1):
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
Dragos Tatulea (1):
net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default
Edward Lo (7):
fs/ntfs3: Validate data run offset
fs/ntfs3: Add null pointer check to attr_load_runs_vcn fs/ntfs3: Add null pointer check for inode operations fs/ntfs3: Validate attribute name offset fs/ntfs3: Validate buffer length while parsing index fs/ntfs3: Validate resident attribute name fs/ntfs3: Validate index root when initialize NTFS security
Eric Biggers (12):
ext4: fix leaking uninitialized memory in fast-commit journal
ext4: remove unused enum EXT4_FC_COMMIT_FAILED
ext4: use ext4_debug() instead of jbd_debug()
ext4: introduce EXT4_FC_TAG_BASE_LEN helper
ext4: factor out ext4_fc_get_tl()
ext4: fix potential out of bound read in ext4_fc_replay_scan()
ext4: disable fast-commit of encrypted dir operations
ext4: don't set up encryption key during jbd2 transaction
ext4: add missing validation of fast-commit record lengths
ext4: fix unaligned memory access in ext4_fc_reserve_space()
ext4: fix off-by-one errors in fast-commit block filling
ext4: don't allow journal inode to have encrypt flag
Eric Dumazet (1):
net/af_packet: make sure to pull mac header
Eric Whitney (1):
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Erik Schumacher (1):
ACPI: resource: do IRQ override on XMG Core 15
Florian Westphal (1):
mptcp: mark ops structures as ro_after_init
Florian-Ewald Mueller (1):
md/bitmap: Fix bitmap chunk size overflow issues
Gaosheng Cui (1):
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Geetha sowjanya (1):
octeontx2-pf: Fix lmtst ID used in aura free
Greg Kroah-Hartman (1):
Linux 5.15.87
Guo Ren (1):
riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
Hangbin Liu (1):
net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO
Hanjun Guo (3):
tpm: acpi: Call acpi_put_table() to fix memory leak
tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
Hans de Goede (1):
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
Hao Chen (1):
net: hns3: refactor hns3_nic_reuse_page()
Harshit Mogalapalli (1):
io_uring: Fix unsigned 'res' comparison with zero in io_fixup_rw_res()
Hawkins Jiawei (2):
fs/ntfs3: Fix slab-out-of-bounds read in run_unpack
net: sched: fix memory leak in tcindex_set_parms
Horatiu Vultur (1):
net: sparx5: Fix reading of the MAC address
Huaxin Lu (1):
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Ian Abbott (1):
rtc: ds1347: fix value written to century register
Isaac J. Manjarres (1):
driver core: Fix bus_type.match() error handling in __driver_attach()
Jaegeuk Kim (1):
f2fs: allow to read node block after shutdown
Jakub Kicinski (1):
bpf: pull before calling skb_postpull_rcsum()
Jamal Hadi Salim (2):
net: sched: atm: dont intepret cls results when asked to drop
net: sched: cbq: dont intepret cls results when asked to drop
Jan Kara (7):
ext4: avoid BUG_ON when creating xattrs
ext4: initialize quota before expanding inode in setproject ioctl
ext4: avoid unaccounted block allocation when expanding inode
mbcache: automatically delete entries from cache on freeing
ext4: fix deadlock due to mbcache entry corruption
udf: Fix extension of the last extent in the file
mbcache: Avoid nesting of cache->c_list_lock under bit locks
Jason A. Donenfeld (2):
media: stv0288: use explicitly signed char
ARM: ux500: do not directly dereference __iomem
Jason Yan (1):
ext4: goto right label 'failed_mount3a'
Jeff Layton (3):
nfsd: shut down the NFSv4 state objects before the filecache
filelock: new helper: vfs_inode_has_locks
nfsd: fix handling of readdir in v4root vs. mount upcall timeout
Jens Axboe (3):
ARM: renumber bits related to _TIF_WORK_MASK
io_uring: check for valid register opcode earlier
block: don't allow splitting of a REQ_NOWAIT bio
Jian Shen (2):
net: hns3: fix miss L3E checking for rx packet
net: hns3: fix VF promisc mode not update when mac table full
Jie Wang (2):
net: hns3: add interrupts re-initialization while doing VF FLR
net: hns3: fix return value check bug of rx copybreak
Jiguang Xiao (1):
net: amd-xgbe: add missed tasklet_kill
Jiri Pirko (1):
net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path
Jiri Slaby (SUSE) (1):
ACPI: resource: do IRQ override on LENOVO IdeaPad
Jocelyn Falempe (1):
drm/mgag200: Fix PLL setup for G200_SE_A rev >=4
Johan Hovold (1):
phy: qcom-qmp-combo: fix sc8180x reset
Johnny S. Lee (1):
net: dsa: mv88e6xxx: depend on PTP conditionally
José Expósito (1):
HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint
Jozsef Kadlecsik (2):
netfilter: ipset: fix hash:net,port,net hang with /0 subnet
netfilter: ipset: Rework long task execution when adding/deleting entries
Kant Fan (1):
PM/devfreq: governor: Add a private governor_data for governor
Keita Suzuki (1):
media: dvb-core: Fix double free in dvb_register_device()
Keith Busch (2):
nvme-pci: fix mempool alloc size
nvme-pci: fix page size checks
Kim Phillips (1):
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Klaus Jensen (1):
nvme-pci: fix doorbell buffer value endianness
Krzysztof Kozlowski (2):
arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
Linus Torvalds (1):
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
Luca Ceresoli (2):
staging: media: tegra-video: fix chan->mipi value on error
staging: media: tegra-video: fix device_node use after free
Luca Stefani (1):
pstore: Properly assign mem_type property
Luo Meng (5):
dm thin: resume even if in FAIL mode
dm thin: Fix UAF in run_timer_softirq()
dm integrity: Fix UAF in dm_integrity_dtr()
dm clone: Fix UAF in clone_dtr()
dm cache: Fix UAF in destroy()
Luís Henriques (2):
ext4: remove trailing newline from ext4_msg() message
ext4: fix error code return to user-space in ext4_get_branch()
Manivannan Sadhasivam (1):
soc: qcom: Select REMAP_MMIO for LLCC driver
Maor Gottlieb (1):
RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
Marco Elver (1):
kcsan: Instrument memcpy/memset/memmove with newer Clang
Maria Yu (1):
remoteproc: core: Do pm_relax when in RPROC_OFFLINE state
Mario Limonciello (2):
crypto: ccp - Add support for TEE for PCI ID 0x14CA Revert "ACPI: PM: Add support for upcoming AMD uPEP HID AMDI007"
Masami Hiramatsu (Google) (5):
x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
tracing: Fix complicated dependency of CONFIG_TRACER_MAX_TRACE perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
Matthew Auld (3):
drm/i915/migrate: don't check the scratch page drm/i915/migrate: fix offset calculation drm/i915/migrate: fix length calculation
Matthieu Baerts (3):
mptcp: remove MPTCP 'ifdef' in TCP SYN cookies
mptcp: dedicated request sock for subflow in v6
mptcp: use proper req destructor for IPv6
Maximilian Luz (1):
ipu3-imgu: Fix NULL pointer dereference in imgu_subdev_set_selection()
Miaoqian Lin (5):
usb: dwc3: qcom: Fix memory leak in dwc3_qcom_interconnect_init
nfc: Fix potential resource leaks
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
gpio: sifive: Fix refcount leak in sifive_gpio_probe perf tools: Fix resources leak in perf_data__open_dir()
Michael S. Tsirkin (1):
PCI: Fix pci_device_is_present() for VFs by checking PF
Michael Walle (1):
wifi: wilc1000: sdio: fix module autoloading
Mickaël Salaün (1):
selftests: Use optional USERCFLAGS and USERLDFLAGS
Mike Snitzer (2):
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort dm cache: set needs_check flag after aborting metadata
Mikko Kovanen (1):
drm/i915/dsi: fix VBT send packet port selection for dual link DSI
Mikulas Patocka (1):
md: fix a crash in mempool_free
Moshe Shemesh (1):
net/mlx5: E-Switch, properly handle ingress tagged packets on VST
Muhammad Usama Anjum (1):
selftests: set the BUILD variable to absolute path
NARIBAYASHI Akira (1):
mm, compaction: fix fast_isolate_around() to stay within boundaries
Namhyung Kim (2):
perf/core: Call LSM hook after copying perf_event_attr
perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode
Namjae Jeon (1):
ksmbd: fix infinite loop in ksmbd_conn_handler_loop()
Nathan Lynch (2):
powerpc/rtas: avoid device tree lookups in rtas_os_term() powerpc/rtas: avoid scheduling in rtas_os_term()
Nick Desaulniers (1):
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Nikolay Borisov (1):
btrfs: move missing device handling in a dedicate function
Pablo Neira Ayuso (4):
netfilter: nf_tables: consolidate set description
netfilter: nf_tables: add function to create set stateful expressions
netfilter: nf_tables: perform type checking for existing sets
netfilter: nf_tables: honor set timeout and garbage collection updates
Paul E. McKenney (1):
rcu-tasks: Simplify trc_read_check_handler() atomic operations
Paul Menzel (1):
fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB
Paulo Alcantara (2):
cifs: fix oops during encryption
cifs: fix confusing debug message
Pavel Begunkov (1):
io_uring: fix CQ waiting timeout handling
Pavel Machek (1):
f2fs: should put a page when checking the summary info
Peng Li (1):
net: hns3: extract macro to simplify ring stats update code
Philipp Jungkamp (1):
ALSA: patch_realtek: Fix Dell Inspiron Plus 16
Philipp Zabel (1):
drm/imx: ipuv3-plane: Fix overlay plane width
Pierre-Louis Bossart (3):
soundwire: dmi-quirks: add quirk variant for LAPBC710 NUC15
ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire
Qiujun Huang (1):
pstore/zone: Use GFP_ATOMIC to allocate zone buffer
Qu Wenruo (2):
btrfs: check superblock to ensure the fs was not modified at thaw time
btrfs: make thaw time super block check to also verify checksum
Rob Herring (1):
of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values
Rodrigo Branco (1):
x86/bugs: Flush IBP in ib_prctl_set()
Roi Dayan (1):
net/mlx5e: TC, Refactor mlx5e_tc_add_flow_mod_hdr() to get flow attr
Ronak Doshi (1):
vmxnet3: correctly report csum_level for encapsulated packet
Sascha Hauer (1):
PCI/sysfs: Fix double free in error path
Sasha Levin (4):
Revert "selftests/bpf: Add test for unstable CT lookup API"
phy: qcom-qmp-combo: fix out-of-bounds clock access
btrfs: replace strncpy() with strscpy()
btrfs: fix an error handling path in btrfs_defrag_leaves()
Sean Christopherson (3):
KVM: VMX: Resume guest immediately when injecting #GP on ECREATE
KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails
KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1
Sergey Matyukevich (1):
riscv: mm: notify remote harts about mmu cache updates
Shang XiaoJing (1):
parisc: led: Fix potential null-ptr-deref in start_task()
Shawn Bohrer (1):
veth: Fix race with AF_XDP exposing old or uninitialized descriptors
Shay Drory (2):
net/mlx5: Avoid recovery in probe flows RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device
Shigeru Yoshida (1):
fs/ntfs3: Fix memory leak on ntfs_fill_super() error path
Simon Ser (1):
drm/connector: send hotplug uevent on connector cleanup
Smitha T Murthy (3):
media: s5p-mfc: Fix to handle reference queue during finishing
media: s5p-mfc: Clear workbit to handle error condition
media: s5p-mfc: Fix in register read and write for H264
Srinivas Pandruvada (1):
thermal: int340x: Add missing attribute for data rate base
Stefano Garzarella (3):
vringh: fix range used in iotlb_translate()
vhost: fix range used in translate_desc()
vdpa_sim: fix vringh initialization in vdpasim_queue_ready()
Steve French (1):
cifs: fix missing display of three mount options
Steven Price (1):
drm/panfrost: Fix GEM handle creation ref-counting
Steven Rostedt (2):
kest.pl: Fix grub2 menu handling for rebooting ktest.pl minconfig: Unset configs instead of just removing them
Steven Rostedt (Google) (3):
ftrace/x86: Add back ftrace_expected for ftrace bug reports
tracing: Fix race where eprobes can be called before the event tracing/probes: Handle system names with hyphens
Szymon Heidrich (1):
usb: rndis_host: Secure rndis_query check against int overflow
Takashi Iwai (2):
media: dvb-core: Fix UAF due to refcount races at releasing x86/kexec: Fix double-free of elf header buffer
Tamim Khan (1):
ACPI: resource: Skip IRQ override on Asus Vivobook K3402ZA/K3502ZA
Terry Junge (1):
HID: plantronics: Additional PIDs for double volume key presses quirk
Tetsuo Handa (3):
fs/ntfs3: Use __GFP_NOWARN allocation at wnd_init() fs/ntfs3: Use __GFP_NOWARN allocation at ntfs_fill_super() fs/ntfs3: don't hold ni_lock when calling truncate_setsize()
Wang Weiyang (1):
device_cgroup: Roll back to original exceptions after copy failure
Wang Yufen (1):
binfmt: Fix error return code in load_elf_fdpic_binary()
Wenchao Chen (1):
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
William Liu (1):
ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob
Xiubo Li (1):
ceph: switch to vfs_inode_has_locks() to fix file lock bug
Yang Jihong (1):
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Yanjun Zhang (1):
nvme: fix multipath crash caused by flush request when blktrace is enabled
Yazen Ghannam (1):
x86/MCE/AMD: Clear DFR errors found in THR handler
Ye Bin (6):
ext4: fix reserved cluster accounting in __es_remove_extent()
ext4: fix uninititialized value in 'ext4_evict_inode'
ext4: init quota for 'old.inode' in 'ext4_rename'
ext4: fix kernel BUG in 'ext4_write_inline_data_end()'
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
ext4: allocate extended attribute value in vmalloc area
Yin Xiujiang (1):
fs/ntfs3: Fix slab-out-of-bounds in r_page
Yongqiang Liu (1):
cpufreq: Init completion before kobject_init_and_add()
Yu Kuai (1):
block, bfq: fix uaf for bfqq in bfq_exit_icq_bfqq
Yuan Can (2):
drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init() vhost/vsock: Fix error handling in vhost_vsock_init()
Zack Rusin (1):
drm/vmwgfx: Validate the box size for the snooped cursor
Zhang Tianci (1):
ovl: Use ovl mounter's fsuid and fsgid in ovl_link()
Zhang Yi (2):
ext4: silence the warning when evicting inode with dioread_nolock
ext4: check and assert if marking an no_delete evicting inode dirty
Zhang Yuchen (1):
ipmi: fix long wait in unload when IPMI disconnect
Zheng Yejian (3):
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx' tracing/hist: Fix wrong return value in parse_action_params()
tracing: Fix issue of missing one synthetic field
Zhengchao Shao (1):
caif: fix memory leak in cfctrl_linkup_request()
Zhenyu Wang (2):
drm/i915/gvt: fix gvt debugfs destroy drm/i915/gvt: fix vgpu debugfs clean in remove
Zhihao Cheng (2):
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata dm thin: Use last transaction's pmd->root when commit failed
edward lo (2):
fs/ntfs3: Validate BOOT record_size fs/ntfs3: Add overflow check for attribute size
minoura makoto (1):
SUNRPC: ensure the matching upcall is in-flight upon downcall
ruanjinjie (1):
vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init()
void0red (1):
btrfs: fix extent map use-after-free when handling missing device in read_one_chunk
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 86 +SUBLEVEL = 87 EXTRAVERSION = NAME = Trick or Treat
arch/arm/include/asm/thread_info.h +7 -6
@@ -129,15 +129,16 @@ extern int vfp_restore_user_hwstate(struct user_vfp *,#define TIF_NEED_RESCHED 1/* rescheduling necessary */ #define TIF_NOTIFY_RESUME 2/* callback before returning to user */ #define TIF_UPROBE 3/* breakpointed or singlestepping */ -#define TIF_SYSCALL_TRACE 4/* syscall trace active */ -#define TIF_SYSCALL_AUDIT 5/* syscall auditing active */ -#define TIF_SYSCALL_TRACEPOINT 6/* syscall tracepoint instrumentation */ -#define TIF_SECCOMP 7/* seccomp syscall filtering active */ -#define TIF_NOTIFY_SIGNAL 8/* signal notifications exist */ +#define TIF_NOTIFY_SIGNAL 4/* signal notifications exist */ #define TIF_USING_IWMMXT 17#define TIF_MEMDIE 18/* is terminating due to OOM killer */ -#define TIF_RESTORE_SIGMASK 20 +#define TIF_RESTORE_SIGMASK 19 +#define TIF_SYSCALL_TRACE 20/* syscall trace active */ +#define TIF_SYSCALL_AUDIT 21/* syscall auditing active */ +#define TIF_SYSCALL_TRACEPOINT 22/* syscall tracepoint instrumentation */ +#define TIF_SECCOMP 23/* seccomp syscall filtering active */ +#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
arch/arm/nwfpe/Makefile +6 -0
@@ -11,3 +11,9 @@ nwfpe-y += fpa11.o fpa11_cpdo.o fpa11_cpdt.o \ entry.o nwfpe-$(CONFIG_FPE_NWFPE_XP) += extended_cpdo.o + +# Try really hard to avoid generating calls to __aeabi_uldivmod() from +# float64_rem() due to loop elision. +ifdef CONFIG_CC_IS_CLANG +CFLAGS_softfloat.o += -mllvm -replexitval=never +endif
arch/arm64/boot/dts/qcom/sdm845-db845c.dts +4 -1
@@ -1045,7 +1045,10 @@ &wifi { /* PINCTRL - additions to nodes defined in sdm845.dtsi */ &qup_spi2_default { - drive-strength = <16>; + pinconf { + pins = "gpio27", "gpio28", "gpio29", "gpio30"; + drive-strength = <16>; + }; }; &qup_uart3_default{
arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts +4 -2
@@ -475,8 +475,10 @@ pinconf { }; &qup_i2c12_default { - drive-strength = <2>; - bias-disable; + pinmux { + drive-strength = <2>; + bias-disable; + }; }; &qup_uart6_default {
arch/powerpc/kernel/rtas.c +16 -4
@@ -788,6 +788,7 @@ void __noreturn rtas_halt(void)/* Must be in the RMO region, so we place it here */ static char rtas_os_term_buf[2048 ]; +static s32 ibm_os_term_token =RTAS_UNKNOWN_SERVICE ;void rtas_os_term (char *str) {
@@ -799,16 +800,20 @@ void rtas_os_term(char *str)* this property may terminate the partition which we want to avoid * since it interferes with panic_timeout. */ -if (RTAS_UNKNOWN_SERVICE ==rtas_token ("ibm,os-term" ) || -RTAS_UNKNOWN_SERVICE ==rtas_token ("ibm,extended-os-term" )) +if (ibm_os_term_token ==RTAS_UNKNOWN_SERVICE )return ;snprintf (rtas_os_term_buf,2048 ,"OS panic: %s" , str); +/* +* Keep calling as long as RTAS returns a "try again" status, +* but don't use rtas_busy_delay(), which potentially +* schedules. +*/ do { - status =rtas_call (rtas_token ("ibm,os-term" ),1 ,1 ,NULL , + status =rtas_call (ibm_os_term_token,1 ,1 ,NULL ,__pa (rtas_os_term_buf)); - }while (rtas_busy_delay (status)); + }while (rtas_busy_delay_time (status));if (status !=0 )printk (KERN_EMERG "ibm,os-term call failed %d\n" , status);
@@ -1167,6 +1172,13 @@ void __init rtas_initialize(void) no_entry =of_property_read_u32 (rtas.dev,"linux,rtas-entry" , &entry); rtas.entry = no_entry ? rtas.base : entry; +/* +* Discover these now to avoid device tree lookups in the +* panic path. +*/ +if (of_property_read_bool (rtas.dev,"ibm,extended-os-term" )) + ibm_os_term_token =rtas_token ("ibm,os-term" ); +/* If RTAS was found, allocate the RMO buffer for it and look for * the stop-self token if any */
arch/riscv/include/asm/mmu.h +2 -0
@@ -19,6 +19,8 @@ typedef struct {#ifdef CONFIG_SMP /* A local icache flush is needed before user execution can resume. */ cpumask_t icache_stale_mask; +/* A local tlb flush is needed before user execution can resume. */ +cpumask_t tlb_stale_mask;#endif } mm_context_t;
arch/riscv/include/asm/pgtable.h +1 -1
@@ -386,7 +386,7 @@ static inline void update_mmu_cache(struct vm_area_struct *vma,* Relying on flush_tlb_fix_spurious_fault would suffice, but * the extra traps reduce performance. So, eagerly SFENCE.VMA. */ -local_flush_tlb_page (address); +flush_tlb_page (vma, address); } static inline void update_mmu_cache_pmd(struct vm_area_struct *vma,
arch/riscv/include/asm/tlbflush.h +18 -0
@@ -22,6 +22,24 @@ static inline void local_flush_tlb_page(unsigned long addr) {ALT_FLUSH_TLB_PAGE (__asm__ __volatile__ ("sfence.vma %0" : :"r" (addr) :"memory" )); } + +static inline void local_flush_tlb_all_asid (unsigned long asid) +{ + __asm__ __volatile__ ("sfence.vma x0, %0" + : + :"r" (asid) + :"memory" ); +} + +static inline void local_flush_tlb_page_asid (unsigned long addr, +unsigned long asid) +{ + __asm__ __volatile__ ("sfence.vma %0, %1" + : + :"r" (addr),"r" (asid) + :"memory" ); +} +#else /* CONFIG_MMU */ #define local_flush_tlb_all () do { } while (0)#define local_flush_tlb_page (addr) do { } while (0)
arch/riscv/include/asm/uaccess.h +1 -1
@@ -216,7 +216,7 @@ do { \might_fault (); \access_ok (__p,sizeof (*__p)) ? \__get_user ((x), __p) : \ - ((x) =0 , -EFAULT ); \ + ((x) = (__force __typeof__(x))0, -EFAULT); \ })#define __put_user_asm (insn, x, ptr, err) \
arch/riscv/kernel/probes/simulate-insn.h +2 -2
@@ -31,9 +31,9 @@ __RISCV_INSN_FUNCS(fence, 0x7f, 0x0f); }while (0 )__RISCV_INSN_FUNCS (c_j,0xe003 ,0xa001 ); -__RISCV_INSN_FUNCS (c_jr,0xf007 ,0x8002 ); +__RISCV_INSN_FUNCS (c_jr,0xf07f ,0x8002 );__RISCV_INSN_FUNCS (c_jal,0xe003 ,0x2001 ); -__RISCV_INSN_FUNCS (c_jalr,0xf007 ,0x9002 ); +__RISCV_INSN_FUNCS (c_jalr,0xf07f ,0x9002 );__RISCV_INSN_FUNCS (c_beqz,0xe003 ,0xc001 );__RISCV_INSN_FUNCS (c_bnez,0xe003 ,0xe001 );__RISCV_INSN_FUNCS (c_ebreak,0xffff ,0x9002 );
arch/riscv/kernel/stacktrace.c +1 -1
@@ -60,7 +60,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, }else { fp = frame->fp; pc =ftrace_graph_ret_addr (current,NULL , frame->ra, - (unsigned long *)(fp -8 )); + &frame->ra); } }
arch/riscv/mm/context.c +10 -0
@@ -196,6 +196,16 @@ static void set_mm_asid(struct mm_struct *mm, unsigned int cpu)if (need_flush_tlb)local_flush_tlb_all (); +#ifdef CONFIG_SMP + else { +cpumask_t *mask = &mm->context.tlb_stale_mask; + +if (cpumask_test_cpu (cpu, mask)) { +cpumask_clear_cpu (cpu, mask); +local_flush_tlb_all_asid (cntx & asid_mask); + } + } +#endif }static void set_mm_noasid (struct mm_struct *mm)
arch/riscv/mm/tlbflush.c +11 -17
@@ -5,23 +5,7 @@#include <linux/sched.h> #include <asm/sbi.h> #include <asm/mmu_context.h> - -static inline void local_flush_tlb_all_asid (unsigned long asid) -{ - __asm__ __volatile__ ("sfence.vma x0, %0" - : - :"r" (asid) - :"memory" ); -} - -static inline void local_flush_tlb_page_asid (unsigned long addr, -unsigned long asid) -{ - __asm__ __volatile__ ("sfence.vma %0, %1" - : - :"r" (addr),"r" (asid) - :"memory" ); -} +#include <asm/tlbflush.h> void flush_tlb_all (void ) {
@@ -31,6 +15,7 @@ void flush_tlb_all(void)static void __sbi_tlb_flush_range (struct mm_struct *mm,unsigned long start,unsigned long size,unsigned long stride) { +struct cpumask *pmask = &mm->context.tlb_stale_mask;struct cpumask *cmask =mm_cpumask (mm);struct cpumask hmask;unsigned int cpuid;
@@ -45,6 +30,15 @@ static void __sbi_tlb_flush_range(struct mm_struct *mm, unsigned long start,if (static_branch_unlikely (&use_asid_allocator)) {unsigned long asid =atomic_long_read (&mm->context.id); +/* +* TLB will be immediately flushed on harts concurrently +* executing this MM context. TLB flush on other harts +* is deferred until this MM context migrates there. +*/ +cpumask_setall (pmask); +cpumask_clear_cpu (cpuid, pmask); +cpumask_andnot (pmask, pmask, cmask); +if (broadcast) {riscv_cpuid_to_hartid_mask (cmask, &hmask); sbi_remote_sfence_vma_asid(cpumask_bits(&hmask),
arch/x86/events/intel/uncore.h +1 -0
@@ -2,6 +2,7 @@#include <linux/slab.h> #include <linux/pci.h> #include <asm/apicdef.h> +#include <asm/intel-family.h> #include <linux/io-64-nonatomic-lo-hi.h> #include <linux/perf_event.h>
arch/x86/events/intel/uncore_snbep.c +21 -1
@@ -3804,6 +3804,21 @@ static const struct attribute_group *skx_iio_attr_update[] = { NULL, }; +static void pmu_clear_mapping_attr (const struct attribute_group **groups, +struct attribute_group *ag) +{ +int i; + +for (i =0 ; groups[i]; i++) { +if (groups[i] == ag) { +for (i++; groups[i]; i++) + groups[i -1 ] = groups[i]; + groups[i -1 ] =NULL ; +break ; + } + } +} +static int pmu_iio_set_mapping (struct intel_uncore_type *type,struct attribute_group *ag) {
@@ -3852,7 +3867,7 @@ pmu_iio_set_mapping(struct intel_uncore_type *type, struct attribute_group *ag) clear_topology:kfree (type->topology); clear_attr_update: - type->attr_update =NULL ; +pmu_clear_mapping_attr (type->attr_update, ag);return ret; }
@@ -5144,6 +5159,11 @@ static int icx_iio_get_topology(struct intel_uncore_type *type)static int icx_iio_set_mapping (struct intel_uncore_type *type) { +/* Detect ICX-D system. This case is not supported */ +if (boot_cpu_data.x86_model ==INTEL_FAM6_ICELAKE_D ) { +pmu_clear_mapping_attr (type->attr_update, &icx_iio_mapping_group); +return -EPERM ; + }return pmu_iio_set_mapping (type, &icx_iio_mapping_group); }
arch/x86/kernel/cpu/bugs.c +2 -0
@@ -1951,6 +1951,8 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)if (ctrl ==PR_SPEC_FORCE_DISABLE )task_set_spec_ib_force_disable (task);task_update_spec_tif (task); +if (task == current) +indirect_branch_prediction_barrier ();break ;default :return -ERANGE ;
arch/x86/kernel/cpu/mce/amd.c +22 -15
@@ -526,7 +526,7 @@ static u32 get_block_address(u32 current_addr, u32 low, u32 high,/* Fall back to method we used for older processors: */ switch (block) {case 0 : - addr = msr_ops.misc (bank); + addr =mca_msr_reg (bank,MCA_MISC );break ;case 1 : offset = ((low &MASK_BLKPTR_LO ) >>21 );
@@ -965,6 +965,24 @@ _log_error_bank(unsigned int bank, u32 msr_stat, u32 msr_addr, u64 misc)return status &MCI_STATUS_DEFERRED ; } +static bool _log_error_deferred (unsigned int bank,u32 misc) +{ +if (!_log_error_bank (bank,mca_msr_reg (bank,MCA_STATUS ), +mca_msr_reg (bank,MCA_ADDR ), misc)) +return false; + +/* +* Non-SMCA systems don't have MCA_DESTAT/MCA_DEADDR registers. +* Return true here to avoid accessing these registers. +*/ +if (!mce_flags.smca) +return true; + +/* Clear MCA_DESTAT if the deferred error was logged from MCA_STATUS. */ +wrmsrl (MSR_AMD64_SMCA_MCx_DESTAT (bank),0 ); +return true; +} +/* * We have three scenarios for checking for Deferred errors: *
@@ -976,19 +994,8 @@ _log_error_bank(unsigned int bank, u32 msr_stat, u32 msr_addr, u64 misc)*/ static void log_error_deferred (unsigned int bank) { -bool defrd; - - defrd =_log_error_bank (bank, msr_ops.status (bank), - msr_ops.addr (bank),0 ); - -if (!mce_flags.smca) -return ; - -/* Clear MCA_DESTAT if we logged the deferred error from MCA_STATUS. */ -if (defrd) { -wrmsrl (MSR_AMD64_SMCA_MCx_DESTAT (bank),0 ); +if (_log_error_deferred (bank,0 ))return ; - }/* * Only deferred errors are logged in MCA_DE{STAT,ADDR} so just check
@@ -1009,7 +1016,7 @@ static void amd_deferred_error_interrupt(void)static void log_error_thresholding (unsigned int bank,u64 misc) { -_log_error_bank (bank, msr_ops.status (bank), msr_ops.addr (bank), misc); +_log_error_deferred (bank, misc); }static void log_and_reset_block (struct threshold_block *block)
@@ -1397,7 +1404,7 @@ static int threshold_create_bank(struct threshold_bank **bp, unsigned int cpu, } } - err =allocate_threshold_blocks (cpu, b, bank,0 , msr_ops.misc (bank)); + err =allocate_threshold_blocks (cpu, b, bank,0 ,mca_msr_reg (bank,MCA_MISC ));if (err) goto out_kobj;
arch/x86/kernel/cpu/mce/core.c +31 -64
182 lines not on this page · raw message
arch/x86/kernel/cpu/mce/internal.h +6 -6
@@ -168,14 +168,14 @@ struct mce_vendor_flags {extern struct mce_vendor_flags mce_flags; -struct mca_msr_regs { -u32 (*ctl) (int bank); -u32 (*status) (int bank); -u32 (*addr) (int bank); -u32 (*misc) (int bank); +enum mca_msr { +MCA_CTL , +MCA_STATUS , +MCA_ADDR , +MCA_MISC , }; -extern struct mca_msr_regs msr_ops; +u32 mca_msr_reg (int bank,enum mca_msr reg);/* Decide whether to add MCE record to MCE event pool or filter it out. */ extern bool filter_mce (struct mce *m);
arch/x86/kernel/cpu/microcode/intel.c +1 -7
@@ -659,7 +659,6 @@ void load_ucode_intel_ap(void)else iup = &intel_ucode_patch; -reget:if (!*iup) { patch =__load_ucode_intel (&uci);if (!patch)
@@ -670,12 +669,7 @@ void load_ucode_intel_ap(void) uci.mc = *iup; -if (apply_microcode_early (&uci, true)) { -/* Mixed-silicon system? Try to refetch the proper patch: */ - *iup =NULL ; - - goto reget; - } +apply_microcode_early (&uci, true); }static struct microcode_intel *find_patch (struct ucode_cpu_info *uci)
arch/x86/kernel/crash.c +1 -3
@@ -401,10 +401,8 @@ int crash_load_segments(struct kimage *image) kbuf.buf_align =ELF_CORE_HEADER_ALIGN ; kbuf.mem =KEXEC_BUF_MEM_UNKNOWN ; ret =kexec_add_buffer (&kbuf); -if (ret) { -vfree ((void *)image->elf_headers); +if (ret)return ret; - } image->elf_load_addr = kbuf.mem;pr_debug ("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n" , image->elf_load_addr, kbuf.bufsz, kbuf.bufsz);
arch/x86/kernel/ftrace.c +2 -0
@@ -219,7 +219,9 @@ void ftrace_replace_code(int enable) ret =ftrace_verify_code (rec->ip, old);if (ret) { + ftrace_expected = old;ftrace_bug (ret, rec); + ftrace_expected =NULL ;return ; } }
arch/x86/kernel/kprobes/core.c +7 -3
@@ -37,6 +37,7 @@#include <linux/extable.h> #include <linux/kdebug.h> #include <linux/kallsyms.h> +#include <linux/kgdb.h> #include <linux/ftrace.h> #include <linux/kasan.h> #include <linux/moduleloader.h>
@@ -289,12 +290,15 @@ static int can_probe(unsigned long paddr)if (ret <0 )return 0 ; +#ifdef CONFIG_KGDB /* -* Another debugging subsystem might insert this breakpoint. -* In that case, we can't recover it. +* If there is a dynamically installed kgdb sw breakpoint, +* this function should not be probed. */ -if (insn.opcode.bytes[0 ] ==INT3_INSN_OPCODE ) +if (insn.opcode.bytes[0 ] ==INT3_INSN_OPCODE && +kgdb_has_hit_break (addr))return 0 ; +#endif addr += insn.length; }
arch/x86/kernel/kprobes/opt.c +8 -20
@@ -15,6 +15,7 @@#include <linux/extable.h> #include <linux/kdebug.h> #include <linux/kallsyms.h> +#include <linux/kgdb.h> #include <linux/ftrace.h> #include <linux/objtool.h> #include <linux/pgtable.h>
@@ -272,19 +273,6 @@ static int insn_is_indirect_jump(struct insn *insn)return ret; } -static bool is_padding_int3 (unsigned long addr,unsigned long eaddr) -{ -unsigned char ops; - -for (; addr < eaddr; addr++) { -if (get_kernel_nofault (ops, (void *)addr) <0 || - ops !=INT3_INSN_OPCODE ) -return false; - } - -return true; -} -/* Decode whole function to ensure any instructions don't jump into target */ static int can_optimize (unsigned long paddr) {
@@ -327,15 +315,15 @@ static int can_optimize(unsigned long paddr) ret =insn_decode_kernel (&insn, (void *)recovered_insn);if (ret <0 )return 0 ; - +#ifdef CONFIG_KGDB /* -* In the case of detecting unknown breakpoint, this could be -* a padding INT3 between functions. Let's check that all the -* rest of the bytes are also INT3. +* If there is a dynamically installed kgdb sw breakpoint, +* this function should not be probed. */ -if (insn.opcode.bytes[0 ] ==INT3_INSN_OPCODE ) -return is_padding_int3 (addr, paddr - offset + size) ?1 :0 ; - +if (insn.opcode.bytes[0 ] ==INT3_INSN_OPCODE && +kgdb_has_hit_break (addr)) +return 0 ; +#endif /* Recover address */ insn.kaddr = (void *)addr; insn.next_byte = (void *)(addr + insn.length);
arch/x86/kvm/vmx/nested.c +35 -12
72 lines not on this page · raw message
arch/x86/kvm/vmx/sgx.c +3 -1
@@ -188,8 +188,10 @@ static int __handle_encls_ecreate(struct kvm_vcpu *vcpu,/* Enforce CPUID restriction on max enclave size. */ max_size_log2 = (attributes &SGX_ATTR_MODE64BIT ) ? sgx_12_0->edx >>8 : sgx_12_0->edx; -if (size >=BIT_ULL (max_size_log2)) +if (size >=BIT_ULL (max_size_log2)) {kvm_inject_gp (vcpu,0 ); +return 1 ; + }/* * sgx_virt_ecreate() returns:
block/bfq-iosched.c +1 -1
@@ -5251,8 +5251,8 @@ static void bfq_exit_icq_bfqq(struct bfq_io_cq *bic, bool is_sync)unsigned long flags;spin_lock_irqsave (&bfqd->lock, flags); -bfq_exit_bfqq (bfqd, bfqq);bic_set_bfqq (bic,NULL , is_sync); +bfq_exit_bfqq (bfqd, bfqq);spin_unlock_irqrestore (&bfqd->lock, flags); } }
block/blk-merge.c +10 -0
@@ -279,6 +279,16 @@ static struct bio *blk_bio_segment_split(struct request_queue *q, *segs = nsegs;return NULL ; split: +/* +* We can't sanely support splitting for a REQ_NOWAIT bio. End it +* with EAGAIN if splitting is required and return an error pointer. +*/ +if (bio->bi_opf &REQ_NOWAIT ) { + bio->bi_status =BLK_STS_AGAIN ; +bio_endio (bio); +return ERR_PTR (-EAGAIN ); + } + *segs = nsegs;/*
block/mq-deadline.c +77 -7
135 lines not on this page · raw message
drivers/acpi/resource.c +65 -13
104 lines not on this page · raw message
drivers/acpi/x86/s2idle.c +2 -8
@@ -378,16 +378,13 @@ static int lps0_device_attach(struct acpi_device *adev,* AMDI0006: * - should use rev_id 0x0 * - function mask = 0x3: Should use Microsoft method -* AMDI0007: -* - Should use rev_id 0x2 -* - Should only use AMD method */ const char *hid =acpi_device_hid (adev); - rev_id =strcmp (hid,"AMDI0007" ) ?0 :2 ; + rev_id =0 ; lps0_dsm_func_mask =validate_dsm (adev->handle,ACPI_LPS0_DSM_UUID_AMD , rev_id, &lps0_dsm_guid); lps0_dsm_func_mask_microsoft =validate_dsm (adev->handle, -ACPI_LPS0_DSM_UUID_MICROSOFT ,0 , +ACPI_LPS0_DSM_UUID_MICROSOFT , rev_id, &lps0_dsm_guid_microsoft); if (lps0_dsm_func_mask > 0x3 && (!strcmp(hid, "AMD0004") || !strcmp(hid, "AMD0005") ||
@@ -395,9 +392,6 @@ static int lps0_device_attach(struct acpi_device *adev, lps0_dsm_func_mask = (lps0_dsm_func_mask <<1 ) |0x1 ;acpi_handle_debug (adev->handle,"_DSM UUID %s: Adjusted function mask: 0x%x\n" ,ACPI_LPS0_DSM_UUID_AMD , lps0_dsm_func_mask); - }else if (lps0_dsm_func_mask_microsoft >0 && !strcmp (hid,"AMDI0007" )) { - lps0_dsm_func_mask_microsoft = -EINVAL ; -acpi_handle_debug (adev->handle,"_DSM Using AMD method\n" ); } }else { rev_id =1 ;
drivers/ata/ahci.c +23 -9
@@ -83,6 +83,7 @@ enum board_ids {static int ahci_init_one (struct pci_dev *pdev,const struct pci_device_id *ent);static void ahci_remove_one (struct pci_dev *dev);static void ahci_shutdown_one (struct pci_dev *dev); +static void ahci_intel_pcs_quirk (struct pci_dev *pdev,struct ahci_host_priv *hpriv);static int ahci_vt8251_hardreset (struct ata_link *link,unsigned int *class,unsigned long deadline); static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class,
@@ -668,6 +669,25 @@ static void ahci_pci_save_initial_config(struct pci_dev *pdev,ahci_save_initial_config (&pdev->dev, hpriv); } +static int ahci_pci_reset_controller (struct ata_host *host) +{ +struct pci_dev *pdev =to_pci_dev (host->dev); +struct ahci_host_priv *hpriv = host->private_data; +int rc; + + rc =ahci_reset_controller (host); +if (rc) +return rc; + +/* +* If platform firmware failed to enable ports, try to enable +* them here. +*/ +ahci_intel_pcs_quirk (pdev, hpriv); + +return 0 ; +} +static void ahci_pci_init_controller (struct ata_host *host) {struct ahci_host_priv *hpriv = host->private_data;
@@ -869,7 +889,7 @@ static int ahci_pci_device_runtime_resume(struct device *dev)struct ata_host *host =pci_get_drvdata (pdev);int rc; - rc =ahci_reset_controller (host); + rc =ahci_pci_reset_controller (host);if (rc)return rc;ahci_pci_init_controller (host);
@@ -904,7 +924,7 @@ static int ahci_pci_device_resume(struct device *dev)ahci_mcp89_apple_enable (pdev);if (pdev->dev.power.power_state.event ==PM_EVENT_SUSPEND ) { - rc =ahci_reset_controller (host); + rc =ahci_pci_reset_controller (host);if (rc)return rc;
@@ -1789,12 +1809,6 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)/* save initial config */ ahci_pci_save_initial_config (pdev, hpriv); -/* -* If platform firmware failed to enable ports, try to enable -* them here. -*/ -ahci_intel_pcs_quirk (pdev, hpriv); -/* prepare host */ if (hpriv->cap &HOST_CAP_NCQ ) { pi.flags |=ATA_FLAG_NCQ ;
@@ -1904,7 +1918,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)if (rc)return rc; - rc =ahci_reset_controller (host); + rc =ahci_pci_reset_controller (host);if (rc)return rc;
drivers/base/dd.c +5 -1
@@ -1127,7 +1127,11 @@ static int __driver_attach(struct device *dev, void *data)return 0 ; }else if (ret <0 ) {dev_dbg (dev,"Bus failed to match device: %d\n" , ret); -return ret; +/* +* Driver could not match with device, but may match with +* another device on the bus. +*/ +return 0 ; }/* ret > 0 means positive match */ if (driver_allows_async_probing (drv)) {
drivers/char/ipmi/ipmi_msghandler.c +3 -1
@@ -1273,6 +1273,7 @@ static void _ipmi_destroy_user(struct ipmi_user *user)unsigned long flags;struct cmd_rcvr *rcvr;struct cmd_rcvr *rcvrs =NULL ; +struct module *owner;if (!acquire_ipmi_user (user, &i)) {/*
@@ -1334,8 +1335,9 @@ static void _ipmi_destroy_user(struct ipmi_user *user)kfree (rcvr); } + owner = intf->owner;kref_put (&intf->refcount, intf_free); -module_put (intf->owner); +module_put (owner); }int ipmi_destroy_user (struct ipmi_user *user)
drivers/char/ipmi/ipmi_si_intf.c +19 -8
@@ -2152,6 +2152,20 @@ static int __init init_ipmi_si(void) }module_init (init_ipmi_si); +static void wait_msg_processed (struct smi_info *smi_info) +{ +unsigned long jiffies_now; +long time_diff; + +while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { + jiffies_now = jiffies; + time_diff = (((long )jiffies_now - (long )smi_info->last_timeout_jiffies) + *SI_USEC_PER_JIFFY ); +smi_event_handler (smi_info, time_diff); +schedule_timeout_uninterruptible (1 ); + } +} +static void shutdown_smi (void *send_info) {struct smi_info *smi_info = send_info;
@@ -2186,16 +2200,13 @@ static void shutdown_smi(void *send_info)* in the BMC. Note that timers and CPU interrupts are off, * so no need for locks. */ -while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { -poll (smi_info); -schedule_timeout_uninterruptible (1 ); - } +wait_msg_processed (smi_info); +if (smi_info->handlers)disable_si_irq (smi_info); -while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { -poll (smi_info); -schedule_timeout_uninterruptible (1 ); - } + +wait_msg_processed (smi_info); +if (smi_info->handlers) smi_info->handlers->cleanup (smi_info->si_sm);
drivers/char/tpm/eventlog/acpi.c +9 -3
@@ -90,16 +90,21 @@ int tpm_read_log_acpi(struct tpm_chip *chip)return -ENODEV ;if (tbl->header.length < -sizeof (*tbl) +sizeof (struct acpi_tpm2_phy )) +sizeof (*tbl) +sizeof (struct acpi_tpm2_phy )) { +acpi_put_table ((struct acpi_table_header *)tbl);return -ENODEV ; + } tpm2_phy = (void *)tbl +sizeof (*tbl); len = tpm2_phy->log_area_minimum_length; start = tpm2_phy->log_area_start_address; -if (!start || !len) +if (!start || !len) { +acpi_put_table ((struct acpi_table_header *)tbl);return -ENODEV ; + } +acpi_put_table ((struct acpi_table_header *)tbl); format =EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 ; }else {/* Find TCPA entry in RSDT (ACPI_LOGICAL_ADDRESSING) */
@@ -120,8 +125,10 @@ int tpm_read_log_acpi(struct tpm_chip *chip)break ; } +acpi_put_table ((struct acpi_table_header *)buff); format =EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 ; } +if (!len) {dev_warn (&chip->dev,"%s: TCPA log area empty\n" , __func__);return -EIO ;
@@ -156,5 +163,4 @@ int tpm_read_log_acpi(struct tpm_chip *chip)kfree (log->bios_event_log); log->bios_event_log =NULL ;return ret; - }
drivers/char/tpm/tpm_crb.c +20 -9
@@ -676,12 +676,16 @@ static int crb_acpi_add(struct acpi_device *device)/* Should the FIFO driver handle this? */ sm = buf->start_method; -if (sm ==ACPI_TPM2_MEMORY_MAPPED ) -return -ENODEV ; +if (sm ==ACPI_TPM2_MEMORY_MAPPED ) { + rc = -ENODEV ; + goto out; + } priv =devm_kzalloc (dev,sizeof (struct crb_priv ),GFP_KERNEL ); -if (!priv) -return -ENOMEM ; +if (!priv) { + rc = -ENOMEM ; + goto out; + }if (sm ==ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC ) {if (buf->header.length < (sizeof (*buf) +sizeof (*crb_smc))) {
@@ -689,7 +693,8 @@ static int crb_acpi_add(struct acpi_device *device)FW_BUG "TPM2 ACPI table has wrong size %u for start method type %d\n" , buf->header.length, ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC); -return -EINVAL ; + rc = -EINVAL ; + goto out; } crb_smc = ACPI_ADD_PTR(struct tpm2_crb_smc, buf, sizeof(*buf)); priv->smc_func_id = crb_smc->smc_func_id;
@@ -700,17 +705,23 @@ static int crb_acpi_add(struct acpi_device *device) rc =crb_map_io (device, priv, buf);if (rc) -return rc; + goto out; chip =tpmm_chip_alloc (dev, &tpm_crb); -if (IS_ERR (chip)) -return PTR_ERR (chip); +if (IS_ERR (chip)) { + rc =PTR_ERR (chip); + goto out; + }dev_set_drvdata (&chip->dev, priv); chip->acpi_dev_handle = device->handle; chip->flags =TPM_CHIP_FLAG_TPM2 ; -return tpm_chip_register (chip); + rc =tpm_chip_register (chip); + +out: +acpi_put_table ((struct acpi_table_header *)buf); +return rc; }static int crb_acpi_remove (struct acpi_device *device)
drivers/char/tpm/tpm_tis.c +5 -4
@@ -125,6 +125,7 @@ static int check_acpi_tpm2(struct device *dev)const struct acpi_device_id *aid =acpi_match_device (tpm_acpi_tbl, dev);struct acpi_table_tpm2 *tbl;acpi_status st; +int ret =0 ;if (!aid || aid->driver_data !=DEVICE_IS_TPM2 )return 0 ;
@@ -132,8 +133,7 @@ static int check_acpi_tpm2(struct device *dev)/* If the ACPI TPM2 signature is matched then a global ACPI_SIG_TPM2 * table is mandatory */ - st = -acpi_get_table (ACPI_SIG_TPM2 ,1 , (struct acpi_table_header **)&tbl); + st =acpi_get_table (ACPI_SIG_TPM2 ,1 , (struct acpi_table_header **)&tbl);if (ACPI_FAILURE (st) || tbl->header.length <sizeof (*tbl)) {dev_err (dev,FW_BUG "failed to get TPM2 ACPI table\n" );return -EINVAL ;
@@ -141,9 +141,10 @@ static int check_acpi_tpm2(struct device *dev)/* The tpm2_crb driver handles this device */ if (tbl->start_method !=ACPI_TPM2_MEMORY_MAPPED ) -return -ENODEV ; + ret = -ENODEV ; - return 0; +acpi_put_table ((struct acpi_table_header *)tbl); + return ret; }#else static int check_acpi_tpm2 (struct device *dev)
drivers/cpufreq/cpufreq.c +1 -1
@@ -1212,6 +1212,7 @@ static struct cpufreq_policy *cpufreq_policy_alloc(unsigned int cpu)if (!zalloc_cpumask_var (&policy->real_cpus,GFP_KERNEL )) goto err_free_rcpumask; +init_completion (&policy->kobj_unregister); ret =kobject_init_and_add (&policy->kobj, &ktype_cpufreq, cpufreq_global_kobject,"policy%u" , cpu);if (ret) {
@@ -1250,7 +1251,6 @@ static struct cpufreq_policy *cpufreq_policy_alloc(unsigned int cpu)init_rwsem (&policy->rwsem);spin_lock_init (&policy->transition_lock);init_waitqueue_head (&policy->transition_wait); -init_completion (&policy->kobj_unregister);INIT_WORK (&policy->update, handle_update); policy->cpu = cpu;
drivers/crypto/ccp/sp-pci.c +10 -1
@@ -320,6 +320,15 @@ static const struct psp_vdata pspv3 = { .inten_reg = 0x10690, .intsts_reg = 0x10694, }; + +static const struct psp_vdata pspv4 = { + .sev = &sevv2, + .tee = &teev1, + .feature_reg =0x109fc , + .inten_reg =0x10690 , + .intsts_reg =0x10694 , +}; +#endif static const struct sp_dev_vdata dev_vdata[] = {
@@ -365,7 +374,7 @@ static const struct sp_dev_vdata dev_vdata[] = { {/* 5 */ .bar = 2, #ifdef CONFIG_CRYPTO_DEV_SP_PSP - .psp_vdata = &pspv2, + .psp_vdata = &pspv4,#endif }, };
drivers/crypto/n2_core.c +6 -0
@@ -1229,6 +1229,7 @@ struct n2_hash_tmpl {const u8 *hash_init;u8 hw_op_hashsz;u8 digest_size; +u8 statesize;u8 block_size;u8 auth_type;u8 hmac_type;
@@ -1260,6 +1261,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_HMAC_MD5, .hw_op_hashsz = MD5_DIGEST_SIZE, .digest_size = MD5_DIGEST_SIZE, + .statesize = sizeof(struct md5_state), .block_size = MD5_HMAC_BLOCK_SIZE }, { .name = "sha1", .hash_zero = sha1_zero_message_hash,
@@ -1268,6 +1270,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_HMAC_SHA1, .hw_op_hashsz = SHA1_DIGEST_SIZE, .digest_size = SHA1_DIGEST_SIZE, + .statesize = sizeof(struct sha1_state), .block_size = SHA1_BLOCK_SIZE }, { .name = "sha256", .hash_zero = sha256_zero_message_hash,
@@ -1276,6 +1279,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_HMAC_SHA256, .hw_op_hashsz = SHA256_DIGEST_SIZE, .digest_size = SHA256_DIGEST_SIZE, + .statesize = sizeof(struct sha256_state), .block_size = SHA256_BLOCK_SIZE }, { .name = "sha224", .hash_zero = sha224_zero_message_hash,
@@ -1284,6 +1288,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_RESERVED, .hw_op_hashsz = SHA256_DIGEST_SIZE, .digest_size = SHA224_DIGEST_SIZE, + .statesize = sizeof(struct sha256_state), .block_size = SHA224_BLOCK_SIZE }, };#define NUM_HASH_TMPLS ARRAY_SIZE(hash_tmpls)
@@ -1424,6 +1429,7 @@ static int __n2_register_one_ahash(const struct n2_hash_tmpl *tmpl) halg = &ahash->halg; halg->digestsize = tmpl->digest_size; + halg->statesize = tmpl->statesize; base = &halg->base;snprintf (base->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);
drivers/devfreq/devfreq.c +2 -4
@@ -775,8 +775,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,* @dev: the device to add devfreq feature. * @profile: device-specific profile to run devfreq. * @governor_name: name of the policy to choose frequency. -* @data: private data for the governor. The devfreq framework does not -* touch this value. +* @data: devfreq driver pass to governors, governor should not change it. */ struct devfreq *devfreq_add_device(struct device *dev, struct devfreq_dev_profile *profile,
@@ -1003,8 +1002,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)* @dev: the device to add devfreq feature. * @profile: device-specific profile to run devfreq. * @governor_name: name of the policy to choose frequency. -* @data: private data for the governor. The devfreq framework does not -* touch this value. +* @data: devfreq driver pass to governors, governor should not change it. * * This function manages automatically the memory of devfreq device using device * resource management and simplify the free operation for memory of devfreq
drivers/devfreq/governor_userspace.c +6 -6
@@ -21,7 +21,7 @@ struct userspace_data {static int devfreq_userspace_func (struct devfreq *df,unsigned long *freq) { -struct userspace_data *data = df->data; +struct userspace_data *data = df->governor_data;if (data->valid) *freq = data->user_frequency;
@@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,int err =0 ;mutex_lock (&devfreq->lock); - data = devfreq->data; + data = devfreq->governor_data;sscanf (buf,"%lu" , &wanted); data->user_frequency = wanted;
@@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,int err =0 ;mutex_lock (&devfreq->lock); - data = devfreq->data; + data = devfreq->governor_data;if (data->valid) err =sprintf (buf,"%lu\n" , data->user_frequency);
@@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq) goto out; } data->valid = false; - devfreq->data = data; + devfreq->governor_data = data; err =sysfs_create_group (&devfreq->dev.kobj, &dev_attr_group); out:
@@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)if (devfreq->dev.kobj.sd)sysfs_remove_group (&devfreq->dev.kobj, &dev_attr_group); -kfree (devfreq->data); - devfreq->data =NULL ; +kfree (devfreq->governor_data); + devfreq->governor_data =NULL ; } static int devfreq_userspace_handler(struct devfreq *devfreq,
drivers/firmware/efi/efi.c +2 -2
@@ -590,7 +590,7 @@ int __init efi_config_parse_tables(const efi_config_table_t *config_tables, seed =early_memremap (efi_rng_seed,sizeof (*seed));if (seed !=NULL ) { - size =min (seed->size,EFI_RANDOM_SEED_SIZE ); + size =min_t (u32, seed->size,SZ_1K );// sanity check early_memunmap (seed,sizeof (*seed)); }else {pr_err ("Could not map UEFI random seed!\n" );
@@ -599,8 +599,8 @@ int __init efi_config_parse_tables(const efi_config_table_t *config_tables, seed =early_memremap (efi_rng_seed,sizeof (*seed) + size);if (seed !=NULL ) { -pr_notice ("seeding entropy pool\n" );add_bootloader_randomness (seed->bits, size); +memzero_explicit (seed->bits, size);early_memunmap (seed,sizeof (*seed) + size); }else {pr_err ("Could not map UEFI random seed!\n" );
drivers/firmware/efi/libstub/efistub.h +2 -0
@@ -766,6 +766,8 @@ efi_status_t efi_get_random_bytes(unsigned long size, u8 *out);efi_status_t efi_random_alloc (unsigned long size,unsigned long align,unsigned long *addr,unsigned long random_seed); +efi_status_t efi_random_get_seed (void ); +efi_status_t check_platform_features (void );void *get_efi_config_table (efi_guid_t guid);
drivers/firmware/efi/libstub/random.c +36 -6
77 lines not on this page · raw message
drivers/gpio/gpio-sifive.c +1 -0
@@ -209,6 +209,7 @@ static int sifive_gpio_probe(struct platform_device *pdev)return -ENODEV ; } parent =irq_find_host (irq_parent); +of_node_put (irq_parent);if (!parent) {dev_err (dev,"no IRQ parent domain\n" );return -ENODEV ;
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +11 -2
@@ -2008,6 +2008,15 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, "See modparam exp_hw_support\n");return -ENODEV ; } +/* differentiate between P10 and P11 asics with the same DID */ +if (pdev->device ==0x67FF && + (pdev->revision ==0xE3 || + pdev->revision ==0xE7 || + pdev->revision ==0xF3 || + pdev->revision ==0xF7 )) { + flags &= ~AMD_ASIC_MASK ; + flags |=CHIP_POLARIS10 ; + }/* Due to hardware bugs, S/G Display on raven requires a 1:1 IOMMU mapping, * however, SME requires an indirect IOMMU mapping because the encryption
@@ -2081,12 +2090,12 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,pci_set_drvdata (pdev, ddev); - ret =amdgpu_driver_load_kms (adev, ent->driver_data); + ret =amdgpu_driver_load_kms (adev, flags);if (ret) goto err_pci; retry_init: - ret =drm_dev_register (ddev, ent->driver_data); + ret =drm_dev_register (ddev, flags);if (ret == -EAGAIN && ++retry <=3 ) {DRM_INFO ("retry init %d\n" , retry);/* Don't request EX mode too frequently which is attacking */
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +2 -1
@@ -1510,7 +1510,8 @@ u64 amdgpu_bo_gpu_offset_no_check(struct amdgpu_bo *bo)uint32_t amdgpu_bo_get_preferred_domain (struct amdgpu_device *adev,uint32_t domain) { -if (domain == (AMDGPU_GEM_DOMAIN_VRAM |AMDGPU_GEM_DOMAIN_GTT )) { +if ((domain == (AMDGPU_GEM_DOMAIN_VRAM |AMDGPU_GEM_DOMAIN_GTT )) && + ((adev->asic_type ==CHIP_CARRIZO ) || (adev->asic_type ==CHIP_STONEY ))) { domain =AMDGPU_GEM_DOMAIN_VRAM ;if (adev->gmc.real_vram_size <=AMDGPU_SG_THRESHOLD ) domain =AMDGPU_GEM_DOMAIN_GTT ;
drivers/gpu/drm/drm_connector.c +3 -0
@@ -487,6 +487,9 @@ void drm_connector_cleanup(struct drm_connector *connector)mutex_destroy (&connector->mutex);memset (connector,0 ,sizeof (*connector)); + +if (dev->registered) +drm_sysfs_hotplug_event (dev); }EXPORT_SYMBOL (drm_connector_cleanup);
drivers/gpu/drm/i915/display/intel_dsi_vbt.c +2 -2
@@ -133,9 +133,9 @@ static enum port intel_dsi_seq_port_to_port(struct intel_dsi *intel_dsi,return ffs (intel_dsi->ports) -1 ;if (seq_port) { -if (intel_dsi->ports &PORT_B ) +if (intel_dsi->ports &BIT (PORT_B ))return PORT_B ; -else if (intel_dsi->ports &PORT_C ) +else if (intel_dsi->ports &BIT (PORT_C ))return PORT_C ; }
drivers/gpu/drm/i915/gt/intel_migrate.c +3 -5
@@ -13,7 +13,6 @@struct insert_pte_data {u64 offset; -bool is_lmem; };#define CHUNK_SZ SZ_8M/* ~1ms at 8GiB/s preemption delay */
@@ -40,7 +39,7 @@ static void insert_pte(struct i915_address_space *vm,struct insert_pte_data *d = data; vm->insert_page (vm,px_dma (pt), d->offset,I915_CACHE_NONE , - d->is_lmem ?PTE_LM :0 ); +i915_gem_object_is_lmem (pt->base) ?PTE_LM :0 ); d->offset +=PAGE_SIZE ; }
@@ -134,8 +133,7 @@ static struct i915_address_space *migrate_vm(struct intel_gt *gt) goto err_vm;/* Now allow the GPU to rewrite the PTE via its own ppGTT */ - d.is_lmem =i915_gem_object_is_lmem (vm->vm.scratch[0 ]); - vm->vm.foreach (&vm->vm, base, base + sz, insert_pte, &d); + vm->vm.foreach (&vm->vm, base, d.offset - base, insert_pte, &d); }return &vm->vm;
@@ -281,10 +279,10 @@ static int emit_pte(struct i915_request *rq,GEM_BUG_ON (GRAPHICS_VER (rq->engine->i915) <8 );/* Compute the page directory offset for the target address range */ - offset += (u64 )rq->engine->instance <<32 ; offset >>=12 ; offset *=sizeof (u64); offset +=2 *CHUNK_SZ ; + offset += (u64 )rq->engine->instance <<32 ; cs =intel_ring_begin (rq,6 );if (IS_ERR (cs))
drivers/gpu/drm/i915/gvt/debugfs.c +13 -4
@@ -175,8 +175,13 @@ void intel_gvt_debugfs_add_vgpu(struct intel_vgpu *vgpu)*/ void intel_gvt_debugfs_remove_vgpu (struct intel_vgpu *vgpu) { -debugfs_remove_recursive (vgpu->debugfs); - vgpu->debugfs =NULL ; +struct intel_gvt *gvt = vgpu->gvt; +struct drm_minor *minor = gvt->gt->i915->drm.primary; + +if (minor->debugfs_root && gvt->debugfs_root) { +debugfs_remove_recursive (vgpu->debugfs); + vgpu->debugfs =NULL ; + } }/**
@@ -199,6 +204,10 @@ void intel_gvt_debugfs_init(struct intel_gvt *gvt)*/ void intel_gvt_debugfs_clean (struct intel_gvt *gvt) { -debugfs_remove_recursive (gvt->debugfs_root); - gvt->debugfs_root =NULL ; +struct drm_minor *minor = gvt->gt->i915->drm.primary; + +if (minor->debugfs_root) { +debugfs_remove_recursive (gvt->debugfs_root); + gvt->debugfs_root =NULL ; + } }
drivers/gpu/drm/i915/gvt/scheduler.c +1 -0
@@ -694,6 +694,7 @@ intel_vgpu_shadow_mm_pin(struct intel_vgpu_workload *workload)if (workload->shadow_mm->type !=INTEL_GVT_MM_PPGTT || !workload->shadow_mm->ppgtt_mm.shadowed) { +intel_vgpu_unpin_mm (workload->shadow_mm);gvt_vgpu_err ("workload shadow ppgtt isn't ready\n" );return -EINVAL ; }
drivers/gpu/drm/imx/ipuv3-plane.c +8 -6
@@ -619,6 +619,11 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,break ; } +if (ipu_plane->dp_flow ==IPU_DP_FLOW_SYNC_BG ) + width =ipu_src_rect_width (new_state); +else + width =drm_rect_width (&new_state->src) >>16 ; + eba =drm_plane_state_to_eba (new_state,0 );/*
@@ -627,8 +632,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,*/ if (ipu_state->use_pre) { axi_id =ipu_chan_assign_axi_id (ipu_plane->dma); -ipu_prg_channel_configure (ipu_plane->ipu_ch, axi_id, -ipu_src_rect_width (new_state), +ipu_prg_channel_configure (ipu_plane->ipu_ch, axi_id, width,drm_rect_height (&new_state->src) >>16 , fb->pitches[0 ], fb->format->format, fb->modifier, &eba);
@@ -683,9 +687,8 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,break ; } -ipu_dmfc_config_wait4eot (ipu_plane->dmfc,ALIGN (drm_rect_width (dst),8 )); +ipu_dmfc_config_wait4eot (ipu_plane->dmfc, width); - width =ipu_src_rect_width (new_state); height =drm_rect_height (&new_state->src) >>16 ; info =drm_format_info (fb->format->format); ipu_calculate_bursts(width, info->cpp[0], fb->pitches[0],
@@ -749,8 +752,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,ipu_cpmem_set_burstsize (ipu_plane->ipu_ch,16 );ipu_cpmem_zero (ipu_plane->alpha_ch); -ipu_cpmem_set_resolution (ipu_plane->alpha_ch, -ipu_src_rect_width (new_state), +ipu_cpmem_set_resolution (ipu_plane->alpha_ch, width,drm_rect_height (&new_state->src) >>16 );ipu_cpmem_set_format_passthrough (ipu_plane->alpha_ch,8 );ipu_cpmem_set_high_priority (ipu_plane->alpha_ch);
drivers/gpu/drm/ingenic/ingenic-drm-drv.c +5 -1
@@ -1326,7 +1326,11 @@ static int ingenic_drm_init(void)return err; } -return platform_driver_register (&ingenic_drm_driver); + err =platform_driver_register (&ingenic_drm_driver); +if (IS_ENABLED (CONFIG_DRM_INGENIC_IPU ) && err) +platform_driver_unregister (ingenic_ipu_driver_ptr); + +return err; }module_init (ingenic_drm_init);
drivers/gpu/drm/meson/meson_viu.c +2 -3
@@ -436,15 +436,14 @@ void meson_viu_init(struct meson_drm *priv)/* Initialize OSD1 fifo control register */ reg =VIU_OSD_DDR_PRIORITY_URGENT | -VIU_OSD_HOLD_FIFO_LINES (31 ) |VIU_OSD_FIFO_DEPTH_VAL (32 ) |/* fifo_depth_val: 32*8=256 */ VIU_OSD_WORDS_PER_BURST (4 ) |/* 4 words in 1 burst */ VIU_OSD_FIFO_LIMITS (2 );/* fifo_lim: 2*16=32 */ if (meson_vpu_is_compatible (priv,VPU_COMPATIBLE_G12A )) - reg |=VIU_OSD_BURST_LENGTH_32 ; + reg |= (VIU_OSD_BURST_LENGTH_32 |VIU_OSD_HOLD_FIFO_LINES (31 ));else - reg |=VIU_OSD_BURST_LENGTH_64 ; + reg |= (VIU_OSD_BURST_LENGTH_64 |VIU_OSD_HOLD_FIFO_LINES (4 ));writel_relaxed (reg, priv->io_base +_REG (VIU_OSD1_FIFO_CTRL_STAT ));writel_relaxed (reg, priv->io_base +_REG (VIU_OSD2_FIFO_CTRL_STAT ));
drivers/gpu/drm/mgag200/mgag200_pll.c +2 -1
@@ -268,7 +268,8 @@ static void mgag200_pixpll_update_g200se_04(struct mgag200_pll *pixpll, pixpllcp = pixpllc->p -1 ; pixpllcs = pixpllc->s; - xpixpllcm = pixpllcm | ((pixpllcn &BIT (8 )) >>1 ); +// For G200SE A, BIT(7) should be set unconditionally. + xpixpllcm =BIT (7 ) | pixpllcm; xpixpllcn = pixpllcn; xpixpllcp = (pixpllcs <<3 ) | pixpllcp;
drivers/gpu/drm/panfrost/panfrost_drv.c +18 -9
@@ -82,6 +82,7 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data,struct panfrost_gem_object *bo;struct drm_panfrost_create_bo *args = data;struct panfrost_gem_mapping *mapping; +int ret;if (!args->size || args->pad || (args->flags & ~(PANFROST_BO_NOEXEC |PANFROST_BO_HEAP )))
@@ -92,21 +93,29 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data, !(args->flags & PANFROST_BO_NOEXEC))return -EINVAL ; - bo =panfrost_gem_create_with_handle (file, dev, args->size, args->flags, - &args->handle); + bo =panfrost_gem_create (dev, args->size, args->flags);if (IS_ERR (bo))return PTR_ERR (bo); + ret =drm_gem_handle_create (file, &bo->base.base, &args->handle); +if (ret) + goto out; + mapping =panfrost_gem_mapping_get (bo, priv); -if (!mapping) { -drm_gem_object_put (&bo->base.base); -return -EINVAL ; +if (mapping) { + args->offset = mapping->mmnode.start <<PAGE_SHIFT ; +panfrost_gem_mapping_put (mapping); + }else { +/* This can only happen if the handle from +* drm_gem_handle_create() has already been guessed and freed +* by user space +*/ + ret = -EINVAL ; } - args->offset = mapping->mmnode.start <<PAGE_SHIFT ; -panfrost_gem_mapping_put (mapping); - -return 0 ; +out: +drm_gem_object_put (&bo->base.base); +return ret; }/**
drivers/gpu/drm/panfrost/panfrost_gem.c +1 -15
@@ -234,12 +234,8 @@ struct drm_gem_object *panfrost_gem_create_object(struct drm_device *dev, size_t }struct panfrost_gem_object * -panfrost_gem_create_with_handle (struct drm_file *file_priv, -struct drm_device *dev,size_t size, -u32 flags, -uint32_t *handle) +panfrost_gem_create (struct drm_device *dev,size_t size,u32 flags) { -int ret;struct drm_gem_shmem_object *shmem;struct panfrost_gem_object *bo;
@@ -255,16 +251,6 @@ panfrost_gem_create_with_handle(struct drm_file *file_priv, bo->noexec = !!(flags &PANFROST_BO_NOEXEC ); bo->is_heap = !!(flags &PANFROST_BO_HEAP ); -/* -* Allocate an id of idr table where the obj is registered -* and handle has the id what user can see. -*/ - ret =drm_gem_handle_create (file_priv, &shmem->base, handle); -/* drop reference from allocate - handle holds it now. */ -drm_gem_object_put (&shmem->base); -if (ret) -return ERR_PTR (ret); -return bo; }
drivers/gpu/drm/panfrost/panfrost_gem.h +1 -4
@@ -69,10 +69,7 @@ panfrost_gem_prime_import_sg_table(struct drm_device *dev, struct sg_table *sgt);struct panfrost_gem_object * -panfrost_gem_create_with_handle (struct drm_file *file_priv, -struct drm_device *dev,size_t size, -u32 flags, -uint32_t *handle); +panfrost_gem_create (struct drm_device *dev,size_t size,u32 flags);int panfrost_gem_open (struct drm_gem_object *obj,struct drm_file *file_priv); void panfrost_gem_close(struct drm_gem_object *obj,
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +2 -1
@@ -186,7 +186,8 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf,if (cmd->dma.guest.ptr.offset %PAGE_SIZE || box->x !=0 || box->y !=0 || box->z !=0 || box->srcx !=0 || box->srcy !=0 || box->srcz !=0 || - box->d !=1 || box_count !=1 ) { + box->d !=1 || box_count !=1 || + box->w >64 || box->h >64 ) {/* TODO handle none page aligned offsets */ /* TODO handle more dst & src != 0 */ /* TODO handle more then one copy */
drivers/hid/hid-ids.h +3 -0
@@ -966,7 +966,10 @@#define USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S 0x8003#define USB_VENDOR_ID_PLANTRONICS 0x047f +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3210_SERIES 0xc055#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058#define USB_VENDOR_ID_PANASONIC 0x04da#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044
drivers/hid/hid-multitouch.c +4 -0
@@ -1965,6 +1965,10 @@ static const struct hid_device_id mt_devices[] = {HID_DEVICE (BUS_I2C ,HID_GROUP_MULTITOUCH_WIN_8 , USB_VENDOR_ID_ELAN, 0x313a) }, + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, +HID_DEVICE (BUS_I2C ,HID_GROUP_MULTITOUCH_WIN_8 , + USB_VENDOR_ID_ELAN, 0x3148) }, + /* Elitegroup panel */ { .driver_data = MT_CLS_SERIAL, MT_USB_DEVICE(USB_VENDOR_ID_ELITEGROUP,
drivers/hid/hid-plantronics.c +9 -0
@@ -198,9 +198,18 @@ static int plantronics_probe(struct hid_device *hdev, }static const struct hid_device_id plantronics_devices[] = { + {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS , +USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3210_SERIES ), + .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS ,USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES ), .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, + {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS , +USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES ), + .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, + {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS , +USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES ), + .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS ,HID_ANY_ID ) }, { } };
drivers/infiniband/hw/mlx5/counters.c +3 -3
@@ -249,7 +249,6 @@ static int mlx5_ib_get_hw_stats(struct ib_device *ibdev,const struct mlx5_ib_counters *cnts =get_counters (dev, port_num -1 );struct mlx5_core_dev *mdev;int ret, num_counters; -u32 mdev_port_num;if (!stats)return -EINVAL ;
@@ -270,8 +269,9 @@ static int mlx5_ib_get_hw_stats(struct ib_device *ibdev, }if (MLX5_CAP_GEN (dev->mdev, cc_query_allowed)) { - mdev =mlx5_ib_get_native_port_mdev (dev, port_num, - &mdev_port_num); +if (!port_num) + port_num =1 ; + mdev =mlx5_ib_get_native_port_mdev (dev, port_num,NULL );if (!mdev) {/* If port is not affiliated yet, its in down state * which doesn't have any counters yet, so it would be
drivers/infiniband/hw/mlx5/qp.c +35 -14
62 lines not on this page · raw message
drivers/iommu/amd/init.c +7 -0
@@ -3226,6 +3226,13 @@ static int __init parse_ivrs_acpihid(char *str)return 1 ; } +/* +* Ignore leading zeroes after ':', so e.g., AMDI0095:00 +* will match AMDI0095:0 in the second strcmp in acpi_dev_hid_uid_match +*/ +while (*uid =='0' && *(uid +1 )) + uid++; + i = early_acpihid_map_size++;memcpy (early_acpihid_map[i].hid, hid,strlen (hid));memcpy (early_acpihid_map[i].uid, uid,strlen (uid));
drivers/md/dm-cache-metadata.c +47 -7
86 lines not on this page · raw message
drivers/md/dm-cache-target.c +6 -5
@@ -915,16 +915,16 @@ static void abort_transaction(struct cache *cache)if (get_cache_mode (cache) >=CM_READ_ONLY )return ; -if (dm_cache_metadata_set_needs_check (cache->cmd)) { -DMERR ("%s: failed to set 'needs_check' flag in metadata" , dev_name); -set_cache_mode (cache,CM_FAIL ); - } -DMERR_LIMIT ("%s: aborting current metadata transaction" , dev_name);if (dm_cache_metadata_abort (cache->cmd)) {DMERR ("%s: failed to abort metadata transaction" , dev_name);set_cache_mode (cache,CM_FAIL ); } + +if (dm_cache_metadata_set_needs_check (cache->cmd)) { +DMERR ("%s: failed to set 'needs_check' flag in metadata" , dev_name); +set_cache_mode (cache,CM_FAIL ); + } }static void metadata_operation_failed (struct cache *cache,const char *op,int r)
@@ -1895,6 +1895,7 @@ static void destroy(struct cache *cache)if (cache->prison)dm_bio_prison_destroy_v2 (cache->prison); +cancel_delayed_work_sync (&cache->waker);if (cache->wq)destroy_workqueue (cache->wq);
drivers/md/dm-clone-target.c +1 -0
@@ -1959,6 +1959,7 @@ static void clone_dtr(struct dm_target *ti)mempool_exit (&clone->hydration_pool);dm_kcopyd_client_destroy (clone->kcopyd_client); +cancel_delayed_work_sync (&clone->waker);destroy_workqueue (clone->wq);hash_table_exit (clone);dm_clone_metadata_close (clone->cmd);
drivers/md/dm-integrity.c +2 -0
@@ -4539,6 +4539,8 @@ static void dm_integrity_dtr(struct dm_target *ti)BUG_ON (!RB_EMPTY_ROOT (&ic->in_progress));BUG_ON (!list_empty (&ic->wait_list)); +if (ic->mode =='B' ) +cancel_delayed_work_sync (&ic->bitmap_flush_work);if (ic->metadata_wq)destroy_workqueue (ic->metadata_wq);if (ic->wait_wq)
drivers/md/dm-thin-metadata.c +52 -8
97 lines not on this page · raw message
drivers/md/dm-thin.c +14 -4
@@ -2907,6 +2907,8 @@ static void __pool_destroy(struct pool *pool)dm_bio_prison_destroy (pool->prison);dm_kcopyd_client_destroy (pool->copier); +cancel_delayed_work_sync (&pool->waker); +cancel_delayed_work_sync (&pool->no_space_timeout);if (pool->wq)destroy_workqueue (pool->wq);
@@ -3566,20 +3568,28 @@ static int pool_preresume(struct dm_target *ti)*/ r =bind_control_target (pool, ti);if (r) -return r; + goto out; r =maybe_resize_data_dev (ti, &need_commit1);if (r) -return r; + goto out; r =maybe_resize_metadata_dev (ti, &need_commit2);if (r) -return r; + goto out;if (need_commit1 || need_commit2) (void )commit (pool); +out: +/* +* When a thin-pool is PM_FAIL, it cannot be rebuilt if +* bio is in deferred list. Therefore need to return 0 +* to allow pool_resume() to flush IO. +*/ +if (r &&get_pool_mode (pool) ==PM_FAIL ) + r =0 ; -return 0 ; +return r; }static void pool_suspend_active_thins (struct pool *pool)
drivers/md/md-bitmap.c +12 -8
@@ -486,7 +486,7 @@ void md_bitmap_print_sb(struct bitmap *bitmap) sb =kmap_atomic (bitmap->storage.sb_page);pr_debug ("%s: bitmap file superblock:\n" ,bmname (bitmap));pr_debug (" magic: %08x\n" ,le32_to_cpu (sb->magic)); -pr_debug (" version: %d\n" ,le32_to_cpu (sb->version)); +pr_debug (" version: %u\n" ,le32_to_cpu (sb->version)); pr_debug(" uuid: %08x.%08x.%08x.%08x\n", le32_to_cpu(*(__le32 *)(sb->uuid+0)), le32_to_cpu(*(__le32 *)(sb->uuid+4)),
@@ -497,11 +497,11 @@ void md_bitmap_print_sb(struct bitmap *bitmap)pr_debug ("events cleared: %llu\n" , (unsigned long long )le64_to_cpu (sb->events_cleared));pr_debug (" state: %08x\n" ,le32_to_cpu (sb->state)); -pr_debug (" chunksize: %d B\n" ,le32_to_cpu (sb->chunksize)); -pr_debug (" daemon sleep: %ds\n" ,le32_to_cpu (sb->daemon_sleep)); +pr_debug (" chunksize: %u B\n" ,le32_to_cpu (sb->chunksize)); +pr_debug (" daemon sleep: %us\n" ,le32_to_cpu (sb->daemon_sleep));pr_debug (" sync size: %llu KB\n" , (unsigned long long )le64_to_cpu (sb->sync_size)/2 ); -pr_debug ("max write behind: %d\n" ,le32_to_cpu (sb->write_behind)); +pr_debug ("max write behind: %u\n" ,le32_to_cpu (sb->write_behind));kunmap_atomic (sb); }
@@ -2106,7 +2106,8 @@ int md_bitmap_resize(struct bitmap *bitmap, sector_t blocks, bytes =DIV_ROUND_UP (chunks,8 );if (!bitmap->mddev->bitmap_info.external) bytes +=sizeof (bitmap_super_t); - }while (bytes > (space <<9 )); + }while (bytes > (space <<9 ) && (chunkshift +BITMAP_BLOCK_SHIFT ) < + (BITS_PER_BYTE *sizeof (((bitmap_super_t *)0 )->chunksize) -1 )); }else chunkshift =ffz (~chunksize) -BITMAP_BLOCK_SHIFT ;
@@ -2151,7 +2152,7 @@ int md_bitmap_resize(struct bitmap *bitmap, sector_t blocks, bitmap->counts.missing_pages = pages; bitmap->counts.chunkshift = chunkshift; bitmap->counts.chunks = chunks; - bitmap->mddev->bitmap_info.chunksize =1 << (chunkshift + + bitmap->mddev->bitmap_info.chunksize =1UL << (chunkshift +BITMAP_BLOCK_SHIFT ); blocks = min(old_counts.chunks << old_counts.chunkshift,
@@ -2177,8 +2178,8 @@ int md_bitmap_resize(struct bitmap *bitmap, sector_t blocks, bitmap->counts.missing_pages = old_counts.pages; bitmap->counts.chunkshift = old_counts.chunkshift; bitmap->counts.chunks = old_counts.chunks; - bitmap->mddev->bitmap_info.chunksize =1 << (old_counts.chunkshift + -BITMAP_BLOCK_SHIFT ); + bitmap->mddev->bitmap_info.chunksize = +1UL << (old_counts.chunkshift +BITMAP_BLOCK_SHIFT ); blocks = old_counts.chunks << old_counts.chunkshift;pr_warn ("Could not pre-allocate in-memory bitmap for cluster raid\n" );break ;
@@ -2519,6 +2520,9 @@ chunksize_store(struct mddev *mddev, const char *buf, size_t len)if (csize <512 || !is_power_of_2 (csize))return -EINVAL ; +if (BITS_PER_LONG >32 && csize >= (1ULL << (BITS_PER_BYTE * +sizeof (((bitmap_super_t *)0 )->chunksize)))) +return -EOVERFLOW ; mddev->bitmap_info.chunksize = csize;return len; }
drivers/md/md.c +6 -3
@@ -526,13 +526,14 @@ static void md_end_flush(struct bio *bio)struct md_rdev *rdev = bio->bi_private;struct mddev *mddev = rdev->mddev; +bio_put (bio); +rdev_dec_pending (rdev, mddev);if (atomic_dec_and_test (&mddev->flush_pending)) {/* The pre-request flush has finished */ queue_work (md_wq, &mddev->flush_work); } -bio_put (bio); }static void md_submit_flush_data (struct work_struct *ws);
@@ -935,10 +936,12 @@ static void super_written(struct bio *bio) }else clear_bit (LastDev, &rdev->flags); +bio_put (bio); + +rdev_dec_pending (rdev, mddev); +if (atomic_dec_and_test (&mddev->pending_writes))wake_up (&mddev->sb_wait); -rdev_dec_pending (rdev, mddev); -bio_put (bio); } void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
drivers/media/dvb-core/dmxdev.c +8 -0
@@ -800,6 +800,11 @@ static int dvb_demux_open(struct inode *inode, struct file *file)if (mutex_lock_interruptible (&dmxdev->mutex))return -ERESTARTSYS ; +if (dmxdev->exit) { +mutex_unlock (&dmxdev->mutex); +return -ENODEV ; + } +for (i =0 ; i < dmxdev->filternum; i++)if (dmxdev->filter[i].state ==DMXDEV_STATE_FREE )break ;
@@ -1458,7 +1463,10 @@ EXPORT_SYMBOL(dvb_dmxdev_init);void dvb_dmxdev_release (struct dmxdev *dmxdev) { +mutex_lock (&dmxdev->mutex); dmxdev->exit =1 ; +mutex_unlock (&dmxdev->mutex); +if (dmxdev->dvbdev->users >1 ) {wait_event (dmxdev->dvbdev->wait_queue, dmxdev->dvbdev->users ==1 );
drivers/media/dvb-core/dvbdev.c +1 -0
@@ -345,6 +345,7 @@ static int dvb_create_media_entity(struct dvb_device *dvbdev, GFP_KERNEL);if (!dvbdev->pads) {kfree (dvbdev->entity); + dvbdev->entity =NULL ;return -ENOMEM ; } }
drivers/media/dvb-frontends/stv0288.c +2 -3
@@ -440,9 +440,8 @@ static int stv0288_set_frontend(struct dvb_frontend *fe)struct stv0288_state *state = fe->demodulator_priv;struct dtv_frontend_properties *c = &fe->dtv_property_cache; -char tm; -unsigned char tda[3 ]; -u8 reg, time_out =0 ; +u8 tda[3 ], reg, time_out =0 ; +s8 tm;dprintk ("%s : FE_SET_FRONTEND\n" , __func__);
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c +3 -1
@@ -468,8 +468,10 @@ void s5p_mfc_close_mfc_inst(struct s5p_mfc_dev *dev, struct s5p_mfc_ctx *ctx)s5p_mfc_hw_call (dev->mfc_ops, try_run, dev);/* Wait until instance is returned or timeout occurred */ if (s5p_mfc_wait_for_done_ctx (ctx, -S5P_MFC_R2H_CMD_CLOSE_INSTANCE_RET ,0 )) +S5P_MFC_R2H_CMD_CLOSE_INSTANCE_RET ,0 )){ +clear_work_bit_irqsave (ctx);mfc_err ("Err returning instance\n" ); + }/* Free resources */ s5p_mfc_hw_call (dev->mfc_ops, release_codec_buffers, ctx);
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c +10 -2
@@ -1218,6 +1218,7 @@ static int enc_post_frame_start(struct s5p_mfc_ctx *ctx)unsigned long mb_y_addr, mb_c_addr;int slice_type;unsigned int strm_size; +bool src_ready; slice_type =s5p_mfc_hw_call (dev->mfc_ops, get_enc_slice_type, dev); strm_size =s5p_mfc_hw_call (dev->mfc_ops, get_enc_strm_size, dev);
@@ -1257,7 +1258,8 @@ static int enc_post_frame_start(struct s5p_mfc_ctx *ctx) } } } -if ((ctx->src_queue_cnt >0 ) && (ctx->state ==MFCINST_RUNNING )) { +if (ctx->src_queue_cnt >0 && (ctx->state ==MFCINST_RUNNING || + ctx->state ==MFCINST_FINISHING )) { mb_entry = list_entry(ctx->src_queue.next, struct s5p_mfc_buf, list);if (mb_entry->flags &MFC_BUF_FLAG_USED ) {
@@ -1288,7 +1290,13 @@ static int enc_post_frame_start(struct s5p_mfc_ctx *ctx)vb2_set_plane_payload (&mb_entry->b->vb2_buf,0 , strm_size);vb2_buffer_done (&mb_entry->b->vb2_buf,VB2_BUF_STATE_DONE ); } -if ((ctx->src_queue_cnt ==0 ) || (ctx->dst_queue_cnt ==0 )) + + src_ready = true; +if (ctx->state ==MFCINST_RUNNING && ctx->src_queue_cnt ==0 ) + src_ready = false; +if (ctx->state ==MFCINST_FINISHING && ctx->ref_queue_cnt ==0 ) + src_ready = false; +if (!src_ready || ctx->dst_queue_cnt ==0 )clear_work_bit (ctx);return 0 ;
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c +7 -7
@@ -1060,7 +1060,7 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx) }/* aspect ratio VUI */ -readl (mfc_regs->e_h264_options); + reg =readl (mfc_regs->e_h264_options); reg &= ~(0x1 <<5 ); reg |= ((p_h264->vui_sar &0x1 ) <<5 );writel (reg, mfc_regs->e_h264_options);
@@ -1083,7 +1083,7 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx)/* intra picture period for H.264 open GOP */ /* control */ -readl (mfc_regs->e_h264_options); + reg =readl (mfc_regs->e_h264_options); reg &= ~(0x1 <<4 ); reg |= ((p_h264->open_gop &0x1 ) <<4 );writel (reg, mfc_regs->e_h264_options);
@@ -1097,23 +1097,23 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx) }/* 'WEIGHTED_BI_PREDICTION' for B is disable */ -readl (mfc_regs->e_h264_options); + reg =readl (mfc_regs->e_h264_options); reg &= ~(0x3 <<9 );writel (reg, mfc_regs->e_h264_options);/* 'CONSTRAINED_INTRA_PRED_ENABLE' is disable */ -readl (mfc_regs->e_h264_options); + reg =readl (mfc_regs->e_h264_options); reg &= ~(0x1 <<14 );writel (reg, mfc_regs->e_h264_options);/* ASO */ -readl (mfc_regs->e_h264_options); + reg =readl (mfc_regs->e_h264_options); reg &= ~(0x1 <<6 ); reg |= ((p_h264->aso &0x1 ) <<6 );writel (reg, mfc_regs->e_h264_options);/* hier qp enable */ -readl (mfc_regs->e_h264_options); + reg =readl (mfc_regs->e_h264_options); reg &= ~(0x1 <<8 ); reg |= ((p_h264->open_gop &0x1 ) <<8 );writel (reg, mfc_regs->e_h264_options);
@@ -1134,7 +1134,7 @@ static int s5p_mfc_set_enc_params_h264(struct s5p_mfc_ctx *ctx)writel (reg, mfc_regs->e_h264_num_t_layer);/* frame packing SEI generation */ -readl (mfc_regs->e_h264_options); + reg =readl (mfc_regs->e_h264_options); reg &= ~(0x1 <<25 ); reg |= ((p_h264->sei_frame_packing &0x1 ) <<25 );writel (reg, mfc_regs->e_h264_options);
drivers/mfd/mt6360-core.c +12 -2
@@ -402,7 +402,7 @@ static int mt6360_regmap_read(void *context, const void *reg, size_t reg_size,struct mt6360_ddata *ddata = context;u8 bank = *(u8 *)reg;u8 reg_addr = *(u8 *)(reg +1 ); -struct i2c_client *i2c = ddata->i2c[bank]; +struct i2c_client *i2c;bool crc_needed = false;u8 *buf;int buf_len =MT6360_ALLOC_READ_SIZE (val_size);
@@ -410,6 +410,11 @@ static int mt6360_regmap_read(void *context, const void *reg, size_t reg_size,u8 crc;int ret; +if (bank >=MT6360_SLAVE_MAX ) +return -EINVAL ; + + i2c = ddata->i2c[bank]; +if (bank ==MT6360_SLAVE_PMIC || bank ==MT6360_SLAVE_LDO ) { crc_needed = true; ret =mt6360_xlate_pmicldo_addr (®_addr, val_size);
@@ -453,13 +458,18 @@ static int mt6360_regmap_write(void *context, const void *val, size_t val_size)struct mt6360_ddata *ddata = context;u8 bank = *(u8 *)val;u8 reg_addr = *(u8 *)(val +1 ); -struct i2c_client *i2c = ddata->i2c[bank]; +struct i2c_client *i2c;bool crc_needed = false;u8 *buf;int buf_len =MT6360_ALLOC_WRITE_SIZE (val_size);int write_size = val_size -MT6360_REGMAP_REG_BYTE_SIZE ;int ret; +if (bank >=MT6360_SLAVE_MAX ) +return -EINVAL ; + + i2c = ddata->i2c[bank]; +if (bank ==MT6360_SLAVE_PMIC || bank ==MT6360_SLAVE_LDO ) { crc_needed = true; ret =mt6360_xlate_pmicldo_addr (®_addr, val_size -MT6360_REGMAP_REG_BYTE_SIZE );
drivers/mmc/host/sdhci-sprd.c +9 -7
@@ -224,13 +224,15 @@ static inline void _sdhci_sprd_set_clock(struct sdhci_host *host, div = ((div &0x300 ) >>2 ) | ((div &0xFF ) <<8 );sdhci_enable_clk (host, div); -/* enable auto gate sdhc_enable_auto_gate */ - val =sdhci_readl (host,SDHCI_SPRD_REG_32_BUSY_POSI ); - mask =SDHCI_SPRD_BIT_OUTR_CLK_AUTO_EN | -SDHCI_SPRD_BIT_INNR_CLK_AUTO_EN ; -if (mask != (val & mask)) { - val |= mask; -sdhci_writel (host, val,SDHCI_SPRD_REG_32_BUSY_POSI ); +/* Enable CLK_AUTO when the clock is greater than 400K. */ +if (clk >400000 ) { + val =sdhci_readl (host,SDHCI_SPRD_REG_32_BUSY_POSI ); + mask =SDHCI_SPRD_BIT_OUTR_CLK_AUTO_EN | +SDHCI_SPRD_BIT_INNR_CLK_AUTO_EN ; +if (mask != (val & mask)) { + val |= mask; +sdhci_writel (host, val,SDHCI_SPRD_REG_32_BUSY_POSI ); + } } }
drivers/mmc/host/vub300.c +2 -0
@@ -2049,6 +2049,7 @@ static void vub300_enable_sdio_irq(struct mmc_host *mmc, int enable)return ;kref_get (&vub300->kref);if (enable) { +set_current_state (TASK_RUNNING );mutex_lock (&vub300->irq_mutex);if (vub300->irqs_queued) { vub300->irqs_queued -=1 ;
@@ -2064,6 +2065,7 @@ static void vub300_enable_sdio_irq(struct mmc_host *mmc, int enable)vub300_queue_poll_work (vub300,0 ); }mutex_unlock (&vub300->irq_mutex); +set_current_state (TASK_INTERRUPTIBLE ); }else { vub300->irq_enabled =0 ; }
drivers/mtd/spi-nor/core.c +2 -0
@@ -1409,6 +1409,8 @@ spi_nor_find_best_erase_type(const struct spi_nor_erase_map *map,continue ; erase = &map->erase_type[i]; +if (!erase->size) +continue ;/* Alignment is not mandatory for overlaid regions */ if (region->offset & SNOR_OVERLAID_REGION &&
drivers/net/bonding/bond_3ad.c +1 -0
@@ -1539,6 +1539,7 @@ static void ad_port_selection_logic(struct port *port, bool *update_slave_arr)slave_err (bond->dev, port->slave->dev,"Port %d did not find a suitable aggregator\n" , port->actor_port_number); +return ; } }/* if all aggregator's ports are READY_N == TRUE, set ready=TRUE
drivers/net/dsa/mv88e6xxx/Kconfig +2 -2
@@ -2,7 +2,6 @@ config NET_DSA_MV88E6XXX tristate "Marvell 88E6xxx Ethernet switch fabric support" depends on NET_DSA - depends on PTP_1588_CLOCK_OPTIONAL select IRQ_DOMAIN select NET_DSA_TAG_EDSA select NET_DSA_TAG_DSA
@@ -13,7 +12,8 @@ config NET_DSA_MV88E6XXX config NET_DSA_MV88E6XXX_PTP bool "PTP support for Marvell 88E6xxx" default n - depends on NET_DSA_MV88E6XXX && PTP_1588_CLOCK + depends on (NET_DSA_MV88E6XXX = y && PTP_1588_CLOCK = y) || \ + (NET_DSA_MV88E6XXX = m && PTP_1588_CLOCK) help Say Y to enable PTP hardware timestamping on Marvell 88E6xxx switch chips that support it.
drivers/net/ethernet/amazon/ena/ena_com.c +9 -20
@@ -2392,29 +2392,18 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena_dev,return -EOPNOTSUPP ; } -switch (func) { -case ENA_ADMIN_TOEPLITZ : -if (key) { -if (key_len !=sizeof (hash_key->key)) { -netdev_err (ena_dev->net_device, -"key len (%u) doesn't equal the supported size (%zu)\n" , - key_len,sizeof (hash_key->key)); -return -EINVAL ; - } -memcpy (hash_key->key, key, key_len); - rss->hash_init_val = init_val; - hash_key->key_parts = key_len /sizeof (hash_key->key[0 ]); +if ((func ==ENA_ADMIN_TOEPLITZ ) && key) { +if (key_len !=sizeof (hash_key->key)) { +netdev_err (ena_dev->net_device, +"key len (%u) doesn't equal the supported size (%zu)\n" , + key_len,sizeof (hash_key->key)); +return -EINVAL ; } -break ; -case ENA_ADMIN_CRC32 : - rss->hash_init_val = init_val; -break ; -default : -netdev_err (ena_dev->net_device,"Invalid hash function (%d)\n" , - func); -return -EINVAL ; +memcpy (hash_key->key, key, key_len); + hash_key->key_parts = key_len /sizeof (hash_key->key[0 ]); } + rss->hash_init_val = init_val; old_func = rss->hash_func; rss->hash_func = func; rc =ena_com_set_hash_function (ena_dev);
drivers/net/ethernet/amazon/ena/ena_ethtool.c +1 -5
@@ -880,11 +880,7 @@ static int ena_set_tunable(struct net_device *netdev,switch (tuna->id) {case ETHTOOL_RX_COPYBREAK : len = *(u32 *)data; -if (len > adapter->netdev->mtu) { - ret = -EINVAL ; -break ; - } - adapter->rx_copybreak = len; + ret =ena_set_rx_copybreak (adapter, len);break ;default : ret = -EINVAL ;
drivers/net/ethernet/amazon/ena/ena_netdev.c +60 -23
245 lines not on this page · raw message
drivers/net/ethernet/amazon/ena/ena_netdev.h +15 -2
@@ -273,9 +273,11 @@ struct ena_ring {bool disable_meta_caching;u16 no_interrupt_event_cnt; -/* cpu for TPH */ +/* cpu and NUMA for TPH */ int cpu; -/* number of tx/rx_buffer_info's entries */ +int numa_node; + +/* number of tx/rx_buffer_info's entries */ int ring_size;enum ena_admin_placement_policy_type tx_mem_queue_type;
@@ -404,6 +406,8 @@ int ena_update_queue_sizes(struct ena_adapter *adapter,int ena_update_queue_count (struct ena_adapter *adapter,u32 new_channel_count); +int ena_set_rx_copybreak (struct ena_adapter *adapter,u32 rx_copybreak); +int ena_get_sset_count (struct net_device *netdev,int sset);enum ena_xdp_errors_t {
@@ -412,6 +416,15 @@ enum ena_xdp_errors_t { ENA_XDP_NO_ENOUGH_QUEUES, }; +enum ENA_XDP_ACTIONS { +ENA_XDP_PASS =0 , +ENA_XDP_TX =BIT (0 ), +ENA_XDP_REDIRECT =BIT (1 ), +ENA_XDP_DROP =BIT (2 ) +}; + +#define ENA_XDP_FORWARDED (ENA_XDP_TX | ENA_XDP_REDIRECT) +static inline bool ena_xdp_present (struct ena_adapter *adapter) {return !!adapter->xdp_bpf_prog;
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +3 -0
@@ -1064,6 +1064,9 @@ static void xgbe_free_irqs(struct xgbe_prv_data *pdata)devm_free_irq (pdata->dev, pdata->dev_irq, pdata); +tasklet_kill (&pdata->tasklet_dev); +tasklet_kill (&pdata->tasklet_ecc); +if (pdata->vdata->ecc_support && (pdata->dev_irq != pdata->ecc_irq))devm_free_irq (pdata->dev, pdata->ecc_irq, pdata);
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c +3 -1
@@ -447,8 +447,10 @@ static void xgbe_i2c_stop(struct xgbe_prv_data *pdata)xgbe_i2c_disable (pdata);xgbe_i2c_clear_all_interrupts (pdata); -if (pdata->dev_irq != pdata->i2c_irq) +if (pdata->dev_irq != pdata->i2c_irq) {devm_free_irq (pdata->dev, pdata->i2c_irq, pdata); +tasklet_kill (&pdata->tasklet_i2c); + } }static int xgbe_i2c_start (struct xgbe_prv_data *pdata)
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +3 -1
@@ -1390,8 +1390,10 @@ static void xgbe_phy_stop(struct xgbe_prv_data *pdata)/* Disable auto-negotiation */ xgbe_an_disable_all (pdata); -if (pdata->dev_irq != pdata->an_irq) +if (pdata->dev_irq != pdata->an_irq) {devm_free_irq (pdata->dev, pdata->an_irq, pdata); +tasklet_kill (&pdata->tasklet_an); + } pdata->phy_if.phy_impl.stop (pdata);
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +65 -113
65 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +43 -32
75 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +21 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c +9 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c +6 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c +28 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +21 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/health.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h +2 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/sdio.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/staging/media/ipu3/ipu3-v4l2.c +34 -23
57 lines not on this page · raw message
drivers/staging/media/tegra-video/csi.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/staging/media/tegra-video/csi.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/matrox/matroxfb_base.c +2 -2
Lines of this file are not shown. View the raw message.
fs/btrfs/super.c +76 -0
76 lines not on this page · raw message
fs/btrfs/volumes.c +27 -16
43 lines not on this page · raw message
fs/cifs/cifsglob.h +69 -0
69 lines not on this page · raw message
fs/cifs/smb2ops.c +68 -75
143 lines not on this page · raw message
fs/ext4/fast_commit.c +171 -114
285 lines not on this page · raw message
fs/ext4/inode.c +40 -10
50 lines not on this page · raw message
fs/ext4/namei.c +27 -20
47 lines not on this page · raw message
fs/ext4/super.c +38 -14
52 lines not on this page · raw message
fs/mbcache.c +48 -73
121 lines not on this page · raw message
fs/overlayfs/dir.c +30 -16
46 lines not on this page · raw message
include/trace/events/jbd2.h +22 -22
44 lines not on this page · raw message
kernel/kcsan/core.c +50 -0
50 lines not on this page · raw message
net/mptcp/subflow.c +58 -18
76 lines not on this page · raw message
net/netfilter/ipset/ip_set_hash_ipmark.c +7 -6
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipport.c +7 -6
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipportip.c +7 -6
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipportnet.c +8 -5
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netiface.c +6 -9
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netnet.c +7 -16
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netport.c +7 -12
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netportnet.c +21 -19
Lines of this file are not shown. View the raw message.
net/netfilter/nf_tables_api.c +175 -86
261 lines not on this page · raw message
net/nfc/netlink.c +38 -14
52 lines not on this page · raw message
security/integrity/platform_certs/load_uefi.c +1 -0
Lines of this file are not shown. View the raw message.
sound/pci/hda/patch_realtek.c +50 -0
50 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/bpf_nf.c deleted +0 -48
48 lines not on this page · raw message
tools/testing/selftests/bpf/progs/test_bpf_nf.c deleted +0 -109
109 lines not on this page · 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.