Linux 5.10.130
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.130 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml | 2 Makefile | 2 arch/arm/boot/dts/at91-sam9x60ek.dts | 3 arch/arm/boot/dts/at91-sama5d2_icp.dts | 6 arch/arm/mach-at91/pm.c | 6 arch/arm/mach-meson/platsmp.c | 2 arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 18 arch/arm64/boot/dts/qcom/msm8992-bullhead-rev-101.dts | 2 arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts | 2 arch/arm64/boot/dts/qcom/msm8994.dtsi | 4 arch/powerpc/platforms/powernv/rng.c | 16 drivers/base/core.c | 3 drivers/base/power/runtime.c | 20 drivers/dma/at_xdmac.c | 5 drivers/dma/imx-sdma.c | 2 drivers/dma/pl330.c | 2 drivers/dma/ti/dma-crossbar.c | 5 drivers/i2c/busses/i2c-cadence.c | 1 drivers/iommu/intel/dmar.c | 2 drivers/misc/cardreader/rtsx_usb.c | 27 - drivers/net/can/grcan.c | 1 drivers/net/can/usb/gs_usb.c | 23 drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 25 drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 255 +++++----- drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 4 drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 119 ++-- drivers/net/ethernet/ibm/ibmvnic.c | 9 drivers/net/ethernet/intel/i40e/i40e.h | 16 drivers/net/ethernet/intel/i40e/i40e_main.c | 73 ++ drivers/net/ethernet/intel/i40e/i40e_register.h | 13 drivers/net/ethernet/intel/i40e/i40e_type.h | 1 drivers/net/ethernet/realtek/r8169_main.c | 10 drivers/net/usb/usbnet.c | 17 drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | 10 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 2 drivers/video/fbdev/core/fbcon.c | 33 + drivers/video/fbdev/core/fbmem.c | 16 fs/xfs/xfs_inode.c | 1 include/linux/fbcon.h | 4 include/linux/memregion.h | 2 include/linux/pm_runtime.h | 5 include/linux/rtsx_usb.h | 2 include/video/of_display_timing.h | 2 kernel/bpf/verifier.c | 113 +--- lib/idr.c | 3 mm/slub.c | 4 net/can/bcm.c | 18 net/netfilter/nf_tables_api.c | 9 net/netfilter/nft_set_pipapo.c | 48 + net/rose/rose_route.c | 4 net/xdp/xsk_buff_pool.c | 1 sound/pci/hda/patch_realtek.c | 1 tools/testing/selftests/net/forwarding/lib.sh | 6 53 files changed, 631 insertions(+), 349 deletions(-)
Andrei Lalaev (1):
pinctrl: sunxi: sunxi_pconf_set: use correct offset
Claudiu Beznea (2):
ARM: at91: pm: use proper compatible for sama5d2's rtc
ARM: at91: pm: use proper compatibles for sam9x60's rtc and rtt
Dan Williams (1):
memregion: Fix memregion_free() fallback definition
Daniel Borkmann (2):
bpf: Fix incorrect verifier simulation around jmp32's jeq/jne
bpf: Fix insufficient bounds propagation from adjust_scalar_min_max_vals
Dmitry Osipenko (1):
dmaengine: pl330: Fix lockdep warning about non-static key
Duoming Zhou (1):
net: rose: fix UAF bug caused by rose_t0timer_expiry
Eric Sandeen (1):
xfs: remove incorrect ASSERT in xfs_rename
Eugen Hristev (2):
ARM: dts: at91: sam9x60ek: fix eeprom compatible and size
ARM: dts: at91: sama5d2_icp: fix eeprom compatibles
Greg Kroah-Hartman (1):
Linux 5.10.130
Guiling Deng (1):
fbdev: fbmem: Fix logo center image dx issue
Heiner Kallweit (1):
r8169: fix accessing unset transport header
Helge Deller (3):
fbmem: Check virtual screen sizes in fb_set_var()
fbcon: Disallow setting font bigger than screen size
fbcon: Prevent that screen size is smaller than font size
Hsin-Yi Wang (1):
video: of_display_timing.h: include errno.h
Ivan Malov (1):
xsk: Clear page contiguity bit when unmapping pool
Jann Horn (1):
mm/slub: add missing TID updates on slab deactivation
Jason A. Donenfeld (1):
powerpc/powernv: delay rng platform device creation until later in boot
Jimmy Assarsson (3):
can: kvaser_usb: replace run-time checks with struct kvaser_usb_driver_info
can: kvaser_usb: kvaser_usb_leaf: fix CAN clock frequency regression
can: kvaser_usb: kvaser_usb_leaf: fix bittiming limits
Konrad Dybcio (1):
arm64: dts: qcom: msm8994: Fix CPU6/7 reg values
Liang He (1):
can: grcan: grcan_probe(): remove extra of_node_get()
Linus Torvalds (1):
ida: don't use BUG_ON() for debugging
Lukasz Cieplicki (1):
i40e: Fix dropped jumbo frames statistics
Miaoqian Lin (3):
ARM: meson: Fix refcount leak in meson_smp_prepare_cpus
dmaengine: ti: Fix refcount leak in ti_dra7_xbar_route_allocate
dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate
Michael Walle (1):
dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly
Oliver Hartkopp (1):
can: bcm: use call_rcu() instead of costly synchronize_rcu()
Oliver Neukum (1):
usbnet: fix memory leak in error case
Pablo Neira Ayuso (2):
netfilter: nft_set_pipapo: release elements in clone from abort path
netfilter: nf_tables: stricter validation of element data
Peng Fan (3):
arm64: dts: imx8mp-evk: correct mmc pad settings
arm64: dts: imx8mp-evk: correct gpio-led pad settings
arm64: dts: imx8mp-evk: correct I2C3 pad settings
Peter Robinson (1):
dmaengine: imx-sdma: Allow imx8m for imx7 FW revs
Rafael J. Wysocki (1):
PM: runtime: Redefine pm_runtime_release_supplier()
Rhett Aultman (1):
can: gs_usb: gs_usb_open/close(): fix memory leak
Rick Lindsley (1):
ibmvnic: Properly dispose of all skbs during a failover.
Samuel Holland (2):
pinctrl: sunxi: a83t: Fix NAND function name for some pins
dt-bindings: dma: allwinner,sun50i-a64-dma: Fix min/max typo
Satish Nagireddy (1):
i2c: cadence: Unregister the clk notifier in error path
Sherry Sun (1):
arm64: dts: imx8mp-evk: correct the uart2 pinctl value
Shuah Khan (3):
misc: rtsx_usb: fix use of dma mapped buffer for usb bulk transfer
misc: rtsx_usb: use separate command and response buffers
misc: rtsx_usb: set return value in rsp_buf alloc err path
Stephan Gerhold (1):
arm64: dts: qcom: msm8992-*: Fix vdd_lvs1_2-supply typo
Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo L140PU
Vladimir Oltean (3):
selftests: forwarding: fix flood_unicast_test when h2 supports IFF_UNICAST_FLT
selftests: forwarding: fix learning_test when h1 supports IFF_UNICAST_FLT
selftests: forwarding: fix error message in learning_test
Yian Chen (1):
iommu/vt-d: Fix PCI bus rescan device hot add
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml +1 -1
@@ -61,7 +61,7 @@ if: then: properties: clocks: - maxItems: 2 + minItems: 2 required: - clock-names
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 129 +SUBLEVEL = 130 EXTRAVERSION = NAME = Dare mighty things
arch/arm/boot/dts/at91-sam9x60ek.dts +1 -2
@@ -233,10 +233,9 @@ i2c0: i2c@600 { status = "okay"; eeprom@53 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x53>; pagesize = <16>; - size = <128>; status = "okay"; }; };
arch/arm/boot/dts/at91-sama5d2_icp.dts +3 -3
@@ -317,21 +317,21 @@ &i2c1 { status = "okay"; eeprom@50 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x50>; pagesize = <16>; status = "okay"; }; eeprom@52 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x52>; pagesize = <16>; status = "disabled"; }; eeprom@53 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x53>; pagesize = <16>; status = "disabled";
arch/arm/mach-at91/pm.c +3 -3
@@ -104,7 +104,7 @@ static const struct wakeup_source_info ws_info[] = {static const struct of_device_id sama5d2_ws_ids[] = { { .compatible ="atmel,sama5d2-gem" , .data = &ws_info[0 ] }, - { .compatible ="atmel,at91rm9200-rtc" , .data = &ws_info[1 ] }, + { .compatible ="atmel,sama5d2-rtc" , .data = &ws_info[1 ] }, { .compatible ="atmel,sama5d3-udc" , .data = &ws_info[2 ] }, { .compatible ="atmel,at91rm9200-ohci" , .data = &ws_info[2 ] }, { .compatible ="usb-ohci" , .data = &ws_info[2 ] },
@@ -115,12 +115,12 @@ static const struct of_device_id sama5d2_ws_ids[] = { };static const struct of_device_id sam9x60_ws_ids[] = { - { .compatible ="atmel,at91sam9x5-rtc" , .data = &ws_info[1 ] }, + { .compatible ="microchip,sam9x60-rtc" , .data = &ws_info[1 ] }, { .compatible ="atmel,at91rm9200-ohci" , .data = &ws_info[2 ] }, { .compatible ="usb-ohci" , .data = &ws_info[2 ] }, { .compatible ="atmel,at91sam9g45-ehci" , .data = &ws_info[2 ] }, { .compatible ="usb-ehci" , .data = &ws_info[2 ] }, - { .compatible ="atmel,at91sam9260-rtt" , .data = &ws_info[4 ] }, + { .compatible ="microchip,sam9x60-rtt" , .data = &ws_info[4 ] }, { .compatible ="cdns,sam9x60-macb" , .data = &ws_info[5 ] }, {/* sentinel */ } };
arch/arm/mach-meson/platsmp.c +2 -0
@@ -71,6 +71,7 @@ static void __init meson_smp_prepare_cpus(const char *scu_compatible, } sram_base =of_iomap (node,0 ); +of_node_put (node);if (!sram_base) {pr_err ("Couldn't map SRAM registers\n" );return ;
@@ -91,6 +92,7 @@ static void __init meson_smp_prepare_cpus(const char *scu_compatible, } scu_base =of_iomap (node,0 ); +of_node_put (node);if (!scu_base) {pr_err ("Couldn't map SCU registers\n" );return ;
arch/arm64/boot/dts/freescale/imx8mp-evk.dts +9 -9
@@ -148,27 +148,27 @@ MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02 0x19 pinctrl_gpio_led: gpioledgrp { fsl,pins = < - MX8MP_IOMUXC_NAND_READY_B__GPIO3_IO16 0x19 + MX8MP_IOMUXC_NAND_READY_B__GPIO3_IO16 0x140 >; }; pinctrl_i2c3: i2c3grp { fsl,pins = < - MX8MP_IOMUXC_I2C3_SCL__I2C3_SCL 0x400001c3 - MX8MP_IOMUXC_I2C3_SDA__I2C3_SDA 0x400001c3 + MX8MP_IOMUXC_I2C3_SCL__I2C3_SCL 0x400001c2 + MX8MP_IOMUXC_I2C3_SDA__I2C3_SDA 0x400001c2 >; }; pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp { fsl,pins = < - MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19 0x41 + MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19 0x40 >; }; pinctrl_uart2: uart2grp { fsl,pins = < - MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX 0x49 - MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX 0x49 + MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX 0x140 + MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX 0x140 >; };
@@ -180,7 +180,7 @@ MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0 0x1d0 MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1 0x1d0 MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2 0x1d0 MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3 0x1d0 - MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc1 + MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc0 >; };
@@ -192,7 +192,7 @@ MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0 0x1d4 MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1 0x1d4 MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2 0x1d4 MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3 0x1d4 - MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc1 + MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc0 >; };
@@ -204,7 +204,7 @@ MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0 0x1d6 MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1 0x1d6 MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2 0x1d6 MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3 0x1d6 - MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc1 + MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc0 >; };
arch/arm64/boot/dts/qcom/msm8992-bullhead-rev-101.dts +1 -1
@@ -64,7 +64,7 @@ pm8994-regulators { vdd_l17_29-supply = <&vreg_vph_pwr>; vdd_l20_21-supply = <&vreg_vph_pwr>; vdd_l25-supply = <&pm8994_s5>; - vdd_lvs1_2 = <&pm8994_s4>; + vdd_lvs1_2-supply = <&pm8994_s4>; pm8994_s1: s1 { regulator-min-microvolt = <800000>;
arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts +1 -1
@@ -151,7 +151,7 @@ pm8994-regulators { vdd_l17_29-supply = <&vreg_vph_pwr>; vdd_l20_21-supply = <&vreg_vph_pwr>; vdd_l25-supply = <&pm8994_s5>; - vdd_lvs1_2 = <&pm8994_s4>; + vdd_lvs1_2-supply = <&pm8994_s4>; pm8994_s1: s1 { /* unused */
arch/arm64/boot/dts/qcom/msm8994.dtsi +2 -2
@@ -92,7 +92,7 @@ CPU5: cpu@101 { CPU6: cpu@102 { device_type = "cpu"; compatible = "arm,cortex-a57"; - reg = <0x0 0x101>; + reg = <0x0 0x102>; enable-method = "psci"; next-level-cache = <&L2_1>; };
@@ -100,7 +100,7 @@ CPU6: cpu@102 { CPU7: cpu@103 { device_type = "cpu"; compatible = "arm,cortex-a57"; - reg = <0x0 0x101>; + reg = <0x0 0x103>; enable-method = "psci"; next-level-cache = <&L2_1>; };
arch/powerpc/platforms/powernv/rng.c +10 -6
@@ -176,12 +176,8 @@ static int __init pnv_get_random_long_early(unsigned long *v) NULL) != pnv_get_random_long_early)return 0 ; -for_each_compatible_node (dn,NULL ,"ibm,power-rng" ) { -if (rng_create (dn)) -continue ; -/* Create devices for hwrng driver */ -of_platform_device_create (dn,NULL ,NULL ); - } +for_each_compatible_node (dn,NULL ,"ibm,power-rng" ) +rng_create (dn);if (!ppc_md.get_random_seed)return 0 ;
@@ -205,10 +201,18 @@ void __init pnv_rng_init(void)static int __init pnv_rng_late_init (void ) { +struct device_node *dn;unsigned long v; +/* In case it wasn't called during init for some other reason. */ if (ppc_md.get_random_seed == pnv_get_random_long_early)pnv_get_random_long_early (&v); + +if (ppc_md.get_random_seed == powernv_get_random_long) { +for_each_compatible_node (dn,NULL ,"ibm,power-rng" ) +of_platform_device_create (dn,NULL ,NULL ); + } +return 0 ; }machine_subsys_initcall (powernv, pnv_rng_late_init);
drivers/base/core.c +2 -1
@@ -348,7 +348,8 @@ static void device_link_release_fn(struct work_struct *work)/* Ensure that all references to the link object have been dropped. */ device_link_synchronize_removal (); -pm_runtime_release_supplier (link, true); +pm_runtime_release_supplier (link); +pm_request_idle (link->supplier);put_device (link->consumer);put_device (link->supplier);
drivers/base/power/runtime.c +9 -11
@@ -308,13 +308,10 @@ static int rpm_get_suppliers(struct device *dev)/** * pm_runtime_release_supplier - Drop references to device link's supplier. * @link: Target device link. -* @check_idle: Whether or not to check if the supplier device is idle. * -* Drop all runtime PM references associated with @link to its supplier device -* and if @check_idle is set, check if that device is idle (and so it can be -* suspended). +* Drop all runtime PM references associated with @link to its supplier device. */ -void pm_runtime_release_supplier (struct device_link *link,bool check_idle) +void pm_runtime_release_supplier (struct device_link *link) {struct device *supplier = link->supplier;
@@ -327,9 +324,6 @@ void pm_runtime_release_supplier(struct device_link *link, bool check_idle)while (refcount_dec_not_one (&link->rpm_active) &&atomic_read (&supplier->power.usage_count) >0 )pm_runtime_put_noidle (supplier); - -if (check_idle) -pm_request_idle (supplier); }static void __rpm_put_suppliers (struct device *dev,bool try_to_suspend)
@@ -337,8 +331,11 @@ static void __rpm_put_suppliers(struct device *dev, bool try_to_suspend)struct device_link *link;list_for_each_entry_rcu (link, &dev->links.suppliers, c_node, -device_links_read_lock_held ()) -pm_runtime_release_supplier (link, try_to_suspend); +device_links_read_lock_held ()) { +pm_runtime_release_supplier (link); +if (try_to_suspend) +pm_request_idle (link->supplier); + } }static void rpm_put_suppliers (struct device *dev)
@@ -1776,7 +1773,8 @@ void pm_runtime_drop_link(struct device_link *link)return ;pm_runtime_drop_link_count (link->consumer); -pm_runtime_release_supplier (link, true); +pm_runtime_release_supplier (link); +pm_request_idle (link->supplier); }static bool pm_runtime_need_not_resume (struct device *dev)
drivers/dma/at_xdmac.c +5 -0
@@ -1838,6 +1838,11 @@ static int at_xdmac_alloc_chan_resources(struct dma_chan *chan)for (i =0 ; i < init_nr_desc_per_channel; i++) { desc =at_xdmac_alloc_desc (chan,GFP_KERNEL );if (!desc) { +if (i ==0 ) { +dev_warn (chan2dev (chan), +"can't allocate any descriptors\n" ); +return -EIO ; + }dev_warn (chan2dev (chan),"only %d descriptors have been allocated\n" , i);break ;
drivers/dma/imx-sdma.c +1 -1
@@ -2212,7 +2212,7 @@ MODULE_DESCRIPTION("i.MX SDMA driver");#if IS_ENABLED (CONFIG_SOC_IMX6Q )MODULE_FIRMWARE ("imx/sdma/sdma-imx6q.bin" );#endif -#if IS_ENABLED (CONFIG_SOC_IMX7D ) +#if IS_ENABLED (CONFIG_SOC_IMX7D ) ||IS_ENABLED (CONFIG_SOC_IMX8M )MODULE_FIRMWARE ("imx/sdma/sdma-imx7d.bin" );#endif MODULE_LICENSE ("GPL" );
drivers/dma/pl330.c +1 -1
@@ -2591,7 +2591,7 @@ static struct dma_pl330_desc *pl330_get_desc(struct dma_pl330_chan *pch)/* If the DMAC pool is empty, alloc new */ if (!desc) { -DEFINE_SPINLOCK (lock); +static DEFINE_SPINLOCK (lock);LIST_HEAD (pool);if (!add_desc (&pool, &lock,GFP_ATOMIC ,1 ))
drivers/dma/ti/dma-crossbar.c +5 -0
@@ -245,6 +245,7 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec,if (dma_spec->args[0 ] >= xbar->xbar_requests) {dev_err (&pdev->dev,"Invalid XBAR request number: %d\n" , dma_spec->args[0 ]); +put_device (&pdev->dev);return ERR_PTR (-EINVAL ); }
@@ -252,12 +253,14 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec, dma_spec->np =of_parse_phandle (ofdma->of_node,"dma-masters" ,0 );if (!dma_spec->np) {dev_err (&pdev->dev,"Can't get DMA master\n" ); +put_device (&pdev->dev);return ERR_PTR (-EINVAL ); } map =kzalloc (sizeof (*map),GFP_KERNEL );if (!map) {of_node_put (dma_spec->np); +put_device (&pdev->dev);return ERR_PTR (-ENOMEM ); }
@@ -268,6 +271,8 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec,mutex_unlock (&xbar->mutex);dev_err (&pdev->dev,"Run out of free DMA requests\n" );kfree (map); +of_node_put (dma_spec->np); +put_device (&pdev->dev);return ERR_PTR (-ENOMEM ); }set_bit (map->xbar_out, xbar->dma_inuse);
drivers/i2c/busses/i2c-cadence.c +1 -0
@@ -1289,6 +1289,7 @@ static int cdns_i2c_probe(struct platform_device *pdev)return 0 ; err_clk_dis: +clk_notifier_unregister (id->clk, &id->clk_rate_change_nb);clk_disable_unprepare (id->clk);pm_runtime_disable (&pdev->dev);pm_runtime_set_suspended (&pdev->dev);
drivers/iommu/intel/dmar.c +1 -1
@@ -385,7 +385,7 @@ static int dmar_pci_bus_notifier(struct notifier_block *nb,static struct notifier_block dmar_pci_bus_nb = { .notifier_call = dmar_pci_bus_notifier, - .priority =INT_MIN , + .priority =1 , }; static struct dmar_drhd_unit *
drivers/misc/cardreader/rtsx_usb.c +19 -8
@@ -631,16 +631,20 @@ static int rtsx_usb_probe(struct usb_interface *intf, ucr->pusb_dev = usb_dev; - ucr->iobuf =usb_alloc_coherent (ucr->pusb_dev,IOBUF_SIZE , -GFP_KERNEL , &ucr->iobuf_dma); -if (!ucr->iobuf) + ucr->cmd_buf =kmalloc (IOBUF_SIZE ,GFP_KERNEL ); +if (!ucr->cmd_buf)return -ENOMEM ; + ucr->rsp_buf =kmalloc (IOBUF_SIZE ,GFP_KERNEL ); +if (!ucr->rsp_buf) { + ret = -ENOMEM ; + goto out_free_cmd_buf; + } +usb_set_intfdata (intf, ucr); ucr->vendor_id = id->idVendor; ucr->product_id = id->idProduct; - ucr->cmd_buf = ucr->rsp_buf = ucr->iobuf;mutex_init (&ucr->dev_mutex);
@@ -668,8 +672,11 @@ static int rtsx_usb_probe(struct usb_interface *intf, out_init_fail:usb_set_intfdata (ucr->pusb_intf,NULL ); -usb_free_coherent (ucr->pusb_dev,IOBUF_SIZE , ucr->iobuf, - ucr->iobuf_dma); +kfree (ucr->rsp_buf); + ucr->rsp_buf =NULL ; +out_free_cmd_buf: +kfree (ucr->cmd_buf); + ucr->cmd_buf =NULL ;return ret; }
@@ -682,8 +689,12 @@ static void rtsx_usb_disconnect(struct usb_interface *intf)mfd_remove_devices (&intf->dev);usb_set_intfdata (ucr->pusb_intf,NULL ); -usb_free_coherent (ucr->pusb_dev,IOBUF_SIZE , ucr->iobuf, - ucr->iobuf_dma); + +kfree (ucr->cmd_buf); + ucr->cmd_buf =NULL ; + +kfree (ucr->rsp_buf); + ucr->rsp_buf =NULL ; }#ifdef CONFIG_PM
drivers/net/can/grcan.c +0 -1
@@ -1659,7 +1659,6 @@ static int grcan_probe(struct platform_device *ofdev)*/ sysid_parent =of_find_node_by_path ("/ambapp0" );if (sysid_parent) { -of_node_get (sysid_parent); err =of_property_read_u32 (sysid_parent,"systemid" , &sysid);if (!err && ((sysid &GRLIB_VERSION_MASK ) >=GRCAN_TXBUG_SAFE_GRLIB_VERSION ))
drivers/net/can/usb/gs_usb.c +21 -2
@@ -184,6 +184,8 @@ struct gs_can {struct usb_anchor tx_submitted;atomic_t active_tx_urbs; +void *rxbuf[GS_MAX_RX_URBS ]; +dma_addr_t rxbuf_dma[GS_MAX_RX_URBS ]; };/* usb interface struct */
@@ -592,6 +594,7 @@ static int gs_can_open(struct net_device *netdev)for (i =0 ; i <GS_MAX_RX_URBS ; i++) {struct urb *urb;u8 *buf; +dma_addr_t buf_dma;/* alloc rx urb */ urb =usb_alloc_urb (0 ,GFP_KERNEL );
@@ -602,7 +605,7 @@ static int gs_can_open(struct net_device *netdev) buf =usb_alloc_coherent (dev->udev,sizeof (struct gs_host_frame ),GFP_KERNEL , - &urb->transfer_dma); + &buf_dma);if (!buf) {netdev_err (netdev,"No memory left for USB buffer\n" );
@@ -610,6 +613,8 @@ static int gs_can_open(struct net_device *netdev)return -ENOMEM ; } + urb->transfer_dma = buf_dma; +/* fill, anchor, and submit rx urb */ usb_fill_bulk_urb(urb, dev->udev,
@@ -633,10 +638,17 @@ static int gs_can_open(struct net_device *netdev) rc);usb_unanchor_urb (urb); +usb_free_coherent (dev->udev, +sizeof (struct gs_host_frame ), + buf, + buf_dma);usb_free_urb (urb);break ; } + dev->rxbuf[i] = buf; + dev->rxbuf_dma[i] = buf_dma; +/* Drop reference, * USB core will take care of freeing it */
@@ -701,13 +713,20 @@ static int gs_can_close(struct net_device *netdev)int rc;struct gs_can *dev =netdev_priv (netdev);struct gs_usb *parent = dev->parent; +unsigned int i;netif_stop_queue (netdev);/* Stop polling */ parent->active_channels--; -if (!parent->active_channels) +if (!parent->active_channels) {usb_kill_anchored_urbs (&parent->rx_submitted); +for (i =0 ; i <GS_MAX_RX_URBS ; i++) +usb_free_coherent (dev->udev, +sizeof (struct gs_host_frame ), + dev->rxbuf[i], + dev->rxbuf_dma[i]); + }/* Stop sending URBs */ usb_kill_anchored_urbs (&dev->tx_submitted);
drivers/net/can/usb/kvaser_usb/kvaser_usb.h +15 -10
@@ -35,9 +35,10 @@#define KVASER_USB_RX_BUFFER_SIZE 3072#define KVASER_USB_MAX_NET_DEVICES 5 -/* USB devices features */ -#define KVASER_USB_HAS_SILENT_MODE BIT(0) -#define KVASER_USB_HAS_TXRX_ERRORS BIT(1) +/* Kvaser USB device quirks */ +#define KVASER_USB_QUIRK_HAS_SILENT_MODE BIT(0) +#define KVASER_USB_QUIRK_HAS_TXRX_ERRORS BIT(1) +#define KVASER_USB_QUIRK_IGNORE_CLK_FREQ BIT(2)/* Device capabilities */ #define KVASER_USB_CAP_BERR_CAP 0x01
@@ -65,12 +66,7 @@ struct kvaser_usb_dev_card_data_hydra {struct kvaser_usb_dev_card_data {u32 ctrlmode_supported;u32 capabilities; -union { -struct { -enum kvaser_usb_leaf_family family; - } leaf; -struct kvaser_usb_dev_card_data_hydra hydra; - }; +struct kvaser_usb_dev_card_data_hydra hydra; };/* Context for an outstanding, not yet ACKed, transmission */
@@ -84,7 +80,7 @@ struct kvaser_usb {struct usb_device *udev;struct usb_interface *intf;struct kvaser_usb_net_priv *nets[KVASER_USB_MAX_NET_DEVICES ]; -const struct kvaser_usb_dev_ops *ops; +const struct kvaser_usb_driver_info *driver_info;const struct kvaser_usb_dev_cfg *cfg;struct usb_endpoint_descriptor *bulk_in, *bulk_out;
@@ -166,6 +162,12 @@ struct kvaser_usb_dev_ops { int *cmd_len, u16 transid); }; +struct kvaser_usb_driver_info { +u32 quirks; +enum kvaser_usb_leaf_family family; +const struct kvaser_usb_dev_ops *ops; +}; +struct kvaser_usb_dev_cfg {const struct can_clock clock;const unsigned int timestamp_freq;
@@ -185,4 +187,7 @@ int kvaser_usb_send_cmd_async(struct kvaser_usb_net_priv *priv, void *cmd, int len);int kvaser_usb_can_rx_over_error (struct net_device *netdev); + +extern const struct can_bittiming_const kvaser_usb_flexc_bittiming_const; +#endif /* KVASER_USB_H */
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +141 -114
419 lines not on this page · raw message
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +2 -2
@@ -371,7 +371,7 @@ static const struct can_bittiming_const kvaser_usb_hydra_kcan_bittiming_c = { .brp_inc = 1, }; -static const struct can_bittiming_const kvaser_usb_hydra_flexc_bittiming_c = { +const struct can_bittiming_const kvaser_usb_flexc_bittiming_const = { .name ="kvaser_usb_flex" , .tseg1_min =4 , .tseg1_max =16 ,
@@ -2024,5 +2024,5 @@ static const struct kvaser_usb_dev_cfg kvaser_usb_hydra_dev_cfg_flexc = { .freq = 24000000, }, .timestamp_freq = 1, - .bittiming_const = &kvaser_usb_hydra_flexc_bittiming_c, + .bittiming_const = &kvaser_usb_flexc_bittiming_const, };
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c +68 -51
237 lines not on this page · raw message
drivers/net/ethernet/ibm/ibmvnic.c +9 -0
@@ -5228,6 +5228,15 @@ static int ibmvnic_reset_init(struct ibmvnic_adapter *adapter, bool reset)release_sub_crqs (adapter,0 ); rc =init_sub_crqs (adapter); }else { +/* no need to reinitialize completely, but we do +* need to clean up transmits that were in flight +* when we processed the reset. Failure to do so +* will confound the upper layer, usually TCP, by +* creating the illusion of transmits that are +* awaiting completion. +*/ +clean_tx_pools (adapter); + rc =reset_sub_crq_queues (adapter); } }else {
drivers/net/ethernet/intel/i40e/i40e.h +16 -0
@@ -37,6 +37,7 @@#include <net/tc_act/tc_mirred.h> #include <net/udp_tunnel.h> #include <net/xdp_sock.h> +#include <linux/bitfield.h> #include "i40e_type.h" #include "i40e_prototype.h" #include <linux/net/intel/i40e_client.h>
@@ -991,6 +992,21 @@ static inline void i40e_write_fd_input_set(struct i40e_pf *pf, (u32)(val & 0xFFFFFFFFULL)); } +/** +* i40e_get_pf_count - get PCI PF count. +* @hw: pointer to a hw. +* +* Reports the function number of the highest PCI physical +* function plus 1 as it is loaded from the NVM. +* +* Return: PCI PF count. +**/ +static inline u32 i40e_get_pf_count (struct i40e_hw *hw) +{ +return FIELD_GET (I40E_GLGEN_PCIFCNCNT_PCIPFCNT_MASK , +rd32 (hw,I40E_GLGEN_PCIFCNCNT )); +} +/* needed by i40e_ethtool.c */ int i40e_up (struct i40e_vsi *vsi);void i40e_down (struct i40e_vsi *vsi);
drivers/net/ethernet/intel/i40e/i40e_main.c +73 -0
91 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_register.h +13 -0
@@ -77,6 +77,11 @@#define I40E_GLGEN_MSRWD_MDIWRDATA_SHIFT 0#define I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT 16#define I40E_GLGEN_MSRWD_MDIRDDATA_MASK I40E_MASK(0xFFFF, I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT) +#define I40E_GLGEN_PCIFCNCNT 0x001C0AB4/* Reset: PCIR */ +#define I40E_GLGEN_PCIFCNCNT_PCIPFCNT_SHIFT 0 +#define I40E_GLGEN_PCIFCNCNT_PCIPFCNT_MASK I40E_MASK(0x1F, I40E_GLGEN_PCIFCNCNT_PCIPFCNT_SHIFT) +#define I40E_GLGEN_PCIFCNCNT_PCIVFCNT_SHIFT 16 +#define I40E_GLGEN_PCIFCNCNT_PCIVFCNT_MASK I40E_MASK(0xFF, I40E_GLGEN_PCIFCNCNT_PCIVFCNT_SHIFT)#define I40E_GLGEN_RSTAT 0x000B8188/* Reset: POR */ #define I40E_GLGEN_RSTAT_DEVSTATE_SHIFT 0#define I40E_GLGEN_RSTAT_DEVSTATE_MASK I40E_MASK(0x3, I40E_GLGEN_RSTAT_DEVSTATE_SHIFT)
@@ -461,6 +466,14 @@#define I40E_VFQF_HKEY1_MAX_INDEX 12#define I40E_VFQF_HLUT1 (_i, _VF) (0x00220000 + ((_i) * 1024 + (_VF) * 4))/* _i=0...15, _VF=0...127 */ /* Reset: CORER */ #define I40E_VFQF_HLUT1_MAX_INDEX 15 +#define I40E_GL_RXERR1H (_i) (0x00318004 + ((_i) * 8))/* _i=0...143 */ /* Reset: CORER */ +#define I40E_GL_RXERR1H_MAX_INDEX 143 +#define I40E_GL_RXERR1H_RXERR1H_SHIFT 0 +#define I40E_GL_RXERR1H_RXERR1H_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1H_RXERR1H_SHIFT) +#define I40E_GL_RXERR1L (_i) (0x00318000 + ((_i) * 8))/* _i=0...143 */ /* Reset: CORER */ +#define I40E_GL_RXERR1L_MAX_INDEX 143 +#define I40E_GL_RXERR1L_RXERR1L_SHIFT 0 +#define I40E_GL_RXERR1L_RXERR1L_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1L_RXERR1L_SHIFT)#define I40E_GLPRT_BPRCH (_i) (0x003005E4 + ((_i) * 8))/* _i=0...3 */ /* Reset: CORER */ #define I40E_GLPRT_BPRCL (_i) (0x003005E0 + ((_i) * 8))/* _i=0...3 */ /* Reset: CORER */ #define I40E_GLPRT_BPTCH (_i) (0x00300A04 + ((_i) * 8))/* _i=0...3 */ /* Reset: CORER */
drivers/net/ethernet/intel/i40e/i40e_type.h +1 -0
@@ -1172,6 +1172,7 @@ struct i40e_eth_stats {u64 tx_broadcast;/* bptc */ u64 tx_discards;/* tdpc */ u64 tx_errors;/* tepc */ +u64 rx_discards_other;/* rxerr1 */ };/* Statistics collected per VEB per TC */
drivers/net/ethernet/realtek/r8169_main.c +4 -6
@@ -4183,7 +4183,6 @@ static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)static bool rtl8169_tso_csum_v2 (struct rtl8169_private *tp,struct sk_buff *skb,u32 *opts) { -u32 transport_offset = (u32 )skb_transport_offset (skb);struct skb_shared_info *shinfo =skb_shinfo (skb);u32 mss = shinfo->gso_size;
@@ -4200,7 +4199,7 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,WARN_ON_ONCE (1 ); } - opts[0 ] |= transport_offset <<GTTCPHO_SHIFT ; + opts[0 ] |=skb_transport_offset (skb) <<GTTCPHO_SHIFT ; opts[1 ] |= mss <<TD1_MSS_SHIFT ; }else if (skb->ip_summed ==CHECKSUM_PARTIAL ) {u8 ip_protocol;
@@ -4228,7 +4227,7 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,else WARN_ON_ONCE (1 ); - opts[1 ] |= transport_offset <<TCPHO_SHIFT ; + opts[1 ] |=skb_transport_offset (skb) <<TCPHO_SHIFT ; }else {unsigned int padto =rtl_quirk_packet_padto (tp, skb);
@@ -4401,14 +4400,13 @@ static netdev_features_t rtl8169_features_check(struct sk_buff *skb, struct net_device *dev, netdev_features_t features) { - int transport_offset = skb_transport_offset(skb);struct rtl8169_private *tp =netdev_priv (dev);if (skb_is_gso (skb)) {if (tp->mac_version ==RTL_GIGA_MAC_VER_34 ) features =rtl8168evl_fix_tso (skb, features); -if (transport_offset >GTTCPHO_MAX && +if (skb_transport_offset (skb) >GTTCPHO_MAX &&rtl_chip_supports_csum_v2 (tp)) features &= ~NETIF_F_ALL_TSO ; }else if (skb->ip_summed ==CHECKSUM_PARTIAL ) {
@@ -4419,7 +4417,7 @@ static netdev_features_t rtl8169_features_check(struct sk_buff *skb,if (rtl_quirk_packet_padto (tp, skb)) features &= ~NETIF_F_CSUM_MASK ; -if (transport_offset >TCPHO_MAX && +if (skb_transport_offset (skb) >TCPHO_MAX &&rtl_chip_supports_csum_v2 (tp)) features &= ~NETIF_F_CSUM_MASK ; }
drivers/net/usb/usbnet.c +12 -5
@@ -2102,7 +2102,7 @@ static void usbnet_async_cmd_cb(struct urb *urb)int usbnet_write_cmd_async (struct usbnet *dev,u8 cmd,u8 reqtype,u16 value,u16 index,const void *data,u16 size) { -struct usb_ctrlrequest *req =NULL ; +struct usb_ctrlrequest *req;struct urb *urb;int err = -ENOMEM ;void *buf =NULL ;
@@ -2120,7 +2120,7 @@ int usbnet_write_cmd_async(struct usbnet *dev, u8 cmd, u8 reqtype,if (!buf) {netdev_err (dev->net,"Error allocating buffer" " in %s!\n" , __func__); - goto fail_free; + goto fail_free_urb; } }
@@ -2144,14 +2144,21 @@ int usbnet_write_cmd_async(struct usbnet *dev, u8 cmd, u8 reqtype,if (err <0 ) {netdev_err (dev->net,"Error submitting the control" " message: status=%d\n" , err); - goto fail_free; + goto fail_free_all; }return 0 ; +fail_free_all: +kfree (req); fail_free_buf:kfree (buf); -fail_free: -kfree (req); +/* +* avoid a double free +* needed because the flag can be set only +* after filling the URB +*/ + urb->transfer_flags =0 ; +fail_free_urb:usb_free_urb (urb); fail:return err;
drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c +5 -5
@@ -158,26 +158,26 @@ static const struct sunxi_desc_pin sun8i_a83t_pins[] = {SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,14 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" ),/* DQ6 */ +SUNXI_FUNCTION (0x2 ,"nand0" ),/* DQ6 */ SUNXI_FUNCTION (0x3 ,"mmc2" )),/* D6 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,15 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" ),/* DQ7 */ +SUNXI_FUNCTION (0x2 ,"nand0" ),/* DQ7 */ SUNXI_FUNCTION (0x3 ,"mmc2" )),/* D7 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,16 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" ),/* DQS */ +SUNXI_FUNCTION (0x2 ,"nand0" ),/* DQS */ SUNXI_FUNCTION (0x3 ,"mmc2" )),/* RST */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,17 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" )),/* CE2 */ +SUNXI_FUNCTION (0x2 ,"nand0" )),/* CE2 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,18 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" )),/* CE3 */ +SUNXI_FUNCTION (0x2 ,"nand0" )),/* CE3 */ /* Hole */ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), SUNXI_FUNCTION(0x0, "gpio_in"),
drivers/pinctrl/sunxi/pinctrl-sunxi.c +2 -0
@@ -544,6 +544,8 @@ static int sunxi_pconf_set(struct pinctrl_dev *pctldev, unsigned pin,struct sunxi_pinctrl *pctl =pinctrl_dev_get_drvdata (pctldev);int i; + pin -= pctl->desc->pin_base; +for (i =0 ; i < num_configs; i++) {enum pin_config_param param;unsigned long flags;
drivers/video/fbdev/core/fbcon.c +33 -0
@@ -2510,6 +2510,11 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font,if (charcount !=256 && charcount !=512 )return -EINVAL ; +/* font bigger than screen resolution ? */ +if (w >FBCON_SWAP (info->var.rotate, info->var.xres, info->var.yres) || + h >FBCON_SWAP (info->var.rotate, info->var.yres, info->var.xres)) +return -EINVAL ; +/* Make sure drawing engine can handle the font */ if (!(info->pixmap.blit_x & (1 << (font->width -1 ))) || !(info->pixmap.blit_y & (1 << (font->height -1 ))))
@@ -2771,6 +2776,34 @@ void fbcon_update_vcs(struct fb_info *info, bool all) }EXPORT_SYMBOL (fbcon_update_vcs); +/* let fbcon check if it supports a new screen resolution */ +int fbcon_modechange_possible (struct fb_info *info,struct fb_var_screeninfo *var) +{ +struct fbcon_ops *ops = info->fbcon_par; +struct vc_data *vc; +unsigned int i; + +WARN_CONSOLE_UNLOCKED (); + +if (!ops) +return 0 ; + +/* prevent setting a screen size which is smaller than font size */ +for (i = first_fb_vc; i <= last_fb_vc; i++) { + vc = vc_cons[i].d; +if (!vc || vc->vc_mode !=KD_TEXT || + registered_fb[con2fb_map[i]] != info) +continue ; + +if (vc->vc_font.width >FBCON_SWAP (var->rotate, var->xres, var->yres) || + vc->vc_font.height >FBCON_SWAP (var->rotate, var->yres, var->xres)) +return -EINVAL ; + } + +return 0 ; +} +EXPORT_SYMBOL_GPL (fbcon_modechange_possible); +int fbcon_mode_deleted (struct fb_info *info,struct fb_videomode *mode) {
drivers/video/fbdev/core/fbmem.c +14 -2
@@ -513,7 +513,7 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,while (n && (n * (logo->width +8 ) -8 > xres)) --n; - image.dx = (xres - n * (logo->width +8 ) -8 ) /2 ; + image.dx = (xres - (n * (logo->width +8 ) -8 )) /2 ; image.dy = y ?: (yres - logo->height) /2 ; }else { image.dx =0 ;
@@ -1019,6 +1019,16 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)if (ret)return ret; +/* verify that virtual resolution >= physical resolution */ +if (var->xres_virtual < var->xres || + var->yres_virtual < var->yres) { +pr_warn ("WARNING: fbcon: Driver '%s' missed to adjust virtual screen size (%ux%u vs. %ux%u)\n" , + info->fix.id, + var->xres_virtual, var->yres_virtual, + var->xres, var->yres); +return -EINVAL ; + } +if ((var->activate &FB_ACTIVATE_MASK ) !=FB_ACTIVATE_NOW )return 0 ;
@@ -1109,7 +1119,9 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,return -EFAULT ;console_lock ();lock_fb_info (info); - ret =fb_set_var (info, &var); + ret =fbcon_modechange_possible (info, &var); +if (!ret) + ret =fb_set_var (info, &var);if (!ret)fbcon_update_vcs (info, var.activate &FB_ACTIVATE_ALL );unlock_fb_info (info);
fs/xfs/xfs_inode.c +0 -1
@@ -3170,7 +3170,6 @@ xfs_rename(* appropriately. */ if (flags &RENAME_WHITEOUT ) { -ASSERT (!(flags & (RENAME_NOREPLACE |RENAME_EXCHANGE ))); error =xfs_rename_alloc_whiteout (target_dp, &wip);if (error)return error;
include/linux/fbcon.h +4 -0
@@ -15,6 +15,8 @@ void fbcon_new_modelist(struct fb_info *info);void fbcon_get_requirement (struct fb_info *info,struct fb_blit_caps *caps);void fbcon_fb_blanked (struct fb_info *info,int blank); +int fbcon_modechange_possible (struct fb_info *info, +struct fb_var_screeninfo *var);void fbcon_update_vcs (struct fb_info *info,bool all);void fbcon_remap_all (struct fb_info *info);int fbcon_set_con2fb_map_ioctl (void __user *argp);
@@ -33,6 +35,8 @@ static inline void fbcon_new_modelist(struct fb_info *info) {}static inline void fbcon_get_requirement (struct fb_info *info,struct fb_blit_caps *caps) {}static inline void fbcon_fb_blanked (struct fb_info *info,int blank) {} +static inline int fbcon_modechange_possible (struct fb_info *info, +struct fb_var_screeninfo *var) {return 0 ; }static inline void fbcon_update_vcs (struct fb_info *info,bool all) {}static inline void fbcon_remap_all (struct fb_info *info) {}static inline int fbcon_set_con2fb_map_ioctl (void __user *argp) {return 0 ; }
include/linux/memregion.h +1 -1
@@ -16,7 +16,7 @@ static inline int memregion_alloc(gfp_t gfp) {return -ENOMEM ; } -void memregion_free (int id) +static inline void memregion_free (int id) { }#endif
include/linux/pm_runtime.h +2 -3
@@ -58,7 +58,7 @@ extern void pm_runtime_get_suppliers(struct device *dev);extern void pm_runtime_put_suppliers (struct device *dev);extern void pm_runtime_new_link (struct device *dev);extern void pm_runtime_drop_link (struct device_link *link); -extern void pm_runtime_release_supplier (struct device_link *link,bool check_idle); +extern void pm_runtime_release_supplier (struct device_link *link);/** * pm_runtime_get_if_in_use - Conditionally bump up runtime PM usage counter.
@@ -280,8 +280,7 @@ static inline void pm_runtime_get_suppliers(struct device *dev) {}static inline void pm_runtime_put_suppliers (struct device *dev) {}static inline void pm_runtime_new_link (struct device *dev) {}static inline void pm_runtime_drop_link (struct device_link *link) {} -static inline void pm_runtime_release_supplier (struct device_link *link, -bool check_idle) {} +static inline void pm_runtime_release_supplier (struct device_link *link) {}#endif /* !CONFIG_PM */
include/linux/rtsx_usb.h +0 -2
@@ -54,8 +54,6 @@ struct rtsx_ucr {struct usb_device *pusb_dev;struct usb_interface *pusb_intf;struct usb_sg_request current_sg; -unsigned char *iobuf; -dma_addr_t iobuf_dma;struct timer_list sg_timer;struct mutex dev_mutex;
include/video/of_display_timing.h +2 -0
@@ -8,6 +8,8 @@#ifndef __LINUX_OF_DISPLAY_TIMING_H#define __LINUX_OF_DISPLAY_TIMING_H +#include <linux/errno.h> +struct device_node ;struct display_timing ;struct display_timings ;
kernel/bpf/verifier.c +47 -66
177 lines not on this page · raw message
lib/idr.c +2 -1
@@ -491,7 +491,8 @@ void ida_free(struct ida *ida, unsigned int id)struct ida_bitmap *bitmap;unsigned long flags; -BUG_ON ((int )id <0 ); +if ((int )id <0 ) +return ;xas_lock_irqsave (&xas, flags); bitmap =xas_load (&xas);
mm/slub.c +2 -2
@@ -2297,6 +2297,7 @@ static void deactivate_slab(struct kmem_cache *s, struct page *page, c->page =NULL ; c->freelist =NULL ; + c->tid =next_tid (c->tid); }/*
@@ -2430,8 +2431,6 @@ static inline void flush_slab(struct kmem_cache *s, struct kmem_cache_cpu *c) {stat (s,CPUSLAB_FLUSH );deactivate_slab (s, c->page, c->freelist, c); - - c->tid =next_tid (c->tid); }/*
@@ -2717,6 +2716,7 @@ static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,if (!freelist) { c->page =NULL ; + c->tid =next_tid (c->tid);stat (s,DEACTIVATE_BYPASS ); goto new_slab; }
net/can/bcm.c +14 -4
@@ -100,6 +100,7 @@ static inline u64 get_u64(const struct canfd_frame *cp, int offset)struct bcm_op {struct list_head list; +struct rcu_head rcu;int ifindex;canid_t can_id;u32 flags;
@@ -718,10 +719,9 @@ static struct bcm_op *bcm_find_op(struct list_head *ops,return NULL ; } -static void bcm_remove_op (struct bcm_op *op) +static void bcm_free_op_rcu (struct rcu_head *rcu_head) { -hrtimer_cancel (&op->timer); -hrtimer_cancel (&op->thrtimer); + struct bcm_op *op = container_of(rcu_head, struct bcm_op, rcu);if ((op->frames) && (op->frames != &op->sframe))kfree (op->frames);
@@ -732,6 +732,14 @@ static void bcm_remove_op(struct bcm_op *op)kfree (op); } +static void bcm_remove_op (struct bcm_op *op) +{ +hrtimer_cancel (&op->timer); +hrtimer_cancel (&op->thrtimer); + +call_rcu (&op->rcu, bcm_free_op_rcu); +} +static void bcm_rx_unreg (struct net_device *dev,struct bcm_op *op) {if (op->rx_reg_dev == dev) {
@@ -757,6 +765,9 @@ static int bcm_delete_rx_op(struct list_head *ops, struct bcm_msg_head *mh,if ((op->can_id == mh->can_id) && (op->ifindex == ifindex) && (op->flags &CAN_FD_FRAME ) == (mh->flags &CAN_FD_FRAME )) { +/* disable automatic timer on frame reception */ + op->flags |=RX_NO_AUTOTIMER ; +/* * Don't care if we're bound or not (due to netdev * problems) can_rx_unregister() is always a save
@@ -785,7 +796,6 @@ static int bcm_delete_rx_op(struct list_head *ops, struct bcm_msg_head *mh, bcm_rx_handler, op);list_del (&op->list); -synchronize_rcu ();bcm_remove_op (op);return 1 ;/* done */ }
net/netfilter/nf_tables_api.c +8 -1
@@ -4886,13 +4886,20 @@ static int nft_setelem_parse_data(struct nft_ctx *ctx, struct nft_set *set,struct nft_data *data, struct nlattr *attr) { + u32 dtype;int err; err =nft_data_init (ctx, data,NFT_DATA_VALUE_MAXLEN , desc, attr);if (err <0 )return err; -if (desc->type !=NFT_DATA_VERDICT && desc->len != set->dlen) { +if (set->dtype ==NFT_DATA_VERDICT ) + dtype =NFT_DATA_VERDICT ; +else + dtype =NFT_DATA_VALUE ; + +if (dtype != desc->type || + set->dlen != desc->len) {nft_data_release (data, desc->type);return -EINVAL ; }
net/netfilter/nft_set_pipapo.c +33 -15
71 lines not on this page · raw message
net/rose/rose_route.c +2 -2
@@ -227,8 +227,8 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh) {struct rose_neigh *s; -rose_stop_ftimer (rose_neigh); -rose_stop_t0timer (rose_neigh); +del_timer_sync (&rose_neigh->ftimer); +del_timer_sync (&rose_neigh->t0timer);skb_queue_purge (&rose_neigh->queue);
net/xdp/xsk_buff_pool.c +1 -0
@@ -318,6 +318,7 @@ static void __xp_dma_unmap(struct xsk_dma_map *dma_map, unsigned long attrs)for (i =0 ; i < dma_map->dma_pages_cnt; i++) { dma = &dma_map->dma_pages[i];if (*dma) { + *dma &= ~XSK_NEXT_PG_CONTIG_MASK ;dma_unmap_page_attrs (dma_map->dev, *dma,PAGE_SIZE ,DMA_BIDIRECTIONAL , attrs); *dma =0 ;
sound/pci/hda/patch_realtek.c +1 -0
@@ -8934,6 +8934,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1558 ,0x70f4 ,"Clevo NH77EPY" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x70f6 ,"Clevo NH77DPQ-Y" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x7716 ,"Clevo NS50PU" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ), +SND_PCI_QUIRK (0x1558 ,0x7718 ,"Clevo L140PU" ,ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x8228 ,"Clevo NR40BU" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1558 ,0x8520 ,"Clevo NH50D[CD]" ,ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ), SND_PCI_QUIRK(0x1558, 0x8521, "Clevo NH77D[CD]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
tools/testing/selftests/net/forwarding/lib.sh +5 -1
@@ -1063,6 +1063,7 @@ learning_test() # FDB entry was installed. bridge link set dev $br_port1 flood off + ip link set $host1_if promisc on tc qdisc add dev $host1_if ingress tc filter add dev $host1_if ingress protocol ip pref 1 handle 101 \ flower dst_mac $mac action drop
@@ -1073,7 +1074,7 @@ learning_test() tc -j -s filter show dev $host1_if ingress \ | jq -e ".[] | select(.options.handle == 101) \ | select(.options.actions[0].stats.packets == 1)" &> /dev/null - check_fail $? "Packet reached second host when should not" + check_fail $? "Packet reached first host when should not" $MZ $host1_if -c 1 -p 64 -a $mac -t ip -q sleep 1
@@ -1112,6 +1113,7 @@ learning_test() tc filter del dev $host1_if ingress protocol ip pref 1 handle 101 flower tc qdisc del dev $host1_if ingress + ip link set $host1_if promisc off bridge link set dev $br_port1 flood on
@@ -1129,6 +1131,7 @@ flood_test_do() # Add an ACL on `host2_if` which will tell us whether the packet # was flooded to it or not. + ip link set $host2_if promisc on tc qdisc add dev $host2_if ingress tc filter add dev $host2_if ingress protocol ip pref 1 handle 101 \ flower dst_mac $mac action drop
@@ -1146,6 +1149,7 @@ flood_test_do() tc filter del dev $host2_if ingress protocol ip pref 1 handle 101 flower tc qdisc del dev $host2_if ingress + ip link set $host2_if promisc off return $err }