Linux 5.10.8
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.8 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/Kconfig | 6 arch/arm/mach-omap2/omap_device.c | 8 arch/arm64/include/asm/processor.h | 3 arch/arm64/kernel/cpufeature.c | 2 arch/arm64/kvm/sys_regs.c | 4 arch/arm64/mm/init.c | 2 arch/powerpc/kernel/head_book3s_32.S | 9 arch/x86/Kconfig | 1 block/genhd.c | 9 drivers/base/regmap/regmap-debugfs.c | 9 drivers/block/Kconfig | 1 drivers/block/rnbd/rnbd-clt.c | 3 drivers/cpufreq/powernow-k8.c | 9 drivers/dma/dw-edma/dw-edma-core.c | 4 drivers/dma/mediatek/mtk-hsdma.c | 1 drivers/dma/milbeaut-xdmac.c | 4 drivers/dma/xilinx/xilinx_dma.c | 11 - drivers/gpu/drm/i915/display/intel_display_types.h | 3 drivers/gpu/drm/i915/display/intel_dp.c | 8 drivers/gpu/drm/i915/i915_drv.c | 5 drivers/gpu/drm/i915/i915_drv.h | 3 drivers/gpu/drm/panfrost/panfrost_job.c | 13 - drivers/hid/wacom_sys.c | 35 ++- drivers/i2c/busses/i2c-i801.c | 2 drivers/i2c/busses/i2c-mt65xx.c | 27 ++ drivers/i2c/busses/i2c-sprd.c | 8 drivers/infiniband/hw/hns/hns_roce_ah.c | 11 - drivers/interconnect/imx/imx.c | 1 drivers/interconnect/qcom/Kconfig | 23 +- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 2 drivers/iommu/intel/dmar.c | 4 drivers/iommu/intel/irq_remapping.c | 2 drivers/lightnvm/Kconfig | 1 drivers/md/bcache/super.c | 15 + drivers/net/bareudp.c | 22 +- drivers/net/can/Kconfig | 1 drivers/net/can/m_can/m_can.c | 2 drivers/net/can/m_can/tcan4x5x.c | 26 -- drivers/net/dsa/lantiq_gswip.c | 7 drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c | 71 ++---- drivers/net/ethernet/hisilicon/hns3/hclge_mbx.h | 4 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 9 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 2 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 9 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h | 2 drivers/net/ethernet/marvell/mvneta.c | 2 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 + drivers/net/ethernet/marvell/octeontx2/af/cgx.c | 14 + drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c | 5 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 24 +- drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 3 drivers/net/ethernet/mellanox/mlx5/core/lag.c | 11 - drivers/net/ethernet/mellanox/mlx5/core/rdma.c | 2 drivers/net/ethernet/natsemi/macsonic.c | 12 - drivers/net/ethernet/natsemi/xtsonic.c | 7 drivers/net/ethernet/pensando/ionic/ionic_lif.c | 12 - drivers/net/ethernet/qlogic/Kconfig | 1 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 129 +++++++----- drivers/net/usb/cdc_ncm.c | 8 drivers/net/wan/Kconfig | 1 drivers/net/wireless/ath/wil6210/Kconfig | 1 drivers/nvme/host/tcp.c | 12 + drivers/ptp/Kconfig | 2 drivers/regulator/qcom-rpmh-regulator.c | 2 drivers/s390/net/qeth_core.h | 3 drivers/s390/net/qeth_core_main.c | 38 ++- drivers/s390/net/qeth_l2_main.c | 2 drivers/s390/net/qeth_l3_main.c | 4 drivers/scsi/lpfc/lpfc_sli.c | 2 drivers/scsi/ufs/ufshcd.c | 2 drivers/spi/spi-geni-qcom.c | 73 ++++++ drivers/spi/spi-stm32.c | 4 fs/btrfs/btrfs_inode.h | 16 + fs/btrfs/ctree.h | 3 fs/btrfs/dev-replace.c | 2 fs/btrfs/inode.c | 69 ++++-- fs/btrfs/ioctl.c | 2 fs/btrfs/reflink.c | 15 + fs/btrfs/space-info.c | 4 fs/btrfs/tree-log.c | 8 fs/btrfs/xattr.c | 4 fs/io_uring.c | 100 +++++---- fs/notify/fanotify/fanotify_user.c | 17 - fs/zonefs/Kconfig | 1 include/linux/syscalls.h | 24 ++ include/net/xdp_sock.h | 4 include/net/xsk_buff_pool.h | 5 net/8021q/vlan.c | 3 net/can/isotp.c | 1 net/core/skbuff.c | 6 net/ipv4/ip_output.c | 2 net/ipv4/ip_tunnel.c | 11 - net/ipv4/nexthop.c | 6 net/ipv6/ip6_fib.c | 5 net/xdp/xsk.c | 12 - net/xdp/xsk_buff_pool.c | 1 net/xdp/xsk_queue.h | 5 tools/bpf/bpftool/net.c | 1 tools/include/uapi/linux/fscrypt.h | 5 tools/testing/selftests/bpf/Makefile | 3 tools/testing/selftests/net/fib_nexthops.sh | 2 tools/testing/selftests/net/pmtu.sh | 71 ++++++ 103 files changed, 829 insertions(+), 375 deletions(-)
Alan Maguire (1):
bpftool: Fix compilation failure for net.o with older glibc
Aleksander Jan Bajkowski (1):
net: dsa: lantiq_gswip: Exclude RMII from modes that report 1 GbE
Andreas Kemnade (1):
ARM: OMAP2+: omap_device: fix idling of devices during probe
Arnaldo Carvalho de Melo (1):
tools headers UAPI: Sync linux/fscrypt.h with the kernel sources
Arnd Bergmann (10):
scsi: ufs: Fix -Wsometimes-uninitialized warning
can: kvaser_pciefd: select CONFIG_CRC32
interconnect: qcom: fix rpmh link failures
qed: select CONFIG_CRC32
phy: dp83640: select CONFIG_CRC32
wil6210: select CONFIG_CRC32
block: rsxx: select CONFIG_CRC32
lightnvm: select CONFIG_CRC32
zonefs: select CONFIG_CRC32
wan: ds26522: select CONFIG_BITREVERSE
Aya Levin (1):
net/mlx5e: ethtool, Fix restriction of autoneg with 56G
Ayush Sawal (7):
chtls: Fix hardware tid leak
chtls: Remove invalid set_tcb call
chtls: Fix panic when route to peer not configured
chtls: Avoid unnecessary freeing of oreq pointer
chtls: Replace skb_dequeue with skb_peek
chtls: Added a check to avoid NULL pointer dereference
chtls: Fix chtls resources release sequence
Bjorn Andersson (1):
iommu/arm-smmu-qcom: Initialize SCTLR of the bypass context
Boris Brezillon (1):
drm/panfrost: Remove unused variables in panfrost_job_close()
Brian Gerst (1):
fanotify: Fix sys_fanotify_mark() on native x86-32
Chris Wilson (1):
drm/i915/dp: Track pm_qos per connector
Christophe JAILLET (4):
net/sonic: Fix some resource leaks in error handling paths
interconnect: imx: Add a missing of_node_put after of_device_is_available
dmaengine: mediatek: mtk-hsdma: Fix a resource leak in the error handling path of the probe function
dmaengine: milbeaut-xdmac: Fix a resource leak in the error handling path of the probe function
Christophe Leroy (1):
powerpc/32s: Fix RTAS machine check with VMAP stack
Chunyan Zhang (1):
i2c: sprd: use a specific timeout to avoid system hang up issue
Colin Ian King (2):
octeontx2-af: fix memory leak of lmac and lmac->name
cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get()
Coly Li (1):
bcache: set bcache device into read-only mode for BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET
Dan Carpenter (2):
dmaengine: dw-edma: Fix use after free in dw_edma_alloc_chunk()
regmap: debugfs: Fix a reversed if statement in regmap_debugfs_init()
Dinghao Liu (3):
iommu/intel: Fix memleak in intel_irq_remapping_alloc net/mlx5e: Fix memleak in mlx5e_create_l2_table_groups net/mlx5e: Fix two double free cases
Dmitry Baryshkov (1):
regulator: qcom-rpmh-regulator: correct hfsmps515 definition
Douglas Anderson (2):
spi: spi-geni-qcom: Fail new xfers if xfer/cancel/abort pending
spi: spi-geni-qcom: Fix geni_spi_isr() NULL dereference in timeout case
Filipe Manana (2):
btrfs: skip unnecessary searches for xattrs when logging an inode
btrfs: fix deadlock when cloning inline extent and low on free metadata space
Florian Westphal (2):
net: fix pmtu check in nopmtudisc mode
net: ip: always refragment ip defragmented packets
Greg Kroah-Hartman (1):
Linux 5.10.8
Hans de Goede (1):
i2c: i801: Fix the i2c-mux gpiod_lookup_table not being properly terminated
Ido Schimmel (3):
nexthop: Fix off-by-one error in error path
nexthop: Unlink nexthop group entry in error path
selftests: fib_nexthops: Fix wrong mausezahn invocation
Jack Wang (1):
block/rnbd-clt: avoid module unload race with close confirmation
Jakub Kicinski (2):
net: vlan: avoid leaks on register_vlan_dev() failures
net: bareudp: add missing error handling for bareudp_link_config()
James Smart (1):
scsi: lpfc: Fix variable 'vport' set but not used in lpfc_sli4_abts_err_handler()
Jian Shen (1):
net: hns3: fix incorrect handling of sctp6 rss tuple
Josef Bacik (1):
btrfs: shrink delalloc pages instead of full inodes
Jouni K. Seppänen (1):
net: cdc_ncm: correct overhead in delayed_ndp_size
Julian Wiedmann (3):
s390/qeth: fix deadlock during recovery
s390/qeth: fix locking for discipline setup / removal s390/qeth: fix L2 header access in qeth_l3_osa_features_check()
Kamal Mostafa (1):
selftests/bpf: Clarify build error if no vmlinux
Lu Baolu (1):
iommu/vt-d: Fix misuse of ALIGN in qi_flush_piotlb()
Magnus Karlsson (2):
xsk: Fix race in SKB mode transmit with shared cq
xsk: Rollback reservation at NETDEV_TX_BUSY
Maor Dickman (1):
net/mlx5e: In skb build skip setting mark in switchdev mode
Marc Kleine-Budde (2):
can: tcan4x5x: fix bittiming const, use common bittiming from m_can driver
can: m_can: m_can_class_unregister(): remove erroneous m_can_clk_stop()
Marc Zyngier (1):
KVM: arm64: Don't access PMCR_EL0 when no PMU is available
Marek Behún (1):
net: mvneta: fix error message when MTU too large for XDP
Mark Zhang (2):
net/mlx5: Use port_num 1 instead of 0 when delete a RoCE address net/mlx5: Check if lag is supported before creating one
Matthew Wilcox (Oracle) (1):
io_uring: Fix return value from alloc_fixed_file_ref_node
Ming Lei (1):
block: fix use-after-free in disk_part_iter_next
Nicolas Saenz Julienne (1):
arm64: mm: Fix ARCH_LOW_ADDRESS_LIMIT when !CONFIG_ZONE_DMA
Oliver Hartkopp (1):
can: isotp: isotp_getname(): fix kernel information leak
Pavel Begunkov (3):
io_uring: synchronise IOPOLL on task_submit fail
io_uring: limit {io|sq}poll submit locking scope
io_uring: patch up IOPOLL overflow_flush sync
Petr Machata (1):
nexthop: Bounce NHA_GATEWAY in FDB nexthop groups
Ping Cheng (1):
HID: wacom: Fix memory leakage caused by kfifo_alloc
Qii Wang (1):
i2c: mediatek: Fix apdma and i2c hand-shake timeout
Randy Dunlap (1):
ptp: ptp_ines: prevent build when HAS_IOMEM is not set
Roman Guskov (1):
spi: stm32: FIFO threshold level - fix align packet size
Sagi Grimberg (1):
nvme-tcp: Fix possible race of io_work and direct send
Samuel Holland (4):
net: stmmac: dwmac-sun8i: Fix probe error handling
net: stmmac: dwmac-sun8i: Balance internal PHY resource references
net: stmmac: dwmac-sun8i: Balance internal PHY power
net: stmmac: dwmac-sun8i: Balance syscon (de)initialization
Sean Tranchetti (2):
net: ipv6: fib: flush exceptions when purging route
tools: selftests: add test for changing routes with PTMU exceptions
Shannon Nelson (1):
ionic: start queues before announcing link up
Shannon Zhao (1):
arm64: cpufeature: remove non-exist CONFIG_KVM_ARM_HOST
Shravya Kumbham (3):
dmaengine: xilinx_dma: check dma_async_device_register return value
dmaengine: xilinx_dma: fix incompatible param warning in _child_probe()
dmaengine: xilinx_dma: fix mixed_enum_type coverity warning
Stefan Chulski (1):
net: mvpp2: disable force link UP during port init procedure
Steven Price (1):
drm/panfrost: Don't corrupt the queue mutex on open/close
Vasily Averin (1):
net: drop bogus skb with CHECKSUM_PARTIAL and offset beyond end of trimmed packet
Weihang Li (1):
RDMA/hns: Avoid filling sl in high 3 bits of vlan_id
Xiaolei Wang (1):
regmap: debugfs: Fix a memory leak when calling regmap_attach_dev
Yonglong Liu (1):
net: hns3: fix a phy loopback fail issue
Yufeng Mo (1):
net: hns3: fix the number of queues actually used by ARQ
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 7 +SUBLEVEL = 8 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/Kconfig +6 -0
@@ -1053,6 +1053,12 @@ config ARCH_WANT_LD_ORPHAN_WARN by the linker, since the locations of such sections can change between linker versions. +config ARCH_SPLIT_ARG64 + bool + help + If a 32-bit architecture requires 64-bit arguments to be split into + pairs of 32-bit arguments, select this option. + source "kernel/gcov/Kconfig" source "scripts/gcc-plugins/Kconfig"
arch/arm/mach-omap2/omap_device.c +5 -3
@@ -230,10 +230,12 @@ static int _omap_device_notifier_call(struct notifier_block *nb,break ;case BUS_NOTIFY_BIND_DRIVER : od =to_omap_device (pdev); -if (od && (od->_state ==OMAP_DEVICE_STATE_ENABLED ) && -pm_runtime_status_suspended (dev)) { +if (od) { od->_driver_status =BUS_NOTIFY_BIND_DRIVER ; -pm_runtime_set_active (dev); +if (od->_state ==OMAP_DEVICE_STATE_ENABLED && +pm_runtime_status_suspended (dev)) { +pm_runtime_set_active (dev); + } }break ;case BUS_NOTIFY_ADD_DEVICE :
arch/arm64/include/asm/processor.h +2 -1
@@ -96,7 +96,8 @@#endif /* CONFIG_ARM64_FORCE_52BIT */ extern phys_addr_t arm64_dma_phys_limit; -#define ARCH_LOW_ADDRESS_LIMIT (arm64_dma_phys_limit - 1) +extern phys_addr_t arm64_dma32_phys_limit; +#define ARCH_LOW_ADDRESS_LIMIT ((arm64_dma_phys_limit ? : arm64_dma32_phys_limit) - 1)struct debug_info {#ifdef CONFIG_HAVE_HW_BREAKPOINT
arch/arm64/kernel/cpufeature.c +1 -1
@@ -2552,7 +2552,7 @@ static void verify_hyp_capabilities(void)int parange, ipa_max;unsigned int safe_vmid_bits, vmid_bits; -if (!IS_ENABLED (CONFIG_KVM ) || !IS_ENABLED (CONFIG_KVM_ARM_HOST )) +if (!IS_ENABLED (CONFIG_KVM ))return ; safe_mmfr1 =read_sanitised_ftr_reg (SYS_ID_AA64MMFR1_EL1 );
arch/arm64/kvm/sys_regs.c +4 -0
@@ -663,6 +663,10 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) {u64 pmcr, val; +/* No PMU available, PMCR_EL0 may UNDEF... */ +if (!kvm_arm_support_pmu_v3 ()) +return ; + pmcr =read_sysreg (pmcr_el0);/* * Writable bits of PMCR_EL0 (ARMV8_PMU_PMCR_MASK) are reset to UNKNOWN
arch/arm64/mm/init.c +1 -1
@@ -60,7 +60,7 @@ EXPORT_SYMBOL(memstart_addr);* bit addressable memory area. */ phys_addr_t arm64_dma_phys_limit__ro_after_init ; -static phys_addr_t arm64_dma32_phys_limit__ro_after_init ; +phys_addr_t arm64_dma32_phys_limit__ro_after_init ;#ifdef CONFIG_KEXEC_CORE /*
arch/powerpc/kernel/head_book3s_32.S +9 -0
@@ -262,10 +262,19 @@ __secondary_hold_acknowledge: MachineCheck: EXCEPTION_PROLOG_0 #ifdef CONFIG_PPC_CHRP +#ifdef CONFIG_VMAP_STACK + mr r11, r1 + mfspr r1, SPRN_SPRG_THREAD + lwz r1, RTAS_SP(r1) + cmpwi cr1, r1, 0 + bne cr1, 7f + mr r1, r11 +#else mfspr r11, SPRN_SPRG_THREAD lwz r11, RTAS_SP(r11) cmpwi cr1, r11, 0 bne cr1, 7f +#endif #endif /* CONFIG_PPC_CHRP */ EXCEPTION_PROLOG_1 for_rtas=1 7: EXCEPTION_PROLOG_2
arch/x86/Kconfig +1 -0
@@ -18,6 +18,7 @@ config X86_32 select MODULES_USE_ELF_REL select OLD_SIGACTION select GENERIC_VDSO_32 + select ARCH_SPLIT_ARG64 config X86_64 def_bool y
block/genhd.c +6 -3
@@ -256,14 +256,17 @@ struct hd_struct *disk_part_iter_next(struct disk_part_iter *piter) part =rcu_dereference (ptbl->part[piter->idx]);if (!part)continue ; +get_device (part_to_dev (part)); + piter->part = part;if (!part_nr_sects_read (part) && !(piter->flags &DISK_PITER_INCL_EMPTY ) && !(piter->flags &DISK_PITER_INCL_EMPTY_PART0 && - piter->idx ==0 )) + piter->idx ==0 )) { +put_device (part_to_dev (part)); + piter->part =NULL ;continue ; + } -get_device (part_to_dev (part)); - piter->part = part; piter->idx += inc;break ; }
drivers/base/regmap/regmap-debugfs.c +7 -2
@@ -582,8 +582,12 @@ void regmap_debugfs_init(struct regmap *map) devname =dev_name (map->dev);if (name) { - map->debugfs_name =kasprintf (GFP_KERNEL ,"%s-%s" , +if (!map->debugfs_name) { + map->debugfs_name =kasprintf (GFP_KERNEL ,"%s-%s" , devname, name); +if (!map->debugfs_name) +return ; + } name = map->debugfs_name; }else { name = devname;
@@ -591,9 +595,10 @@ void regmap_debugfs_init(struct regmap *map)if (!strcmp (name,"dummy" )) {kfree (map->debugfs_name); - map->debugfs_name =kasprintf (GFP_KERNEL ,"dummy%d" , dummy_index); +if (!map->debugfs_name) +return ; name = map->debugfs_name; dummy_index++; }
drivers/block/Kconfig +1 -0
@@ -451,6 +451,7 @@ config BLK_DEV_RBD config BLK_DEV_RSXX tristate "IBM Flash Adapter 900GB Full Height PCIe Device Driver" depends on PCI + select CRC32 help Device driver for IBM's high speed PCIe SSD storage device: Flash Adapter 900GB Full Height.
drivers/block/rnbd/rnbd-clt.c +2 -1
@@ -1671,7 +1671,8 @@ static void rnbd_destroy_sessions(void)*/ list_for_each_entry_safe (sess, sn, &sess_list, list) { -WARN_ON (!rnbd_clt_get_sess (sess)); +if (!rnbd_clt_get_sess (sess)) +continue ;close_rtrs (sess);list_for_each_entry_safe (dev, tn, &sess->devs_list, list) {/*
drivers/cpufreq/powernow-k8.c +3 -6
@@ -878,9 +878,9 @@ static int get_transition_latency(struct powernow_k8_data *data)/* Take a frequency, and issue the fid/vid transition command */ static int transition_frequency_fidvid (struct powernow_k8_data *data, -unsigned int index) +unsigned int index, +struct cpufreq_policy *policy) { -struct cpufreq_policy *policy;u32 fid =0 ;u32 vid =0 ;int res;
@@ -912,9 +912,6 @@ static int transition_frequency_fidvid(struct powernow_k8_data *data, freqs.old =find_khz_freq_from_fid (data->currfid); freqs.new =find_khz_freq_from_fid (fid); - policy =cpufreq_cpu_get (smp_processor_id ()); -cpufreq_cpu_put (policy); -cpufreq_freq_transition_begin (policy, &freqs); res =transition_fid_vid (data, fid, vid);cpufreq_freq_transition_end (policy, &freqs, res);
@@ -969,7 +966,7 @@ static long powernowk8_target_fn(void *arg)powernow_k8_acpi_pst_values (data, newstate); - ret =transition_frequency_fidvid (data, newstate); + ret =transition_frequency_fidvid (data, newstate, pol);if (ret) {pr_err ("transition frequency failed\n" );
drivers/dma/dw-edma/dw-edma-core.c +2 -2
@@ -86,12 +86,12 @@ static struct dw_edma_chunk *dw_edma_alloc_chunk(struct dw_edma_desc *desc)if (desc->chunk) {/* Create and add new element into the linked list */ - desc->chunks_alloc++; -list_add_tail (&chunk->list, &desc->chunk->list);if (!dw_edma_alloc_burst (chunk)) {kfree (chunk);return NULL ; } + desc->chunks_alloc++; +list_add_tail (&chunk->list, &desc->chunk->list); }else {/* List head */ chunk->burst =NULL ;
drivers/dma/mediatek/mtk-hsdma.c +1 -0
@@ -1007,6 +1007,7 @@ static int mtk_hsdma_probe(struct platform_device *pdev)return 0 ; err_free: +mtk_hsdma_hw_deinit (hsdma);of_dma_controller_free (pdev->dev.of_node); err_unregister:dma_async_device_unregister (dd);
drivers/dma/milbeaut-xdmac.c +3 -1
@@ -351,7 +351,7 @@ static int milbeaut_xdmac_probe(struct platform_device *pdev) ret =dma_async_device_register (ddev);if (ret) -return ret; + goto disable_xdmac; ret =of_dma_controller_register (dev->of_node, of_dma_simple_xlate, mdev);
@@ -364,6 +364,8 @@ static int milbeaut_xdmac_probe(struct platform_device *pdev) unregister_dmac:dma_async_device_unregister (ddev); +disable_xdmac: +disable_xdmac (mdev);return ret; }
drivers/dma/xilinx/xilinx_dma.c +8 -3
@@ -2781,7 +2781,7 @@ static int xilinx_dma_chan_probe(struct xilinx_dma_device *xdev, has_dre = false;if (!has_dre) - xdev->common.copy_align =fls (width -1 ); + xdev->common.copy_align = (enum dmaengine_alignment )fls (width -1 ); if (of_device_is_compatible(node, "xlnx,axi-vdma-mm2s-channel") || of_device_is_compatible(node, "xlnx,axi-dma-mm2s-channel") ||
@@ -2900,7 +2900,8 @@ static int xilinx_dma_chan_probe(struct xilinx_dma_device *xdev,static int xilinx_dma_child_probe (struct xilinx_dma_device *xdev,struct device_node *node) { -int ret, i, nr_channels =1 ; +int ret, i; +u32 nr_channels =1 ; ret =of_property_read_u32 (node,"dma-channels" , &nr_channels);if (xdev->dma_config->dmatype ==XDMA_TYPE_AXIMCDMA && ret <0 )
@@ -3112,7 +3113,11 @@ static int xilinx_dma_probe(struct platform_device *pdev) }/* Register the DMA engine with the core */ -dma_async_device_register (&xdev->common); + err =dma_async_device_register (&xdev->common); +if (err) { +dev_err (xdev->dev,"failed to register the dma device\n" ); + goto error; + } err =of_dma_controller_register (node, of_dma_xilinx_xlate, xdev);
drivers/gpu/drm/i915/display/intel_display_types.h +3 -0
@@ -1382,6 +1382,9 @@ struct intel_dp {bool ycbcr_444_to_420; } dfp; +/* To control wakeup latency, e.g. for irq-driven dp aux transfers. */ +struct pm_qos_request pm_qos; +/* Display stream compression testing */ bool force_dsc_en;
drivers/gpu/drm/i915/display/intel_dp.c +6 -2
@@ -1411,7 +1411,7 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp,* lowest possible wakeup latency and so prevent the cpu from going into * deep sleep states. */ -cpu_latency_qos_update_request (&i915->pm_qos,0 ); +cpu_latency_qos_update_request (&intel_dp->pm_qos,0 );intel_dp_check_edp (intel_dp);
@@ -1544,7 +1544,7 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp, ret = recv_bytes; out: -cpu_latency_qos_update_request (&i915->pm_qos,PM_QOS_DEFAULT_VALUE ); +cpu_latency_qos_update_request (&intel_dp->pm_qos,PM_QOS_DEFAULT_VALUE );if (vdd)edp_panel_vdd_off (intel_dp, false);
@@ -1776,6 +1776,9 @@ static i915_reg_t skl_aux_data_reg(struct intel_dp *intel_dp, int index)static void intel_dp_aux_fini (struct intel_dp *intel_dp) { +if (cpu_latency_qos_request_active (&intel_dp->pm_qos)) +cpu_latency_qos_remove_request (&intel_dp->pm_qos); +kfree (intel_dp->aux.name); }
@@ -1818,6 +1821,7 @@ intel_dp_aux_init(struct intel_dp *intel_dp)aux_ch_name (dig_port->aux_ch), port_name(encoder->port)); intel_dp->aux.transfer = intel_dp_aux_transfer; +cpu_latency_qos_add_request (&intel_dp->pm_qos,PM_QOS_DEFAULT_VALUE ); }bool intel_dp_source_supports_hbr2 (struct intel_dp *intel_dp)
drivers/gpu/drm/i915/i915_drv.c +0 -5
@@ -577,8 +577,6 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)pci_set_master (pdev); -cpu_latency_qos_add_request (&dev_priv->pm_qos,PM_QOS_DEFAULT_VALUE ); -intel_gt_init_workarounds (dev_priv);/* On the 945G/GM, the chipset reports the MSI capability on the
@@ -623,7 +621,6 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv) err_msi:if (pdev->msi_enabled)pci_disable_msi (pdev); -cpu_latency_qos_remove_request (&dev_priv->pm_qos); err_mem_regions:intel_memory_regions_driver_release (dev_priv); err_ggtt:
@@ -645,8 +642,6 @@ static void i915_driver_hw_remove(struct drm_i915_private *dev_priv)if (pdev->msi_enabled)pci_disable_msi (pdev); - -cpu_latency_qos_remove_request (&dev_priv->pm_qos); }/**
drivers/gpu/drm/i915/i915_drv.h +0 -3
@@ -892,9 +892,6 @@ struct drm_i915_private {bool display_irqs_enabled; -/* To control wakeup latency, e.g. for irq-driven dp aux transfers. */ -struct pm_qos_request pm_qos; -/* Sideband mailbox protection */ struct mutex sb_lock;struct pm_qos_request sb_qos;
drivers/gpu/drm/panfrost/panfrost_job.c +6 -7
@@ -617,6 +617,8 @@ int panfrost_job_init(struct panfrost_device *pfdev) }for (j =0 ; j <NUM_JOB_SLOTS ; j++) { +mutex_init (&js->queue[j].lock); + js->queue[j].fence_context =dma_fence_context_alloc (1 ); ret = drm_sched_init(&js->queue[j].sched,
@@ -647,8 +649,10 @@ void panfrost_job_fini(struct panfrost_device *pfdev)job_write (pfdev,JOB_INT_MASK ,0 ); -for (j =0 ; j <NUM_JOB_SLOTS ; j++) +for (j =0 ; j <NUM_JOB_SLOTS ; j++) {drm_sched_fini (&js->queue[j].sched); +mutex_destroy (&js->queue[j].lock); + } }
@@ -660,7 +664,6 @@ int panfrost_job_open(struct panfrost_file_priv *panfrost_priv)int ret, i;for (i =0 ; i <NUM_JOB_SLOTS ; i++) { -mutex_init (&js->queue[i].lock); sched = &js->queue[i].sched; ret = drm_sched_entity_init(&panfrost_priv->sched_entity[i], DRM_SCHED_PRIORITY_NORMAL, &sched,
@@ -673,14 +676,10 @@ int panfrost_job_open(struct panfrost_file_priv *panfrost_priv)void panfrost_job_close (struct panfrost_file_priv *panfrost_priv) { -struct panfrost_device *pfdev = panfrost_priv->pfdev; -struct panfrost_job_slot *js = pfdev->js;int i; -for (i =0 ; i <NUM_JOB_SLOTS ; i++) { +for (i =0 ; i <NUM_JOB_SLOTS ; i++)drm_sched_entity_destroy (&panfrost_priv->sched_entity[i]); -mutex_destroy (&js->queue[i].lock); - } }int panfrost_job_is_idle (struct panfrost_device *pfdev)
drivers/hid/wacom_sys.c +32 -3
@@ -1270,6 +1270,37 @@ static int wacom_devm_sysfs_create_group(struct wacom *wacom, group); } +static void wacom_devm_kfifo_release (struct device *dev,void *res) +{ +struct kfifo_rec_ptr_2 *devres = res; + +kfifo_free (devres); +} + +static int wacom_devm_kfifo_alloc (struct wacom *wacom) +{ +struct wacom_wac *wacom_wac = &wacom->wacom_wac; +struct kfifo_rec_ptr_2 *pen_fifo = &wacom_wac->pen_fifo; +int error; + + pen_fifo =devres_alloc (wacom_devm_kfifo_release, +sizeof (struct kfifo_rec_ptr_2 ), +GFP_KERNEL ); + +if (!pen_fifo) +return -ENOMEM ; + + error =kfifo_alloc (pen_fifo,WACOM_PKGLEN_MAX ,GFP_KERNEL ); +if (error) { +devres_free (pen_fifo); +return error; + } + +devres_add (&wacom->hdev->dev, pen_fifo); + +return 0 ; +} +enum led_brightness wacom_leds_brightness_get (struct wacom_led *led) {struct wacom *wacom = led->wacom;
@@ -2724,7 +2755,7 @@ static int wacom_probe(struct hid_device *hdev,if (features->check_for_hid_type && features->hid_type != hdev->type)return -ENODEV ; - error =kfifo_alloc (&wacom_wac->pen_fifo,WACOM_PKGLEN_MAX ,GFP_KERNEL ); + error =wacom_devm_kfifo_alloc (wacom);if (error)return error;
@@ -2786,8 +2817,6 @@ static void wacom_remove(struct hid_device *hdev)if (wacom->wacom_wac.features.type !=REMOTE )wacom_release_resources (wacom); - -kfifo_free (&wacom_wac->pen_fifo); }#ifdef CONFIG_PM
drivers/i2c/busses/i2c-i801.c +1 -1
@@ -1449,7 +1449,7 @@ static int i801_add_mux(struct i801_priv *priv)/* Register GPIO descriptor lookup table */ lookup =devm_kzalloc (dev, -struct_size (lookup, table, mux_config->n_gpios), +struct_size (lookup, table, mux_config->n_gpios +1 ),GFP_KERNEL );if (!lookup)return -ENOMEM ;
drivers/i2c/busses/i2c-mt65xx.c +22 -5
@@ -38,6 +38,7 @@#define I2C_IO_CONFIG_OPEN_DRAIN 0x0003#define I2C_IO_CONFIG_PUSH_PULL 0x0000#define I2C_SOFT_RST 0x0001 +#define I2C_HANDSHAKE_RST 0x0020#define I2C_FIFO_ADDR_CLR 0x0001#define I2C_DELAY_LEN 0x0002#define I2C_TIME_CLR_VALUE 0x0000
@@ -45,6 +46,7 @@#define I2C_WRRD_TRANAC_VALUE 0x0002#define I2C_RD_TRANAC_VALUE 0x0001#define I2C_SCL_MIS_COMP_VALUE 0x0000 +#define I2C_CHN_CLR_FLAG 0x0000#define I2C_DMA_CON_TX 0x0000#define I2C_DMA_CON_RX 0x0001
@@ -54,7 +56,9 @@#define I2C_DMA_START_EN 0x0001#define I2C_DMA_INT_FLAG_NONE 0x0000#define I2C_DMA_CLR_FLAG 0x0000 +#define I2C_DMA_WARM_RST 0x0001#define I2C_DMA_HARD_RST 0x0002 +#define I2C_DMA_HANDSHAKE_RST 0x0004#define MAX_SAMPLE_CNT_DIV 8#define MAX_STEP_CNT_DIV 64
@@ -475,11 +479,24 @@ static void mtk_i2c_init_hw(struct mtk_i2c *i2c) {u16 control_reg; -writel (I2C_DMA_HARD_RST , i2c->pdmabase +OFFSET_RST ); -udelay (50 ); -writel (I2C_DMA_CLR_FLAG , i2c->pdmabase +OFFSET_RST ); - -mtk_i2c_writew (i2c,I2C_SOFT_RST ,OFFSET_SOFTRESET ); +if (i2c->dev_comp->dma_sync) { +writel (I2C_DMA_WARM_RST , i2c->pdmabase +OFFSET_RST ); +udelay (10 ); +writel (I2C_DMA_CLR_FLAG , i2c->pdmabase +OFFSET_RST ); +udelay (10 ); +writel (I2C_DMA_HANDSHAKE_RST |I2C_DMA_HARD_RST , + i2c->pdmabase +OFFSET_RST ); +mtk_i2c_writew (i2c,I2C_HANDSHAKE_RST |I2C_SOFT_RST , +OFFSET_SOFTRESET ); +udelay (10 ); +writel (I2C_DMA_CLR_FLAG , i2c->pdmabase +OFFSET_RST ); +mtk_i2c_writew (i2c,I2C_CHN_CLR_FLAG ,OFFSET_SOFTRESET ); + }else { +writel (I2C_DMA_HARD_RST , i2c->pdmabase +OFFSET_RST ); +udelay (50 ); +writel (I2C_DMA_CLR_FLAG , i2c->pdmabase +OFFSET_RST ); +mtk_i2c_writew (i2c,I2C_SOFT_RST ,OFFSET_SOFTRESET ); + }/* Set ioconfig */ if (i2c->use_push_pull)
drivers/i2c/busses/i2c-sprd.c +7 -1
@@ -72,6 +72,8 @@/* timeout (ms) for pm runtime autosuspend */ #define SPRD_I2C_PM_TIMEOUT 1000 +/* timeout (ms) for transfer message */ +#define I2C_XFER_TIMEOUT 1000/* SPRD i2c data structure */ struct sprd_i2c {
@@ -244,6 +246,7 @@ static int sprd_i2c_handle_msg(struct i2c_adapter *i2c_adap, struct i2c_msg *msg, bool is_last_msg) {struct sprd_i2c *i2c_dev = i2c_adap->algo_data; +unsigned long time_left; i2c_dev->msg = msg; i2c_dev->buf = msg->buf;
@@ -273,7 +276,10 @@ static int sprd_i2c_handle_msg(struct i2c_adapter *i2c_adap,sprd_i2c_opt_start (i2c_dev); -wait_for_completion (&i2c_dev->complete); + time_left =wait_for_completion_timeout (&i2c_dev->complete, +msecs_to_jiffies (I2C_XFER_TIMEOUT )); +if (!time_left) +return -ETIMEDOUT ;return i2c_dev->err; }
drivers/infiniband/hw/hns/hns_roce_ah.c +1 -10
@@ -36,9 +36,6 @@#include <rdma/ib_cache.h> #include "hns_roce_device.h" -#define VLAN_SL_MASK 7 -#define VLAN_SL_SHIFT 13 -static inline u16 get_ah_udp_sport (const struct rdma_ah_attr *ah_attr) {u32 fl = ah_attr->grh.flow_label;
@@ -81,18 +78,12 @@ int hns_roce_create_ah(struct ib_ah *ibah, struct rdma_ah_init_attr *init_attr,/* HIP08 needs to record vlan info in Address Vector */ if (hr_dev->pci_dev->revision <=PCI_REVISION_ID_HIP08 ) { - ah->av.vlan_en =0 ; - ret =rdma_read_gid_l2_fields (ah_attr->grh.sgid_attr, &ah->av.vlan_id,NULL );if (ret)return ret; -if (ah->av.vlan_id <VLAN_N_VID ) { - ah->av.vlan_en =1 ; - ah->av.vlan_id |= (rdma_ah_get_sl (ah_attr) &VLAN_SL_MASK ) << -VLAN_SL_SHIFT ; - } + ah->av.vlan_en = ah->av.vlan_id <VLAN_N_VID ; }return ret;
drivers/interconnect/imx/imx.c +1 -0
@@ -99,6 +99,7 @@ static int imx_icc_node_init_qos(struct icc_provider *provider,if (!dn || !of_device_is_available (dn)) {dev_warn (dev,"Missing property %s, skip scaling %s\n" , adj->phandle_name, node->name); +of_node_put (dn);return 0 ; }
drivers/interconnect/qcom/Kconfig +15 -8
@@ -42,13 +42,23 @@ config INTERCONNECT_QCOM_QCS404 This is a driver for the Qualcomm Network-on-Chip on qcs404-based platforms. +config INTERCONNECT_QCOM_RPMH_POSSIBLE + tristate + default INTERCONNECT_QCOM + depends on QCOM_RPMH || (COMPILE_TEST && !QCOM_RPMH) + depends on QCOM_COMMAND_DB || (COMPILE_TEST && !QCOM_COMMAND_DB) + depends on OF || COMPILE_TEST + help + Compile-testing RPMH drivers is possible on other platforms, + but in order to avoid link failures, drivers must not be built-in + when QCOM_RPMH or QCOM_COMMAND_DB are loadable modules + config INTERCONNECT_QCOM_RPMH tristate config INTERCONNECT_QCOM_SC7180 tristate "Qualcomm SC7180 interconnect driver" - depends on INTERCONNECT_QCOM - depends on (QCOM_RPMH && QCOM_COMMAND_DB && OF) || COMPILE_TEST + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE select INTERCONNECT_QCOM_RPMH select INTERCONNECT_QCOM_BCM_VOTER help
@@ -57,8 +67,7 @@ config INTERCONNECT_QCOM_SC7180 config INTERCONNECT_QCOM_SDM845 tristate "Qualcomm SDM845 interconnect driver" - depends on INTERCONNECT_QCOM - depends on (QCOM_RPMH && QCOM_COMMAND_DB && OF) || COMPILE_TEST + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE select INTERCONNECT_QCOM_RPMH select INTERCONNECT_QCOM_BCM_VOTER help
@@ -67,8 +76,7 @@ config INTERCONNECT_QCOM_SDM845 config INTERCONNECT_QCOM_SM8150 tristate "Qualcomm SM8150 interconnect driver" - depends on INTERCONNECT_QCOM - depends on (QCOM_RPMH && QCOM_COMMAND_DB && OF) || COMPILE_TEST + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE select INTERCONNECT_QCOM_RPMH select INTERCONNECT_QCOM_BCM_VOTER help
@@ -77,8 +85,7 @@ config INTERCONNECT_QCOM_SM8150 config INTERCONNECT_QCOM_SM8250 tristate "Qualcomm SM8250 interconnect driver" - depends on INTERCONNECT_QCOM - depends on (QCOM_RPMH && QCOM_COMMAND_DB && OF) || COMPILE_TEST + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE select INTERCONNECT_QCOM_RPMH select INTERCONNECT_QCOM_BCM_VOTER help
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +2 -0
@@ -55,6 +55,8 @@ static int qcom_smmu_cfg_probe(struct arm_smmu_device *smmu)set_bit (qsmmu->bypass_cbndx, smmu->context_map); +arm_smmu_cb_write (smmu, qsmmu->bypass_cbndx,ARM_SMMU_CB_SCTLR ,0 ); + reg =FIELD_PREP (ARM_SMMU_CBAR_TYPE ,CBAR_TYPE_S1_TRANS_S2_BYPASS );arm_smmu_gr1_write (smmu,ARM_SMMU_GR1_CBAR (qsmmu->bypass_cbndx), reg); }
drivers/iommu/intel/dmar.c +2 -2
@@ -1461,8 +1461,8 @@ void qi_flush_piotlb(struct intel_iommu *iommu, u16 did, u32 pasid, u64 addr,int mask =ilog2 (__roundup_pow_of_two (npages));unsigned long align = (1ULL << (VTD_PAGE_SHIFT + mask)); -if (WARN_ON_ONCE (!ALIGN (addr, align))) - addr &= ~(align -1 ); +if (WARN_ON_ONCE (!IS_ALIGNED (addr, align))) + addr =ALIGN_DOWN (addr, align); desc.qw0 =QI_EIOTLB_PASID (pasid) | QI_EIOTLB_DID(did) |
drivers/iommu/intel/irq_remapping.c +2 -0
@@ -1390,6 +1390,8 @@ static int intel_irq_remapping_alloc(struct irq_domain *domain, irq_data =irq_domain_get_irq_data (domain, virq + i); irq_cfg =irqd_cfg (irq_data);if (!irq_data || !irq_cfg) { +if (!i) +kfree (data); ret = -EINVAL ; goto out_free_data; }
drivers/lightnvm/Kconfig +1 -0
@@ -19,6 +19,7 @@ if NVM config NVM_PBLK tristate "Physical Block Device Open-Channel SSD target" + select CRC32 help Allows an open-channel SSD to be exposed as a block device to the host. The target assumes the device exposes raw flash and must be
drivers/md/bcache/super.c +15 -0
@@ -1341,6 +1341,12 @@ int bch_cached_dev_attach(struct cached_dev *dc, struct cache_set *c,bcache_device_link (&dc->disk, c,"bdev" );atomic_inc (&c->attached_dev_nr); +if (bch_has_feature_obso_large_bucket (&(c->cache->sb))) { +pr_err ("The obsoleted large bucket layout is unsupported, set the bcache device into read-only\n" ); +pr_err ("Please update to the latest bcache-tools to create the cache device\n" ); +set_disk_ro (dc->disk.disk,1 ); + } +/* Allow the writeback thread to proceed */ up_write (&dc->writeback_lock);
@@ -1564,6 +1570,12 @@ static int flash_dev_run(struct cache_set *c, struct uuid_entry *u)bcache_device_link (d, c,"volume" ); +if (bch_has_feature_obso_large_bucket (&c->cache->sb)) { +pr_err ("The obsoleted large bucket layout is unsupported, set the bcache device into read-only\n" ); +pr_err ("Please update to the latest bcache-tools to create the cache device\n" ); +set_disk_ro (d->disk,1 ); + } +return 0 ; err:kobject_put (&d->kobj);
@@ -2123,6 +2135,9 @@ static int run_cache_set(struct cache_set *c) c->cache->sb.last_mount = (u32 )ktime_get_real_seconds ();bcache_write_super (c); +if (bch_has_feature_obso_large_bucket (&c->cache->sb)) +pr_err ("Detect obsoleted large bucket layout, all attached bcache device will be read-only\n" ); +list_for_each_entry_safe (dc, t, &uncached_devices, list)bch_cached_dev_attach (dc, c,NULL );
drivers/net/bareudp.c +14 -8
@@ -645,11 +645,20 @@ static int bareudp_link_config(struct net_device *dev,return 0 ; } +static void bareudp_dellink (struct net_device *dev,struct list_head *head) +{ +struct bareudp_dev *bareudp =netdev_priv (dev); + +list_del (&bareudp->next); +unregister_netdevice_queue (dev, head); +} +static int bareudp_newlink (struct net *net,struct net_device *dev,struct nlattr *tb[],struct nlattr *data[],struct netlink_ext_ack *extack) {struct bareudp_conf conf; +LIST_HEAD (list_kill);int err; err =bareudp2info (data, &conf, extack);
@@ -662,17 +671,14 @@ static int bareudp_newlink(struct net *net, struct net_device *dev, err =bareudp_link_config (dev, tb);if (err) -return err; + goto err_unconfig;return 0 ; -} - -static void bareudp_dellink (struct net_device *dev,struct list_head *head) -{ -struct bareudp_dev *bareudp =netdev_priv (dev); -list_del (&bareudp->next); -unregister_netdevice_queue (dev, head); +err_unconfig: +bareudp_dellink (dev, &list_kill); +unregister_netdevice_many (&list_kill); +return err; }static size_t bareudp_get_size (const struct net_device *dev)
drivers/net/can/Kconfig +1 -0
@@ -123,6 +123,7 @@ config CAN_JANZ_ICAN3 config CAN_KVASER_PCIEFD depends on PCI tristate "Kvaser PCIe FD cards" + select CRC32 help This is a driver for the Kvaser PCI Express CAN FD family.
drivers/net/can/m_can/m_can.c +0 -2
@@ -1914,8 +1914,6 @@ EXPORT_SYMBOL_GPL(m_can_class_resume);void m_can_class_unregister (struct m_can_classdev *m_can_dev) {unregister_candev (m_can_dev->net); - -m_can_clk_stop (m_can_dev); }EXPORT_SYMBOL_GPL (m_can_class_unregister);
drivers/net/can/m_can/tcan4x5x.c +0 -26
@@ -129,30 +129,6 @@ struct tcan4x5x_priv {int reg_offset; }; -static struct can_bittiming_const tcan4x5x_bittiming_const = { - .name =DEVICE_NAME , - .tseg1_min =2 , - .tseg1_max =31 , - .tseg2_min =2 , - .tseg2_max =16 , - .sjw_max =16 , - .brp_min =1 , - .brp_max =32 , - .brp_inc =1 , -}; - -static struct can_bittiming_const tcan4x5x_data_bittiming_const = { - .name =DEVICE_NAME , - .tseg1_min =1 , - .tseg1_max =32 , - .tseg2_min =1 , - .tseg2_max =16 , - .sjw_max =16 , - .brp_min =1 , - .brp_max =32 , - .brp_inc =1 , -}; -static void tcan4x5x_check_wake (struct tcan4x5x_priv *priv) {int wake_state =0 ;
@@ -479,8 +455,6 @@ static int tcan4x5x_can_probe(struct spi_device *spi) mcan_class->dev = &spi->dev; mcan_class->ops = &tcan4x5x_ops; mcan_class->is_peripheral = true; - mcan_class->bit_timing = &tcan4x5x_bittiming_const; - mcan_class->data_timing = &tcan4x5x_data_bittiming_const; mcan_class->net->irq = spi->irq;spi_set_drvdata (spi, priv);
drivers/net/dsa/lantiq_gswip.c +4 -3
@@ -1436,11 +1436,12 @@ static void gswip_phylink_validate(struct dsa_switch *ds, int port,phylink_set (mask, Pause);phylink_set (mask, Asym_Pause); -/* With the exclusion of MII and Reverse MII, we support Gigabit, -* including Half duplex +/* With the exclusion of MII, Reverse MII and Reduced MII, we +* support Gigabit, including Half duplex */ if (state->interface !=PHY_INTERFACE_MODE_MII && - state->interface !=PHY_INTERFACE_MODE_REVMII ) { + state->interface !=PHY_INTERFACE_MODE_REVMII && + state->interface !=PHY_INTERFACE_MODE_RMII ) { phylink_set(mask, 1000baseT_Full); phylink_set(mask, 1000baseT_Half); }
drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +24 -47
163 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hclge_mbx.h +2 -2
@@ -168,7 +168,7 @@ struct hclgevf_mbx_arq_ring {#define hclge_mbx_ring_ptr_move_crq (crq) \ (crq->next_to_use = (crq->next_to_use + 1) % crq->desc_num)#define hclge_mbx_tail_ptr_move_arq (arq) \ - (arq.tail = (arq.tail + 1) % HCLGE_MBX_MAX_ARQ_MSG_SIZE) + (arq.tail = (arq.tail + 1) % HCLGE_MBX_MAX_ARQ_MSG_NUM)#define hclge_mbx_head_ptr_move_arq (arq) \ - (arq.head = (arq.head + 1) % HCLGE_MBX_MAX_ARQ_MSG_SIZE) + (arq.head = (arq.head + 1) % HCLGE_MBX_MAX_ARQ_MSG_NUM)#endif
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +6 -3
@@ -752,7 +752,8 @@ static int hclge_get_sset_count(struct hnae3_handle *handle, int stringset) handle->flags |=HNAE3_SUPPORT_SERDES_SERIAL_LOOPBACK ; handle->flags |=HNAE3_SUPPORT_SERDES_PARALLEL_LOOPBACK ; -if (hdev->hw.mac.phydev) { +if (hdev->hw.mac.phydev && hdev->hw.mac.phydev->drv && + hdev->hw.mac.phydev->drv->set_loopback) { count +=1 ; handle->flags |=HNAE3_SUPPORT_PHY_LOOPBACK ; }
@@ -4484,8 +4485,8 @@ static int hclge_set_rss_tuple(struct hnae3_handle *handle, req->ipv4_sctp_en = tuple_sets;break ;case SCTP_V6_FLOW : -if ((nfc->data &RXH_L4_B_0_1 ) || - (nfc->data &RXH_L4_B_2_3 )) +if (hdev->ae_dev->dev_version <=HNAE3_DEVICE_VERSION_V2 && + (nfc->data & (RXH_L4_B_0_1 |RXH_L4_B_2_3 )))return -EINVAL ; req->ipv6_sctp_en = tuple_sets;
@@ -4665,6 +4666,8 @@ static void hclge_rss_init_cfg(struct hclge_dev *hdev) vport[i].rss_tuple_sets.ipv6_udp_en =HCLGE_RSS_INPUT_TUPLE_OTHER ; vport[i].rss_tuple_sets.ipv6_sctp_en = + hdev->ae_dev->dev_version <=HNAE3_DEVICE_VERSION_V2 ? +HCLGE_RSS_INPUT_TUPLE_SCTP_NO_PORT :HCLGE_RSS_INPUT_TUPLE_SCTP ; vport[i].rss_tuple_sets.ipv6_fragment_en =HCLGE_RSS_INPUT_TUPLE_OTHER ;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h +2 -0
@@ -105,6 +105,8 @@#define HCLGE_D_IP_BIT BIT(2)#define HCLGE_S_IP_BIT BIT(3)#define HCLGE_V_TAG_BIT BIT(4) +#define HCLGE_RSS_INPUT_TUPLE_SCTP_NO_PORT \ + (HCLGE_D_IP_BIT | HCLGE_S_IP_BIT | HCLGE_V_TAG_BIT)#define HCLGE_RSS_TC_SIZE_0 1#define HCLGE_RSS_TC_SIZE_1 2
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +6 -3
@@ -901,8 +901,8 @@ static int hclgevf_set_rss_tuple(struct hnae3_handle *handle, req->ipv4_sctp_en = tuple_sets;break ;case SCTP_V6_FLOW : -if ((nfc->data &RXH_L4_B_0_1 ) || - (nfc->data &RXH_L4_B_2_3 )) +if (hdev->ae_dev->dev_version <=HNAE3_DEVICE_VERSION_V2 && + (nfc->data & (RXH_L4_B_0_1 |RXH_L4_B_2_3 )))return -EINVAL ; req->ipv6_sctp_en = tuple_sets;
@@ -2481,7 +2481,10 @@ static void hclgevf_rss_init_cfg(struct hclgevf_dev *hdev) tuple_sets->ipv4_fragment_en =HCLGEVF_RSS_INPUT_TUPLE_OTHER ; tuple_sets->ipv6_tcp_en =HCLGEVF_RSS_INPUT_TUPLE_OTHER ; tuple_sets->ipv6_udp_en =HCLGEVF_RSS_INPUT_TUPLE_OTHER ; - tuple_sets->ipv6_sctp_en =HCLGEVF_RSS_INPUT_TUPLE_SCTP ; + tuple_sets->ipv6_sctp_en = + hdev->ae_dev->dev_version <=HNAE3_DEVICE_VERSION_V2 ? +HCLGEVF_RSS_INPUT_TUPLE_SCTP_NO_PORT : +HCLGEVF_RSS_INPUT_TUPLE_SCTP ; tuple_sets->ipv6_fragment_en =HCLGEVF_RSS_INPUT_TUPLE_OTHER ; }
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h +2 -0
@@ -122,6 +122,8 @@#define HCLGEVF_D_IP_BIT BIT(2)#define HCLGEVF_S_IP_BIT BIT(3)#define HCLGEVF_V_TAG_BIT BIT(4) +#define HCLGEVF_RSS_INPUT_TUPLE_SCTP_NO_PORT \ + (HCLGEVF_D_IP_BIT | HCLGEVF_S_IP_BIT | HCLGEVF_V_TAG_BIT)#define HCLGEVF_STATS_TIMER_INTERVAL 36U
drivers/net/ethernet/marvell/mvneta.c +1 -1
@@ -4409,7 +4409,7 @@ static int mvneta_xdp_setup(struct net_device *dev, struct bpf_prog *prog,struct bpf_prog *old_prog;if (prog && dev->mtu >MVNETA_MAX_RX_BUF_SIZE ) { -NL_SET_ERR_MSG_MOD (extack,"Jumbo frames not supported on XDP" ); +NL_SET_ERR_MSG_MOD (extack,"MTU too large for XDP" );return -EOPNOTSUPP ; }
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +13 -1
@@ -5480,7 +5480,7 @@ static int mvpp2_port_init(struct mvpp2_port *port)struct mvpp2 *priv = port->priv;struct mvpp2_txq_pcpu *txq_pcpu;unsigned int thread; -int queue, err; +int queue, err, val;/* Checks for hardware constraints */ if (port->first_rxq + port->nrxqs >
@@ -5494,6 +5494,18 @@ static int mvpp2_port_init(struct mvpp2_port *port)mvpp2_egress_disable (port);mvpp2_port_disable (port); +if (mvpp2_is_xlg (port->phy_interface)) { + val =readl (port->base +MVPP22_XLG_CTRL0_REG ); + val &= ~MVPP22_XLG_CTRL0_FORCE_LINK_PASS ; + val |=MVPP22_XLG_CTRL0_FORCE_LINK_DOWN ; +writel (val, port->base +MVPP22_XLG_CTRL0_REG ); + }else { + val =readl (port->base +MVPP2_GMAC_AUTONEG_CONFIG ); + val &= ~MVPP2_GMAC_FORCE_LINK_PASS ; + val |=MVPP2_GMAC_FORCE_LINK_DOWN ; +writel (val, port->base +MVPP2_GMAC_AUTONEG_CONFIG ); + } + port->tx_time_coal =MVPP2_TXDONE_COAL_USEC ; port->txqs = devm_kcalloc(dev, port->ntxqs, sizeof(*port->txqs),
drivers/net/ethernet/marvell/octeontx2/af/cgx.c +11 -3
@@ -862,8 +862,10 @@ static int cgx_lmac_init(struct cgx *cgx)if (!lmac)return -ENOMEM ; lmac->name =kcalloc (1 ,sizeof ("cgx_fwi_xxx_yyy" ),GFP_KERNEL ); -if (!lmac->name) -return -ENOMEM ; +if (!lmac->name) { + err = -ENOMEM ; + goto err_lmac_free; + }sprintf (lmac->name,"cgx_fwi_%d_%d" , cgx->cgx_id, i); lmac->lmac_id = i; lmac->cgx = cgx;
@@ -874,7 +876,7 @@ static int cgx_lmac_init(struct cgx *cgx) CGX_LMAC_FWI + i * 9), cgx_fwi_event_handler, 0, lmac->name, lmac);if (err) -return err; + goto err_irq;/* Enable interrupt */ cgx_write(cgx, lmac->lmac_id, CGXX_CMRX_INT_ENA_W1S,
@@ -886,6 +888,12 @@ static int cgx_lmac_init(struct cgx *cgx) }return cgx_lmac_verify_fwi_version (cgx); + +err_irq: +kfree (lmac->name); +err_lmac_free: +kfree (lmac); +return err; }static int cgx_lmac_exit (struct cgx *cgx)
drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +5 -0
@@ -626,6 +626,11 @@ bool mlx5e_rep_tc_update_skb(struct mlx5_cqe64 *cqe,if (!reg_c0)return true; +/* If reg_c0 is not equal to the default flow tag then skb->mark +* is not supported and must be reset back to 0. +*/ + skb->mark =0 ; + priv =netdev_priv (skb->dev); esw = priv->mdev->priv.eswitch;
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +18 -6
@@ -1007,6 +1007,22 @@ static int mlx5e_get_link_ksettings(struct net_device *netdev,return mlx5e_ethtool_get_link_ksettings (priv, link_ksettings); } +static int mlx5e_speed_validate (struct net_device *netdev,bool ext, +const unsigned long link_modes,u8 autoneg) +{ +/* Extended link-mode has no speed limitations. */ +if (ext) +return 0 ; + +if ((link_modes &MLX5E_PROT_MASK (MLX5E_56GBASE_R4 )) && + autoneg !=AUTONEG_ENABLE ) { +netdev_err (netdev,"%s: 56G link speed requires autoneg enabled\n" , + __func__); +return -EINVAL ; + } +return 0 ; +} +static u32 mlx5e_ethtool2ptys_adver_link (const unsigned long *link_modes) {u32 i, ptys_modes =0 ;
@@ -1100,13 +1116,9 @@ int mlx5e_ethtool_set_link_ksettings(struct mlx5e_priv *priv, link_modes = autoneg ==AUTONEG_ENABLE ?ethtool2ptys_adver_func (adver) :mlx5e_port_speed2linkmodes (mdev, speed, !ext); -if ((link_modes &MLX5E_PROT_MASK (MLX5E_56GBASE_R4 )) && - autoneg !=AUTONEG_ENABLE ) { -netdev_err (priv->netdev,"%s: 56G link speed requires autoneg enabled\n" , - __func__); - err = -EINVAL ; + err =mlx5e_speed_validate (priv->netdev, ext, link_modes, autoneg); +if (err) goto out; - } link_modes = link_modes & eproto.cap;if (!link_modes) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c +3 -0
@@ -936,6 +936,7 @@ static int mlx5e_create_ttc_table_groups(struct mlx5e_ttc_table *ttc, in =kvzalloc (inlen,GFP_KERNEL );if (!in) {kfree (ft->g); + ft->g =NULL ;return -ENOMEM ; }
@@ -1081,6 +1082,7 @@ static int mlx5e_create_inner_ttc_table_groups(struct mlx5e_ttc_table *ttc) in =kvzalloc (inlen,GFP_KERNEL );if (!in) {kfree (ft->g); + ft->g =NULL ;return -ENOMEM ; }
@@ -1384,6 +1386,7 @@ static int mlx5e_create_l2_table_groups(struct mlx5e_l2_table *l2_table) ft->g[ft->num_groups] =NULL ;mlx5e_destroy_groups (ft);kvfree (in); +kfree (ft->g);return err; }
drivers/net/ethernet/mellanox/mlx5/core/lag.c +5 -6
@@ -556,7 +556,9 @@ void mlx5_lag_add(struct mlx5_core_dev *dev, struct net_device *netdev)struct mlx5_core_dev *tmp_dev;int i, err; -if (!MLX5_CAP_GEN (dev, vport_group_manager)) +if (!MLX5_CAP_GEN (dev, vport_group_manager) || + !MLX5_CAP_GEN (dev, lag_master) || +MLX5_CAP_GEN (dev, num_lag_ports) !=MLX5_MAX_PORTS )return ; tmp_dev =mlx5_get_next_phys_dev (dev);
@@ -574,12 +576,9 @@ void mlx5_lag_add(struct mlx5_core_dev *dev, struct net_device *netdev)if (mlx5_lag_dev_add_pf (ldev, dev, netdev) <0 )return ; -for (i =0 ; i <MLX5_MAX_PORTS ; i++) { - tmp_dev = ldev->pf[i].dev; -if (!tmp_dev || !MLX5_CAP_GEN (tmp_dev, lag_master) || -MLX5_CAP_GEN (tmp_dev, num_lag_ports) !=MLX5_MAX_PORTS ) +for (i =0 ; i <MLX5_MAX_PORTS ; i++) +if (!ldev->pf[i].dev)break ; - }if (i >=MLX5_MAX_PORTS ) ldev->flags |=MLX5_LAG_FLAG_READY ;
drivers/net/ethernet/mellanox/mlx5/core/rdma.c +1 -1
@@ -116,7 +116,7 @@ static int mlx5_rdma_enable_roce_steering(struct mlx5_core_dev *dev)static void mlx5_rdma_del_roce_addr (struct mlx5_core_dev *dev) {mlx5_core_roce_gid_set (dev,0 ,0 ,0 , -NULL ,NULL , false,0 ,0 ); +NULL ,NULL , false,0 ,1 ); }static void mlx5_rdma_make_default_gid (struct mlx5_core_dev *dev,union ib_gid *gid)
drivers/net/ethernet/natsemi/macsonic.c +10 -2
@@ -506,10 +506,14 @@ static int mac_sonic_platform_probe(struct platform_device *pdev) err =register_netdev (dev);if (err) - goto out; + goto undo_probe;return 0 ; +undo_probe: +dma_free_coherent (lp->device, +SIZEOF_SONIC_DESC *SONIC_BUS_SCALE (lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); out:free_netdev (dev);
@@ -584,12 +588,16 @@ static int mac_sonic_nubus_probe(struct nubus_board *board) err =register_netdev (ndev);if (err) - goto out; + goto undo_probe;nubus_set_drvdata (board, ndev);return 0 ; +undo_probe: +dma_free_coherent (lp->device, +SIZEOF_SONIC_DESC *SONIC_BUS_SCALE (lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); out:free_netdev (ndev);return err;
drivers/net/ethernet/natsemi/xtsonic.c +5 -2
@@ -229,11 +229,14 @@ int xtsonic_probe(struct platform_device *pdev)sonic_msg_init (dev);if ((err =register_netdev (dev))) - goto out1; + goto undo_probe1;return 0 ; -out1: +undo_probe1: +dma_free_coherent (lp->device, +SIZEOF_SONIC_DESC *SONIC_BUS_SCALE (lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr);release_region (dev->base_addr,SONIC_MEM_SIZE ); out:free_netdev (dev);
drivers/net/ethernet/pensando/ionic/ionic_lif.c +6 -6
@@ -123,6 +123,12 @@ static void ionic_link_status_check(struct ionic_lif *lif) link_up = link_status ==IONIC_PORT_OPER_STATUS_UP ;if (link_up) { +if (lif->netdev->flags &IFF_UP &&netif_running (lif->netdev)) { +mutex_lock (&lif->queue_lock); +ionic_start_queues (lif); +mutex_unlock (&lif->queue_lock); + } +if (!netif_carrier_ok (netdev)) {u32 link_speed;
@@ -132,12 +138,6 @@ static void ionic_link_status_check(struct ionic_lif *lif) link_speed / 1000);netif_carrier_on (netdev); } - -if (lif->netdev->flags &IFF_UP &&netif_running (lif->netdev)) { -mutex_lock (&lif->queue_lock); -ionic_start_queues (lif); -mutex_unlock (&lif->queue_lock); - } }else {if (netif_carrier_ok (netdev)) {netdev_info (netdev,"Link down\n" );
drivers/net/ethernet/qlogic/Kconfig +1 -0
@@ -78,6 +78,7 @@ config QED depends on PCI select ZLIB_INFLATE select CRC8 + select CRC32 select NET_DEVLINK help This enables the support for Marvell FastLinQ adapters family.
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +82 -47
314 lines not on this page · raw message
drivers/net/usb/cdc_ncm.c +6 -2
@@ -1199,7 +1199,10 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)* accordingly. Otherwise, we should check here. */ if (ctx->drvflags &CDC_NCM_FLAG_NDP_TO_END ) - delayed_ndp_size =ALIGN (ctx->max_ndp_size, ctx->tx_ndp_modulus); + delayed_ndp_size = ctx->max_ndp_size + +max_t (u32, + ctx->tx_ndp_modulus, + ctx->tx_modulus + ctx->tx_remainder) -1 ;else delayed_ndp_size =0 ;
@@ -1410,7 +1413,8 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)if (!(dev->driver_info->flags &FLAG_SEND_ZLP ) && skb_out->len > ctx->min_tx_pkt) { padding_count = ctx->tx_curr_size - skb_out->len; -skb_put_zero (skb_out, padding_count); +if (!WARN_ON (padding_count > ctx->tx_curr_size)) +skb_put_zero (skb_out, padding_count); }else if (skb_out->len < ctx->tx_curr_size && (skb_out->len % dev->maxpacket) ==0 ) {skb_put_u8 (skb_out,0 );/* force short packet */
drivers/net/wan/Kconfig +1 -0
@@ -282,6 +282,7 @@ config SLIC_DS26522 tristate "Slic Maxim ds26522 card support" depends on SPI depends on FSL_SOC || ARCH_MXC || ARCH_LAYERSCAPE || COMPILE_TEST + select BITREVERSE help This module initializes and configures the slic maxim card in T1 or E1 mode.
drivers/net/wireless/ath/wil6210/Kconfig +1 -0
@@ -2,6 +2,7 @@ config WIL6210 tristate "Wilocity 60g WiFi card wil6210 support" select WANT_DEV_COREDUMP + select CRC32 depends on CFG80211 depends on PCI default n
drivers/nvme/host/tcp.c +11 -1
@@ -262,6 +262,16 @@ static inline void nvme_tcp_advance_req(struct nvme_tcp_request *req, } } +static inline void nvme_tcp_send_all (struct nvme_tcp_queue *queue) +{ +int ret; + +/* drain the send queue as much as we can... */ +do { + ret =nvme_tcp_try_send (queue); + }while (ret >0 ); +} +static inline void nvme_tcp_queue_request (struct nvme_tcp_request *req,bool sync,bool last) {
@@ -279,7 +289,7 @@ static inline void nvme_tcp_queue_request(struct nvme_tcp_request *req,if (queue->io_cpu ==smp_processor_id () && sync && empty &&mutex_trylock (&queue->send_mutex)) { queue->more_requests = !last; -nvme_tcp_try_send (queue); +nvme_tcp_send_all (queue); queue->more_requests = false;mutex_unlock (&queue->send_mutex); }else if (last) {
drivers/ptp/Kconfig +2 -0
@@ -64,6 +64,7 @@ config DP83640_PHY depends on NETWORK_PHY_TIMESTAMPING depends on PHYLIB depends on PTP_1588_CLOCK + select CRC32 help Supports the DP83640 PHYTER with IEEE 1588 features.
@@ -78,6 +79,7 @@ config DP83640_PHY config PTP_1588_CLOCK_INES tristate "ZHAW InES PTP time stamping IP core" depends on NETWORK_PHY_TIMESTAMPING + depends on HAS_IOMEM depends on PHYLIB depends on PTP_1588_CLOCK help
drivers/regulator/qcom-rpmh-regulator.c +1 -1
@@ -726,7 +726,7 @@ static const struct rpmh_vreg_hw_data pmic5_ftsmps510 = {static const struct rpmh_vreg_hw_data pmic5_hfsmps515 = { .regulator_type =VRM , .ops = &rpmh_regulator_vrm_ops, - .voltage_range =REGULATOR_LINEAR_RANGE (2800000 ,0 ,4 ,1600 ), + .voltage_range =REGULATOR_LINEAR_RANGE (2800000 ,0 ,4 ,16000 ), .n_voltages =5 , .pmic_mode_map = pmic_mode_map_pmic5_smps, .of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode,
drivers/s390/net/qeth_core.h +2 -1
@@ -1075,7 +1075,8 @@ struct qeth_card *qeth_get_card_by_busid(char *bus_id);void qeth_set_allowed_threads (struct qeth_card *card,unsigned long threads,int clear_start_mask);int qeth_threads_running (struct qeth_card *,unsigned long ); -int qeth_set_offline (struct qeth_card *card,bool resetting); +int qeth_set_offline (struct qeth_card *card,const struct qeth_discipline *disc, +bool resetting);int qeth_send_ipa_cmd (struct qeth_card *,struct qeth_cmd_buffer *, int (*reply_cb)
drivers/s390/net/qeth_core_main.c +25 -13
@@ -5300,12 +5300,12 @@ static int qeth_hardsetup_card(struct qeth_card *card, bool *carrier_ok)return rc; } -static int qeth_set_online (struct qeth_card *card) +static int qeth_set_online (struct qeth_card *card, +const struct qeth_discipline *disc) {bool carrier_ok;int rc; -mutex_lock (&card->discipline_mutex);mutex_lock (&card->conf_mutex);QETH_CARD_TEXT (card,2 ,"setonlin" );
@@ -5322,7 +5322,7 @@ static int qeth_set_online(struct qeth_card *card)/* no need for locking / error handling at this early stage: */ qeth_set_real_num_tx_queues (card,qeth_tx_actual_queues (card)); - rc = card->discipline->set_online (card, carrier_ok); + rc = disc->set_online (card, carrier_ok);if (rc) goto err_online;
@@ -5330,7 +5330,6 @@ static int qeth_set_online(struct qeth_card *card)kobject_uevent (&card->gdev->dev.kobj,KOBJ_CHANGE );mutex_unlock (&card->conf_mutex); -mutex_unlock (&card->discipline_mutex);return 0 ; err_online:
@@ -5345,15 +5344,14 @@ static int qeth_set_online(struct qeth_card *card)qdio_free (CARD_DDEV (card));mutex_unlock (&card->conf_mutex); -mutex_unlock (&card->discipline_mutex);return rc; } -int qeth_set_offline (struct qeth_card *card,bool resetting) +int qeth_set_offline (struct qeth_card *card,const struct qeth_discipline *disc, +bool resetting) {int rc, rc2, rc3; -mutex_lock (&card->discipline_mutex);mutex_lock (&card->conf_mutex);QETH_CARD_TEXT (card,3 ,"setoffl" );
@@ -5374,7 +5372,7 @@ int qeth_set_offline(struct qeth_card *card, bool resetting)cancel_work_sync (&card->rx_mode_work); - card->discipline->set_offline (card); + disc->set_offline (card);qeth_qdio_clear_card (card,0 );qeth_drain_output_queues (card);
@@ -5395,16 +5393,19 @@ int qeth_set_offline(struct qeth_card *card, bool resetting)kobject_uevent (&card->gdev->dev.kobj,KOBJ_CHANGE );mutex_unlock (&card->conf_mutex); -mutex_unlock (&card->discipline_mutex);return 0 ; }EXPORT_SYMBOL_GPL (qeth_set_offline);static int qeth_do_reset (void *data) { +const struct qeth_discipline *disc;struct qeth_card *card = data;int rc; +/* Lock-free, other users will block until we are done. */ + disc = card->discipline; +QETH_CARD_TEXT (card,2 ,"recover1" );if (!qeth_do_run_thread (card,QETH_RECOVER_THREAD ))return 0 ;
@@ -5412,8 +5413,8 @@ static int qeth_do_reset(void *data)dev_warn (&card->gdev->dev,"A recovery process has been started for the device\n" ); -qeth_set_offline (card, true); - rc =qeth_set_online (card); +qeth_set_offline (card, disc, true); + rc =qeth_set_online (card, disc);if (!rc) {dev_info (&card->gdev->dev,"Device successfully recovered!\n" );
@@ -6360,6 +6361,7 @@ static int qeth_core_probe_device(struct ccwgroup_device *gdev)break ;default : card->info.layer_enforced = true; +/* It's so early that we don't need the discipline_mutex yet. */ rc =qeth_core_load_discipline (card, enforced_disc);if (rc) goto err_load;
@@ -6392,10 +6394,12 @@ static void qeth_core_remove_device(struct ccwgroup_device *gdev)QETH_CARD_TEXT (card,2 ,"removedv" ); +mutex_lock (&card->discipline_mutex);if (card->discipline) { card->discipline->remove (gdev);qeth_core_free_discipline (card); } +mutex_unlock (&card->discipline_mutex);qeth_free_qdio_queues (card);
@@ -6410,6 +6414,7 @@ static int qeth_core_set_online(struct ccwgroup_device *gdev)int rc =0 ;enum qeth_discipline_id def_discipline; +mutex_lock (&card->discipline_mutex);if (!card->discipline) { def_discipline =IS_IQD (card) ?QETH_DISCIPLINE_LAYER3 :QETH_DISCIPLINE_LAYER2 ;
@@ -6423,16 +6428,23 @@ static int qeth_core_set_online(struct ccwgroup_device *gdev) } } - rc =qeth_set_online (card); + rc =qeth_set_online (card, card->discipline); + err: +mutex_unlock (&card->discipline_mutex);return rc; }static int qeth_core_set_offline (struct ccwgroup_device *gdev) {struct qeth_card *card =dev_get_drvdata (&gdev->dev); +int rc; -return qeth_set_offline (card, false); +mutex_lock (&card->discipline_mutex); + rc =qeth_set_offline (card, card->discipline, false); +mutex_unlock (&card->discipline_mutex); + +return rc; }static void qeth_core_shutdown (struct ccwgroup_device *gdev)
drivers/s390/net/qeth_l2_main.c +1 -1
@@ -2208,7 +2208,7 @@ static void qeth_l2_remove_device(struct ccwgroup_device *gdev)wait_event (card->wait_q,qeth_threads_running (card,0xffffffff ) ==0 );if (gdev->state ==CCWGROUP_ONLINE ) -qeth_set_offline (card, false); +qeth_set_offline (card, card->discipline, false);cancel_work_sync (&card->close_dev_work);if (card->dev->reg_state ==NETREG_REGISTERED )
drivers/s390/net/qeth_l3_main.c +2 -2
@@ -1816,7 +1816,7 @@ static netdev_features_t qeth_l3_osa_features_check(struct sk_buff *skb, struct net_device *dev, netdev_features_t features) { - if (qeth_get_ip_version(skb) != 4) + if (vlan_get_protocol(skb) != htons(ETH_P_IP)) features &= ~NETIF_F_HW_VLAN_CTAG_TX;return qeth_features_check (skb, dev, features); }
@@ -1974,7 +1974,7 @@ static void qeth_l3_remove_device(struct ccwgroup_device *cgdev)wait_event (card->wait_q,qeth_threads_running (card,0xffffffff ) ==0 );if (cgdev->state ==CCWGROUP_ONLINE ) -qeth_set_offline (card, false); +qeth_set_offline (card, card->discipline, false);cancel_work_sync (&card->close_dev_work);if (card->dev->reg_state ==NETREG_REGISTERED )
drivers/scsi/lpfc/lpfc_sli.c +0 -2
@@ -10459,7 +10459,6 @@ lpfc_sli4_abts_err_handler(struct lpfc_hba *phba,struct lpfc_nodelist *ndlp, struct sli4_wcqe_xri_aborted *axri) { - struct lpfc_vport *vport; uint32_t ext_status = 0;if (!ndlp || !NLP_CHK_NODE_ACT (ndlp)) {
@@ -10469,7 +10468,6 @@ lpfc_sli4_abts_err_handler(struct lpfc_hba *phba,return ; } - vport = ndlp->vport; lpfc_printf_log(phba, KERN_WARNING, LOG_SLI, "3116 Port generated FCP XRI ABORT event on " "vpi %d rpi %d xri x%x status 0x%x parameter x%x\n",
drivers/scsi/ufs/ufshcd.c +1 -1
@@ -7651,7 +7651,7 @@ static int ufshcd_clear_ua_wlun(struct ufs_hba *hba, u8 wlun)else if (wlun ==UFS_UPIU_RPMB_WLUN ) sdp = hba->sdev_rpmb;else -BUG_ON (1 ); +BUG ();if (sdp) { ret =scsi_device_get (sdp);if (!ret && !scsi_device_online (sdp)) {
drivers/spi/spi-geni-qcom.c +71 -2
124 lines not on this page · raw message
drivers/spi/spi-stm32.c +2 -2
@@ -493,9 +493,9 @@ static u32 stm32h7_spi_prepare_fthlv(struct stm32_spi *spi, u32 xfer_len)/* align packet size with data registers access */ if (spi->cur_bpw >8 ) - fthlv -= (fthlv %2 );/* multiple of 2 */ + fthlv += (fthlv %2 ) ?1 :0 ;else - fthlv -= (fthlv %4 );/* multiple of 4 */ + fthlv += (fthlv %4 ) ? (4 - (fthlv %4 )) :0 ;if (!fthlv) fthlv =1 ;
fs/btrfs/btrfs_inode.h +16 -0
@@ -35,6 +35,22 @@ enum {BTRFS_INODE_IN_DELALLOC_LIST ,BTRFS_INODE_HAS_PROPS ,BTRFS_INODE_SNAPSHOT_FLUSH , +/* +* Set and used when logging an inode and it serves to signal that an +* inode does not have xattrs, so subsequent fsyncs can avoid searching +* for xattrs to log. This bit must be cleared whenever a xattr is added +* to an inode. +*/ +BTRFS_INODE_NO_XATTRS , +/* +* Set when we are in a context where we need to start a transaction and +* have dirty pages with the respective file range locked. This is to +* ensure that when reserving space for the transaction, if we are low +* on available space and need to flush delalloc, we will not flush +* delalloc for this inode, because that could result in a deadlock (on +* the file range, inode's io_tree). +*/ + BTRFS_INODE_NO_DELALLOC_FLUSH, };/* in memory btrfs inode */
fs/btrfs/ctree.h +2 -1
@@ -3001,7 +3001,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, u32 min_type);int btrfs_start_delalloc_snapshot (struct btrfs_root *root); -int btrfs_start_delalloc_roots (struct btrfs_fs_info *fs_info,u64 nr); +int btrfs_start_delalloc_roots (struct btrfs_fs_info *fs_info,u64 nr, +bool in_reclaim_context);int btrfs_set_extent_delalloc (struct btrfs_inode *inode,u64 start,u64 end,unsigned int extra_bits,struct extent_state **cached_state);
fs/btrfs/dev-replace.c +1 -1
@@ -703,7 +703,7 @@ static int btrfs_dev_replace_finishing(struct btrfs_fs_info *fs_info,* flush all outstanding I/O and inode extent mappings before the * copy operation is declared as being finished */ - ret =btrfs_start_delalloc_roots (fs_info,U64_MAX ); + ret =btrfs_start_delalloc_roots (fs_info,U64_MAX , false);if (ret) {mutex_unlock (&dev_replace->lock_finishing_cancel_unmount);return ret;
fs/btrfs/inode.c +51 -18
120 lines not on this page · raw message
fs/btrfs/ioctl.c +1 -1
@@ -4940,7 +4940,7 @@ long btrfs_ioctl(struct file *file, unsigned intcase BTRFS_IOC_SYNC : {int ret; - ret =btrfs_start_delalloc_roots (fs_info,U64_MAX ); + ret =btrfs_start_delalloc_roots (fs_info,U64_MAX , false);if (ret)return ret; ret =btrfs_sync_fs (inode->i_sb,1 );
fs/btrfs/reflink.c +15 -0
@@ -89,6 +89,19 @@ static int copy_inline_to_page(struct btrfs_inode *inode,if (ret) goto out_unlock; +/* +* After dirtying the page our caller will need to start a transaction, +* and if we are low on metadata free space, that can cause flushing of +* delalloc for all inodes in order to get metadata space released. +* However we are holding the range locked for the whole duration of +* the clone/dedupe operation, so we may deadlock if that happens and no +* other task releases enough space. So mark this inode as not being +* possible to flush to avoid such deadlock. We will clear that flag +* when we finish cloning all extents, since a transaction is started +* after finding each extent to clone. +*/ +set_bit (BTRFS_INODE_NO_DELALLOC_FLUSH , &inode->runtime_flags); +if (comp_type ==BTRFS_COMPRESS_NONE ) {char *map;
@@ -547,6 +560,8 @@ static int btrfs_clone(struct inode *src, struct inode *inode, out:btrfs_free_path (path);kvfree (buf); +clear_bit (BTRFS_INODE_NO_DELALLOC_FLUSH , &BTRFS_I (inode)->runtime_flags); +return ret; }
fs/btrfs/space-info.c +3 -1
@@ -532,7 +532,9 @@ static void shrink_delalloc(struct btrfs_fs_info *fs_info, loops =0 ;while ((delalloc_bytes || dio_bytes) && loops <3 ) { -btrfs_start_delalloc_roots (fs_info, items); +u64 nr_pages =min (delalloc_bytes, to_reclaim) >>PAGE_SHIFT ; + +btrfs_start_delalloc_roots (fs_info, nr_pages, true); loops++;if (wait_ordered && !trans) {
fs/btrfs/tree-log.c +8 -0
@@ -4571,6 +4571,10 @@ static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans,const u64 ino =btrfs_ino (inode);int ins_nr =0 ;int start_slot =0 ; +bool found_xattrs = false; + +if (test_bit (BTRFS_INODE_NO_XATTRS , &inode->runtime_flags)) +return 0 ; key.objectid = ino; key.type =BTRFS_XATTR_ITEM_KEY ;
@@ -4609,6 +4613,7 @@ static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans, start_slot = slot; ins_nr++; path->slots[0 ]++; + found_xattrs = true;cond_resched (); }if (ins_nr >0 ) {
@@ -4618,6 +4623,9 @@ static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans,return ret; } +if (!found_xattrs) +set_bit (BTRFS_INODE_NO_XATTRS , &inode->runtime_flags); +return 0 ; }
fs/btrfs/xattr.c +3 -1
@@ -213,9 +213,11 @@ int btrfs_setxattr(struct btrfs_trans_handle *trans, struct inode *inode, } out:btrfs_free_path (path); -if (!ret) +if (!ret) {set_bit (BTRFS_INODE_COPY_EVERYTHING , &BTRFS_I (inode)->runtime_flags); +clear_bit (BTRFS_INODE_NO_XATTRS , &BTRFS_I (inode)->runtime_flags); + }return ret; }
fs/io_uring.c +54 -46
227 lines not on this page · raw message
fs/notify/fanotify/fanotify_user.c +7 -10
@@ -1285,26 +1285,23 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,return ret; } +#ifndef CONFIG_ARCH_SPLIT_ARG64 SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags, __u64, mask, int, dfd, const char __user *, pathname) {return do_fanotify_mark (fanotify_fd, flags, mask, dfd, pathname); } +#endif -#ifdef CONFIG_COMPAT -COMPAT_SYSCALL_DEFINE6 (fanotify_mark, +#if defined(CONFIG_ARCH_SPLIT_ARG64 ) || defined(CONFIG_COMPAT ) +SYSCALL32_DEFINE6 (fanotify_mark, int, fanotify_fd, unsigned int, flags, - __u32, mask0, __u32, mask1, int, dfd, +SC_ARG64 (mask), int, dfd, const char __user *, pathname) { -return do_fanotify_mark (fanotify_fd, flags, -#ifdef __BIG_ENDIAN - ((__u64 )mask0 <<32 ) | mask1, -#else - ((__u64 )mask1 <<32 ) | mask0, -#endif - dfd, pathname); +return do_fanotify_mark (fanotify_fd, flags,SC_VAL64 (__u64, mask), + dfd, pathname); }#endif
fs/zonefs/Kconfig +1 -0
@@ -3,6 +3,7 @@ config ZONEFS_FS depends on BLOCK depends on BLK_DEV_ZONED select FS_IOMAP + select CRC32 help zonefs is a simple file system which exposes zones of a zoned block device (e.g. host-managed or host-aware SMR disk drives) as files.
include/linux/syscalls.h +24 -0
@@ -251,6 +251,30 @@ static inline int is_syscall_trace_event(struct trace_event_call *tp_event) static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))#endif /* __SYSCALL_DEFINEx */ +/* For split 64-bit arguments on 32-bit architectures */ +#ifdef __LITTLE_ENDIAN +#define SC_ARG64 (name) u32, name##_lo, u32, name##_hi +#else +#define SC_ARG64 (name) u32, name##_hi, u32, name##_lo +#endif +#define SC_VAL64 (type, name) ((type) name##_hi << 32 | name##_lo) + +#ifdef CONFIG_COMPAT +#define SYSCALL32_DEFINE1 COMPAT_SYSCALL_DEFINE1 +#define SYSCALL32_DEFINE2 COMPAT_SYSCALL_DEFINE2 +#define SYSCALL32_DEFINE3 COMPAT_SYSCALL_DEFINE3 +#define SYSCALL32_DEFINE4 COMPAT_SYSCALL_DEFINE4 +#define SYSCALL32_DEFINE5 COMPAT_SYSCALL_DEFINE5 +#define SYSCALL32_DEFINE6 COMPAT_SYSCALL_DEFINE6 +#else +#define SYSCALL32_DEFINE1 SYSCALL_DEFINE1 +#define SYSCALL32_DEFINE2 SYSCALL_DEFINE2 +#define SYSCALL32_DEFINE3 SYSCALL_DEFINE3 +#define SYSCALL32_DEFINE4 SYSCALL_DEFINE4 +#define SYSCALL32_DEFINE5 SYSCALL_DEFINE5 +#define SYSCALL32_DEFINE6 SYSCALL_DEFINE6 +#endif +/* * Called before coming back to user-mode. Returning to user-mode with an * address limit different than USER_DS can allow to overwrite kernel memory.
include/net/xdp_sock.h +0 -4
@@ -58,10 +58,6 @@ struct xdp_sock {struct xsk_queue *tx____cacheline_aligned_in_smp ;struct list_head tx_list; -/* Mutual exclusion of NAPI TX thread and sendmsg error paths -* in the SKB destructor callback. -*/ -spinlock_t tx_completion_lock;/* Protects generic receive. */ spinlock_t rx_lock;
include/net/xsk_buff_pool.h +5 -0
@@ -73,6 +73,11 @@ struct xsk_buff_pool {bool dma_need_sync;bool unaligned;void *addrs; +/* Mutual exclusion of the completion ring in the SKB mode. Two cases to protect: +* NAPI TX thread and sendmsg error paths in the SKB destructor callback and when +* sockets share a single cq when the same netdev and queue id is shared. +*/ +spinlock_t cq_lock;struct xdp_buff_xsk *free_heads[]; };
net/8021q/vlan.c +2 -1
@@ -284,7 +284,8 @@ static int register_vlan_device(struct net_device *real_dev, u16 vlan_id)return 0 ; out_free_newdev: -if (new_dev->reg_state ==NETREG_UNINITIALIZED ) +if (new_dev->reg_state ==NETREG_UNINITIALIZED || + new_dev->reg_state ==NETREG_UNREGISTERED )free_netdev (new_dev);return err; }
net/can/isotp.c +1 -0
@@ -1139,6 +1139,7 @@ static int isotp_getname(struct socket *sock, struct sockaddr *uaddr, int peer)if (peer)return -EOPNOTSUPP ; +memset (addr,0 ,sizeof (*addr)); addr->can_family =AF_CAN ; addr->can_ifindex = so->ifindex; addr->can_addr.tp.rx_id = so->rxid;
net/core/skbuff.c +6 -0
@@ -2011,6 +2011,12 @@ int pskb_trim_rcsum_slow(struct sk_buff *skb, unsigned int len) skb->csum =csum_block_sub (skb->csum,skb_checksum (skb, len, delta,0 ), len); + }else if (skb->ip_summed ==CHECKSUM_PARTIAL ) { +int hdlen = (len >skb_headlen (skb)) ?skb_headlen (skb) : len; +int offset =skb_checksum_start_offset (skb) + skb->csum_offset; + +if (offset +sizeof (__sum16) > hdlen) +return -EINVAL ; }return __pskb_trim (skb, len); }
net/ipv4/ip_output.c +1 -1
@@ -302,7 +302,7 @@ static int __ip_finish_output(struct net *net, struct sock *sk, struct sk_buff *if (skb_is_gso (skb))return ip_finish_output_gso (net, sk, skb, mtu); -if (skb->len > mtu || (IPCB (skb)->flags &IPSKB_FRAG_PMTU )) +if (skb->len > mtu ||IPCB (skb)->frag_max_size)return ip_fragment (net, sk, skb, mtu, ip_finish_output2);return ip_finish_output2 (net, sk, skb);
net/ipv4/ip_tunnel.c +5 -6
@@ -759,8 +759,11 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev, goto tx_error; } -if (tnl_update_pmtu (dev, skb, rt, tnl_params->frag_off, inner_iph, -0 ,0 , false)) { + df = tnl_params->frag_off; +if (skb->protocol ==htons (ETH_P_IP ) && !tunnel->ignore_df) + df |= (inner_iph->frag_off &htons (IP_DF )); + +if (tnl_update_pmtu (dev, skb, rt, df, inner_iph,0 ,0 , false)) {ip_rt_put (rt); goto tx_error; }
@@ -788,10 +791,6 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev, ttl =ip4_dst_hoplimit (&rt->dst); } - df = tnl_params->frag_off; -if (skb->protocol ==htons (ETH_P_IP ) && !tunnel->ignore_df) - df |= (inner_iph->frag_off&htons (IP_DF )); - max_headroom =LL_RESERVED_SPACE (rt->dst.dev) +sizeof (struct iphdr ) + rt->dst.header_len +ip_encap_hlen (&tunnel->encap);if (max_headroom > dev->needed_headroom)
net/ipv4/nexthop.c +4 -2
@@ -496,7 +496,7 @@ static int nh_check_attr_group(struct net *net, struct nlattr *tb[],for (i =NHA_GROUP_TYPE +1 ; i < __NHA_MAX; ++i) {if (!tb[i])continue ; -if (tb[NHA_FDB ]) +if (i ==NHA_FDB )continue ;NL_SET_ERR_MSG (extack,"No other attributes can be set in nexthop groups" );
@@ -1277,8 +1277,10 @@ static struct nexthop *nexthop_create_group(struct net *net,return nh; out_no_nh: -for (; i >=0 ; --i) +for (i--; i >=0 ; --i) { +list_del (&nhg->nh_entries[i].nh_list);nexthop_put (nhg->nh_entries[i].nh); + }kfree (nhg->spare);kfree (nhg);
net/ipv6/ip6_fib.c +2 -3
@@ -1025,6 +1025,8 @@ static void fib6_purge_rt(struct fib6_info *rt, struct fib6_node *fn, {struct fib6_table *table = rt->fib6_table; +/* Flush all cached dst in exception table */ +rt6_flush_exceptions (rt);fib6_drop_pcpu_from (rt, table);if (rt->nh && !list_empty (&rt->nh_list))
@@ -1927,9 +1929,6 @@ static void fib6_del_route(struct fib6_table *table, struct fib6_node *fn, net->ipv6.rt6_stats->fib_rt_entries--; net->ipv6.rt6_stats->fib_discarded_routes++; -/* Flush all cached dst in exception table */ -rt6_flush_exceptions (rt); -/* Reset round-robin state, if necessary */ if (rcu_access_pointer (fn->rr_ptr) == rt) fn->rr_ptr =NULL ;
net/xdp/xsk.c +9 -3
@@ -364,9 +364,9 @@ static void xsk_destruct_skb(struct sk_buff *skb)struct xdp_sock *xs =xdp_sk (skb->sk);unsigned long flags; -spin_lock_irqsave (&xs->tx_completion_lock, flags); +spin_lock_irqsave (&xs->pool->cq_lock, flags);xskq_prod_submit_addr (xs->pool->cq, addr); -spin_unlock_irqrestore (&xs->tx_completion_lock, flags); +spin_unlock_irqrestore (&xs->pool->cq_lock, flags);sock_wfree (skb); }
@@ -378,6 +378,7 @@ static int xsk_generic_xmit(struct sock *sk)bool sent_frame = false;struct xdp_desc desc;struct sk_buff *skb; +unsigned long flags;int err =0 ;mutex_lock (&xs->mutex);
@@ -409,10 +410,13 @@ static int xsk_generic_xmit(struct sock *sk)* if there is space in it. This avoids having to implement * any buffering in the Tx path. */ +spin_lock_irqsave (&xs->pool->cq_lock, flags);if (unlikely (err) ||xskq_prod_reserve (xs->pool->cq)) { +spin_unlock_irqrestore (&xs->pool->cq_lock, flags);kfree_skb (skb); goto out; } +spin_unlock_irqrestore (&xs->pool->cq_lock, flags); skb->dev = xs->dev; skb->priority = sk->sk_priority;
@@ -424,6 +428,9 @@ static int xsk_generic_xmit(struct sock *sk)if (err ==NETDEV_TX_BUSY ) {/* Tell user-space to retry the send */ skb->destructor = sock_wfree; +spin_lock_irqsave (&xs->pool->cq_lock, flags); +xskq_prod_cancel (xs->pool->cq); +spin_unlock_irqrestore (&xs->pool->cq_lock, flags);/* Free skb without triggering the perf drop trace */ consume_skb (skb); err = -EAGAIN ;
@@ -1197,7 +1204,6 @@ static int xsk_create(struct net *net, struct socket *sock, int protocol, xs->state =XSK_READY ;mutex_init (&xs->mutex);spin_lock_init (&xs->rx_lock); -spin_lock_init (&xs->tx_completion_lock);INIT_LIST_HEAD (&xs->map_list);spin_lock_init (&xs->map_list_lock);
net/xdp/xsk_buff_pool.c +1 -0
@@ -71,6 +71,7 @@ struct xsk_buff_pool *xp_create_and_assign_umem(struct xdp_sock *xs,INIT_LIST_HEAD (&pool->free_list);INIT_LIST_HEAD (&pool->xsk_tx_list);spin_lock_init (&pool->xsk_tx_list_lock); +spin_lock_init (&pool->cq_lock);refcount_set (&pool->users,1 ); pool->fq = xs->fq_tmp;
net/xdp/xsk_queue.h +5 -0
@@ -286,6 +286,11 @@ static inline bool xskq_prod_is_full(struct xsk_queue *q)return !free_entries; } +static inline void xskq_prod_cancel (struct xsk_queue *q) +{ + q->cached_prod--; +} +static inline int xskq_prod_reserve (struct xsk_queue *q) {if (xskq_prod_is_full (q))
tools/bpf/bpftool/net.c +0 -1
@@ -11,7 +11,6 @@#include <bpf/bpf.h> #include <bpf/libbpf.h> #include <net/if.h> -#include <linux/if.h> #include <linux/rtnetlink.h> #include <linux/socket.h> #include <linux/tc_act/tc_bpf.h>
tools/include/uapi/linux/fscrypt.h +2 -3
@@ -20,7 +20,6 @@#define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04#define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08#define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 0x10 -#define FSCRYPT_POLICY_FLAGS_VALID 0x1F/* Encryption algorithms */ #define FSCRYPT_MODE_AES_256_XTS 1
@@ -28,7 +27,7 @@#define FSCRYPT_MODE_AES_128_CBC 5#define FSCRYPT_MODE_AES_128_CTS 6#define FSCRYPT_MODE_ADIANTUM 9 -#define __FSCRYPT_MODE_MAX 9 +/* If adding a mode number > 9, update FSCRYPT_MODE_MAX in fscrypt_private.h */ /* * Legacy policy version; ad-hoc KDF and no key verification.
@@ -177,7 +176,7 @@ struct fscrypt_get_key_status_arg {#define FS_POLICY_FLAGS_PAD_32 FSCRYPT_POLICY_FLAGS_PAD_32#define FS_POLICY_FLAGS_PAD_MASK FSCRYPT_POLICY_FLAGS_PAD_MASK#define FS_POLICY_FLAG_DIRECT_KEY FSCRYPT_POLICY_FLAG_DIRECT_KEY -#define FS_POLICY_FLAGS_VALID FSCRYPT_POLICY_FLAGS_VALID +#define FS_POLICY_FLAGS_VALID 0x07/* contains old flags only */ #define FS_ENCRYPTION_MODE_INVALID 0/* never used */ #define FS_ENCRYPTION_MODE_AES_256_XTS FSCRYPT_MODE_AES_256_XTS#define FS_ENCRYPTION_MODE_AES_256_GCM 2/* never used */
tools/testing/selftests/bpf/Makefile +3 -0
@@ -146,6 +146,9 @@ VMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux) \ /sys/kernel/btf/vmlinux \ /boot/vmlinux-$(shell uname -r) VMLINUX_BTF ?= $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS)))) +ifeq ($(VMLINUX_BTF),) +$(error Cannot find a vmlinux for VMLINUX_BTF at any of "$(VMLINUX_BTF_PATHS)") +endif DEFAULT_BPFTOOL := $(SCRATCH_DIR)/sbin/bpftool
tools/testing/selftests/net/fib_nexthops.sh +1 -1
@@ -869,7 +869,7 @@ ipv6_torture() pid3=$! ip netns exec me ping -f 2001:db8:101::2 >/dev/null 2>&1 & pid4=$! - ip netns exec me mausezahn veth1 -B 2001:db8:101::2 -A 2001:db8:91::1 -c 0 -t tcp "dp=1-1023, flags=syn" >/dev/null 2>&1 & + ip netns exec me mausezahn -6 veth1 -B 2001:db8:101::2 -A 2001:db8:91::1 -c 0 -t tcp "dp=1-1023, flags=syn" >/dev/null 2>&1 & pid5=$! sleep 300
tools/testing/selftests/net/pmtu.sh +69 -2
89 lines not on this page · raw message