Linux 5.16.17
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 16 -SUBLEVEL = 16 +SUBLEVEL = 17 EXTRAVERSION = NAME = Gobble Gobble
arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi +12 -12
@@ -241,18 +241,18 @@ extirq: interrupt-controller@14 { interrupt-controller; reg = <0x14 4>; interrupt-map = - <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, - <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, - <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, - <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, - <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, - <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, - <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, - <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, - <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, - <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, - <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, - <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; + <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, + <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, + <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, + <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, + <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, + <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, + <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, + <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, + <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, + <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, + <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, + <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; interrupt-map-mask = <0xffffffff 0x0>; }; };
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi +12 -12
@@ -293,18 +293,18 @@ extirq: interrupt-controller@14 { interrupt-controller; reg = <0x14 4>; interrupt-map = - <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, - <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, - <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, - <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, - <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, - <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, - <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, - <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, - <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, - <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, - <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, - <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; + <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, + <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, + <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, + <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, + <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, + <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, + <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, + <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, + <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, + <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, + <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, + <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; interrupt-map-mask = <0xffffffff 0x0>; }; };
arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi +12 -12
@@ -680,18 +680,18 @@ extirq: interrupt-controller@14 { interrupt-controller; reg = <0x14 4>; interrupt-map = - <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, - <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, - <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, - <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, - <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, - <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, - <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, - <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, - <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, - <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, - <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, - <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; + <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, + <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, + <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, + <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, + <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, + <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, + <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, + <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, + <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, + <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, + <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, + <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; interrupt-map-mask = <0xffffffff 0x0>; }; };
arch/arm64/include/asm/vectors.h +2 -2
@@ -56,14 +56,14 @@ enum arm64_bp_harden_el1_vectors { DECLARE_PER_CPU_READ_MOSTLY(const char *, this_cpu_vector);#ifndef CONFIG_UNMAP_KERNEL_AT_EL0 -#define TRAMP_VALIAS 0 +#define TRAMP_VALIAS 0ul#endif static inline const char *arm64_get_bp_hardening_vector (enum arm64_bp_harden_el1_vectors slot) {if (arm64_kernel_unmapped_at_el0 ()) -return (char *)TRAMP_VALIAS +SZ_2K * slot; +return (char *)(TRAMP_VALIAS +SZ_2K * slot);WARN_ON_ONCE (slot ==EL1_VECTOR_KPTI );
arch/arm64/kernel/cpu_errata.c +0 -1
@@ -611,7 +611,6 @@ const struct arm64_cpu_capabilities arm64_errata[] = { { .desc = "ARM erratum 2077057", .capability = ARM64_WORKAROUND_2077057, - .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2), }, #endif
block/blk-core.c +4 -0
@@ -51,6 +51,7 @@#include "blk-mq-sched.h" #include "blk-pm.h" #include "blk-throttle.h" +#include "blk-rq-qos.h" struct dentry *blk_debugfs_root;
@@ -354,6 +355,9 @@ void blk_cleanup_queue(struct request_queue *q)*/ blk_freeze_queue (q); +/* cleanup rq qos structures for queue without disk */ +rq_qos_exit (q); +blk_queue_flag_set (QUEUE_FLAG_DEAD , q);blk_sync_queue (q);
drivers/atm/eni.c +2 -0
@@ -1112,6 +1112,8 @@ DPRINTK("iovcnt = %d\n",skb_shinfo(skb)->nr_frags); skb_data3 = skb->data[3 ]; paddr =dma_map_single (&eni_dev->pci_dev->dev,skb->data,skb->len,DMA_TO_DEVICE ); +if (dma_mapping_error (&eni_dev->pci_dev->dev, paddr)) +return enq_next;ENI_PRV_PADDR (skb) = paddr;/* prepare DMA queue entries */ j =0 ;
drivers/crypto/qcom-rng.c +10 -7
@@ -8,6 +8,7 @@#include <linux/clk.h> #include <linux/crypto.h> #include <linux/io.h> +#include <linux/iopoll.h> #include <linux/module.h> #include <linux/of.h> #include <linux/platform_device.h>
@@ -43,16 +44,19 @@ static int qcom_rng_read(struct qcom_rng *rng, u8 *data, unsigned int max) {unsigned int currsize =0 ;u32 val; +int ret;/* read random data from hardware */ do { - val = readl_relaxed(rng->base + PRNG_STATUS); - if (!(val & PRNG_STATUS_DATA_AVAIL)) - break; + ret = readl_poll_timeout(rng->base + PRNG_STATUS, val, + val & PRNG_STATUS_DATA_AVAIL, + 200, 10000); + if (ret) + return ret; val = readl_relaxed(rng->base + PRNG_DATA_OUT); if (!val) - break; + return -EINVAL; if ((max - currsize) >= WORD_SZ) { memcpy(data, &val, WORD_SZ);
@@ -61,11 +65,10 @@ static int qcom_rng_read(struct qcom_rng *rng, u8 *data, unsigned int max) }else {/* copy only remaining bytes */ memcpy (data, &val, max - currsize); -break ; } }while (currsize < max); -return currsize; +return 0 ; } static int qcom_rng_generate(struct crypto_rng *tfm,
@@ -87,7 +90,7 @@ static int qcom_rng_generate(struct crypto_rng *tfm,mutex_unlock (&rng->lock);clk_disable_unprepare (rng->clk); -return 0 ; +return ret; } static int qcom_rng_seed(struct crypto_rng *tfm, const u8 *seed,
drivers/firmware/efi/apple-properties.c +1 -1
@@ -24,7 +24,7 @@ static bool dump_properties __initdata;static int __init dump_properties_enable (char *arg) { dump_properties = true; -return 0 ; +return 1 ; }__setup ("dump_apple_properties" , dump_properties_enable);
drivers/firmware/efi/efi.c +1 -1
@@ -212,7 +212,7 @@ static int __init efivar_ssdt_setup(char *str)memcpy (efivar_ssdt, str,strlen (str)); else pr_warn("efivar_ssdt: name too long: %s\n", str); -return 0 ; +return 1 ; }__setup ("efivar_ssdt=" , efivar_ssdt_setup);
drivers/gpu/drm/bridge/Kconfig +1 -1
@@ -8,7 +8,6 @@ config DRM_BRIDGE config DRM_PANEL_BRIDGE def_bool y depends on DRM_BRIDGE - depends on DRM_KMS_HELPER select DRM_PANEL help DRM bridge wrapper of DRM panels
@@ -30,6 +29,7 @@ config DRM_CDNS_DSI config DRM_CHIPONE_ICN6211 tristate "Chipone ICN6211 MIPI-DSI/RGB Converter bridge" depends on OF + select DRM_KMS_HELPER select DRM_MIPI_DSI select DRM_PANEL_BRIDGE help
drivers/gpu/drm/imx/parallel-display.c +0 -8
@@ -217,14 +217,6 @@ static int imx_pd_bridge_atomic_check(struct drm_bridge *bridge,if (!imx_pd_format_supported (bus_fmt))return -EINVAL ; -if (bus_flags & - ~(DRM_BUS_FLAG_DE_LOW |DRM_BUS_FLAG_DE_HIGH | -DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE | -DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE )) { -dev_warn (imxpd->dev,"invalid bus_flags (%x)\n" , bus_flags); -return -EINVAL ; - } - bridge_state->output_bus_cfg.flags = bus_flags; bridge_state->input_bus_cfg.flags = bus_flags; imx_crtc_state->bus_flags = bus_flags;
drivers/gpu/drm/mgag200/mgag200_pll.c +3 -3
@@ -404,9 +404,9 @@ mgag200_pixpll_update_g200wb(struct mgag200_pll *pixpll, const struct mgag200_pludelay (50 );/* program pixel pll register */ -WREG_DAC (MGA1064_PIX_PLLC_N , xpixpllcn); -WREG_DAC (MGA1064_PIX_PLLC_M , xpixpllcm); -WREG_DAC (MGA1064_PIX_PLLC_P , xpixpllcp); +WREG_DAC (MGA1064_WB_PIX_PLLC_N , xpixpllcn); +WREG_DAC (MGA1064_WB_PIX_PLLC_M , xpixpllcm); +WREG_DAC (MGA1064_WB_PIX_PLLC_P , xpixpllcp);udelay (50 );
drivers/gpu/drm/panel/Kconfig +1 -0
@@ -96,6 +96,7 @@ config DRM_PANEL_EDP select VIDEOMODE_HELPERS select DRM_DP_AUX_BUS select DRM_DP_HELPER + select DRM_KMS_HELPER help DRM panel driver for dumb eDP panels that need at most a regulator and a GPIO to be powered up. Optionally a backlight can be attached so
drivers/gpu/drm/panel/panel-simple.c +1 -1
@@ -2017,7 +2017,7 @@ static const struct display_timing innolux_g070y2_l01_timing = {static const struct panel_desc innolux_g070y2_l01 = { .timings = &innolux_g070y2_l01_timing, .num_timings =1 , - .bpc =6 , + .bpc =8 , .size = { .width =152 , .height =91 ,
drivers/input/tablet/aiptek.c +4 -6
@@ -1787,15 +1787,13 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)input_set_abs_params (inputdev,ABS_TILT_Y ,AIPTEK_TILT_MIN ,AIPTEK_TILT_MAX ,0 ,0 );input_set_abs_params (inputdev,ABS_WHEEL ,AIPTEK_WHEEL_MIN ,AIPTEK_WHEEL_MAX -1 ,0 ,0 ); -/* Verify that a device really has an endpoint */ -if (intf->cur_altsetting->desc.bNumEndpoints <1 ) { + err =usb_find_common_endpoints (intf->cur_altsetting, +NULL ,NULL , &endpoint,NULL ); +if (err) {dev_err (&intf->dev, -"interface has %d endpoints, but must have minimum 1\n" , - intf->cur_altsetting->desc.bNumEndpoints); - err = -EINVAL ; +"interface has no int in endpoints, but must have minimum 1\n" ); goto fail3; } - endpoint = &intf->cur_altsetting->endpoint[0 ].desc;/* Go set up our URB, which is called when the tablet receives * input.
drivers/net/ethernet/atheros/alx/main.c +4 -1
@@ -1181,8 +1181,11 @@ static int alx_change_mtu(struct net_device *netdev, int mtu) alx->hw.mtu = mtu; alx->rxbuf_size =max (max_frame,ALX_DEF_RXBUF_SIZE );netdev_update_features (netdev); -if (netif_running (netdev)) +if (netif_running (netdev)) { +mutex_lock (&alx->mtx);alx_reinit (alx); +mutex_unlock (&alx->mtx); + }return 0 ; }
drivers/net/ethernet/broadcom/bnx2x/bnx2x.h +0 -2
@@ -2533,6 +2533,4 @@ void bnx2x_register_phc(struct bnx2x *bp);* Meant for implicit re-load flows. */ int bnx2x_vlan_reconfigure_vid (struct bnx2x *bp); -int bnx2x_init_firmware (struct bnx2x *bp); -void bnx2x_release_firmware (struct bnx2x *bp);#endif /* bnx2x.h */
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +17 -11
@@ -2363,24 +2363,30 @@ int bnx2x_compare_fw_ver(struct bnx2x *bp, u32 load_code, bool print_err)/* is another pf loaded on this engine? */ if (load_code !=FW_MSG_CODE_DRV_LOAD_COMMON_CHIP && load_code !=FW_MSG_CODE_DRV_LOAD_COMMON ) { -/* build my FW version dword */ -u32 my_fw = (bp->fw_major) + (bp->fw_minor <<8 ) + - (bp->fw_rev <<16 ) + (bp->fw_eng <<24 ); +u8 loaded_fw_major, loaded_fw_minor, loaded_fw_rev, loaded_fw_eng; +u32 loaded_fw;/* read loaded FW from chip */ -u32 loaded_fw =REG_RD (bp,XSEM_REG_PRAM ); + loaded_fw =REG_RD (bp,XSEM_REG_PRAM ); -DP (BNX2X_MSG_SP ,"loaded fw %x, my fw %x\n" , - loaded_fw, my_fw); + loaded_fw_major = loaded_fw &0xff ; + loaded_fw_minor = (loaded_fw >>8 ) &0xff ; + loaded_fw_rev = (loaded_fw >>16 ) &0xff ; + loaded_fw_eng = (loaded_fw >>24 ) &0xff ; + +DP (BNX2X_MSG_SP ,"loaded fw 0x%x major 0x%x minor 0x%x rev 0x%x eng 0x%x\n" , + loaded_fw, loaded_fw_major, loaded_fw_minor, loaded_fw_rev, loaded_fw_eng);/* abort nic load if version mismatch */ -if (my_fw != loaded_fw) { +if (loaded_fw_major !=BCM_5710_FW_MAJOR_VERSION || + loaded_fw_minor !=BCM_5710_FW_MINOR_VERSION || + loaded_fw_eng !=BCM_5710_FW_ENGINEERING_VERSION || + loaded_fw_rev <BCM_5710_FW_REVISION_VERSION_V15 ) {if (print_err) -BNX2X_ERR ("bnx2x with FW %x was already loaded which mismatches my %x FW. Aborting\n" , - loaded_fw, my_fw); +BNX2X_ERR ("loaded FW incompatible. Aborting\n" );else -BNX2X_DEV_INFO ("bnx2x with FW %x was already loaded which mismatches my %x FW, possibly due to MF UNDI\n" , - loaded_fw, my_fw); +BNX2X_DEV_INFO ("loaded FW incompatible, possibly due to MF UNDI\n" ); +return -EBUSY ; } }
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +2 -13
@@ -12319,15 +12319,6 @@ static int bnx2x_init_bp(struct bnx2x *bp)bnx2x_read_fwinfo (bp); -if (IS_PF (bp)) { - rc =bnx2x_init_firmware (bp); - -if (rc) { -bnx2x_free_mem_bp (bp); -return rc; - } - } - func =BP_FUNC (bp);/* need to reset chip if undi was active */
@@ -12340,7 +12331,6 @@ static int bnx2x_init_bp(struct bnx2x *bp) rc =bnx2x_prev_unload (bp);if (rc) { -bnx2x_release_firmware (bp);bnx2x_free_mem_bp (bp);return rc; }
@@ -13420,7 +13410,7 @@ do { \ (u8 *)bp->arr, len); \ }while (0 ) -int bnx2x_init_firmware(struct bnx2x *bp) +static int bnx2x_init_firmware(struct bnx2x *bp) {const char *fw_file_name, *fw_file_name_v15;struct bnx2x_fw_file_hdr *fw_hdr;
@@ -13520,7 +13510,7 @@ int bnx2x_init_firmware(struct bnx2x *bp)return rc; } -void bnx2x_release_firmware (struct bnx2x *bp) +static void bnx2x_release_firmware (struct bnx2x *bp) {kfree (bp->init_ops_offsets);kfree (bp->init_ops);
@@ -14037,7 +14027,6 @@ static int bnx2x_init_one(struct pci_dev *pdev,return 0 ; init_one_freemem: -bnx2x_release_firmware (bp);bnx2x_free_mem_bp (bp); init_one_exit:
drivers/net/ethernet/broadcom/genet/bcmgenet.c +4 -2
@@ -2287,8 +2287,10 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_rx_ring *ring, dma_length_status = status->length_status;if (dev->features &NETIF_F_RXCSUM ) { rx_csum = (__force __be16)(status->rx_csum &0xffff ); - skb->csum = (__force __wsum )ntohs (rx_csum); - skb->ip_summed =CHECKSUM_COMPLETE ; +if (rx_csum) { + skb->csum = (__force __wsum )ntohs (rx_csum); + skb->ip_summed =CHECKSUM_COMPLETE ; + } }/* DMA flags and length are still valid no matter how
drivers/net/ethernet/intel/iavf/iavf_main.c +14 -1
@@ -2133,6 +2133,13 @@ static void iavf_watchdog_task(struct work_struct *work)queue_delayed_work (iavf_wq, &adapter->watchdog_task,HZ *2 ); } +/** +* iavf_disable_vf - disable VF +* @adapter: board private structure +* +* Set communication failed flag and free all resources. +* NOTE: This function is expected to be called with crit_lock being held. +**/ static void iavf_disable_vf (struct iavf_adapter *adapter) {struct iavf_mac_filter *f, *ftmp;
@@ -2187,7 +2194,6 @@ static void iavf_disable_vf(struct iavf_adapter *adapter)memset (adapter->vf_res,0 ,IAVF_VIRTCHNL_VF_RESOURCE_SIZE );iavf_shutdown_adminq (&adapter->hw); adapter->netdev->flags &= ~IFF_UP ; -mutex_unlock (&adapter->crit_lock); adapter->flags &= ~IAVF_FLAG_RESET_PENDING ;iavf_change_state (adapter, __IAVF_DOWN);wake_up (&adapter->down_waitqueue);
@@ -4022,6 +4028,13 @@ static void iavf_remove(struct pci_dev *pdev)struct iavf_hw *hw = &adapter->hw;int err; +/* When reboot/shutdown is in progress no need to do anything +* as the adapter is already REMOVE state that was set during +* iavf_shutdown() callback. +*/ +if (adapter->state == __IAVF_REMOVE) +return ; +set_bit (__IAVF_IN_REMOVE_TASK, &adapter->crit_section);/* Wait until port initialization is complete. * There are flows where register/unregister netdev may race.
drivers/net/ethernet/intel/ice/ice_main.c +3 -2
@@ -5972,8 +5972,9 @@ ice_update_vsi_tx_ring_stats(struct ice_vsi *vsi,u64 pkts =0 , bytes =0 ; ring =READ_ONCE (rings[i]); -if (ring) -ice_fetch_u64_stats_per_ring (&ring->syncp, ring->stats, &pkts, &bytes); +if (!ring) +continue ; +ice_fetch_u64_stats_per_ring (&ring->syncp, ring->stats, &pkts, &bytes); vsi_stats->tx_packets += pkts; vsi_stats->tx_bytes += bytes; vsi->tx_restart += ring->tx_stats.restart_q;
drivers/net/ethernet/mscc/ocelot_flower.c +15 -1
@@ -54,6 +54,12 @@ static int ocelot_chain_to_block(int chain, bool ingress)*/ static int ocelot_chain_to_lookup (int chain) { +/* Backwards compatibility with older, single-chain tc-flower +* offload support in Ocelot +*/ +if (chain ==0 ) +return 0 ; +return (chain /VCAP_LOOKUP ) %10 ; }
@@ -62,7 +68,15 @@ static int ocelot_chain_to_lookup(int chain)*/ static int ocelot_chain_to_pag (int chain) { -int lookup =ocelot_chain_to_lookup (chain); +int lookup; + +/* Backwards compatibility with older, single-chain tc-flower +* offload support in Ocelot +*/ +if (chain ==0 ) +return 0 ; + + lookup =ocelot_chain_to_lookup (chain);/* calculate PAG value as chain index relative to the first PAG */ return chain -VCAP_IS2_CHAIN (lookup,0 );
drivers/net/hyperv/netvsc_drv.c +3 -0
@@ -1587,6 +1587,9 @@ static void netvsc_get_ethtool_stats(struct net_device *dev, pcpu_sum =kvmalloc_array (num_possible_cpus (),sizeof (struct netvsc_ethtool_pcpu_stats ),GFP_KERNEL ); +if (!pcpu_sum) +return ; +netvsc_get_pcpu_stats (dev, pcpu_sum);for_each_present_cpu (cpu) {struct netvsc_ethtool_pcpu_stats *this_sum = &pcpu_sum[cpu];
drivers/net/phy/marvell.c +4 -4
@@ -1693,8 +1693,8 @@ static int marvell_suspend(struct phy_device *phydev)int err;/* Suspend the fiber mode first */ -if (!linkmode_test_bit (ETHTOOL_LINK_MODE_FIBRE_BIT , - phydev->supported)) { +if (linkmode_test_bit (ETHTOOL_LINK_MODE_FIBRE_BIT , + phydev->supported)) { err =marvell_set_page (phydev,MII_MARVELL_FIBER_PAGE );if (err <0 ) goto error;
@@ -1728,8 +1728,8 @@ static int marvell_resume(struct phy_device *phydev)int err;/* Resume the fiber mode first */ -if (!linkmode_test_bit (ETHTOOL_LINK_MODE_FIBRE_BIT , - phydev->supported)) { +if (linkmode_test_bit (ETHTOOL_LINK_MODE_FIBRE_BIT , + phydev->supported)) { err =marvell_set_page (phydev,MII_MARVELL_FIBER_PAGE );if (err <0 ) goto error;
drivers/net/phy/mscc/mscc_main.c +3 -0
@@ -2685,3 +2685,6 @@ MODULE_DEVICE_TABLE(mdio, vsc85xx_tbl);MODULE_DESCRIPTION ("Microsemi VSC85xx PHY driver" );MODULE_AUTHOR ("Nagaraju Lakkaraju" );MODULE_LICENSE ("Dual MIT/GPL" ); + +MODULE_FIRMWARE (MSCC_VSC8584_REVB_INT8051_FW ); +MODULE_FIRMWARE (MSCC_VSC8574_REVB_INT8051_FW );
drivers/net/wireless/ath/ath10k/wmi.c +1 -26
@@ -2611,30 +2611,9 @@ int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)ath10k_mac_handle_beacon (ar, skb);if (ieee80211_is_beacon (hdr->frame_control) || -ieee80211_is_probe_resp (hdr->frame_control)) { -struct ieee80211_mgmt *mgmt = (void *)skb->data; -u8 *ies; -int ies_ch; - +ieee80211_is_probe_resp (hdr->frame_control)) status->boottime_ns =ktime_get_boottime_ns (); -if (!ar->scan_channel) - goto drop; - - ies = mgmt->u.beacon.variable; - - ies_ch =cfg80211_get_ies_channel_number (mgmt->u.beacon.variable, -skb_tail_pointer (skb) - ies, - sband->band); - -if (ies_ch >0 && ies_ch != channel) { -ath10k_dbg (ar,ATH10K_DBG_MGMT , -"channel mismatched ds channel %d scan channel %d\n" , - ies_ch, channel); - goto drop; - } - } - ath10k_dbg(ar, ATH10K_DBG_MGMT, "event mgmt rx skb %pK len %d ftype %02x stype %02x\n", skb, skb->len,
@@ -2648,10 +2627,6 @@ int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)ieee80211_rx_ni (ar->hw, skb);return 0 ; - -drop: -dev_kfree_skb (skb); -return 0 ; }static int freq_to_idx (struct ath10k *ar,int freq)
drivers/nvme/target/configfs.c +0 -39
@@ -1233,44 +1233,6 @@ static ssize_t nvmet_subsys_attr_model_store(struct config_item *item, }CONFIGFS_ATTR (nvmet_subsys_, attr_model); -static ssize_t nvmet_subsys_attr_discovery_nqn_show (struct config_item *item, -char *page) -{ -return snprintf (page,PAGE_SIZE ,"%s\n" , - nvmet_disc_subsys->subsysnqn); -} - -static ssize_t nvmet_subsys_attr_discovery_nqn_store (struct config_item *item, -const char *page,size_t count) -{ -struct nvmet_subsys *subsys =to_subsys (item); -char *subsysnqn; -int len; - - len =strcspn (page,"\n" ); -if (!len) -return -EINVAL ; - - subsysnqn =kmemdup_nul (page, len,GFP_KERNEL ); -if (!subsysnqn) -return -ENOMEM ; - -/* -* The discovery NQN must be different from subsystem NQN. -*/ -if (!strcmp (subsysnqn, subsys->subsysnqn)) { -kfree (subsysnqn); -return -EBUSY ; - } -down_write (&nvmet_config_sem); -kfree (nvmet_disc_subsys->subsysnqn); - nvmet_disc_subsys->subsysnqn = subsysnqn; -up_write (&nvmet_config_sem); - -return count; -} -CONFIGFS_ATTR (nvmet_subsys_, attr_discovery_nqn); -#ifdef CONFIG_BLK_DEV_INTEGRITY static ssize_t nvmet_subsys_attr_pi_enable_show (struct config_item *item,char *page)
@@ -1300,7 +1262,6 @@ static struct configfs_attribute *nvmet_subsys_attrs[] = { &nvmet_subsys_attr_attr_cntlid_min, &nvmet_subsys_attr_attr_cntlid_max, &nvmet_subsys_attr_attr_model, - &nvmet_subsys_attr_attr_discovery_nqn, #ifdef CONFIG_BLK_DEV_INTEGRITY &nvmet_subsys_attr_attr_pi_enable, #endif
drivers/nvme/target/core.c +1 -2
@@ -1493,8 +1493,7 @@ static struct nvmet_subsys *nvmet_find_get_subsys(struct nvmet_port *port,if (!port)return NULL ; -if (!strcmp (NVME_DISC_SUBSYS_NAME , subsysnqn) || - !strcmp (nvmet_disc_subsys->subsysnqn, subsysnqn)) { +if (!strcmp (NVME_DISC_SUBSYS_NAME , subsysnqn)) {if (!kref_get_unless_zero (&nvmet_disc_subsys->ref))return NULL ;return nvmet_disc_subsys;
drivers/scsi/mpt3sas/mpt3sas_base.c +3 -2
@@ -2011,9 +2011,10 @@ mpt3sas_base_sync_reply_irqs(struct MPT3SAS_ADAPTER *ioc, u8 poll)enable_irq (reply_q->os_irq); } } + +if (poll) +_base_process_reply_queue (reply_q); } -if (poll) -_base_process_reply_queue (reply_q); }/**
drivers/usb/class/usbtmc.c +10 -3
@@ -1919,6 +1919,7 @@ static int usbtmc_ioctl_request(struct usbtmc_device_data *data,struct usbtmc_ctrlrequest request;u8 *buffer =NULL ;int rv; +unsigned int is_in, pipe;unsigned long res; res =copy_from_user (&request, arg,sizeof (struct usbtmc_ctrlrequest ));
@@ -1928,12 +1929,14 @@ static int usbtmc_ioctl_request(struct usbtmc_device_data *data,if (request.req.wLength >USBTMC_BUFSIZE )return -EMSGSIZE ; + is_in = request.req.bRequestType &USB_DIR_IN ; +if (request.req.wLength) { buffer =kmalloc (request.req.wLength,GFP_KERNEL );if (!buffer)return -ENOMEM ; -if ((request.req.bRequestType &USB_DIR_IN ) ==0 ) { +if (!is_in) {/* Send control data to device */ res =copy_from_user (buffer, request.data, request.req.wLength);
@@ -1944,8 +1947,12 @@ static int usbtmc_ioctl_request(struct usbtmc_device_data *data, } } +if (is_in) + pipe =usb_rcvctrlpipe (data->usb_dev,0 ); +else + pipe =usb_sndctrlpipe (data->usb_dev,0 ); rv = usb_control_msg(data->usb_dev, - usb_rcvctrlpipe(data->usb_dev, 0), + pipe, request.req.bRequest, request.req.bRequestType, request.req.wValue,
@@ -1957,7 +1964,7 @@ static int usbtmc_ioctl_request(struct usbtmc_device_data *data, goto exit; } -if (rv && (request.req.bRequestType &USB_DIR_IN )) { +if (rv && is_in) {/* Read control data from device */ res =copy_to_user (request.data, buffer, rv);if (res)
drivers/usb/gadget/function/rndis.c +1 -0
@@ -640,6 +640,7 @@ static int rndis_set_response(struct rndis_params *params, BufLength =le32_to_cpu (buf->InformationBufferLength); BufOffset =le32_to_cpu (buf->InformationBufferOffset);if ((BufLength >RNDIS_MAX_TOTAL_SIZE ) || + (BufOffset >RNDIS_MAX_TOTAL_SIZE ) || (BufOffset +8 >=RNDIS_MAX_TOTAL_SIZE ))return -EINVAL ;
drivers/usb/gadget/udc/core.c +0 -3
@@ -1436,7 +1436,6 @@ static void usb_gadget_remove_driver(struct usb_udc *udc)usb_gadget_udc_stop (udc); udc->driver =NULL ; - udc->dev.driver =NULL ; udc->gadget->dev.driver =NULL ; }
@@ -1498,7 +1497,6 @@ static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *dri driver->function); udc->driver = driver; - udc->dev.driver = &driver->driver; udc->gadget->dev.driver = &driver->driver;usb_gadget_udc_set_speed (udc, driver->max_speed);
@@ -1521,7 +1519,6 @@ static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *dridev_err (&udc->dev,"failed to start %s: %d\n" , udc->driver->function, ret); udc->driver =NULL ; - udc->dev.driver =NULL ; udc->gadget->dev.driver =NULL ;return ret; }
drivers/vhost/vsock.c +2 -1
@@ -753,7 +753,8 @@ static int vhost_vsock_dev_release(struct inode *inode, struct file *file)/* Iterating over all connections for all CIDs to find orphans is * inefficient. Room for improvement here. */ -vsock_for_each_connected_socket (vhost_vsock_reset_orphans); +vsock_for_each_connected_socket (&vhost_transport.transport, + vhost_vsock_reset_orphans);/* Don't check the owner, because we are in the release path, so we * need to stop the vsock device in any case.
fs/btrfs/block-group.c +24 -2
@@ -124,7 +124,16 @@ void btrfs_put_block_group(struct btrfs_block_group *cache) {if (refcount_dec_and_test (&cache->refs)) {WARN_ON (cache->pinned >0 ); -WARN_ON (cache->reserved >0 ); +/* +* If there was a failure to cleanup a log tree, very likely due +* to an IO failure on a writeback attempt of one or more of its +* extent buffers, we could not do proper (and cheap) unaccounting +* of their reserved space, so don't warn on reserved > 0 in that +* case. +*/ +if (!(cache->flags &BTRFS_BLOCK_GROUP_METADATA ) || + !BTRFS_FS_LOG_CLEANUP_ERROR (cache->fs_info)) +WARN_ON (cache->reserved >0 );/* * A block_group shouldn't be on the discard_list anymore.
@@ -3987,9 +3996,22 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info)* important and indicates a real bug if this happens. */ if (WARN_ON (space_info->bytes_pinned >0 || - space_info->bytes_reserved >0 || space_info->bytes_may_use >0 ))btrfs_dump_space_info (info, space_info,0 ,0 ); + +/* +* If there was a failure to cleanup a log tree, very likely due +* to an IO failure on a writeback attempt of one or more of its +* extent buffers, we could not do proper (and cheap) unaccounting +* of their reserved space, so don't warn on bytes_reserved > 0 in +* that case. +*/ +if (!(space_info->flags &BTRFS_BLOCK_GROUP_METADATA ) || + !BTRFS_FS_LOG_CLEANUP_ERROR (info)) { +if (WARN_ON (space_info->bytes_reserved >0 )) +btrfs_dump_space_info (info, space_info,0 ,0 ); + } +WARN_ON (space_info->reclaim_size >0 );list_del (&space_info->list);btrfs_sysfs_remove_space_info (space_info);
fs/btrfs/ctree.h +7 -0
@@ -143,6 +143,9 @@ enum {BTRFS_FS_STATE_DEV_REPLACING ,/* The btrfs_fs_info created for self-tests */ BTRFS_FS_STATE_DUMMY_FS_INFO , + +/* Indicates there was an error cleaning up a log tree. */ + BTRFS_FS_STATE_LOG_CLEANUP_ERROR, };#define BTRFS_BACKREF_REV_MAX 256
@@ -3585,6 +3588,10 @@ static inline void btrfs_print_v0_err(struct btrfs_fs_info *fs_info) "Unsupported V0 extent filesystem detected. Aborting. Please re-create your filesystem with a newer kernel"); } +#define BTRFS_FS_LOG_CLEANUP_ERROR (fs_info) \ + (unlikely(test_bit(BTRFS_FS_STATE_LOG_CLEANUP_ERROR, \ + &(fs_info)->fs_state))) + __printf(5, 6)__cold void __btrfs_handle_fs_error(struct btrfs_fs_info *fs_info, const char *function,
fs/btrfs/tree-log.c +23 -0
@@ -3449,6 +3449,29 @@ static void free_log_tree(struct btrfs_trans_handle *trans,if (log->node) { ret =walk_log_tree (trans, log, &wc);if (ret) { +/* +* We weren't able to traverse the entire log tree, the +* typical scenario is getting an -EIO when reading an +* extent buffer of the tree, due to a previous writeback +* failure of it. +*/ +set_bit (BTRFS_FS_STATE_LOG_CLEANUP_ERROR , + &log->fs_info->fs_state); + +/* +* Some extent buffers of the log tree may still be dirty +* and not yet written back to storage, because we may +* have updates to a log tree without syncing a log tree, +* such as during rename and link operations. So flush +* them out and wait for their writeback to complete, so +* that we properly cleanup their state and pages. +*/ +btrfs_write_marked_extents (log->fs_info, + &log->dirty_log_pages, +EXTENT_DIRTY |EXTENT_NEW ); +btrfs_wait_tree_log_extents (log, +EXTENT_DIRTY |EXTENT_NEW ); +if (trans)btrfs_abort_transaction (trans, ret);else
fs/ocfs2/super.c +11 -11
@@ -1106,17 +1106,6 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent) goto read_super_error; } - root =d_make_root (inode); -if (!root) { - status = -ENOMEM ; -mlog_errno (status); - goto read_super_error; - } - - sb->s_root = root; - -ocfs2_complete_mount_recovery (osb); - osb->osb_dev_kset =kset_create_and_add (sb->s_id,NULL , &ocfs2_kset->kobj);if (!osb->osb_dev_kset) {
@@ -1134,6 +1123,17 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent) goto read_super_error; } + root =d_make_root (inode); +if (!root) { + status = -ENOMEM ; +mlog_errno (status); + goto read_super_error; + } + + sb->s_root = root; + +ocfs2_complete_mount_recovery (osb); +if (ocfs2_mount_local (osb))snprintf (nodestr,sizeof (nodestr),"local" );else
include/linux/if_arp.h +1 -0
@@ -52,6 +52,7 @@ static inline bool dev_is_mac_header_xmit(const struct net_device *dev)case ARPHRD_VOID :case ARPHRD_NONE :case ARPHRD_RAWIP : +case ARPHRD_PIMREG :return false;default :return true;
include/net/af_vsock.h +2 -1
@@ -205,7 +205,8 @@ struct sock *vsock_find_bound_socket(struct sockaddr_vm *addr);struct sock *vsock_find_connected_socket (struct sockaddr_vm *src,struct sockaddr_vm *dst);void vsock_remove_sock (struct vsock_sock *vsk); -void vsock_for_each_connected_socket (void (*fn)(struct sock *sk)); +void vsock_for_each_connected_socket (struct vsock_transport *transport, +void (*fn)(struct sock *sk));int vsock_assign_transport (struct vsock_sock *vsk,struct vsock_sock *psk);bool vsock_find_cid (unsigned int cid);
mm/swap_state.c +1 -1
@@ -478,7 +478,7 @@ struct page *__read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,* __read_swap_cache_async(), which has set SWAP_HAS_CACHE * in swap_map, but not yet added its page to swap cache. */ -cond_resched (); +schedule_timeout_uninterruptible (1 ); }/*
net/dsa/dsa2.c +1 -0
@@ -1327,6 +1327,7 @@ static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)const char *user_protocol; master =of_find_net_device_by_node (ethernet); +of_node_put (ethernet);if (!master)return -EPROBE_DEFER ;
net/ipv6/esp6.c +1 -2
@@ -813,8 +813,7 @@ int esp6_input_done2(struct sk_buff *skb, int err)struct tcphdr *th; offset =ipv6_skip_exthdr (skb, offset, &nexthdr, &frag_off); - -if (offset <0 ) { +if (offset ==-1 ) { err = -EINVAL ; goto out; }
net/packet/af_packet.c +10 -1
@@ -2316,8 +2316,11 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, copy_skb =skb_get (skb); skb_head = skb->data; } -if (copy_skb) +if (copy_skb) { +memset (&PACKET_SKB_CB (copy_skb)->sa.ll,0 , +sizeof (PACKET_SKB_CB (copy_skb)->sa.ll));skb_set_owner_r (copy_skb, sk); + } } snaplen = po->rx_ring.frame_size - macoff;if ((int )snaplen <0 ) {
@@ -3469,6 +3472,8 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,sock_recv_ts_and_drops (msg, sk, skb);if (msg->msg_name) { +const size_t max_len =min (sizeof (skb->cb), +sizeof (struct sockaddr_storage ));int copy_len;/* If the address length field is there to be filled
@@ -3491,6 +3496,10 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, msg->msg_namelen =sizeof (struct sockaddr_ll ); } } +if (WARN_ON_ONCE (copy_len > max_len)) { + copy_len = max_len; + msg->msg_namelen = copy_len; + }memcpy (msg->msg_name, &PACKET_SKB_CB (skb)->sa, copy_len); }
net/vmw_vsock/af_vsock.c +7 -2
@@ -333,7 +333,8 @@ void vsock_remove_sock(struct vsock_sock *vsk) }EXPORT_SYMBOL_GPL (vsock_remove_sock); -void vsock_for_each_connected_socket (void (*fn)(struct sock *sk)) +void vsock_for_each_connected_socket (struct vsock_transport *transport, +void (*fn)(struct sock *sk)) {int i;
@@ -342,8 +343,12 @@ void vsock_for_each_connected_socket(void (*fn)(struct sock *sk))for (i =0 ; i <ARRAY_SIZE (vsock_connected_table); i++) {struct vsock_sock *vsk;list_for_each_entry (vsk, &vsock_connected_table[i], - connected_table) + connected_table) { +if (vsk->transport != transport) +continue ; +fn (sk_vsock (vsk)); + } }spin_unlock_bh (&vsock_table_lock);
net/vmw_vsock/virtio_transport.c +5 -2
@@ -24,6 +24,7 @@static struct workqueue_struct *virtio_vsock_workqueue;static struct virtio_vsock __rcu *the_virtio_vsock;static DEFINE_MUTEX (the_virtio_vsock_mutex);/* protects the_virtio_vsock */ +static struct virtio_transport virtio_transport;/* forward declaration */ struct virtio_vsock {struct virtio_device *vdev;
@@ -384,7 +385,8 @@ static void virtio_vsock_event_handle(struct virtio_vsock *vsock,switch (le32_to_cpu (event->id)) {case VIRTIO_VSOCK_EVENT_TRANSPORT_RESET :virtio_vsock_update_guest_cid (vsock); -vsock_for_each_connected_socket (virtio_vsock_reset_sock); +vsock_for_each_connected_socket (&virtio_transport.transport, + virtio_vsock_reset_sock);break ; } }
@@ -662,7 +664,8 @@ static void virtio_vsock_remove(struct virtio_device *vdev)synchronize_rcu ();/* Reset all connected sockets when the device disappear */ -vsock_for_each_connected_socket (virtio_vsock_reset_sock); +vsock_for_each_connected_socket (&virtio_transport.transport, + virtio_vsock_reset_sock);/* Stop all work handlers to make sure no one is accessing the device, * so we can safely call vdev->config->reset().
net/vmw_vsock/vmci_transport.c +4 -1
@@ -75,6 +75,8 @@ static u32 vmci_transport_qp_resumed_sub_id = VMCI_INVALID_ID;static int PROTOCOL_OVERRIDE =-1 ; +static struct vsock_transport vmci_transport;/* forward declaration */ +/* Helper function to convert from a VMCI error code to a VSock error code. */ static s32 vmci_transport_error_to_vsock_error (s32 vmci_error)
@@ -882,7 +884,8 @@ static void vmci_transport_qp_resumed_cb(u32 sub_id,const struct vmci_event_data *e_data, void *client_data) { - vsock_for_each_connected_socket(vmci_transport_handle_detach); + vsock_for_each_connected_socket(&vmci_transport, +vmci_transport_handle_detach ); }static void vmci_transport_recv_pkt_work (struct work_struct *work)
tools/perf/util/symbol.c +1 -1
@@ -231,7 +231,7 @@ void symbols__fixup_end(struct rb_root_cached *symbols) prev = curr; curr = rb_entry(nd, struct symbol, rb_node); -if (prev->end == prev->start && prev->end != curr->start) +if (prev->end == prev->start || prev->end != curr->start)arch__symbols__fixup_end (prev, curr); }
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.16.17 kernel.
All users of the 5.16 kernel series must upgrade.
The updated 5.16.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.16.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/arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 24 +++++++------- arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 24 +++++++------- arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 24 +++++++------- arch/arm64/include/asm/vectors.h | 4 +- arch/arm64/kernel/cpu_errata.c | 1 block/blk-core.c | 4 ++ drivers/atm/eni.c | 2 + drivers/crypto/qcom-rng.c | 17 +++++----- drivers/firmware/efi/apple-properties.c | 2 - drivers/firmware/efi/efi.c | 2 - drivers/gpu/drm/bridge/Kconfig | 2 - drivers/gpu/drm/imx/parallel-display.c | 8 ---- drivers/gpu/drm/mgag200/mgag200_pll.c | 6 +-- drivers/gpu/drm/panel/Kconfig | 1 drivers/gpu/drm/panel/panel-simple.c | 2 - drivers/input/tablet/aiptek.c | 10 ++--- drivers/net/ethernet/atheros/alx/main.c | 5 ++ drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 2 - drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 28 ++++++++++------ drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 15 +------- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 6 ++- drivers/net/ethernet/intel/iavf/iavf_main.c | 15 ++++++++ drivers/net/ethernet/intel/ice/ice_main.c | 5 +- drivers/net/ethernet/mscc/ocelot_flower.c | 16 ++++++++- drivers/net/hyperv/netvsc_drv.c | 3 + drivers/net/phy/marvell.c | 8 ++-- drivers/net/phy/mscc/mscc_main.c | 3 + drivers/net/wireless/ath/ath10k/wmi.c | 27 --------------- drivers/nvme/target/configfs.c | 39 ----------------------- drivers/nvme/target/core.c | 3 - drivers/scsi/mpt3sas/mpt3sas_base.c | 5 +- drivers/usb/class/usbtmc.c | 13 +++++-- drivers/usb/gadget/function/rndis.c | 1 drivers/usb/gadget/udc/core.c | 3 - drivers/vhost/vsock.c | 3 + fs/btrfs/block-group.c | 26 ++++++++++++++- fs/btrfs/ctree.h | 7 ++++ fs/btrfs/tree-log.c | 23 +++++++++++++ fs/ocfs2/super.c | 22 ++++++------ include/linux/if_arp.h | 1 include/net/af_vsock.h | 3 + mm/swap_state.c | 2 - net/dsa/dsa2.c | 1 net/ipv6/esp6.c | 3 - net/packet/af_packet.c | 11 +++++- net/vmw_vsock/af_vsock.c | 9 ++++- net/vmw_vsock/virtio_transport.c | 7 ++-- net/vmw_vsock/vmci_transport.c | 5 ++ tools/perf/util/symbol.c | 2 - 50 files changed, 252 insertions(+), 205 deletions(-)
Alan Stern (2):
usb: gadget: Fix use-after-free bug by not setting udc->dev.driver
usb: usbtmc: Fix bug in pipe direction for control transfers
Arnd Bergmann (2):
arm64: fix clang warning about TRAMP_VALIAS
arm64: errata: avoid duplicate field initializer
Brian Masney (1):
crypto: qcom-rng - ensure buffer for generate is completely filled
Christoph Niedermaier (1):
drm/imx: parallel-display: Remove bus flags check in imx_pd_bridge_atomic_check()
Dan Carpenter (1):
usb: gadget: rndis: prevent integer overflow in rndis_set_response()
Doug Berger (1):
net: bcmgenet: skip invalid partial checksums
Eric Dumazet (1):
net/packet: fix slab-out-of-bounds access in packet_recvmsg()
Filipe Manana (1):
btrfs: skip reserved bytes warning on unmount after log cleanup failure
Greg Kroah-Hartman (1):
Linux 5.16.17
Guo Ziliang (1):
mm: swap: get rid of livelock in swapin readahead
Hannes Reinecke (1):
nvmet: revert "nvmet: make discovery NQN configurable"
Ivan Vecera (1):
iavf: Fix hang during reboot/shutdown
Jiasheng Jiang (2):
atm: eni: Add check for dma_map_single
hv_netvsc: Add check for kvmalloc_array
Jiyong Park (1):
vsock: each transport cycles only on its own sockets
Jocelyn Falempe (1):
drm/mgag200: Fix PLL setup for g200wb and g200ew
Joseph Qi (1):
ocfs2: fix crash when initialize filecheck kobj fails
Juerg Haefliger (1):
net: phy: mscc: Add MODULE_FIRMWARE macros
Kalle Valo (1):
Revert "ath10k: drop beacon and probe response which leak from other channel"
Kurt Cancemi (1):
net: phy: marvell: Fix invalid comparison in the resume and suspend functions
Maciej Fijalkowski (1):
ice: fix NULL pointer dereference in ice_update_vsi_tx_ring_stats()
Manish Chopra (1):
bnx2x: fix built-in kernel driver load failure
Marek Vasut (1):
drm/panel: simple: Fix Innolux G070Y2-L01 BPP settings
Matt Lupfer (1):
scsi: mpt3sas: Page fault in reply q processing
Miaoqian Lin (1):
net: dsa: Add missing of_node_put() in dsa_port_parse_of
Michael Petlan (1):
perf symbols: Fix symbol size calculation condition
Ming Lei (1):
block: release rq qos structures for queue without disk
Nicolas Dichtel (1):
net: handle ARPHRD_PIMREG in dev_is_mac_header_xmit()
Niels Dossche (1):
alx: acquire mutex for alx_reinit in alx_change_mtu
Pavel Skripkin (1):
Input: aiptek - properly check endpoint type
Przemyslaw Patynowski (1):
iavf: Fix double free in iavf_reset_task
Randy Dunlap (1):
efi: fix return value of __setup handlers
Sabrina Dubroca (1):
esp6: fix check on ipv6_skip_exthdr's return value
Thomas Zimmermann (1):
drm: Don't make DRM_PANEL_BRIDGE dependent on DRM_KMS_HELPERS
Vladimir Oltean (2):
net: mscc: ocelot: fix backwards compatibility with single-chain tc-flower offload Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"