Linux 5.10.190
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.190 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/security-bugs.rst | 39 Makefile | 2 arch/arm/boot/dts/imx6qdl.dtsi | 4 arch/arm/boot/dts/imx6sl.dtsi | 3 arch/arm/boot/dts/imx6sll.dtsi | 26 arch/arm/boot/dts/imx6sx.dtsi | 3 arch/arm/boot/dts/imx6ul.dtsi | 2 arch/arm/boot/dts/imx7d.dtsi | 6 arch/arm/boot/dts/imx7s.dtsi | 2 arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts | 2 arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts | 2 arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi | 2 arch/powerpc/include/asm/word-at-a-time.h | 2 arch/powerpc/mm/init_64.c | 3 arch/s390/kernel/sthyi.c | 6 arch/s390/kvm/intercept.c | 9 arch/s390/mm/gmap.c | 1 arch/x86/include/asm/cpufeatures.h | 1 arch/x86/include/asm/kprobes.h | 24 arch/x86/include/asm/processor.h | 2 arch/x86/kernel/cpu/amd.c | 19 arch/x86/kernel/kprobes/core.c | 639 - arch/x86/kernel/traps.c | 5 arch/x86/kvm/vmx/vmx.c | 87 drivers/acpi/processor_perflib.c | 38 drivers/ata/pata_ns87415.c | 2 drivers/base/power/power.h | 8 drivers/base/power/runtime.c | 6 drivers/base/power/wakeirq.c | 111 drivers/block/loop.c | 3 drivers/char/tpm/tpm_tis_core.c | 10 drivers/cpufreq/intel_pstate.c | 14 drivers/gpio/gpio-tps68470.c | 6 drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 2 drivers/gpu/drm/msm/adreno/a6xx_gpu_state.h | 2 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 13 drivers/gpu/drm/ttm/ttm_bo.c | 16 drivers/gpu/drm/ttm/ttm_bo_util.c | 2 drivers/hwmon/nct7802.c | 2 drivers/i2c/busses/i2c-ibm_iic.c | 4 drivers/i2c/busses/i2c-nomadik.c | 42 drivers/i2c/busses/i2c-sh7760.c | 3 drivers/i2c/busses/i2c-tiny-usb.c | 4 drivers/infiniband/hw/mlx4/qp.c | 18 drivers/infiniband/hw/mthca/mthca_qp.c | 2 drivers/irqchip/irq-bcm6345-l1.c | 14 drivers/irqchip/irq-gic-v3-its.c | 75 drivers/isdn/hardware/mISDN/hfcpci.c | 10 drivers/md/dm-cache-policy-smq.c | 28 drivers/md/dm-raid.c | 20 drivers/md/md.c | 2 drivers/mtd/nand/raw/fsl_upm.c | 2 drivers/mtd/nand/raw/meson_nand.c | 3 drivers/mtd/nand/raw/omap_elm.c | 24 drivers/mtd/nand/spi/toshiba.c | 4 drivers/net/Makefile | 2 drivers/net/bonding/bond_main.c | 5 drivers/net/can/usb/gs_usb.c | 2 drivers/net/dsa/bcm_sf2.c | 8 drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 7 drivers/net/ethernet/emulex/benet/be_main.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c | 60 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 3 drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 2 drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c | 26 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.c | 4 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 103 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_cmd.c | 5 drivers/net/ethernet/socionext/netsec.c | 11 drivers/net/ethernet/xilinx/ll_temac_main.c | 16 drivers/net/phy/marvell10g.c | 7 drivers/net/tap.c | 2 drivers/net/team/team.c | 9 drivers/net/tun.c | 2 drivers/net/usb/cdc_ether.c | 21 drivers/net/usb/usbnet.c | 6 drivers/net/usb/zaurus.c | 21 drivers/net/virtio_net.c | 4 drivers/net/vxlan.c | 4829 ---------- drivers/net/vxlan/Makefile | 7 drivers/net/vxlan/vxlan_core.c | 4826 +++++++++ drivers/net/wireless/mediatek/mt76/mac80211.c | 8 drivers/net/wireless/mediatek/mt76/mt76.h | 2 drivers/net/wireless/mediatek/mt76/mt7603/eeprom.c | 2 drivers/net/wireless/mediatek/mt76/mt7615/dma.c | 2 drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c | 22 drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c | 6 drivers/net/wireless/mediatek/mt76/mt76x0/init.c | 4 drivers/net/wireless/mediatek/mt76/mt76x0/phy.c | 4 drivers/net/wireless/mediatek/mt76/mt76x02_eeprom.c | 8 drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c | 8 drivers/net/wireless/mediatek/mt76/mt7915/init.c | 5 drivers/pci/pcie/aspm.c | 55 drivers/phy/hisilicon/phy-hisi-inno-usb2.c | 2 drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 86 drivers/platform/x86/msi-laptop.c | 8 drivers/pwm/pwm-meson.c | 25 drivers/s390/block/dasd_ioctl.c | 1 drivers/s390/net/qeth_core.h | 1 drivers/s390/net/qeth_core_main.c | 2 drivers/s390/net/qeth_l2_main.c | 9 drivers/s390/net/qeth_l3_main.c | 8 drivers/s390/scsi/zfcp_fc.c | 6 drivers/soundwire/bus.c | 31 drivers/staging/ks7010/ks_wlan_net.c | 6 drivers/staging/media/atomisp/Kconfig | 1 drivers/staging/rtl8712/ieee80211.c | 12 drivers/staging/rtl8712/rtl871x_ioctl_linux.c | 8 drivers/staging/rtl8712/rtl871x_mlme.c | 10 drivers/staging/rtl8712/rtl871x_xmit.c | 46 drivers/staging/rtl8712/wifi.h | 15 drivers/staging/rtl8712/xmit_linux.c | 6 drivers/tty/n_gsm.c | 4 drivers/tty/serial/8250/8250_dwlib.c | 6 drivers/tty/serial/qcom_geni_serial.c | 7 drivers/tty/serial/sifive.c | 2 drivers/usb/core/quirks.c | 4 drivers/usb/dwc3/core.c | 20 drivers/usb/dwc3/core.h | 3 drivers/usb/dwc3/dwc3-pci.c | 6 drivers/usb/gadget/legacy/raw_gadget.c | 10 drivers/usb/gadget/udc/tegra-xudc.c | 8 drivers/usb/host/ohci-at91.c | 8 drivers/usb/host/xhci-mtk.c | 1 drivers/usb/host/xhci-tegra.c | 8 drivers/usb/serial/option.c | 6 drivers/usb/serial/usb-serial-simple.c | 73 fs/btrfs/ctree.c | 2 fs/btrfs/qgroup.c | 18 fs/btrfs/transaction.c | 10 fs/ceph/mds_client.c | 4 fs/ceph/mds_client.h | 5 fs/ceph/metric.c | 2 fs/ceph/super.c | 10 fs/dlm/plock.c | 100 fs/exfat/balloc.c | 6 fs/exfat/dir.c | 70 fs/exfat/exfat_fs.h | 7 fs/exfat/namei.c | 9 fs/ext2/ext2.h | 12 fs/ext2/super.c | 23 fs/ext4/ioctl.c | 5 fs/file.c | 24 fs/nfsd/nfs4state.c | 2 fs/open.c | 2 fs/super.c | 11 fs/sysv/itree.c | 4 include/asm-generic/word-at-a-time.h | 2 include/drm/ttm/ttm_bo_api.h | 28 include/linux/pm_wakeirq.h | 9 include/linux/trace_events.h | 4 include/net/ipv6.h | 8 include/net/vxlan.h | 17 include/trace/trace_events.h | 2 include/uapi/linux/blkzoned.h | 10 io_uring/io_uring.c | 33 kernel/events/core.c | 8 kernel/trace/bpf_trace.c | 6 kernel/trace/ring_buffer.c | 22 kernel/trace/trace.c | 76 kernel/trace/trace.h | 2 kernel/trace/trace_events.c | 14 kernel/trace/trace_output.c | 12 net/bluetooth/l2cap_sock.c | 2 net/ceph/osd_client.c | 20 net/core/bpf_sk_storage.c | 5 net/core/rtnetlink.c | 8 net/core/sock.c | 21 net/core/sock_map.c | 2 net/dcb/dcbnl.c | 2 net/ipv4/tcp_metrics.c | 70 net/ipv6/addrconf.c | 14 net/ipv6/ip6mr.c | 2 net/netfilter/nf_tables_api.c | 20 net/netfilter/nft_immediate.c | 27 net/netfilter/nft_set_rbtree.c | 20 net/sched/cls_fw.c | 1 net/sched/cls_route.c | 1 net/sched/cls_u32.c | 57 net/sched/sch_mqprio.c | 144 net/tipc/crypto.c | 3 net/tipc/node.c | 2 net/unix/af_unix.c | 2 net/wireless/scan.c | 2 sound/pci/hda/patch_realtek.c | 1 sound/soc/codecs/cs42l51-i2c.c | 6 sound/soc/codecs/cs42l51.c | 7 sound/soc/codecs/cs42l51.h | 1 sound/soc/codecs/wm8904.c | 3 sound/soc/fsl/fsl_spdif.c | 2 tools/perf/tests/shell/test_uprobe_from_different_cu.sh | 8 tools/testing/selftests/net/mptcp/config | 1 tools/testing/selftests/rseq/rseq.c | 31 194 files changed, 6995 insertions(+), 6018 deletions(-)
Adrien Thierry (2):
phy: qcom-snps-femto-v2: keep cfg_ahb_clk enabled during runtime suspend
phy: qcom-snps-femto-v2: properly enable ref clock
Alan Stern (1):
net: usbnet: Fix WARNING in usbnet_start_xmit/usb_submit_urb
Aleksa Sarai (1):
open: make RESOLVE_CACHED correctly test for O_TMPFILE
Alexander Aring (3):
dlm: cleanup plock_op vs plock_xop
dlm: rearrange async condition return
fs: dlm: interrupt posix locks only when process is killed
Alexander Steffen (1):
tpm_tis: Explicitly check for error code
Alexandra Winter (1):
s390/qeth: Don't call dev_close/dev_open (DOWN/UP)
Andi Shyti (2):
i2c: nomadik: Remove unnecessary goto label
i2c: nomadik: Use devm_clk_get_enabled()
Andreas Kemnade (1):
ARM: dts: imx6sll: fixup of operating points
Aneesh Kumar K.V (1):
powerpc/mm/altmap: Fix altmap boundary check
Arnd Bergmann (1):
ata: pata_ns87415: mark ns87560_tf_read static
Arseniy Krasnov (1):
mtd: rawnand: meson: fix OOB available bytes for ECC
Bart Van Assche (2):
block: Fix a source code comment in include/uapi/linux/blkzoned.h
loop: Select I/O scheduler 'none' from inside add_disk()
Benjamin Poirier (1):
vxlan: Fix nexthop hash size
Bjorn Helgaas (1):
PCI/ASPM: Return 0 or -ETIMEDOUT from pcie_retrain_link()
Borislav Petkov (AMD) (1):
x86/CPU/AMD: Do not leak quotient data after a division by 0
Chao Yu (1):
ext4: fix to check return value of freeze_bdev() in ext4_shutdown()
Chaoyuan Peng (1):
tty: n_gsm: fix UAF in gsm_cleanup_mux
Chengfeng Ye (1):
mISDN: hfcpci: Fix potential deadlock on &hc->lock
Christian Brauner (1):
file: always lock position for FMODE_ATOMIC_POS
Christian König (3):
drm/ttm: add ttm_bo_pin()/ttm_bo_unpin() v2 drm/ttm: never consider pinned BOs for eviction&swap drm/ttm: make ttm_bo_unpin more defensive
Christophe JAILLET (3):
i2c: nomadik: Remove a useless call in the remove function
staging: rtl8712: Use constants from <linux/ieee80211.h>
mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()
Chunfeng Yun (1):
PM / wakeirq: support enabling wake-up irq after runtime_suspend called
Claudio Imbrenda (1):
KVM: s390: pv: fix index value of replaced ASCE
Dan Carpenter (4):
RDMA/mlx4: Make check for invalid flags stricter
Revert "usb: gadget: tegra-xudc: Fix error check in tegra_xudc_powerdomain_init()" Revert "usb: xhci: tegra: Fix error check"
net: ll_temac: fix error checking of irq_of_parse_and_map()
Dinh Nguyen (1):
arm64: dts: stratix10: fix incorrect I2C property for SCL signal
Dmitry Baryshkov (1):
drm/msm/dpu: drop enum dpu_core_perf_data_bus_id
Douglas Anderson (1):
tracing: Fix sleeping while atomic in kdb ftdump
Eric Dumazet (12):
net: annotate data-races around sk->sk_max_pacing_rate
net: add missing READ_ONCE(sk->sk_rcvlowat) annotation
net: add missing READ_ONCE(sk->sk_sndbuf) annotation
net: add missing READ_ONCE(sk->sk_rcvbuf) annotation
net: add missing data-race annotations around sk->sk_peek_off
net: add missing data-race annotation for sk_ll_usec
tcp_metrics: fix addr_same() helper
tcp_metrics: annotate data-races around tm->tcpm_stamp
tcp_metrics: annotate data-races around tm->tcpm_lock
tcp_metrics: annotate data-races around tm->tcpm_vals[]
tcp_metrics: annotate data-races around tm->tcpm_net
tcp_metrics: fix data-race in tcpm_suck_dst() vs fastopenFedor Pchelkin (1):
tipc: stop tipc crypto on failure in tipc_node_create
Filipe Manana (4):
btrfs: fix race between quota disable and relocation
btrfs: fix extent buffer leak after tree mod log failure at split_node()
btrfs: check for commit error at btrfs_attach_transaction_barrier()
btrfs: check if the transaction was aborted at btrfs_wait_for_commit()
Florian Westphal (1):
netfilter: nft_set_rbtree: fix overlap expiration walk
Gaosheng Cui (1):
drm/msm: Fix IS_ERR_OR_NULL() vs NULL check in a5xx_submit_in_rb()
Georg Müller (1):
perf test uprobe_from_different_cu: Skip if there is no gcc
Gilles Buloz (1):
hwmon: (nct7802) Fix for temp6 (PECI1) processed even if PECI1 disabled
Gratian Crisan (1):
usb: dwc3: pci: skip BYT GPIO lookup table for hardwired phy
Greg Kroah-Hartman (3):
Documentation: security-bugs.rst: update preferences when dealing with the linux-distros group
Documentation: security-bugs.rst: clarify CVE handling
Linux 5.10.190
Guangbin Huang (1):
net: hns3: reconstruct function hclge_ets_validate()
Guchun Chen (1):
drm/ttm: check null pointer before accessing when swapping
Guiting Shen (1):
usb: ohci-at91: Fix the unhandle interrupt when resume
Gustavo A. R. Silva (2):
kprobes/x86: Fix fall-through warnings for Clang
mt76: mt7615: Fix fall-through warnings for Clang
Hangbin Liu (2):
bonding: reset bond's flags when down link is P2P device
team: reset team's flags when down link is P2P device
Hans de Goede (1):
gpio: tps68470: Make tps68470_gpio_output() always set the initial value
Harshit Mogalapalli (1):
phy: hisilicon: Fix an out of bounds check in hisi_inno_phy_probe()
Heiko Carstens (1):
KVM: s390: fix sthyi error handling
Heiner Kallweit (1):
pwm: meson: fix handling of period/duty if greater than UINT_MAX
Hugo Villeneuve (1):
arm64: dts: imx8mn-var-som: add missing pull-up for onboard PHY reset pinmux
Hyeongseok Kim (1):
exfat: speed up iterate/lookup by fixing start point of traversing cluster chain
Ilan Peer (1):
wifi: cfg80211: Fix return value in scan logic
Ilpo Järvinen (2):
PCI/ASPM: Factor out pcie_wait_for_retrain() PCI/ASPM: Avoid link retraining race
Ilya Dryomov (1):
libceph: fix potential hang in ceph_osdc_notify()
Jakub Vanek (1):
Revert "usb: dwc3: core: Enable AutoRetry feature in the controller"
Jamal Hadi Salim (1):
net: sched: cls_u32: Fix match key mis-addressing
Jan Kara (2):
fs: Protect reconfiguration of sb read-write from racing writes
ext2: Drop fragment support
Jason Wang (1):
virtio-net: fix race between set queues and probe
Jedrzej Jagielski (1):
ice: Fix memory management in ice_ethtool_fdir.c
Jens Axboe (2):
io_uring: treat -EAGAIN for REQ_F_NOWAIT as final for io-wq
io_uring: gate iowait schedule on having pending requests
Jerry Meng (1):
USB: serial: option: support Quectel EM060K_128
Jianbo Liu (2):
net/mlx5: fs_core: Make find_closest_ft more generic net/mlx5: fs_core: Skip the FTs in the same FS_TYPE_PRIO_CHAINS fs_prio
Jiawen Wu (1):
net: phy: marvell10g: fix 88x3310 power up
Jijie Shao (1):
net: hns3: fix wrong bw weight of disabled tc issue
Jiri Benc (1):
vxlan: calculate correct header length for GPE
Jiri Olsa (1):
bpf: Disable preemption in bpf_event_output
Jisheng Zhang (1):
usb: dwc3: don't reset device side if dwc3 was configured as host-only
Joe Thornber (1):
dm cache policy smq: ensure IO doesn't prevent cleaner policy progress
Johan Hovold (4):
serial: qcom-geni: drop bogus runtime pm state update
USB: serial: simple: sort driver entries
soundwire: fix enumeration completion
PM: sleep: wakeirq: fix wake irq arming
Jonas Gorski (1):
irq-bcm6345-l1: Do not assume a fixed block to cpu mapping
Krzysztof Kozlowski (1):
phy: qcom-snps: correct struct qcom_snps_hsphy kerneldoc
Larry Finger (1):
staging: r8712: Fix memory leak in _r8712_init_xmit_priv()
Laszlo Ersek (2):
net: tun_chr_open(): set sk_uid from current_fsuid()
net: tap_open(): set sk_uid from current_fsuid()
Lin Ma (4):
net/sched: mqprio: Add length check for TCA_MQPRIO_{MAX/MIN}_RATE64
bpf: Add length check for SK_DIAG_BPF_STORAGE_REQ_MAP_FD parsing
rtnetlink: let rtnl_bridge_setlink checks IFLA_BRIDGE_MODE length
net: dcb: choose correct policy to parse DCB_ATTR_BCN
Linus Torvalds (1):
file: reinstate f_pos locking optimization for regular files
Lorenzo Bianconi (1):
mt76: move band capabilities in mt76_phy
Luka Guzenko (1):
ALSA: hda/relatek: Enable Mute LED on HP 250 G8
Maciej Żenczykowski (1):
ipv6 addrconf: fix bug where deleting a mngtmpaddr can create a new temporary address
Marc Kleine-Budde (1):
can: gs_usb: gs_can_close(): add missing set of CAN state to CAN_STATE_STOPPED
Marc Zyngier (1):
irqchip/gic-v4.1: Properly lock VPEs when doing a directLPI invalidation
Mark Brown (2):
ASoC: wm8904: Fill the cache for WM8904_ADC_TEST_0 register
net: netsec: Ignore 'phy-mode' on SynQuacer in DT mode
Markus Elfring (2):
i2c: Delete error messages for failed memory allocations
i2c: Improve size determinations
Masami Hiramatsu (6):
tracing: Show real address for trace event arguments x86/kprobes: Do not decode opcode in resume_execution() x86/kprobes: Retrieve correct opcode for group instruction x86/kprobes: Identify far indirect JMP correctly x86/kprobes: Use int3 instead of debug trap for single-step x86/kprobes: Fix to identify indirect jmp and others using range case
Masami Hiramatsu (Google) (1):
x86/kprobes: Update kcb status flag after singlestepping
Matthieu Baerts (1):
selftests: mptcp: depend on SYN_COOKIES
Matus Gajdos (1):
ASoC: fsl_spdif: Silence output on stop
Maxim Mikityanskiy (1):
platform/x86: msi-laptop: Fix rfkill out-of-sync on MSI Wind U100
Michael Jeanson (1):
selftests/rseq: check if libc rseq support is registered
Mohsen Tahmasebi (1):
USB: serial: option: add Quectel EC200A module support
Nadav Amit (1):
x86/kprobes: Fix JNG/JNLE emulation
Namjae Jeon (1):
exfat: check if filename entries exceeds max filename length
Oliver Neukum (1):
USB: serial: simple: add Kaufmann RKS+CAN VCP
Olivier Maignial (1):
mtd: spinand: toshiba: Fix ecc_get_status
Ondrej Mosnacek (1):
io_uring: don't audit the capability check in io_uring_create()
Pablo Neira Ayuso (3):
netfilter: nftables: add helper function to validate set element data
netfilter: nf_tables: skip immediate deactivate in _PREPARE_ERROR
netfilter: nf_tables: disallow rule addition to bound chain via NFTA_RULE_CHAIN_ID
Paul Fertser (1):
wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC)
Peng Fan (1):
ARM: dts: imx: add usb alias
Peter Zijlstra (1):
perf: Fix function pointer case
Pierre-Louis Bossart (2):
soundwire: bus: add better dev_dbg to track complete() calls
soundwire: bus: pm_runtime_request_resume on peripheral attachment
Prince Kumar Maurya (1):
fs/sysv: Null check to prevent null-ptr-deref bug
Rafael J. Wysocki (3):
ACPI: processor: perflib: Use the "no limit" frequency QoS
ACPI: processor: perflib: Avoid updating frequency QoS unnecessarily
cpufreq: intel_pstate: Drop ACPI _PSS states table patching
Ricardo Ribalda (1):
usb: xhci-mtk: set the dma max_seg_size
Rob Clark (1):
drm/msm/adreno: Fix snapshot BINDLESS_DATA size
Roger Quadros (1):
mtd: rawnand: omap_elm: Fix incorrect type in assignment
Roopa Prabhu (1):
vxlan: move to its own directory
Ross Maynard (1):
USB: zaurus: Add ID for A-300/B-500/C-700
Ruihong Luo (1):
serial: 8250_dw: Preserve original value of DLF register
Sakari Ailus (1):
media: staging: atomisp: select V4L2_FWNODE
Samuel Holland (1):
serial: sifive: Fix sifive_serial_console_setup() section
Sean Christopherson (5):
KVM: VMX: Invert handling of CR0.WP for EPT without unrestricted guest
KVM: VMX: Fold ept_update_paging_mode_cr0() back into vmx_set_cr0()
KVM: nVMX: Do not clear CR3 load/store exiting bits if L1 wants 'em
KVM: VMX: Don't fudge CR0 and CR4 for restricted L2 guest selftests/rseq: Play nice with binaries statically linked against glibc 2.35+
Stefan Haberland (1):
s390/dasd: fix hanging device after quiesce/resume
Steffen Maier (1):
scsi: zfcp: Defer fc_rport blocking until after ADISC response
Stewart Smith (1):
tcp: Reduce chance of collisions in inet6_hashfn().
Sungjong Seo (1):
exfat: release s_lock before calling dir_emit()
Sungwoo Kim (1):
Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb
Thomas Bogendoerfer (1):
RDMA/mthca: Fix crash when polling CQ for shared QPs
Thomas Petazzoni (1):
ASoC: cs42l51: fix driver to properly autoload with automatic module loading
Tomas Glozar (1):
bpf: sockmap: Remove preempt_disable in sock_map_sk_acquire
Trond Myklebust (1):
nfsd: Remove incorrect check in nfsd4_validate_stateid
Uwe Kleine-König (1):
pwm: meson: Simplify duplicated per-channel tracking
Vladimir Oltean (2):
net/sched: mqprio: refactor nlattr parsing to a separate function net/sched: mqprio: add extack to mqprio_parse_nlattr()
Wang Ming (1):
i40e: Fix an NULL vs IS_ERR() bug for debugfs_create_dir()
Wei Yongjun (1):
x86/kprobes: Move 'inline' to the beginning of the kprobe_is_ss() declaration
Xiubo Li (2):
ceph: never send metrics if disable_send_metrics is set
ceph: defer stopping mdsc delayed_work
Xu Yang (1):
ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node
Yang Yingliang (1):
net: ll_temac: Switch to use dev_err_probe() helper
Yu Kuai (3):
dm raid: fix missing reconfig_mutex unlock in raid_ctr() error paths dm raid: clean up four equivalent goto tags in raid_ctr() dm raid: protect md_stop() with 'reconfig_mutex'
Yuan Can (1):
phy: qcom-snps: Use dev_err_probe() to simplify code
Yuanjun Gong (5):
ethernet: atheros: fix return value check in atl1e_tso_csum()
benet: fix return value check in be_lancer_xmit_workarounds()
tipc: check return value of pskb_trim()
net/mlx5e: fix return value check in mlx5e_ipsec_remove_trailer()
net: dsa: fix value check in bcm_sf2_sw_probe()
Yue Haibing (1):
ip6mr: Fix skb_under_panic in ip6mr_cache_report()
Yuezhang Mo (1):
exfat: support dynamic allocate bh for exfat_entry_set_cache
Zhang Shurong (1):
staging: ks7010: potential buffer overflow in ks_wlan_set_encode_ext()
Zheng Yejian (2):
ring-buffer: Fix wrong stat of cpu_buffer->read
tracing: Fix warning in trace_buffered_event_disable()
Zhengchao Shao (1):
net/mlx5: DR, fix memory leak in mlx5dr_cmd_create_reformat_ctx
Zqiang (1):
USB: gadget: Fix the memory leak in raw_gadget driver
gaoming (1):
exfat: use kvmalloc_array/kvfree instead of kmalloc_array/kfree
[email protected] (1):
word-at-a-time: use the same return type for has_zero regardless of endianness
valis (3):
net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after-free net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after-free net/sched: cls_route: No longer copy tcf_result on update to avoid use-after-free
Łukasz Bartosik (1):
USB: quirks: add quirk for Focusrite Scarlett
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/security-bugs.rst +18 -21
@@ -63,31 +63,28 @@ information submitted to the security list and any followup discussions of the report are treated confidentially even after the embargo has been lifted, in perpetuity. -Coordination ------------- - -Fixes for sensitive bugs, such as those that might lead to privilege -escalations, may need to be coordinated with the private -<[email protected]> mailing list so that distribution vendors -are well prepared to issue a fixed kernel upon public disclosure of the -upstream fix. Distros will need some time to test the proposed patch and -will generally request at least a few days of embargo, and vendor update -publication prefers to happen Tuesday through Thursday. When appropriate, -the security team can assist with this coordination, or the reporter can -include linux-distros from the start. In this case, remember to prefix -the email Subject line with "[vs]" as described in the linux-distros wiki: -<http://oss-security.openwall.org/wiki/mailing-lists/distros#how-to-use-the-lists> +Coordination with other groups +------------------------------ + +The kernel security team strongly recommends that reporters of potential +security issues NEVER contact the "linux-distros" mailing list until +AFTER discussing it with the kernel security team. Do not Cc: both +lists at once. You may contact the linux-distros mailing list after a +fix has been agreed on and you fully understand the requirements that +doing so will impose on you and the kernel community. + +The different lists have different goals and the linux-distros rules do +not contribute to actually fixing any potential security problems. CVE assignment -------------- -The security team does not normally assign CVEs, nor do we require them -for reports or fixes, as this can needlessly complicate the process and -may delay the bug handling. If a reporter wishes to have a CVE identifier -assigned ahead of public disclosure, they will need to contact the private -linux-distros list, described above. When such a CVE identifier is known -before a patch is provided, it is desirable to mention it in the commit -message if the reporter agrees. +The security team does not assign CVEs, nor do we require them for +reports or fixes, as this can needlessly complicate the process and may +delay the bug handling. If a reporter wishes to have a CVE identifier +assigned, they should find one by themselves, for example by contacting +MITRE directly. However under no circumstances will a patch inclusion +be delayed to wait for a CVE identifier to arrive. Non-disclosure agreements -------------------------
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 189 +SUBLEVEL = 190 EXTRAVERSION = NAME = Dare mighty things
arch/arm/boot/dts/imx6qdl.dtsi +4 -0
@@ -45,6 +45,10 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg; + usb1 = &usbh1; + usb2 = &usbh2; + usb3 = &usbh3; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx6sl.dtsi +3 -0
@@ -39,6 +39,9 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbotg2; + usb2 = &usbh; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx6sll.dtsi +13 -13
@@ -36,6 +36,8 @@ aliases { spi1 = &ecspi2; spi3 = &ecspi3; spi4 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbotg2; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
@@ -49,20 +51,18 @@ cpu0: cpu@0 { device_type = "cpu"; reg = <0>; next-level-cache = <&L2>; - operating-points = < + operating-points = /* kHz uV */ - 996000 1275000 - 792000 1175000 - 396000 1075000 - 198000 975000 - >; - fsl,soc-operating-points = < + <996000 1275000>, + <792000 1175000>, + <396000 1075000>, + <198000 975000>; + fsl,soc-operating-points = /* ARM kHz SOC-PU uV */ - 996000 1175000 - 792000 1175000 - 396000 1175000 - 198000 1175000 - >; + <996000 1175000>, + <792000 1175000>, + <396000 1175000>, + <198000 1175000>; clock-latency = <61036>; /* two CLK32 periods */ #cooling-cells = <2>; clocks = <&clks IMX6SLL_CLK_ARM>,
@@ -552,7 +552,7 @@ usbphy2: usb-phy@20ca000 { reg = <0x020ca000 0x1000>; interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6SLL_CLK_USBPHY2>; - phy-reg_3p0-supply = <®_3p0>; + phy-3p0-supply = <®_3p0>; fsl,anatop = <&anatop>; };
arch/arm/boot/dts/imx6sx.dtsi +3 -0
@@ -49,6 +49,9 @@ aliases { spi2 = &ecspi3; spi3 = &ecspi4; spi4 = &ecspi5; + usb0 = &usbotg1; + usb1 = &usbotg2; + usb2 = &usbh; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx6ul.dtsi +2 -0
@@ -47,6 +47,8 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbotg2; usbphy0 = &usbphy1; usbphy1 = &usbphy2; };
arch/arm/boot/dts/imx7d.dtsi +6 -0
@@ -7,6 +7,12 @@ #include <dt-bindings/reset/imx7-reset.h> / { + aliases { + usb0 = &usbotg1; + usb1 = &usbotg2; + usb2 = &usbh; + }; + cpus { cpu0: cpu@0 { clock-frequency = <996000000>;
arch/arm/boot/dts/imx7s.dtsi +2 -0
@@ -47,6 +47,8 @@ aliases { spi1 = &ecspi2; spi2 = &ecspi3; spi3 = &ecspi4; + usb0 = &usbotg1; + usb1 = &usbh; }; cpus {
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts +1 -1
@@ -129,7 +129,7 @@ &i2c1 { status = "okay"; clock-frequency = <100000>; i2c-sda-falling-time-ns = <890>; /* hcnt */ - i2c-sdl-falling-time-ns = <890>; /* lcnt */ + i2c-scl-falling-time-ns = <890>; /* lcnt */ adc@14 { compatible = "lltc,ltc2497";
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts +1 -1
@@ -162,7 +162,7 @@ &i2c2 { status = "okay"; clock-frequency = <100000>; i2c-sda-falling-time-ns = <890>; /* hcnt */ - i2c-sdl-falling-time-ns = <890>; /* lcnt */ + i2c-scl-falling-time-ns = <890>; /* lcnt */ adc@14 { compatible = "lltc,ltc2497";
arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi +1 -1
@@ -351,7 +351,7 @@ MX8MN_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f MX8MN_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91 MX8MN_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91 MX8MN_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f - MX8MN_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x19 + MX8MN_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x159 >; };
arch/powerpc/include/asm/word-at-a-time.h +1 -1
@@ -34,7 +34,7 @@ static inline long find_zero(unsigned long mask)return leading_zero_bits >>3 ; } -static inline bool has_zero (unsigned long val,unsigned long *data,const struct word_at_a_time *c) +static inline unsigned long has_zero (unsigned long val,unsigned long *data,const struct word_at_a_time *c) {unsigned long rhs = val | c->low_bits; *data = rhs;
arch/powerpc/mm/init_64.c +1 -2
@@ -313,8 +313,7 @@ void __ref vmemmap_free(unsigned long start, unsigned long end, start =ALIGN_DOWN (start, page_size);if (altmap) { alt_start = altmap->base_pfn; - alt_end = altmap->base_pfn + altmap->reserve + - altmap->free + altmap->alloc + altmap->align; + alt_end = altmap->base_pfn + altmap->reserve + altmap->free; }pr_debug ("vmemmap_free %lx...%lx\n" , start, end);
arch/s390/kernel/sthyi.c +3 -3
@@ -460,9 +460,9 @@ static int sthyi_update_cache(u64 *rc)* * Fills the destination with system information returned by the STHYI * instruction. The data is generated by emulation or execution of STHYI, -* if available. The return value is the condition code that would be -* returned, the rc parameter is the return code which is passed in -* register R2 + 1. +* if available. The return value is either a negative error value or +* the condition code that would be returned, the rc parameter is the +* return code which is passed in register R2 + 1. */ int sthyi_fill (void *dst,u64 *rc) {
arch/s390/kvm/intercept.c +6 -3
@@ -387,8 +387,8 @@ static int handle_partial_execution(struct kvm_vcpu *vcpu)*/ int handle_sthyi (struct kvm_vcpu *vcpu) { -int reg1, reg2, r =0 ; -u64 code, addr, cc =0 , rc =0 ; +int reg1, reg2, cc =0 , r =0 ; +u64 code, addr, rc =0 ;struct sthyi_sctns *sctns =NULL ;if (!test_kvm_facility (vcpu->kvm,74 ))
@@ -419,7 +419,10 @@ int handle_sthyi(struct kvm_vcpu *vcpu)return -ENOMEM ; cc =sthyi_fill (sctns, &rc); - +if (cc <0 ) { +free_page ((unsigned long )sctns); +return cc; + } out:if (!cc) {if (kvm_s390_pv_cpu_is_protected (vcpu)) {
arch/s390/mm/gmap.c +1 -0
@@ -2786,6 +2786,7 @@ int s390_replace_asce(struct gmap *gmap) page =alloc_pages (GFP_KERNEL_ACCOUNT ,CRST_ALLOC_ORDER );if (!page)return -ENOMEM ; + page->index =0 ; table =page_to_virt (page);memcpy (table, gmap->table,1UL << (CRST_ALLOC_ORDER +PAGE_SHIFT ));
arch/x86/include/asm/cpufeatures.h +1 -0
@@ -451,4 +451,5 @@/* BUG word 2 */ #define X86_BUG_SRSO X86_BUG(1*32 + 0)/* AMD SRSO bug */ +#define X86_BUG_DIV0 X86_BUG(1*32 + 1)/* AMD DIV0 speculation bug */ #endif /* _ASM_X86_CPUFEATURES_H */
arch/x86/include/asm/kprobes.h +19 -5
@@ -58,14 +58,29 @@ struct arch_specific_insn {/* copy of the original instruction */ kprobe_opcode_t *insn;/* -* boostable = false: This instruction type is not boostable. -* boostable = true: This instruction has been boosted: we have +* boostable = 0: This instruction type is not boostable. +* boostable = 1: This instruction has been boosted: we have * added a relative jump after the instruction copy in insn, * so no single-step and fixup are needed (unless there's * a post_handler). */ -bool boostable; -bool if_modifier; + unsigned boostable:1; +unsigned char size;/* The size of insn */ +union { +unsigned char opcode; +struct { +unsigned char type; + } jcc; +struct { +unsigned char type; +unsigned char asize; + } loop; +struct { +unsigned char reg; + } indirect; + }; +s32 rel32;/* relative offset must be s32, s16, or s8 */ +void (*emulate_op)(struct kprobe *p,struct pt_regs *regs);/* Number of bytes of text poked */ int tp_len; };
@@ -104,7 +119,6 @@ extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);extern int kprobe_exceptions_notify (struct notifier_block *self,unsigned long val,void *data);extern int kprobe_int3_handler (struct pt_regs *regs); -extern int kprobe_debug_handler (struct pt_regs *regs);#else
arch/x86/include/asm/processor.h +2 -0
@@ -809,10 +809,12 @@ DECLARE_PER_CPU(u64, msr_misc_features_shadow);extern u16 amd_get_nb_id (int cpu);extern u32 amd_get_nodes_per_socket (void );extern bool cpu_has_ibpb_brtype_microcode (void ); +extern void amd_clear_divider (void );#else static inline u16 amd_get_nb_id (int cpu) {return 0 ; }static inline u32 amd_get_nodes_per_socket (void ) {return 0 ; }static inline bool cpu_has_ibpb_brtype_microcode (void ) {return false; } +static inline void amd_clear_divider (void ) { }#endif static inline uint32_t hypervisor_cpuid_base (const char *sig,uint32_t leaves)
arch/x86/kernel/cpu/amd.c +19 -0
@@ -76,6 +76,10 @@ static const int amd_zenbleed[] =AMD_MODEL_RANGE (0x17 ,0x60 ,0x0 ,0x7f ,0xf ), AMD_MODEL_RANGE(0x17, 0xa0, 0x0, 0xaf, 0xf)); +static const int amd_div0[] = +AMD_LEGACY_ERRATUM (AMD_MODEL_RANGE (0x17 ,0x00 ,0x0 ,0x2f ,0xf ), +AMD_MODEL_RANGE (0x17 ,0x50 ,0x0 ,0x5f ,0xf )); +static bool cpu_has_amd_erratum (struct cpuinfo_x86 *cpu,const int *erratum) {int osvw_id = *erratum++;
@@ -1168,6 +1172,11 @@ static void init_amd(struct cpuinfo_x86 *c)check_null_seg_clears_base (c);zenbleed_check (c); + +if (cpu_has_amd_erratum (c, amd_div0)) { +pr_notice_once ("AMD Zen1 DIV0 bug detected. Disable SMT for full protection.\n" ); +setup_force_cpu_bug (X86_BUG_DIV0 ); + } }#ifdef CONFIG_X86_32
@@ -1312,3 +1321,13 @@ void amd_check_microcode(void) {on_each_cpu (zenbleed_check_cpu,NULL ,1 ); } + +/* +* Issue a DIV 0/1 insn to clear any division data from previous DIV +* operations. +*/ +void noinstr amd_clear_divider(void) +{ + asm volatile(ALTERNATIVE("", "div %2\n\t", X86_BUG_DIV0) + :: "a" (0), "d" (0), "r" (1)); +}
arch/x86/kernel/kprobes/core.c +390 -249
751 lines not on this page · raw message
arch/x86/kernel/traps.c +2 -3
@@ -198,6 +198,8 @@ DEFINE_IDTENTRY(exc_divide_error) {do_error_trap (regs,0 ,"divide error" ,X86_TRAP_DE ,SIGFPE ,FPE_INTDIV ,error_get_trap_addr (regs)); + +amd_clear_divider (); }DEFINE_IDTENTRY (exc_overflow)
@@ -917,9 +919,6 @@ static __always_inline void exc_debug_kernel(struct pt_regs *regs,if ((dr6 &DR_STEP ) &&is_sysenter_singlestep (regs)) dr6 &= ~DR_STEP ; -if (kprobe_debug_handler (regs)) - goto out; -/* * The kernel doesn't use INT1 */
arch/x86/kvm/vmx/vmx.c +55 -32
133 lines not on this page · raw message
drivers/acpi/processor_perflib.c +30 -8
@@ -56,6 +56,8 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr) {acpi_status status =0 ;unsigned long long ppc =0 ; +s32 qos_value; +int index;int ret;if (!pr)
@@ -75,17 +77,30 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)return -ENODEV ; } + index = ppc; + +if (pr->performance_platform_limit == index || + ppc >= pr->performance->state_count) +return 0 ; +pr_debug ("CPU %d: _PPC is %d - frequency %s limited\n" , pr->id, - (int )ppc, ppc ?"" :"not" ); + index, index ?"is" :"is not" ); - pr->performance_platform_limit = (int )ppc; + pr->performance_platform_limit = index; -if (ppc >= pr->performance->state_count || -unlikely (!freq_qos_request_active (&pr->perflib_req))) +if (unlikely (!freq_qos_request_active (&pr->perflib_req)))return 0 ; - ret =freq_qos_update_request (&pr->perflib_req, - pr->performance->states[ppc].core_frequency *1000 ); +/* +* If _PPC returns 0, it means that all of the available states can be +* used ("no limit"). +*/ +if (index ==0 ) + qos_value =FREQ_QOS_MAX_DEFAULT_VALUE ; +else + qos_value = pr->performance->states[index].core_frequency *1000 ; + + ret =freq_qos_update_request (&pr->perflib_req, qos_value);if (ret <0 ) {pr_warn ("Failed to update perflib freq constraint: CPU%d (%d)\n" , pr->id, ret);
@@ -168,9 +183,16 @@ void acpi_processor_ppc_init(struct cpufreq_policy *policy)if (!pr)continue ; +/* +* Reset performance_platform_limit in case there is a stale +* value in it, so as to make it match the "no limit" QoS value +* below. +*/ + pr->performance_platform_limit =0 ; + ret =freq_qos_add_request (&policy->constraints, - &pr->perflib_req, -FREQ_QOS_MAX ,INT_MAX ); + &pr->perflib_req,FREQ_QOS_MAX , +FREQ_QOS_MAX_DEFAULT_VALUE );if (ret <0 )pr_err ("Failed to add freq constraint for CPU%d (%d)\n" , cpu, ret);
drivers/ata/pata_ns87415.c +1 -1
@@ -260,7 +260,7 @@ static u8 ns87560_check_status(struct ata_port *ap)* LOCKING: * Inherited from caller. */ -void ns87560_tf_read (struct ata_port *ap,struct ata_taskfile *tf) +static void ns87560_tf_read (struct ata_port *ap,struct ata_taskfile *tf) {struct ata_ioports *ioaddr = &ap->ioaddr;
drivers/base/power/power.h +6 -2
@@ -25,8 +25,11 @@ extern u64 pm_runtime_active_time(struct device *dev);#define WAKE_IRQ_DEDICATED_ALLOCATED BIT(0)#define WAKE_IRQ_DEDICATED_MANAGED BIT(1) +#define WAKE_IRQ_DEDICATED_REVERSE BIT(2)#define WAKE_IRQ_DEDICATED_MASK (WAKE_IRQ_DEDICATED_ALLOCATED | \ - WAKE_IRQ_DEDICATED_MANAGED) + WAKE_IRQ_DEDICATED_MANAGED | \ + WAKE_IRQ_DEDICATED_REVERSE) +#define WAKE_IRQ_DEDICATED_ENABLED BIT(3)struct wake_irq {struct device *dev;
@@ -39,7 +42,8 @@ extern void dev_pm_arm_wake_irq(struct wake_irq *wirq);extern void dev_pm_disarm_wake_irq (struct wake_irq *wirq);extern void dev_pm_enable_wake_irq_check (struct device *dev,bool can_change_status); -extern void dev_pm_disable_wake_irq_check (struct device *dev); +extern void dev_pm_disable_wake_irq_check (struct device *dev,bool cond_disable); +extern void dev_pm_enable_wake_irq_complete (struct device *dev);#ifdef CONFIG_PM_SLEEP
drivers/base/power/runtime.c +4 -2
@@ -675,6 +675,8 @@ static int rpm_suspend(struct device *dev, int rpmflags)if (retval) goto fail; +dev_pm_enable_wake_irq_complete (dev); + no_callback:__update_runtime_status (dev,RPM_SUSPENDED );pm_runtime_deactivate_timer (dev);
@@ -720,7 +722,7 @@ static int rpm_suspend(struct device *dev, int rpmflags)return retval; fail: -dev_pm_disable_wake_irq_check (dev); +dev_pm_disable_wake_irq_check (dev, true);__update_runtime_status (dev,RPM_ACTIVE ); dev->power.deferred_resume = false;wake_up_all (&dev->power.wait_queue);
@@ -903,7 +905,7 @@ static int rpm_resume(struct device *dev, int rpmflags) callback =RPM_GET_CALLBACK (dev, runtime_resume); -dev_pm_disable_wake_irq_check (dev); +dev_pm_disable_wake_irq_check (dev, false); retval =rpm_callback (callback, dev);if (retval) {__update_runtime_status (dev,RPM_SUSPENDED );
drivers/base/power/wakeirq.c +87 -24
165 lines not on this page · raw message
drivers/block/loop.c +2 -1
@@ -2109,7 +2109,8 @@ static int loop_add(struct loop_device **l, int i) lo->tag_set.queue_depth =128 ; lo->tag_set.numa_node =NUMA_NO_NODE ; lo->tag_set.cmd_size =sizeof (struct loop_cmd ); - lo->tag_set.flags =BLK_MQ_F_SHOULD_MERGE |BLK_MQ_F_STACKING ; + lo->tag_set.flags =BLK_MQ_F_SHOULD_MERGE |BLK_MQ_F_STACKING | +BLK_MQ_F_NO_SCHED ; lo->tag_set.driver_data = lo; err =blk_mq_alloc_tag_set (&lo->tag_set);
drivers/char/tpm/tpm_tis_core.c +8 -2
@@ -314,6 +314,7 @@ static int tpm_tis_recv(struct tpm_chip *chip, u8 *buf, size_t count)int size =0 ;int status;u32 expected; +int rc;if (count <TPM_HEADER_SIZE ) { size = -EIO ;
@@ -333,8 +334,13 @@ static int tpm_tis_recv(struct tpm_chip *chip, u8 *buf, size_t count) goto out; } - size +=recv_data (chip, &buf[TPM_HEADER_SIZE ], - expected -TPM_HEADER_SIZE ); + rc =recv_data (chip, &buf[TPM_HEADER_SIZE ], + expected -TPM_HEADER_SIZE ); +if (rc <0 ) { + size = rc; + goto out; + } + size += rc;if (size < expected) {dev_err (&chip->dev,"Unable to read remainder of result\n" ); size = -ETIME ;
drivers/cpufreq/intel_pstate.c +0 -14
@@ -443,20 +443,6 @@ static void intel_pstate_init_acpi_perf_limits(struct cpufreq_policy *policy) (u32) cpu->acpi_perf_data.states[i].control); } -/* -* The _PSS table doesn't contain whole turbo frequency range. -* This just contains +1 MHZ above the max non turbo frequency, -* with control value corresponding to max turbo ratio. But -* when cpufreq set policy is called, it will call with this -* max frequency, which will cause a reduced performance as -* this driver uses real max turbo frequency as the max -* frequency. So correct this frequency in _PSS table to -* correct max turbo frequency based on the turbo state. -* Also need to convert to MHz as _PSS freq is in MHz. -*/ -if (!global.turbo_disabled) - cpu->acpi_perf_data.states[0 ].core_frequency = - policy->cpuinfo.max_freq /1000 ; cpu->valid_pss_table = true;pr_debug ("_PPC limits will be enforced\n" );
drivers/gpio/gpio-tps68470.c +3 -3
@@ -91,13 +91,13 @@ static int tps68470_gpio_output(struct gpio_chip *gc, unsigned int offset,struct tps68470_gpio_data *tps68470_gpio =gpiochip_get_data (gc);struct regmap *regmap = tps68470_gpio->tps68470_regmap; +/* Set the initial value */ +tps68470_gpio_set (gc, offset, value); +/* rest are always outputs */ if (offset >=TPS68470_N_REGULAR_GPIO )return 0 ; -/* Set the initial value */ -tps68470_gpio_set (gc, offset, value); -return regmap_update_bits (regmap,TPS68470_GPIO_CTL_REG_A (offset),TPS68470_GPIO_MODE_MASK ,TPS68470_GPIO_MODE_OUT_CMOS );
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +1 -1
@@ -81,7 +81,7 @@ static void a5xx_submit_in_rb(struct msm_gpu *gpu, struct msm_gem_submit *submit* since we've already mapped it once in * submit_reloc() */ -if (WARN_ON (!ptr)) +if (WARN_ON (IS_ERR_OR_NULL (ptr)))return ;for (i =0 ; i < dwords; i++) {
drivers/gpu/drm/msm/adreno/a6xx_gpu_state.h +1 -1
@@ -200,7 +200,7 @@ static const struct a6xx_shader_block {SHADER (A6XX_SP_LB_3_DATA ,0x800 ),SHADER (A6XX_SP_LB_4_DATA ,0x800 ),SHADER (A6XX_SP_LB_5_DATA ,0x200 ), -SHADER (A6XX_SP_CB_BINDLESS_DATA ,0x2000 ), +SHADER (A6XX_SP_CB_BINDLESS_DATA ,0x800 ),SHADER (A6XX_SP_CB_LEGACY_DATA ,0x280 ),SHADER (A6XX_SP_UAV_DATA ,0x80 ), SHADER(A6XX_SP_INST_TAG, 0x80),
drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h +0 -13
@@ -14,19 +14,6 @@#define DPU_PERF_DEFAULT_MAX_CORE_CLK_RATE 412500000 -/** -* enum dpu_core_perf_data_bus_id - data bus identifier -* @DPU_CORE_PERF_DATA_BUS_ID_MNOC: DPU/MNOC data bus -* @DPU_CORE_PERF_DATA_BUS_ID_LLCC: MNOC/LLCC data bus -* @DPU_CORE_PERF_DATA_BUS_ID_EBI: LLCC/EBI data bus -*/ -enum dpu_core_perf_data_bus_id { -DPU_CORE_PERF_DATA_BUS_ID_MNOC , -DPU_CORE_PERF_DATA_BUS_ID_LLCC , -DPU_CORE_PERF_DATA_BUS_ID_EBI , -DPU_CORE_PERF_DATA_BUS_ID_MAX , -}; -/** * struct dpu_core_perf_params - definition of performance parameters * @max_per_pipe_ib: maximum instantaneous bandwidth request
drivers/gpu/drm/ttm/ttm_bo.c +13 -3
@@ -115,7 +115,7 @@ static void ttm_bo_add_mem_to_lru(struct ttm_buffer_object *bo,struct ttm_bo_device *bdev = bo->bdev;struct ttm_resource_manager *man; -if (!list_empty (&bo->lru)) +if (!list_empty (&bo->lru) || bo->pin_count)return ;if (mem->placement &TTM_PL_FLAG_NO_EVICT )
@@ -165,7 +165,8 @@ void ttm_bo_move_to_lru_tail(struct ttm_buffer_object *bo,ttm_bo_del_from_lru (bo);ttm_bo_add_mem_to_lru (bo, &bo->mem); -if (bulk && !(bo->mem.placement &TTM_PL_FLAG_NO_EVICT )) { +if (bulk && !(bo->mem.placement &TTM_PL_FLAG_NO_EVICT ) && + !bo->pin_count) {switch (bo->mem.mem_type) {case TTM_PL_TT :ttm_bo_bulk_move_set_pos (&bulk->tt[bo->priority], bo);
@@ -544,8 +545,9 @@ static void ttm_bo_release(struct kref *kref)* shrinkers, now that they are queued for * destruction. */ -if (bo->mem.placement &TTM_PL_FLAG_NO_EVICT ) { +if (bo->mem.placement &TTM_PL_FLAG_NO_EVICT || bo->pin_count) { bo->mem.placement &= ~TTM_PL_FLAG_NO_EVICT ; + bo->pin_count =0 ;ttm_bo_del_from_lru (bo);ttm_bo_add_mem_to_lru (bo, &bo->mem); }
@@ -670,6 +672,13 @@ static bool ttm_bo_evict_swapout_allowable(struct ttm_buffer_object *bo, {bool ret = false; +if (bo->pin_count) { + *locked = false; +if (busy) + *busy = false; +return false; + } +if (bo->base.resv == ctx->resv) {dma_resv_assert_held (bo->base.resv);if (ctx->flags &TTM_OPT_FLAG_ALLOW_RES_EVICT )
@@ -1174,6 +1183,7 @@ int ttm_bo_init_reserved(struct ttm_bo_device *bdev, bo->moving =NULL ; bo->mem.placement =TTM_PL_FLAG_CACHED ; bo->acc_size = acc_size; + bo->pin_count =0 ; bo->sg = sg;if (resv) { bo->base.resv = resv;
drivers/gpu/drm/ttm/ttm_bo_util.c +1 -1
@@ -352,7 +352,6 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo,return -ENOMEM ; fbo->base = *bo; - fbo->base.mem.placement |=TTM_PL_FLAG_NO_EVICT ;ttm_bo_get (bo); fbo->bo = bo;
@@ -372,6 +371,7 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo,kref_init (&fbo->base.kref); fbo->base.destroy = &ttm_transfered_destroy; fbo->base.acc_size =0 ; + fbo->base.pin_count =1 ;if (bo->type != ttm_bo_type_sg) fbo->base.base.resv = &fbo->base.base._resv;
drivers/hwmon/nct7802.c +1 -1
@@ -708,7 +708,7 @@ static umode_t nct7802_temp_is_visible(struct kobject *kobj,if (index >=38 && index <46 && !(reg &0x01 ))/* PECI 0 */ return 0 ; -if (index >=0x46 && (!(reg &0x02 )))/* PECI 1 */ +if (index >=46 && !(reg &0x02 ))/* PECI 1 */ return 0 ;return attr->mode;
drivers/i2c/busses/i2c-ibm_iic.c +1 -3
@@ -694,10 +694,8 @@ static int iic_probe(struct platform_device *ofdev)int ret; dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&ofdev->dev,"failed to allocate device data\n" ); +if (!dev)return -ENOMEM ; - }platform_set_drvdata (ofdev, dev);
drivers/i2c/busses/i2c-nomadik.c +11 -31
83 lines not on this page · raw message
drivers/i2c/busses/i2c-sh7760.c +1 -2
@@ -443,9 +443,8 @@ static int sh7760_i2c_probe(struct platform_device *pdev) goto out0; } - id =kzalloc (sizeof (struct cami2c ),GFP_KERNEL ); + id =kzalloc (sizeof (*id),GFP_KERNEL );if (!id) { -dev_err (&pdev->dev,"no mem for private data\n" ); ret = -ENOMEM ; goto out0; }
drivers/i2c/busses/i2c-tiny-usb.c +1 -3
@@ -226,10 +226,8 @@ static int i2c_tiny_usb_probe(struct usb_interface *interface,/* allocate memory for our device state and initialize it */ dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (dev ==NULL ) { -dev_err (&interface->dev,"Out of memory\n" ); +if (!dev) goto error; - } dev->usb_dev =usb_get_dev (interface_to_usbdev (interface)); dev->interface = interface;
drivers/infiniband/hw/mlx4/qp.c +9 -9
@@ -530,15 +530,15 @@ static int set_qp_rss(struct mlx4_ib_dev *dev, struct mlx4_ib_rss *rss_ctx,return (-EOPNOTSUPP ); } -if (ucmd->rx_hash_fields_mask & ~(MLX4_IB_RX_HASH_SRC_IPV4 | -MLX4_IB_RX_HASH_DST_IPV4 | -MLX4_IB_RX_HASH_SRC_IPV6 | -MLX4_IB_RX_HASH_DST_IPV6 | -MLX4_IB_RX_HASH_SRC_PORT_TCP | -MLX4_IB_RX_HASH_DST_PORT_TCP | -MLX4_IB_RX_HASH_SRC_PORT_UDP | -MLX4_IB_RX_HASH_DST_PORT_UDP | -MLX4_IB_RX_HASH_INNER )) { +if (ucmd->rx_hash_fields_mask & ~(u64)(MLX4_IB_RX_HASH_SRC_IPV4 | +MLX4_IB_RX_HASH_DST_IPV4 | +MLX4_IB_RX_HASH_SRC_IPV6 | +MLX4_IB_RX_HASH_DST_IPV6 | +MLX4_IB_RX_HASH_SRC_PORT_TCP | +MLX4_IB_RX_HASH_DST_PORT_TCP | +MLX4_IB_RX_HASH_SRC_PORT_UDP | +MLX4_IB_RX_HASH_DST_PORT_UDP | +MLX4_IB_RX_HASH_INNER )) {pr_debug ("RX Hash fields_mask has unsupported mask (0x%llx)\n" , ucmd->rx_hash_fields_mask);return (-EOPNOTSUPP );
drivers/infiniband/hw/mthca/mthca_qp.c +1 -1
@@ -1390,7 +1390,7 @@ int mthca_alloc_sqp(struct mthca_dev *dev,if (mthca_array_get (&dev->qp_table.qp, mqpn)) err = -EBUSY ;else -mthca_array_set (&dev->qp_table.qp, mqpn, qp->sqp); +mthca_array_set (&dev->qp_table.qp, mqpn, qp);spin_unlock_irq (&dev->qp_table.lock);if (err)
drivers/irqchip/irq-bcm6345-l1.c +5 -9
@@ -82,6 +82,7 @@ struct bcm6345_l1_chip { };struct bcm6345_l1_cpu { +struct bcm6345_l1_chip *intc;void __iomem *map_base;unsigned int parent_irq;u32 enable_cache[];
@@ -115,17 +116,11 @@ static inline unsigned int cpu_for_irq(struct bcm6345_l1_chip *intc,static void bcm6345_l1_irq_handle (struct irq_desc *desc) { -struct bcm6345_l1_chip *intc =irq_desc_get_handler_data (desc); -struct bcm6345_l1_cpu *cpu; +struct bcm6345_l1_cpu *cpu =irq_desc_get_handler_data (desc); +struct bcm6345_l1_chip *intc = cpu->intc;struct irq_chip *chip =irq_desc_get_chip (desc);unsigned int idx; -#ifdef CONFIG_SMP - cpu = intc->cpus[cpu_logical_map (smp_processor_id ())]; -#else - cpu = intc->cpus[0 ]; -#endif -chained_irq_enter (chip, desc);for (idx =0 ; idx < intc->n_words; idx++) {
@@ -257,6 +252,7 @@ static int __init bcm6345_l1_init_one(struct device_node *dn,if (!cpu)return -ENOMEM ; + cpu->intc = intc; cpu->map_base =ioremap (res.start, sz);if (!cpu->map_base)return -ENOMEM ;
@@ -272,7 +268,7 @@ static int __init bcm6345_l1_init_one(struct device_node *dn,return -EINVAL ; }irq_set_chained_handler_and_data (cpu->parent_irq, - bcm6345_l1_irq_handle, intc); + bcm6345_l1_irq_handle, cpu);return 0 ; }
drivers/irqchip/irq-gic-v3-its.c +46 -29
116 lines not on this page · raw message
drivers/isdn/hardware/mISDN/hfcpci.c +5 -5
@@ -839,7 +839,7 @@ hfcpci_fill_fifo(struct bchannel *bch) *z1t =cpu_to_le16 (new_z1);/* now send data */ if (bch->tx_idx < bch->tx_skb->len)return ; -dev_kfree_skb (bch->tx_skb); +dev_kfree_skb_any (bch->tx_skb);if (get_next_bframe (bch)) goto next_t_frame;return ;
@@ -895,7 +895,7 @@ hfcpci_fill_fifo(struct bchannel *bch) } bz->za[new_f1].z1 =cpu_to_le16 (new_z1);/* for next buffer */ bz->f1 = new_f1;/* next frame */ -dev_kfree_skb (bch->tx_skb); +dev_kfree_skb_any (bch->tx_skb);get_next_bframe (bch); }
@@ -1119,7 +1119,7 @@ tx_birq(struct bchannel *bch)if (bch->tx_skb && bch->tx_idx < bch->tx_skb->len)hfcpci_fill_fifo (bch);else { -dev_kfree_skb (bch->tx_skb); +dev_kfree_skb_any (bch->tx_skb);if (get_next_bframe (bch))hfcpci_fill_fifo (bch); }
@@ -2277,7 +2277,7 @@ _hfcpci_softirq(struct device *dev, void *unused)return 0 ;if (hc->hw.int_m2 &HFCPCI_IRQ_ENABLE ) { -spin_lock (&hc->lock); +spin_lock_irq (&hc->lock); bch =Sel_BCS (hc, hc->hw.bswapped ?2 :1 );if (bch && bch->state ==ISDN_P_B_RAW ) {/* B1 rx&tx */ main_rec_hfcpci (bch);
@@ -2288,7 +2288,7 @@ _hfcpci_softirq(struct device *dev, void *unused)main_rec_hfcpci (bch);tx_birq (bch); } -spin_unlock (&hc->lock); +spin_unlock_irq (&hc->lock); }return 0 ; }
drivers/md/dm-cache-policy-smq.c +18 -10
@@ -854,7 +854,13 @@ struct smq_policy {struct background_tracker *bg_work; -bool migrations_allowed; + bool migrations_allowed:1; + +/* +* If this is set the policy will try and clean the whole cache +* even if the device is not idle. +*/ + bool cleaner:1; };/*----------------------------------------------------------------*/
@@ -1133,7 +1139,7 @@ static bool clean_target_met(struct smq_policy *mq, bool idle)* Cache entries may not be populated. So we cannot rely on the * size of the clean queue. */ -if (idle) { +if (idle || mq->cleaner) {/* * We'd like to clean everything. */
@@ -1716,11 +1722,9 @@ static void calc_hotspot_params(sector_t origin_size, *hotspot_block_size /=2u ; } -static struct dm_cache_policy *__smq_create (dm_cblock_t cache_size, -sector_t origin_size, -sector_t cache_block_size, -bool mimic_mq, -bool migrations_allowed) +static struct dm_cache_policy * +__smq_create (dm_cblock_t cache_size,sector_t origin_size,sector_t cache_block_size, +bool mimic_mq,bool migrations_allowed,bool cleaner) {unsigned i;unsigned nr_sentinels_per_queue =2u *NR_CACHE_LEVELS ;
@@ -1807,6 +1811,7 @@ static struct dm_cache_policy *__smq_create(dm_cblock_t cache_size, goto bad_btracker; mq->migrations_allowed = migrations_allowed; + mq->cleaner = cleaner;return &mq->policy;
@@ -1830,21 +1835,24 @@ static struct dm_cache_policy *smq_create(dm_cblock_t cache_size,sector_t origin_size, sector_t cache_block_size) { - return __smq_create(cache_size, origin_size, cache_block_size, false, true); + return __smq_create(cache_size, origin_size, cache_block_size, +false ,true ,false ); }static struct dm_cache_policy *mq_create (dm_cblock_t cache_size,sector_t origin_size,sector_t cache_block_size) { -return __smq_create (cache_size, origin_size, cache_block_size, true, true); +return __smq_create (cache_size, origin_size, cache_block_size, + true, true, false); }static struct dm_cache_policy *cleaner_create (dm_cblock_t cache_size,sector_t origin_size,sector_t cache_block_size) { -return __smq_create (cache_size, origin_size, cache_block_size, false, false); +return __smq_create (cache_size, origin_size, cache_block_size, + false, false, true); }/*----------------------------------------------------------------*/
drivers/md/dm-raid.c +9 -11
@@ -3258,8 +3258,7 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv) r =md_start (&rs->md);if (r) { ti->error ="Failed to start raid array" ; -mddev_unlock (&rs->md); - goto bad_md_start; + goto bad_unlock; }/* If raid4/5/6 journal mode explicitly requested (only possible with journal dev) -> set it */
@@ -3267,8 +3266,7 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv) r =r5c_journal_mode_set (&rs->md, rs->journal_dev.mode);if (r) { ti->error ="Failed to set raid4/5/6 journal mode" ; -mddev_unlock (&rs->md); - goto bad_journal_mode_set; + goto bad_unlock; } }
@@ -3279,14 +3277,14 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv)if (rs_is_raid456 (rs)) { r =rs_set_raid456_stripe_cache (rs);if (r) - goto bad_stripe_cache; + goto bad_unlock; }/* Now do an early reshape check */ if (test_bit (RT_FLAG_RESHAPE_RS , &rs->runtime_flags)) { r =rs_check_reshape (rs);if (r) - goto bad_check_reshape; + goto bad_unlock;/* Restore new, ctr requested layout to perform check */ rs_config_restore (rs, &rs_layout);
@@ -3295,7 +3293,7 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv) r = rs->md.pers->check_reshape (&rs->md);if (r) { ti->error ="Reshape check failed" ; - goto bad_check_reshape; + goto bad_unlock; } } }
@@ -3306,11 +3304,9 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv)mddev_unlock (&rs->md);return 0 ; -bad_md_start: -bad_journal_mode_set: -bad_stripe_cache: -bad_check_reshape: +bad_unlock:md_stop (&rs->md); +mddev_unlock (&rs->md); bad:raid_set_free (rs);
@@ -3321,7 +3317,9 @@ static void raid_dtr(struct dm_target *ti) {struct raid_set *rs = ti->private; +mddev_lock_nointr (&rs->md);md_stop (&rs->md); +mddev_unlock (&rs->md);raid_set_free (rs); }
drivers/md/md.c +2 -0
@@ -6316,6 +6316,8 @@ static void __md_stop(struct mddev *mddev)void md_stop (struct mddev *mddev) { +lockdep_assert_held (&mddev->reconfig_mutex); +/* stop the array and free an attached data structures. * This is called from dm-raid */
drivers/mtd/nand/raw/fsl_upm.c +1 -1
@@ -136,7 +136,7 @@ static int fun_exec_op(struct nand_chip *chip, const struct nand_operation *op,unsigned int i;int ret; -if (op->cs >NAND_MAX_CHIPS ) +if (op->cs >=NAND_MAX_CHIPS )return -EINVAL ;if (check_only)
drivers/mtd/nand/raw/meson_nand.c +1 -2
@@ -1180,7 +1180,6 @@ static int meson_nand_attach_chip(struct nand_chip *nand)struct meson_nfc *nfc =nand_get_controller_data (nand);struct meson_nfc_nand_chip *meson_chip =to_meson_nand (nand);struct mtd_info *mtd =nand_to_mtd (nand); -int nsectors = mtd->writesize /1024 ;int ret;if (!mtd->name) {
@@ -1198,7 +1197,7 @@ static int meson_nand_attach_chip(struct nand_chip *nand) nand->options |=NAND_NO_SUBPAGE_WRITE ; ret =nand_ecc_choose_conf (nand, nfc->data->ecc_caps, - mtd->oobsize -2 * nsectors); + mtd->oobsize -2 );if (ret) {dev_err (nfc->dev,"failed to ECC init\n" );return -EINVAL ;
drivers/mtd/nand/raw/omap_elm.c +12 -12
@@ -174,17 +174,17 @@ static void elm_load_syndrome(struct elm_info *info,switch (info->bch_type) {case BCH8_ECC :/* syndrome fragment 0 = ecc[9-12B] */ - val =cpu_to_be32 (*(u32 *) &ecc[9 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[9 ]);elm_write_reg (info, offset, val);/* syndrome fragment 1 = ecc[5-8B] */ offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[5 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[5 ]);elm_write_reg (info, offset, val);/* syndrome fragment 2 = ecc[1-4B] */ offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[1 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[1 ]);elm_write_reg (info, offset, val);/* syndrome fragment 3 = ecc[0B] */
@@ -194,35 +194,35 @@ static void elm_load_syndrome(struct elm_info *info,break ;case BCH4_ECC :/* syndrome fragment 0 = ecc[20-52b] bits */ - val = (cpu_to_be32 (*(u32 *) &ecc[3 ]) >>4 ) | + val = ((__force u32 )cpu_to_be32 (*(u32 *)&ecc[3 ]) >>4 ) | ((ecc[2 ] &0xf ) <<28 );elm_write_reg (info, offset, val);/* syndrome fragment 1 = ecc[0-20b] bits */ offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[0 ]) >>12 ; + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[0 ]) >>12 ;elm_write_reg (info, offset, val);break ;case BCH16_ECC : - val =cpu_to_be32 (*(u32 *) &ecc[22 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[22 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[18 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[18 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[14 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[14 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[10 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[10 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[6 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[6 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[2 ]); + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[2 ]);elm_write_reg (info, offset, val); offset +=4 ; - val =cpu_to_be32 (*(u32 *) &ecc[0 ]) >>16 ; + val = (__force u32 )cpu_to_be32 (*(u32 *)&ecc[0 ]) >>16 ;elm_write_reg (info, offset, val);break ;default :
drivers/mtd/nand/spi/toshiba.c +2 -2
@@ -73,7 +73,7 @@ static int tx58cxgxsxraix_ecc_get_status(struct spinand_device *spinand, {struct nand_device *nand =spinand_to_nand (spinand);u8 mbf =0 ; -struct spi_mem_op op =SPINAND_GET_FEATURE_OP (0x30 , &mbf); +struct spi_mem_op op =SPINAND_GET_FEATURE_OP (0x30 , spinand->scratchbuf);switch (status &STATUS_ECC_MASK ) {case STATUS_ECC_NO_BITFLIPS :
@@ -92,7 +92,7 @@ static int tx58cxgxsxraix_ecc_get_status(struct spinand_device *spinand,if (spi_mem_exec_op (spinand->spimem, &op))return nanddev_get_ecc_requirements (nand)->strength; - mbf >>=4 ; + mbf = *(spinand->scratchbuf) >>4 ;if (WARN_ON (mbf >nanddev_get_ecc_requirements (nand)->strength || !mbf))return nanddev_get_ecc_requirements (nand)->strength;
drivers/net/Makefile +1 -1
@@ -29,7 +29,7 @@ obj-$(CONFIG_TUN) += tun.o obj-$(CONFIG_TAP) += tap.o obj-$(CONFIG_VETH) += veth.o obj-$(CONFIG_VIRTIO_NET) += virtio_net.o -obj-$(CONFIG_VXLAN) += vxlan.o +obj-$(CONFIG_VXLAN) += vxlan/ obj-$(CONFIG_GENEVE) += geneve.o obj-$(CONFIG_BAREUDP) += bareudp.o obj-$(CONFIG_GTP) += gtp.o
drivers/net/bonding/bond_main.c +5 -0
@@ -1442,6 +1442,11 @@ static void bond_setup_by_slave(struct net_device *bond_dev,memcpy (bond_dev->broadcast, slave_dev->broadcast, slave_dev->addr_len); + +if (slave_dev->flags &IFF_POINTOPOINT ) { + bond_dev->flags &= ~(IFF_BROADCAST |IFF_MULTICAST ); + bond_dev->flags |= (IFF_POINTOPOINT |IFF_NOARP ); + } }/* On bonding slaves other than the currently active slave, suppress
drivers/net/can/usb/gs_usb.c +2 -0
@@ -732,6 +732,8 @@ static int gs_can_close(struct net_device *netdev)usb_kill_anchored_urbs (&dev->tx_submitted);atomic_set (&dev->active_tx_urbs,0 ); + dev->can.state =CAN_STATE_STOPPED ; +/* reset the device */ rc =gs_cmd_reset (dev);if (rc <0 )
drivers/net/dsa/bcm_sf2.c +6 -2
@@ -1301,7 +1301,9 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev)if (IS_ERR (priv->clk))return PTR_ERR (priv->clk); -clk_prepare_enable (priv->clk); + ret =clk_prepare_enable (priv->clk); +if (ret) +return ret; priv->clk_mdiv =devm_clk_get_optional (&pdev->dev,"sw_switch_mdiv" );if (IS_ERR (priv->clk_mdiv)) {
@@ -1309,7 +1311,9 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev) goto out_clk; } -clk_prepare_enable (priv->clk_mdiv); + ret =clk_prepare_enable (priv->clk_mdiv); +if (ret) + goto out_clk; ret =bcm_sf2_sw_rst (priv);if (ret) {
drivers/net/ethernet/atheros/atl1e/atl1e_main.c +5 -2
@@ -1642,8 +1642,11 @@ static int atl1e_tso_csum(struct atl1e_adapter *adapter, real_len = (((unsigned char *)ip_hdr (skb) - skb->data) +ntohs (ip_hdr (skb)->tot_len)); -if (real_len < skb->len) -pskb_trim (skb, real_len); +if (real_len < skb->len) { + err =pskb_trim (skb, real_len); +if (err) +return err; + } hdr_len = (skb_transport_offset (skb) +tcp_hdrlen (skb));if (unlikely (skb->len == hdr_len)) {
drivers/net/ethernet/emulex/benet/be_main.c +2 -1
@@ -1139,7 +1139,8 @@ static struct sk_buff *be_lancer_xmit_workarounds(struct be_adapter *adapter, (lancer_chip(adapter) || BE3_chip(adapter) || skb_vlan_tag_present(skb)) && is_ipv4_pkt(skb)) { ip = (struct iphdr *)ip_hdr (skb); -pskb_trim (skb, eth_hdr_len +ntohs (ip->tot_len)); +if (unlikely (pskb_trim (skb, eth_hdr_len +ntohs (ip->tot_len)))) + goto tx_drop; }/* If vlan tag is already inlined in the packet, skip HW VLAN
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c +47 -13
93 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +2 -1
@@ -651,6 +651,7 @@ static void hclge_tm_tc_info_init(struct hclge_dev *hdev)static void hclge_tm_pg_info_init (struct hclge_dev *hdev) {#define BW_PERCENT 100 +#define DEFAULT_BW_WEIGHT 1u8 i;
@@ -672,7 +673,7 @@ static void hclge_tm_pg_info_init(struct hclge_dev *hdev)for (k =0 ; k < hdev->tm_info.num_tc; k++) hdev->tm_info.pg_info[i].tc_dwrr[k] =BW_PERCENT ;for (; k <HNAE3_MAX_TC ; k++) - hdev->tm_info.pg_info[i].tc_dwrr[k] =0 ; + hdev->tm_info.pg_info[i].tc_dwrr[k] =DEFAULT_BW_WEIGHT ; } }
drivers/net/ethernet/intel/i40e/i40e_debugfs.c +1 -1
@@ -1839,7 +1839,7 @@ void i40e_dbg_pf_exit(struct i40e_pf *pf)void i40e_dbg_init (void ) { i40e_dbg_root =debugfs_create_dir (i40e_driver_name,NULL ); -if (!i40e_dbg_root) +if (IS_ERR (i40e_dbg_root))pr_info ("init of debugfs failed\n" ); }
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c +14 -12
@@ -1135,16 +1135,21 @@ ice_cfg_fdir_xtrct_seq(struct ice_pf *pf, struct ethtool_rx_flow_spec *fsp, ICE_FLOW_FLD_OFF_INVAL); } -/* add filter for outer headers */ fltr_idx =ice_ethtool_flow_to_fltr (fsp->flow_type & ~FLOW_EXT ); + +assign_bit (fltr_idx, hw->fdir_perfect_fltr, perfect_filter); + +/* add filter for outer headers */ ret =ice_fdir_set_hw_fltr_rule (pf, seg, fltr_idx,ICE_FD_HW_SEG_NON_TUN ); -if (ret == -EEXIST ) -/* Rule already exists, free memory and continue */ -devm_kfree (dev, seg); -else if (ret) +if (ret == -EEXIST ) { +/* Rule already exists, free memory and count as success */ + ret =0 ; + goto err_exit; + }else if (ret) {/* could not write filter, free memory */ goto err_exit; + }/* make tunneled filter HW entries if possible */ memcpy (&tun_seg[1 ], seg,sizeof (*seg));
@@ -1159,18 +1164,13 @@ ice_cfg_fdir_xtrct_seq(struct ice_pf *pf, struct ethtool_rx_flow_spec *fsp,devm_kfree (dev, tun_seg); } -if (perfect_filter) -set_bit (fltr_idx, hw->fdir_perfect_fltr); -else -clear_bit (fltr_idx, hw->fdir_perfect_fltr); -return ret; err_exit:devm_kfree (dev, tun_seg);devm_kfree (dev, seg); -return -EOPNOTSUPP ; +return ret; }/**
@@ -1680,7 +1680,9 @@ int ice_add_fdir_ethtool(struct ice_vsi *vsi, struct ethtool_rxnfc *cmd) }/* input struct is added to the HW filter list */ -ice_fdir_update_list_entry (pf, input, fsp->location); + ret =ice_fdir_update_list_entry (pf, input, fsp->location); +if (ret) + goto release_lock; ret =ice_fdir_write_all_fltr (pf, input, true);if (ret)
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +1 -1
@@ -8409,7 +8409,7 @@ static void ixgbe_atr(struct ixgbe_ring *ring,struct ixgbe_adapter *adapter = q_vector->adapter;if (unlikely (skb_tail_pointer (skb) < hdr.network + -VXLAN_HEADROOM )) +vxlan_headroom (0 )))return ;/* verify the port is recognized as VXLAN */
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.c +3 -1
@@ -121,7 +121,9 @@ static int mlx5e_ipsec_remove_trailer(struct sk_buff *skb, struct xfrm_state *x) trailer_len = alen + plen +2 ; -pskb_trim (skb, skb->len - trailer_len); + ret =pskb_trim (skb, skb->len - trailer_len); +if (unlikely (ret)) +return ret;if (skb->protocol ==htons (ETH_P_IP )) { ipv4hdr->tot_len =htons (ntohs (ipv4hdr->tot_len) - trailer_len);ip_send_check (ipv4hdr);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +83 -20
180 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_cmd.c +3 -2
@@ -425,11 +425,12 @@ int mlx5dr_cmd_create_reformat_ctx(struct mlx5_core_dev *mdev, err =mlx5_cmd_exec (mdev, in, inlen, out,sizeof (out));if (err) -return err; + goto err_free_in; *reformat_id =MLX5_GET (alloc_packet_reformat_context_out, out, packet_reformat_id); -kvfree (in); +err_free_in: +kvfree (in);return err; }
drivers/net/ethernet/socionext/netsec.c +11 -0
@@ -1845,6 +1845,17 @@ static int netsec_of_probe(struct platform_device *pdev,return err; } +/* +* SynQuacer is physically configured with TX and RX delays +* but the standard firmware claimed otherwise for a long +* time, ignore it. +*/ +if (of_machine_is_compatible ("socionext,developer-box" ) && + priv->phy_interface !=PHY_INTERFACE_MODE_RGMII_ID ) { +dev_warn (&pdev->dev,"Outdated firmware reports incorrect PHY mode, overriding\n" ); + priv->phy_interface =PHY_INTERFACE_MODE_RGMII_ID ; + } + priv->phy_np =of_parse_phandle (pdev->dev.of_node,"phy-handle" ,0 );if (!priv->phy_np) {dev_err (&pdev->dev,"missing required property 'phy-handle'\n" );
drivers/net/ethernet/xilinx/ll_temac_main.c +8 -8
@@ -1550,15 +1550,15 @@ static int temac_probe(struct platform_device *pdev) }/* Error handle returned DMA RX and TX interrupts */ -if (lp->rx_irq <0 ) { -if (lp->rx_irq != -EPROBE_DEFER ) -dev_err (&pdev->dev,"could not get DMA RX irq\n" ); -return lp->rx_irq; +if (lp->rx_irq <=0 ) { + rc = lp->rx_irq ?: -EINVAL ; +return dev_err_probe (&pdev->dev, rc, +"could not get DMA RX irq\n" ); } -if (lp->tx_irq <0 ) { -if (lp->tx_irq != -EPROBE_DEFER ) -dev_err (&pdev->dev,"could not get DMA TX irq\n" ); -return lp->tx_irq; +if (lp->tx_irq <=0 ) { + rc = lp->tx_irq ?: -EINVAL ; +return dev_err_probe (&pdev->dev, rc, +"could not get DMA TX irq\n" ); }if (temac_np) {
drivers/net/phy/marvell10g.c +7 -0
@@ -263,6 +263,13 @@ static int mv3310_power_up(struct phy_device *phydev) ret =phy_clear_bits_mmd (phydev,MDIO_MMD_VEND2 ,MV_V2_PORT_CTRL ,MV_V2_PORT_CTRL_PWRDOWN ); +/* Sometimes, the power down bit doesn't clear immediately, and +* a read of this register causes the bit not to clear. Delay +* 100us to allow the PHY to come out of power down mode before +* the next access. +*/ +udelay (100 ); +if (phydev->drv->phy_id !=MARVELL_PHY_ID_88X3310 || priv->firmware_ver <0x00030000 )return ret;
drivers/net/tap.c +1 -1
@@ -523,7 +523,7 @@ static int tap_open(struct inode *inode, struct file *file) q->sock.state =SS_CONNECTED ; q->sock.file = file; q->sock.ops = &tap_socket_ops; -sock_init_data_uid (&q->sock, &q->sk, inode->i_uid); +sock_init_data_uid (&q->sock, &q->sk,current_fsuid ()); q->sk.sk_write_space = tap_sock_write_space; q->sk.sk_destruct = tap_sock_destruct; q->flags =IFF_VNET_HDR |IFF_NO_PI |IFF_TAP ;
drivers/net/team/team.c +9 -0
@@ -2130,6 +2130,15 @@ static void team_setup_by_port(struct net_device *dev, dev->mtu = port_dev->mtu;memcpy (dev->broadcast, port_dev->broadcast, port_dev->addr_len);eth_hw_addr_inherit (dev, port_dev); + +if (port_dev->flags &IFF_POINTOPOINT ) { + dev->flags &= ~(IFF_BROADCAST |IFF_MULTICAST ); + dev->flags |= (IFF_POINTOPOINT |IFF_NOARP ); + }else if ((port_dev->flags & (IFF_BROADCAST |IFF_MULTICAST )) == + (IFF_BROADCAST |IFF_MULTICAST )) { + dev->flags |= (IFF_BROADCAST |IFF_MULTICAST ); + dev->flags &= ~(IFF_POINTOPOINT |IFF_NOARP ); + } } static int team_dev_type_check_change(struct net_device *dev,
drivers/net/tun.c +1 -1
@@ -3457,7 +3457,7 @@ static int tun_chr_open(struct inode *inode, struct file * file) tfile->socket.file = file; tfile->socket.ops = &tun_socket_ops; -sock_init_data_uid (&tfile->socket, &tfile->sk, inode->i_uid); +sock_init_data_uid (&tfile->socket, &tfile->sk,current_fsuid ()); tfile->sk.sk_write_space = tun_sock_write_space; tfile->sk.sk_sndbuf =INT_MAX ;
drivers/net/usb/cdc_ether.c +21 -0
@@ -604,9 +604,23 @@ static const struct usb_device_id products[] = { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE, .idVendor = 0x04DD, + .idProduct =0x8005 ,/* A-300 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = 0, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, .idProduct = 0x8006, /* B-500/SL-5600 */ZAURUS_MASTER_INTERFACE , .driver_info = 0, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, + .idProduct = 0x8006, /* B-500/SL-5600 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = 0, }, { .match_flags =USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE,
@@ -614,6 +628,13 @@ static const struct usb_device_id products[] = { .idProduct = 0x8007, /* C-700 */ZAURUS_MASTER_INTERFACE , .driver_info = 0, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, + .idProduct = 0x8007, /* C-700 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = 0, }, { .match_flags =USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE,
drivers/net/usb/usbnet.c +6 -0
@@ -1738,6 +1738,10 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) }else if (!info->in || !info->out) status =usbnet_get_endpoints (dev, udev);else { +u8 ep_addrs[3 ] = { + info->in +USB_DIR_IN , info->out +USB_DIR_OUT ,0 + }; + dev->in =usb_rcvbulkpipe (xdev, info->in); dev->out =usb_sndbulkpipe (xdev, info->out);if (!(info->flags &FLAG_NO_SETINT ))
@@ -1747,6 +1751,8 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)else status =0 ; +if (status ==0 && !usb_check_bulk_endpoints (udev, ep_addrs)) + status = -EINVAL ; }if (status >=0 && dev->status) status =init_status (dev, udev);
drivers/net/usb/zaurus.c +21 -0
@@ -289,9 +289,23 @@ static const struct usb_device_id products [] = { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE, .idVendor = 0x04DD, + .idProduct =0x8005 ,/* A-300 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = (unsigned long)&bogus_mdlm_info, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, .idProduct = 0x8006, /* B-500/SL-5600 */ZAURUS_MASTER_INTERFACE , .driver_info = ZAURUS_PXA_INFO, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, + .idProduct = 0x8006, /* B-500/SL-5600 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = (unsigned long)&bogus_mdlm_info, }, { .match_flags =USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE,
@@ -299,6 +313,13 @@ static const struct usb_device_id products [] = { .idProduct = 0x8007, /* C-700 */ZAURUS_MASTER_INTERFACE , .driver_info = ZAURUS_PXA_INFO, +}, { + .match_flags =USB_DEVICE_ID_MATCH_INT_INFO + |USB_DEVICE_ID_MATCH_DEVICE , + .idVendor = 0x04DD, + .idProduct = 0x8007, /* C-700 */ +ZAURUS_FAKE_INTERFACE , + .driver_info = (unsigned long)&bogus_mdlm_info, }, { .match_flags =USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_DEVICE,
drivers/net/virtio_net.c +2 -2
@@ -3220,6 +3220,8 @@ static int virtnet_probe(struct virtio_device *vdev) } } +_virtnet_set_queues (vi, vi->curr_queue_pairs); +/* serialize netdev register + virtio_device_ready() with ndo_open() */ rtnl_lock ();
@@ -3240,8 +3242,6 @@ static int virtnet_probe(struct virtio_device *vdev) goto free_unregister_netdev; } -virtnet_set_queues (vi, vi->curr_queue_pairs); -/* Assume link up if device can't report link status, otherwise get link status from config. */ netif_carrier_off (dev);
drivers/net/vxlan.c deleted +0 -4829
86 lines not on this page · raw message
drivers/net/vxlan/vxlan_core.c new file +4826 -0
4,826 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mac80211.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7603/eeprom.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7615/dma.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c +11 -11
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x0/init.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x0/phy.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x02_eeprom.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/init.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/pci/pcie/aspm.c +37 -18
55 lines not on this page · raw message
drivers/phy/hisilicon/phy-hisi-inno-usb2.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c +52 -34
86 lines not on this page · raw message
drivers/staging/rtl8712/rtl871x_ioctl_linux.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8712/rtl871x_xmit.c +36 -10
46 lines not on this page · raw message
drivers/usb/serial/usb-serial-simple.c +40 -33
73 lines not on this page · raw message
fs/dlm/plock.c +57 -43
100 lines not on this page · raw message
fs/exfat/dir.c +47 -23
70 lines not on this page · raw message
kernel/trace/trace.c +73 -3
76 lines not on this page · raw message
net/ipv4/tcp_metrics.c +44 -26
70 lines not on this page · raw message
net/sched/cls_u32.c +50 -7
57 lines not on this page · raw message
net/sched/sch_mqprio.c +93 -51
144 lines not on this page · raw message
tools/perf/tests/shell/test_uprobe_from_different_cu.sh +7 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/config +1 -0
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.