Linux 5.15.83
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.83 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
MAINTAINERS | 7 Makefile | 6 arch/arm/boot/dts/imx7s.dtsi | 4 arch/arm/boot/dts/rk3036-evb.dts | 3 arch/arm/boot/dts/rk3188-radxarock.dts | 2 arch/arm/boot/dts/rk3188.dtsi | 3 arch/arm/boot/dts/rk3288-evb-act8846.dts | 2 arch/arm/boot/dts/rk3288-firefly.dtsi | 3 arch/arm/boot/dts/rk3288-miqi.dts | 3 arch/arm/boot/dts/rk3288-rock2-square.dts | 3 arch/arm/boot/dts/rk3288-vmarc-som.dtsi | 1 arch/arm/boot/dts/rk3xxx.dtsi | 7 arch/arm/include/asm/perf_event.h | 2 arch/arm/include/asm/pgtable-nommu.h | 6 arch/arm/include/asm/pgtable.h | 16 arch/arm/mm/nommu.c | 19 arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts | 2 arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi | 1 arch/s390/kvm/vsie.c | 4 block/Makefile | 2 drivers/bluetooth/btusb.c | 5 drivers/clk/clk-devres.c | 91 drivers/gpio/gpio-amd8111.c | 4 drivers/gpio/gpio-rockchip.c | 1 drivers/gpio/gpiolib.c | 59 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 24 drivers/gpu/drm/bridge/analogix/anx7625.c | 4 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 4 drivers/gpu/drm/drm_gem_shmem_helper.c | 18 drivers/gpu/drm/vmwgfx/vmwgfx_msg.c | 6 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 4 drivers/hid/hid-core.c | 3 drivers/hid/hid-ids.h | 4 drivers/hid/hid-ite.c | 5 drivers/hid/hid-lg4ff.c | 6 drivers/hid/hid-quirks.c | 3 drivers/media/common/videobuf2/videobuf2-core.c | 102 drivers/media/v4l2-core/v4l2-dv-timings.c | 20 drivers/mmc/host/mtk-sd.c | 6 drivers/net/can/usb/esd_usb2.c | 6 drivers/net/dsa/sja1105/sja1105_devlink.c | 2 drivers/net/dsa/sja1105/sja1105_main.c | 2 drivers/net/ethernet/aeroflex/greth.c | 1 drivers/net/ethernet/broadcom/Kconfig | 3 drivers/net/ethernet/cavium/thunder/nicvf_main.c | 4 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c | 4 drivers/net/ethernet/hisilicon/hisi_femac.c | 2 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 2 drivers/net/ethernet/intel/e1000e/netdev.c | 4 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 12 drivers/net/ethernet/intel/i40e/i40e_main.c | 19 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 drivers/net/ethernet/intel/igb/igb_ethtool.c | 2 drivers/net/ethernet/marvell/mvneta.c | 2 drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c | 7 drivers/net/ethernet/microchip/encx24j600-regmap.c | 4 drivers/net/ethernet/microchip/sparx5/sparx5_main.c | 3 drivers/net/ethernet/microsoft/mana/gdma.h | 9 drivers/net/ethernet/microsoft/mana/mana_en.c | 16 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 drivers/net/ieee802154/ca8210.c | 2 drivers/net/ieee802154/cc2520.c | 2 drivers/net/macsec.c | 1 drivers/net/mdio/fwnode_mdio.c | 25 drivers/net/mdio/of_mdio.c | 3 drivers/net/phy/mdio_device.c | 2 drivers/net/phy/mxl-gpy.c | 11 drivers/net/plip/plip.c | 4 drivers/net/thunderbolt.c | 1 drivers/net/usb/qmi_wwan.c | 1 drivers/net/vmxnet3/vmxnet3_drv.c | 27 drivers/net/xen-netback/common.h | 14 drivers/net/xen-netback/interface.c | 22 drivers/net/xen-netback/netback.c | 229 drivers/net/xen-netback/rx.c | 10 drivers/net/xen-netfront.c | 6 drivers/nvme/host/core.c | 8 drivers/regulator/slg51000-regulator.c | 2 drivers/regulator/twl6030-regulator.c | 15 drivers/rtc/rtc-cmos.c | 179 drivers/rtc/rtc-mc146818-lib.c | 70 drivers/s390/net/qeth_l2_main.c | 16 drivers/soundwire/intel.c | 1 drivers/spi/spi-mt65xx.c | 8 drivers/usb/dwc3/gadget.c | 3 drivers/video/fbdev/core/fbcon.c | 2 fs/Makefile | 2 fs/btrfs/send.c | 24 fs/cifs/connect.c | 1 fs/file.c | 11 fs/io-wq.c | 1398 - fs/io-wq.h | 160 fs/io_uring.c |11110 ------------ include/asm-generic/tlb.h | 4 include/linux/cgroup.h | 1 include/linux/clk.h | 109 include/linux/mc146818rtc.h | 3 io_uring/Makefile | 6 io_uring/io-wq.c | 1398 + io_uring/io-wq.h | 160 io_uring/io_uring.c |11112 +++++++++++++ kernel/cgroup/cgroup-internal.h | 1 kernel/sched/core.c | 2 mm/gup.c | 2 mm/khugepaged.c | 47 mm/memcontrol.c | 15 mm/mmu_gather.c | 4 net/9p/trans_fd.c | 6 net/9p/trans_xen.c | 9 net/bluetooth/6lowpan.c | 1 net/bluetooth/af_bluetooth.c | 4 net/bluetooth/hci_core.c | 3 net/can/af_can.c | 4 net/dsa/tag_hellcreek.c | 3 net/dsa/tag_ksz.c | 3 net/dsa/tag_sja1105.c | 3 net/ipv4/fib_frontend.c | 3 net/ipv4/fib_semantics.c | 1 net/ipv4/ip_gre.c | 48 net/ipv6/ip6_output.c | 5 net/mac802154/iface.c | 1 net/netfilter/nf_conntrack_netlink.c | 19 net/netfilter/nft_set_pipapo.c | 5 net/nfc/nci/ntf.c | 6 net/tipc/link.c | 4 net/tipc/node.c | 12 net/unix/diag.c | 20 sound/core/seq/seq_memory.c | 11 sound/soc/codecs/rt711-sdca-sdw.c | 2 sound/soc/codecs/wm8962.c | 8 sound/soc/soc-pcm.c | 2 tools/testing/selftests/net/fcnal-test.sh | 11 tools/testing/selftests/net/fib_tests.sh | 37 tools/testing/selftests/net/pmtu.sh | 10 tools/testing/selftests/net/rtnetlink.sh | 2 136 files changed, 13901 insertions(+), 13161 deletions(-)
Akihiko Odaki (2):
e1000e: Fix TX dispatch condition
igb: Allocate MSI-X vector when testing
Alexandra Winter (1):
s390/qeth: fix use-after-free in hsci
Anastasia Belova (1):
HID: hid-lg4ff: Add check for empty lbuf
Andreas Kemnade (1):
regulator: twl6030: fix get status of twl6032 regulators
Ankit Patel (1):
HID: usbhid: Add ALWAYS_POLL quirk for some mice
Artem Chernyshev (3):
net: dsa: ksz: Check return value
net: dsa: hellcreek: Check return value
net: dsa: sja1105: Check return value
Bartosz Golaszewski (2):
gpiolib: improve coding style for local variables
gpiolib: check the 'ngpios' property in core gpiolib code
Chancel Liu (1):
ASoC: wm8962: Wait for updated value of WM8962_CLOCKING1 register
Chen Zhongjin (1):
Bluetooth: Fix not cleanup led when bt_init fails
Dan Carpenter (2):
net: mvneta: Prevent out of bounds read in mvneta_config_rss()
net: mvneta: Fix an out of bounds check
Daniel Díaz (1):
selftests/net: Find nettest in current directory
Davide Tronchin (1):
net: usb: qmi_wwan: add u-blox 0x1342 composition
Dawei Li (1):
drm/vmwgfx: Fix race issue calling pin_user_pages
Dominique Martinet (1):
9p/xen: check logical size for buffer size
Emeel Hakim (1):
macsec: add missing attribute validation for offload
Eric Dumazet (1):
ipv6: avoid use-after-free in ip6_fragment()
FUKAUMI Naoki (1):
arm64: dts: rockchip: keep I2S1 disabled for GPIO function on ROCK Pi 4 series
Filipe Manana (1):
btrfs: send: avoid unaligned encoded writes when attempting to clone range
Francesco Dolcini (1):
Revert "ARM: dts: imx7: Fix NAND controller size-cells"
Frank Jungclaus (1):
can: esd_usb: Allow REC and TEC to return to zero
GUO Zihua (1):
9p/fd: Use P9_HDRSZ for header size
Gaosheng Cui (1):
mmc: mtk-sd: Fix missing clk_disable_unprepare in msdc_of_clock_parse()
Giulio Benetti (1):
ARM: 9266/1: mm: fix no-MMU ZERO_PAGE() implementation
Greg Kroah-Hartman (1):
Linux 5.15.83
Guillaume BRUN (1):
drm: bridge: dw_hdmi: fix preference of RGB modes over YUV420
Haiyang Zhang (1):
net: mana: Fix race on per-CQ variable napi work_done
Hangbin Liu (1):
ip_gre: do not report erspan version on GRE interface
Hans Verkuil (2):
media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area()
media: v4l2-dv-timings.c: fix too strict blanking sanity checks
Hans de Goede (1):
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10
Harshit Mogalapalli (1):
io_uring: Fix a null-ptr-deref in io_tctx_exit_cb()
Hauke Mehrtens (1):
ca8210: Fix crash by zero initializing data
Heiko Carstens (1):
s390/qeth: fix various format strings
Hsin-Yi Wang (1):
drm/bridge: anx7625: Fix edid_read break case in sp_tx_edid_read()
Ido Schimmel (2):
ipv4: Fix incorrect route flushing when source address is deleted
ipv4: Fix incorrect route flushing when table ID 0 is used
Ismael Ferreras Morezuelas (1):
Bluetooth: btusb: Add debug message for CSR controllers
Jann Horn (4):
fs: use acquire ordering in __fget_light() mm/khugepaged: take the right locks for page table retraction mm/khugepaged: fix GUP-fast interaction by sending IPI mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths
Jens Axboe (1):
io_uring: move to separate directory
Jisheng Zhang (1):
net: stmmac: fix "snps,axi-config" node property parsing
Johan Jonker (4):
ARM: dts: rockchip: fix ir-receiver node names
arm64: dts: rockchip: fix ir-receiver node names
ARM: dts: rockchip: rk3188: fix lcdc1-rgb24 node name
ARM: dts: rockchip: disable arm_global_timer on rk3066 and rk3188
John Starks (1):
mm/gup: fix gup_pud_range() for dax
Juergen Gross (3):
xen/netback: do some code cleanup
xen/netback: don't call kfree_skb() with interrupts disabled xen/netback: fix build warning
Kees Cook (2):
ALSA: seq: Fix function prototype mismatch in snd_seq_expand_var_event
NFC: nci: Bounds check struct nfc_target arrays
Konrad Dybcio (1):
regulator: slg51000: Wait after asserting CS pin
Kuniyuki Iwashima (1):
af_unix: Get user_ns from in_skb in unix_diag_get_exact().
Lin Liu (1):
xen-netfront: Fix NULL sring after live migration
Liu Jian (2):
net: hisilicon: Fix potential use-after-free in hisi_femac_rx()
net: hisilicon: Fix potential use-after-free in hix5hd2_rx()
Luiz Augusto von Dentz (1):
Bluetooth: Fix crash when replugging CSR fake controllers
Masahiro Yamada (1):
block: move CONFIG_BLOCK guard to top Makefile
Mateusz Jończyk (3):
rtc: mc146818-lib: extract mc146818_avoid_UIP
rtc: cmos: avoid UIP when writing alarm time
rtc: cmos: avoid UIP when reading alarm time
Michael Walle (1):
net: phy: mxl-gpy: fix version reporting
Michal Jaron (1):
i40e: Fix not setting default xps_cpus after reset
Oleksij Rempel (1):
net: mdiobus: fwnode_mdiobus_register_phy() rework error handling
Oliver Hartkopp (1):
can: af_can: fix NULL pointer dereference in can_rcv_filter
Pablo Neira Ayuso (1):
netfilter: ctnetlink: fix compilation warning after data race fixes in ct mark
Pankaj Raghav (1):
nvme initialize core quirks before calling nvme_init_subsystem
Prike Liang (1):
drm/amdgpu/sdma_v4_0: turn off SDMA ring buffer in the s2idle suspend
Przemyslaw Patynowski (1):
i40e: Disallow ip4 and ip6 l4_4_bytes
Qiheng Lin (1):
net: microchip: sparx5: Fix missing destroy_workqueue of mact_queue
Qiqi Zhang (1):
drm/bridge: ti-sn65dsi86: Fix output polarity setting bug
Radu Nicolae Pirea (OSS) (1):
net: dsa: sja1105: avoid out of bounds access in sja1105_init_l2_policing()
Rob Clark (2):
drm/shmem-helper: Remove errant put in error path drm/shmem-helper: Avoid vm_open error paths
Ronak Doshi (2):
vmxnet3: correctly report encapsulated LRO packet
vmxnet3: use correct intrConf reference when using extended queues
Ross Lagerwall (1):
xen/netback: Ensure protocol headers don't fall in the non-linear area
Sebastian Reichel (2):
arm: dts: rockchip: fix node name for hym8563 rtc
arm: dts: rockchip: remove clock-frequency from rtc
Shuming Fan (1):
ASoC: rt711-sdca: fix the latency time of clock stop prepare state machine transitions
Sjoerd Simons (1):
soundwire: intel: Initialize clock stop timeout
Srinivasa Rao Mandadapu (1):
ASoC: soc-pcm: Add NULL check in BE reparenting
Stefano Brivio (1):
netfilter: nft_set_pipapo: Actually validate intervals in fields after the first one
Sylwester Dziedziuch (1):
i40e: Fix for VF MAC address 0
Tejun Heo (1):
memcg: fix possible use-after-free in memcg_write_event_control()
Tetsuo Handa (1):
fbcon: Use kzalloc() in fbcon_prepare_logo()
Thinh Nguyen (1):
usb: dwc3: gadget: Disable GUSB2PHYCFG.SUSPHY for End Transfer
Thomas Huth (1):
KVM: s390: vsie: Fix the initialization of the epoch extension (epdx) field
Tomislav Novak (1):
ARM: 9251/1: perf: Fix stacktraces for tracepoint events in THUMB2 kernels
Uwe Kleine-König (3):
clk: generalize devm_clk_get() a bit
clk: Provide new devm_clk helpers for prepared and enabled clocks
clk: Fix pointer casting to prevent oops in devm_clk_release()
Valentina Goncharenko (2):
net: encx24j600: Add parentheses to fix precedence
net: encx24j600: Fix invalid logic in reading of MISTAT register
Wang ShaoBo (1):
Bluetooth: 6LoWPAN: add missing hci_dev_put() in get_l2cap_conn()
Wang Yufen (1):
gpio/rockchip: fix refcount leak in rockchip_gpiolib_register()
Wei Yongjun (1):
mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add()
Xin Long (1):
tipc: call tipc_lxc_xmit without holding node_read_lock
Xiongfeng Wang (1):
gpio: amd8111: Fix PCI device reference count leak
Yang Yingliang (2):
net: mdiobus: fix double put fwnode in the error path
net: plip: don't call kfree_skb/dev_kfree_skb() under spin_lock_irq()
Yongqiang Liu (1):
net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq
Yuan Can (1):
dpaa2-switch: Fix memory leak in dpaa2_switch_acl_entry_add() and dpaa2_switch_acl_entry_remove()
YueHaibing (2):
net: broadcom: Add PTP_1588_CLOCK_OPTIONAL dependency for BCMGENET under ARCH_BCM2835
tipc: Fix potential OOB in tipc_link_proto_rcv()
Zack Rusin (1):
drm/vmwgfx: Don't use screen objects when SEV is active
Zeng Heng (3):
cifs: fix use-after-free caused by invalid pointer hostname
gpiolib: fix memory leak in gpiochip_setup_dev()
net: mdio: fix unbalanced fwnode reference count in mdio_device_release()
Zhang Changzhong (1):
ethernet: aeroflex: fix potential skb leak in greth_init_rings()
ZhangPeng (1):
HID: core: fix shift-out-of-bounds in hid_report_raw_event
Zhengchao Shao (3):
selftests: rtnetlink: correct xfrm policy rule in kci_test_ipsec_offload
net: dsa: sja1105: fix memory leak in sja1105_setup_devlink_regions()
net: thunderbolt: fix memory leak in tbnet_open()
Zhichao Liu (1):
spi: mediatek: Fix DEVAPC Violation at KO Remove
Ziyang Xuan (2):
ieee802154: cc2520: Fix error return code in cc2520_hw_init()
octeontx2-pf: Fix potential memory leak in otx2_init_tc()
Greg Kroah-Hartman
maintainerMAINTAINERS +1 -6
@@ -7244,9 +7244,6 @@ F: include/linux/fs.h F: include/linux/fs_types.h F: include/uapi/linux/fs.h F: include/uapi/linux/openat2.h -X: fs/io-wq.c -X: fs/io-wq.h -X: fs/io_uring.c FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER M: Riku Voipio <[email protected]>
@@ -9818,9 +9815,7 @@ L: [email protected] S: Maintained T: git git://git.kernel.dk/linux-block T: git git://git.kernel.dk/liburing -F: fs/io-wq.c -F: fs/io-wq.h -F: fs/io_uring.c +F: io_uring/ F: include/linux/io_uring.h F: include/uapi/linux/io_uring.h F: tools/io_uring/
Makefile +4 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 82 +SUBLEVEL = 83 EXTRAVERSION = NAME = Trick or Treat
@@ -1150,7 +1150,9 @@ export MODORDER := $(extmod_prefix)modules.order export MODULES_NSDEPS := $(extmod_prefix)modules.nsdeps ifeq ($(KBUILD_EXTMOD),) -core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/ +core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ +core-$(CONFIG_BLOCK) += block/ +core-$(CONFIG_IO_URING) += io_uring/ vmlinux-dirs := $(patsubst %/,%,$(filter %/, \ $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
arch/arm/boot/dts/imx7s.dtsi +2 -2
@@ -1252,10 +1252,10 @@ dma_apbh: dma-apbh@33000000 { clocks = <&clks IMX7D_NAND_USDHC_BUS_RAWNAND_CLK>; }; - gpmi: nand-controller@33002000 { + gpmi: nand-controller@33002000{ compatible = "fsl,imx7d-gpmi-nand"; #address-cells = <1>; - #size-cells = <0>; + #size-cells = <1>; reg = <0x33002000 0x2000>, <0x33004000 0x4000>; reg-names = "gpmi-nand", "bch"; interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
arch/arm/boot/dts/rk3036-evb.dts +1 -2
@@ -31,11 +31,10 @@ phy0: ethernet-phy@0 { &i2c1 { status = "okay"; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; }; };
arch/arm/boot/dts/rk3188-radxarock.dts +1 -1
@@ -71,7 +71,7 @@ spdif_out: spdif-out { #sound-dai-cells = <0>; }; - ir_recv: gpio-ir-receiver { + ir_recv: ir-receiver { compatible = "gpio-ir-receiver"; gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; pinctrl-names = "default";
arch/arm/boot/dts/rk3188.dtsi +1 -2
@@ -378,7 +378,7 @@ lcdc1_vsync: lcdc1-vsync { rockchip,pins = <2 RK_PD3 1 &pcfg_pull_none>; }; - lcdc1_rgb24: ldcd1-rgb24 { + lcdc1_rgb24: lcdc1-rgb24 { rockchip,pins = <2 RK_PA0 1 &pcfg_pull_none>, <2 RK_PA1 1 &pcfg_pull_none>, <2 RK_PA2 1 &pcfg_pull_none>,
@@ -606,7 +606,6 @@ &emac { &global_timer { interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; - status = "disabled"; }; &local_timer {
arch/arm/boot/dts/rk3288-evb-act8846.dts +1 -1
@@ -54,7 +54,7 @@ vdd_gpu: syr828@41 { vin-supply = <&vcc_sys>; }; - hym8563@51 { + rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>;
arch/arm/boot/dts/rk3288-firefly.dtsi +1 -2
@@ -233,11 +233,10 @@ vdd_gpu: syr828@41 { vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; interrupt-parent = <&gpio7>; interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
arch/arm/boot/dts/rk3288-miqi.dts +1 -2
@@ -162,11 +162,10 @@ vdd_gpu: syr828@41 { vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; };
arch/arm/boot/dts/rk3288-rock2-square.dts +1 -2
@@ -165,11 +165,10 @@ &hdmi { }; &i2c0 { - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; interrupt-parent = <&gpio0>; interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
arch/arm/boot/dts/rk3288-vmarc-som.dtsi +0 -1
@@ -241,7 +241,6 @@ hym8563: rtc@51 { interrupt-parent = <&gpio5>; interrupts = <RK_PC3 IRQ_TYPE_LEVEL_LOW>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "hym8563"; pinctrl-names = "default"; pinctrl-0 = <&hym8563_int>;
arch/arm/boot/dts/rk3xxx.dtsi +7 -0
@@ -76,6 +76,13 @@ global_timer: global-timer@1013c200 { reg = <0x1013c200 0x20>; interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>; clocks = <&cru CORE_PERI>; + status = "disabled"; + /* The clock source and the sched_clock provided by the arm_global_timer + * on Rockchip rk3066a/rk3188 are quite unstable because their rates + * depend on the CPU frequency. + * Keep the arm_global_timer disabled in order to have the + * DW_APB_TIMER (rk3066a) or ROCKCHIP_TIMER (rk3188) selected by default. + */ }; local_timer: local-timer@1013c600 {
arch/arm/include/asm/perf_event.h +1 -1
@@ -17,7 +17,7 @@ extern unsigned long perf_misc_flags(struct pt_regs *regs);#define perf_arch_fetch_caller_regs (regs, __ip) { \ (regs)->ARM_pc = (__ip); \ - (regs)->ARM_fp = (unsigned long) __builtin_frame_address(0); \ + frame_pointer((regs)) = (unsigned long) __builtin_frame_address(0); \ (regs)->ARM_sp = current_stack_pointer; \ (regs)->ARM_cpsr = SVC_MODE; \ }
arch/arm/include/asm/pgtable-nommu.h +0 -6
@@ -44,12 +44,6 @@typedef pte_t *pte_addr_t ; -/* -* ZERO_PAGE is a global shared page that is always zero: used -* for zero-mapped memory areas etc.. -*/ -#define ZERO_PAGE (vaddr) (virt_to_page(0)) -/* * Mark the prot value as uncacheable and unbufferable. */
arch/arm/include/asm/pgtable.h +9 -7
@@ -10,6 +10,15 @@#include <linux/const.h> #include <asm/proc-fns.h> +#ifndef __ASSEMBLY__ +/* +* ZERO_PAGE is a global shared page that is always zero: used +* for zero-mapped memory areas etc.. +*/ +extern struct page *empty_zero_page; +#define ZERO_PAGE (vaddr) (empty_zero_page) +#endif +#ifndef CONFIG_MMU #include <asm-generic/pgtable-nopud.h>
@@ -156,13 +165,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,#define __S111 __PAGE_SHARED_EXEC#ifndef __ASSEMBLY__ -/* -* ZERO_PAGE is a global shared page that is always zero: used -* for zero-mapped memory areas etc.. -*/ -extern struct page *empty_zero_page; -#define ZERO_PAGE (vaddr) (empty_zero_page) -extern pgd_t swapper_pg_dir[PTRS_PER_PGD ];
arch/arm/mm/nommu.c +19 -0
@@ -26,6 +26,13 @@unsigned long vectors_base; +/* +* empty_zero_page is a special page that is used for +* zero-initialized data and COW. +*/ +struct page *empty_zero_page; +EXPORT_SYMBOL (empty_zero_page); +#ifdef CONFIG_ARM_MPU struct mpu_rgn_info mpu_rgn_info;#endif
@@ -148,9 +155,21 @@ void __init adjust_lowmem_bounds(void)*/ void __init paging_init (const struct machine_desc *mdesc) { +void *zero_page; +early_trap_init ((void *)vectors_base);mpu_setup (); + +/* allocate the zero page. */ + zero_page =memblock_alloc (PAGE_SIZE ,PAGE_SIZE ); +if (!zero_page) +panic ("%s: Failed to allocate %lu bytes align=0x%lx\n" , + __func__,PAGE_SIZE ,PAGE_SIZE ); +bootmem_init (); + + empty_zero_page =virt_to_page (zero_page); +flush_dcache_page (empty_zero_page); }/*
arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts +1 -1
@@ -19,7 +19,7 @@ chosen { stdout-path = "serial2:1500000n8"; }; - ir_rx { + ir-receiver { compatible = "gpio-ir-receiver"; gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>; pinctrl-names = "default";
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi +0 -1
@@ -446,7 +446,6 @@ &i2s0 { &i2s1 { rockchip,playback-channels = <2>; rockchip,capture-channels = <2>; - status = "okay"; }; &i2s2 {
arch/s390/kvm/vsie.c +3 -1
@@ -538,8 +538,10 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)if (test_kvm_cpu_feat (vcpu->kvm,KVM_S390_VM_CPU_FEAT_CEI )) scb_s->eca |= scb_o->eca &ECA_CEI ;/* Epoch Extension */ -if (test_kvm_facility (vcpu->kvm,139 )) +if (test_kvm_facility (vcpu->kvm,139 )) { scb_s->ecd |= scb_o->ecd &ECD_MEF ; + scb_s->epdx = scb_o->epdx; + }/* etoken */ if (test_kvm_facility (vcpu->kvm,156 ))
block/Makefile +1 -1
@@ -3,7 +3,7 @@ # Makefile for the kernel block layer # -obj-$(CONFIG_BLOCK) := bdev.o fops.o bio.o elevator.o blk-core.o blk-sysfs.o \ +obj-y := bdev.o fops.o bio.o elevator.o blk-core.o blk-sysfs.o \ blk-flush.o blk-settings.o blk-ioc.o blk-map.o \ blk-exec.o blk-merge.o blk-timeout.o \ blk-lib.o blk-mq.o blk-mq-tag.o blk-stat.o \
drivers/bluetooth/btusb.c +5 -0
@@ -1901,6 +1901,11 @@ static int btusb_setup_csr(struct hci_dev *hdev) rp = (struct hci_rp_read_local_version *)skb->data; +bt_dev_info (hdev,"CSR: Setting up dongle with HCI ver=%u rev=%04x; LMP ver=%u subver=%04x; manufacturer=%u" , +le16_to_cpu (rp->hci_ver),le16_to_cpu (rp->hci_rev), +le16_to_cpu (rp->lmp_ver),le16_to_cpu (rp->lmp_subver), +le16_to_cpu (rp->manufacturer)); +/* Detect a wide host of Chinese controllers that aren't CSR. * * Known fake bcdDevices: 0x0100, 0x0134, 0x1915, 0x2520, 0x7558, 0x8891
drivers/clk/clk-devres.c +75 -16
117 lines not on this page · raw message
drivers/gpio/gpio-amd8111.c +4 -0
@@ -226,7 +226,10 @@ static int __init amd_gpio_init(void)ioport_unmap (gp.pm); goto out; } +return 0 ; + out: +pci_dev_put (pdev);return err; }
@@ -234,6 +237,7 @@ static void __exit amd_gpio_exit(void) {gpiochip_remove (&gp.chip);ioport_unmap (gp.pm); +pci_dev_put (gp.pdev); }module_init (amd_gpio_init);
drivers/gpio/gpio-rockchip.c +1 -0
@@ -605,6 +605,7 @@ static int rockchip_gpiolib_register(struct rockchip_pin_bank *bank)return -ENODATA ; pctldev =of_pinctrl_get (pctlnp); +of_node_put (pctlnp);if (!pctldev)return -ENODEV ;
drivers/gpio/gpiolib.c +45 -14
120 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +15 -9
@@ -978,13 +978,13 @@ static void sdma_v4_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se/** -* sdma_v4_0_gfx_stop - stop the gfx async dma engines +* sdma_v4_0_gfx_enable - enable the gfx async dma engines * * @adev: amdgpu_device pointer -* -* Stop the gfx async dma ring buffers (VEGA10). +* @enable: enable SDMA RB/IB +* control the gfx async dma ring buffers (VEGA10). */ -static void sdma_v4_0_gfx_stop (struct amdgpu_device *adev) +static void sdma_v4_0_gfx_enable (struct amdgpu_device *adev,bool enable) {struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES ];u32 rb_cntl, ib_cntl;
@@ -999,10 +999,10 @@ static void sdma_v4_0_gfx_stop(struct amdgpu_device *adev) } rb_cntl =RREG32_SDMA (i, mmSDMA0_GFX_RB_CNTL); - rb_cntl =REG_SET_FIELD (rb_cntl,SDMA0_GFX_RB_CNTL ,RB_ENABLE ,0 ); + rb_cntl =REG_SET_FIELD (rb_cntl,SDMA0_GFX_RB_CNTL ,RB_ENABLE , enable ?1 :0 );WREG32_SDMA (i, mmSDMA0_GFX_RB_CNTL, rb_cntl); ib_cntl =RREG32_SDMA (i, mmSDMA0_GFX_IB_CNTL); - ib_cntl =REG_SET_FIELD (ib_cntl,SDMA0_GFX_IB_CNTL ,IB_ENABLE ,0 ); + ib_cntl =REG_SET_FIELD (ib_cntl,SDMA0_GFX_IB_CNTL ,IB_ENABLE , enable ?1 :0 );WREG32_SDMA (i, mmSDMA0_GFX_IB_CNTL, ib_cntl); } }
@@ -1129,7 +1129,7 @@ static void sdma_v4_0_enable(struct amdgpu_device *adev, bool enable)int i;if (!enable) { -sdma_v4_0_gfx_stop (adev); +sdma_v4_0_gfx_enable (adev, enable);sdma_v4_0_rlc_stop (adev);if (adev->sdma.has_page_queue)sdma_v4_0_page_stop (adev);
@@ -2063,8 +2063,10 @@ static int sdma_v4_0_suspend(void *handle)struct amdgpu_device *adev = (struct amdgpu_device *)handle;/* SMU saves SDMA state for us */ -if (adev->in_s0ix) +if (adev->in_s0ix) { +sdma_v4_0_gfx_enable (adev, false);return 0 ; + }return sdma_v4_0_hw_fini (adev); }
@@ -2074,8 +2076,12 @@ static int sdma_v4_0_resume(void *handle)struct amdgpu_device *adev = (struct amdgpu_device *)handle;/* SMU restores SDMA state for us */ -if (adev->in_s0ix) +if (adev->in_s0ix) { +sdma_v4_0_enable (adev, true); +sdma_v4_0_gfx_enable (adev, true); +amdgpu_ttm_set_buffer_funcs_status (adev, true);return 0 ; + }return sdma_v4_0_hw_init (adev); }
drivers/gpu/drm/bridge/analogix/anx7625.c +2 -2
@@ -796,7 +796,7 @@ static int sp_tx_edid_read(struct anx7625_data *ctx,int count, blocks_num;u8 pblock_buf[MAX_DPCD_BUFFER_SIZE ];u8 i, j; -u8 g_edid_break =0 ; +int g_edid_break =0 ;int ret;struct device *dev = &ctx->client->dev;
@@ -827,7 +827,7 @@ static int sp_tx_edid_read(struct anx7625_data *ctx, g_edid_break =edid_read (ctx, offset, pblock_buf); -if (g_edid_break) +if (g_edid_break <0 )break ; memcpy(&pedid_blocks_buf[offset],
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +3 -3
@@ -2594,6 +2594,9 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,* if supported. In any case the default RGB888 format is added */ +/* Default 8bit RGB fallback */ + output_fmts[i++] =MEDIA_BUS_FMT_RGB888_1X24 ; +if (max_bpc >=16 && info->bpc ==16 ) {if (info->color_formats &DRM_COLOR_FORMAT_YCRCB444 ) output_fmts[i++] =MEDIA_BUS_FMT_YUV16_1X48 ;
@@ -2627,9 +2630,6 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,if (info->color_formats &DRM_COLOR_FORMAT_YCRCB444 ) output_fmts[i++] =MEDIA_BUS_FMT_YUV8_1X24 ; -/* Default 8bit RGB fallback */ - output_fmts[i++] =MEDIA_BUS_FMT_RGB888_1X24 ; - *num_output_fmts = i;return output_fmts;
drivers/gpu/drm/bridge/ti-sn65dsi86.c +2 -2
@@ -920,9 +920,9 @@ static void ti_sn_bridge_set_video_timings(struct ti_sn65dsi86 *pdata) &pdata->bridge.encoder->crtc->state->adjusted_mode;u8 hsync_polarity =0 , vsync_polarity =0 ; -if (mode->flags &DRM_MODE_FLAG_PHSYNC ) +if (mode->flags &DRM_MODE_FLAG_NHSYNC ) hsync_polarity =CHA_HSYNC_POLARITY ; -if (mode->flags &DRM_MODE_FLAG_PVSYNC ) +if (mode->flags &DRM_MODE_FLAG_NVSYNC ) vsync_polarity =CHA_VSYNC_POLARITY ; ti_sn65dsi86_write_u16(pdata, SN_CHA_ACTIVE_LINE_LENGTH_LOW_REG,
drivers/gpu/drm/drm_gem_shmem_helper.c +12 -6
@@ -541,12 +541,20 @@ static void drm_gem_shmem_vm_open(struct vm_area_struct *vma) {struct drm_gem_object *obj = vma->vm_private_data;struct drm_gem_shmem_object *shmem =to_drm_gem_shmem_obj (obj); -int ret;WARN_ON (shmem->base.import_attach); - ret =drm_gem_shmem_get_pages (shmem); -WARN_ON_ONCE (ret !=0 ); +mutex_lock (&shmem->pages_lock); + +/* +* We should have already pinned the pages when the buffer was first +* mmap'd, vm_open() just grabs an additional reference for the new +* mm the vma is getting copied into (ie. on fork()). +*/ +if (!WARN_ON_ONCE (!shmem->pages_use_count)) + shmem->pages_use_count++; + +mutex_unlock (&shmem->pages_lock);drm_gem_vm_open (vma); }
@@ -591,10 +599,8 @@ int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct } ret =drm_gem_shmem_get_pages (shmem); -if (ret) { -drm_gem_vm_close (vma); +if (ret)return ret; - } vma->vm_flags |=VM_MIXEDMAP |VM_DONTEXPAND ; vma->vm_page_prot =vm_get_page_prot (vma->vm_flags);
drivers/gpu/drm/vmwgfx/vmwgfx_msg.c +3 -3
@@ -1085,21 +1085,21 @@ int vmw_mksstat_add_ioctl(struct drm_device *dev, void *data,reset_ppn_array (pdesc->strsPPNs,ARRAY_SIZE (pdesc->strsPPNs));/* Pin mksGuestStat user pages and store those in the instance descriptor */ - nr_pinned_stat =pin_user_pages (arg->stat, num_pages_stat,FOLL_LONGTERM , pages_stat,NULL ); + nr_pinned_stat =pin_user_pages_fast (arg->stat, num_pages_stat,FOLL_LONGTERM , pages_stat);if (num_pages_stat != nr_pinned_stat) goto err_pin_stat;for (i =0 ; i < num_pages_stat; ++i) pdesc->statPPNs[i] =page_to_pfn (pages_stat[i]); - nr_pinned_info =pin_user_pages (arg->info, num_pages_info,FOLL_LONGTERM , pages_info,NULL ); + nr_pinned_info =pin_user_pages_fast (arg->info, num_pages_info,FOLL_LONGTERM , pages_info);if (num_pages_info != nr_pinned_info) goto err_pin_info;for (i =0 ; i < num_pages_info; ++i) pdesc->infoPPNs[i] =page_to_pfn (pages_info[i]); - nr_pinned_strs =pin_user_pages (arg->strs, num_pages_strs,FOLL_LONGTERM , pages_strs,NULL ); + nr_pinned_strs =pin_user_pages_fast (arg->strs, num_pages_strs,FOLL_LONGTERM , pages_strs);if (num_pages_strs != nr_pinned_strs) goto err_pin_strs;
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +4 -0
@@ -953,6 +953,10 @@ int vmw_kms_sou_init_display(struct vmw_private *dev_priv)struct drm_device *dev = &dev_priv->drm;int i, ret; +/* Screen objects won't work if GMR's aren't available */ +if (!dev_priv->has_gmr) +return -ENOSYS ; +if (!(dev_priv->capabilities &SVGA_CAP_SCREEN_OBJECT_2 )) {return -ENOSYS ; }
drivers/hid/hid-core.c +3 -0
@@ -1310,6 +1310,9 @@ static s32 snto32(__u32 value, unsigned n)if (!value || !n)return 0 ; +if (n >32 ) + n =32 ; +switch (n) {case 8 :return ((__s8 )value);case 16 :return ((__s16 )value);
drivers/hid/hid-ids.h +4 -0
@@ -261,6 +261,7 @@#define USB_DEVICE_ID_CH_AXIS_295 0x001c#define USB_VENDOR_ID_CHERRY 0x046a +#define USB_DEVICE_ID_CHERRY_MOUSE_000C 0x000c#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023#define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR 0x0027
@@ -892,6 +893,7 @@#define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER 0x02fd#define USB_DEVICE_ID_MS_PIXART_MOUSE 0x00cb#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS 0x02e0 +#define USB_DEVICE_ID_MS_MOUSE_0783 0x0783#define USB_VENDOR_ID_MOJO 0x8282#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
@@ -1182,6 +1184,7 @@#define USB_DEVICE_ID_SYNAPTICS_DELL_K15A 0x6e21#define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1002 0x73f4#define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003 0x73f5 +#define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_017 0x73f6#define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5 0x81a7#define USB_VENDOR_ID_TEXAS_INSTRUMENTS 0x2047
@@ -1338,6 +1341,7 @@#define USB_VENDOR_ID_PRIMAX 0x0461#define USB_DEVICE_ID_PRIMAX_MOUSE_4D22 0x4d22 +#define USB_DEVICE_ID_PRIMAX_MOUSE_4E2A 0x4e2a#define USB_DEVICE_ID_PRIMAX_KEYBOARD 0x4e05#define USB_DEVICE_ID_PRIMAX_REZEL 0x4e72#define USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F 0x4d0f
drivers/hid/hid-ite.c +5 -0
@@ -121,6 +121,11 @@ static const struct hid_device_id ite_devices[] = { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003), .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT }, +/* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */ + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, +USB_VENDOR_ID_SYNAPTICS , +USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_017 ), + .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT }, { } };MODULE_DEVICE_TABLE (hid, ite_devices);
drivers/hid/hid-lg4ff.c +6 -0
@@ -872,6 +872,12 @@ static ssize_t lg4ff_alternate_modes_store(struct device *dev, struct device_attreturn -ENOMEM ; i =strlen (lbuf); + +if (i ==0 ) { +kfree (lbuf); +return -EINVAL ; + } +if (lbuf[i-1 ] =='\n' ) {if (i ==1 ) {kfree (lbuf);
drivers/hid/hid-quirks.c +3 -0
@@ -54,6 +54,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_MOUSE_000C), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), HID_QUIRK_NO_INIT_REPORTS },
@@ -122,6 +123,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C05A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_MCS, USB_DEVICE_ID_MCS_GAMEPADBLOCK), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_MOUSE_0783), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PIXART_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE3_COVER), HID_QUIRK_NO_INIT_REPORTS },
@@ -146,6 +148,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4D22), HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4E2A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D65), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4E22), HID_QUIRK_ALWAYS_POLL },
drivers/media/common/videobuf2/videobuf2-core.c +73 -29
214 lines not on this page · raw message
drivers/media/v4l2-core/v4l2-dv-timings.c +14 -6
@@ -145,6 +145,8 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t,const struct v4l2_bt_timings *bt = &t->bt;const struct v4l2_bt_timings_cap *cap = &dvcap->bt;u32 caps = cap->capabilities; +const u32 max_vert =10240 ; +u32 max_hor =3 * bt->width;if (t->type !=V4L2_DV_BT_656_1120 )return false;
@@ -166,14 +168,20 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t,if (!bt->interlaced && (bt->il_vbackporch || bt->il_vsync || bt->il_vfrontporch))return false; -if (bt->hfrontporch >2 * bt->width || - bt->hsync >1024 || bt->hbackporch >1024 ) +/* +* Some video receivers cannot properly separate the frontporch, +* backporch and sync values, and instead they only have the total +* blanking. That can be assigned to any of these three fields. +* So just check that none of these are way out of range. +*/ +if (bt->hfrontporch > max_hor || + bt->hsync > max_hor || bt->hbackporch > max_hor)return false; -if (bt->vfrontporch >4096 || - bt->vsync >128 || bt->vbackporch >4096 ) +if (bt->vfrontporch > max_vert || + bt->vsync > max_vert || bt->vbackporch > max_vert)return false; -if (bt->interlaced && (bt->il_vfrontporch >4096 || - bt->il_vsync >128 || bt->il_vbackporch >4096 )) +if (bt->interlaced && (bt->il_vfrontporch > max_vert || + bt->il_vsync > max_vert || bt->il_vbackporch > max_vert))return false;return fnc ==NULL ||fnc (t, fnc_handle); }
drivers/mmc/host/mtk-sd.c +2 -4
@@ -2455,13 +2455,11 @@ static int msdc_of_clock_parse(struct platform_device *pdev,if (IS_ERR (host->src_clk_cg)) host->src_clk_cg =NULL ; - host->sys_clk_cg =devm_clk_get_optional (&pdev->dev,"sys_cg" ); +/* If present, always enable for this clock gate */ + host->sys_clk_cg =devm_clk_get_optional_enabled (&pdev->dev,"sys_cg" );if (IS_ERR (host->sys_clk_cg)) host->sys_clk_cg =NULL ; -/* If present, always enable for this clock gate */ -clk_prepare_enable (host->sys_clk_cg); - host->bulk_clks[0 ].id ="pclk_cg" ; host->bulk_clks[1 ].id ="axi_cg" ; host->bulk_clks[2 ].id ="ahb_cg" ;
drivers/net/can/usb/esd_usb2.c +6 -0
@@ -227,6 +227,10 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv,u8 rxerr = msg->msg.rx.data[2 ];u8 txerr = msg->msg.rx.data[3 ]; +netdev_dbg (priv->netdev, +"CAN_ERR_EV_EXT: dlc=%#02x state=%02x ecc=%02x rec=%02x tec=%02x\n" , + msg->msg.rx.dlc, state, ecc, rxerr, txerr); + skb =alloc_can_err_skb (priv->netdev, &cf);if (skb ==NULL ) { stats->rx_dropped++;
@@ -253,6 +257,8 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv,break ;default : priv->can.state =CAN_STATE_ERROR_ACTIVE ; + txerr =0 ; + rxerr =0 ;break ; } }else {
drivers/net/dsa/sja1105/sja1105_devlink.c +2 -0
@@ -95,6 +95,8 @@ static int sja1105_setup_devlink_regions(struct dsa_switch *ds)if (IS_ERR (region)) {while (--i >=0 )dsa_devlink_region_destroy (priv->regions[i]); + +kfree (priv->regions);return PTR_ERR (region); }
drivers/net/dsa/sja1105/sja1105_main.c +1 -1
@@ -1025,7 +1025,7 @@ static int sja1105_init_l2_policing(struct sja1105_private *priv) policing[bcast].sharindx = port;/* Only SJA1110 has multicast policers */ -if (mcast <= table->ops->max_entry_count) +if (mcast < table->ops->max_entry_count) policing[mcast].sharindx = port; }
drivers/net/ethernet/aeroflex/greth.c +1 -0
@@ -258,6 +258,7 @@ static int greth_init_rings(struct greth_private *greth)if (dma_mapping_error (greth->dev, dma_addr)) {if (netif_msg_ifup (greth))dev_err (greth->dev,"Could not create initial DMA mapping\n" ); +dev_kfree_skb (skb); goto cleanup; } greth->rx_skbuff[i] = skb;
drivers/net/ethernet/broadcom/Kconfig +2 -1
@@ -71,13 +71,14 @@ config BCM63XX_ENET config BCMGENET tristate "Broadcom GENET internal MAC support" depends on HAS_IOMEM + depends on PTP_1588_CLOCK_OPTIONAL || !ARCH_BCM2835 select MII select PHYLIB select FIXED_PHY select BCM7XXX_PHY select MDIO_BCM_UNIMAC select DIMLIB - select BROADCOM_PHY if (ARCH_BCM2835 && PTP_1588_CLOCK_OPTIONAL) + select BROADCOM_PHY if ARCH_BCM2835 help This driver supports the built-in Ethernet MACs found in the Broadcom BCM7xxx Set Top Box family chipset.
drivers/net/ethernet/cavium/thunder/nicvf_main.c +3 -1
@@ -2250,7 +2250,7 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) err =register_netdev (netdev);if (err) {dev_err (dev,"Failed to register netdevice\n" ); - goto err_unregister_interrupts; + goto err_destroy_workqueue; } nic->msg_enable = debug;
@@ -2259,6 +2259,8 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)return 0 ; +err_destroy_workqueue: +destroy_workqueue (nic->nicvf_rx_mode_wq); err_unregister_interrupts:nicvf_unregister_interrupts (nic); err_free_netdev:
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c +4 -0
@@ -132,6 +132,7 @@ int dpaa2_switch_acl_entry_add(struct dpaa2_switch_filter_block *filter_block, DMA_TO_DEVICE);if (unlikely (dma_mapping_error (dev, acl_entry_cfg->key_iova))) {dev_err (dev,"DMA mapping failed\n" ); +kfree (cmd_buff);return -EFAULT ; }
@@ -142,6 +143,7 @@ int dpaa2_switch_acl_entry_add(struct dpaa2_switch_filter_block *filter_block, DMA_TO_DEVICE);if (err) {dev_err (dev,"dpsw_acl_add_entry() failed %d\n" , err); +kfree (cmd_buff);return err; }
@@ -172,6 +174,7 @@ dpaa2_switch_acl_entry_remove(struct dpaa2_switch_filter_block *block, DMA_TO_DEVICE);if (unlikely (dma_mapping_error (dev, acl_entry_cfg->key_iova))) {dev_err (dev,"DMA mapping failed\n" ); +kfree (cmd_buff);return -EFAULT ; }
@@ -182,6 +185,7 @@ dpaa2_switch_acl_entry_remove(struct dpaa2_switch_filter_block *block, DMA_TO_DEVICE);if (err) {dev_err (dev,"dpsw_acl_remove_entry() failed %d\n" , err); +kfree (cmd_buff);return err; }
drivers/net/ethernet/hisilicon/hisi_femac.c +1 -1
@@ -283,7 +283,7 @@ static int hisi_femac_rx(struct net_device *dev, int limit) skb->protocol =eth_type_trans (skb, dev);napi_gro_receive (&priv->napi, skb); dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += len; next: pos = (pos +1 ) % rxq->num;if (rx_pkts_num >= limit)
drivers/net/ethernet/hisilicon/hix5hd2_gmac.c +1 -1
@@ -550,7 +550,7 @@ static int hix5hd2_rx(struct net_device *dev, int limit) skb->protocol =eth_type_trans (skb, dev);napi_gro_receive (&priv->napi, skb); dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += len; next: pos =dma_ring_incr (pos,RX_DESC_NUM ); }
drivers/net/ethernet/intel/e1000e/netdev.c +2 -2
@@ -5941,9 +5941,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,e1000_tx_queue (tx_ring, tx_flags, count);/* Make sure there is space in the ring for the next send. */ e1000_maybe_stop_tx (tx_ring, - (MAX_SKB_FRAGS * + ((MAX_SKB_FRAGS +1 ) *DIV_ROUND_UP (PAGE_SIZE , - adapter->tx_fifo_limit) +2 )); + adapter->tx_fifo_limit) +4 ));if (!netdev_xmit_more () ||netif_xmit_stopped (netdev_get_tx_queue (netdev,0 ))) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +2 -10
@@ -4364,11 +4364,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi,return -EOPNOTSUPP ;/* First 4 bytes of L4 header */ -if (usr_ip4_spec->l4_4_bytes ==htonl (0xFFFFFFFF )) - new_mask |=I40E_L4_SRC_MASK |I40E_L4_DST_MASK ; -else if (!usr_ip4_spec->l4_4_bytes) - new_mask &= ~(I40E_L4_SRC_MASK |I40E_L4_DST_MASK ); -else +if (usr_ip4_spec->l4_4_bytes)return -EOPNOTSUPP ;/* Filtering on Type of Service is not supported. */
@@ -4407,11 +4403,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi,else return -EOPNOTSUPP ; -if (usr_ip6_spec->l4_4_bytes ==htonl (0xFFFFFFFF )) - new_mask |=I40E_L4_SRC_MASK |I40E_L4_DST_MASK ; -else if (!usr_ip6_spec->l4_4_bytes) - new_mask &= ~(I40E_L4_SRC_MASK |I40E_L4_DST_MASK ); -else +if (usr_ip6_spec->l4_4_bytes)return -EOPNOTSUPP ;/* Filtering on Traffic class is not supported. */
drivers/net/ethernet/intel/i40e/i40e_main.c +18 -1
@@ -10519,6 +10519,21 @@ static int i40e_rebuild_channels(struct i40e_vsi *vsi)return 0 ; } +/** +* i40e_clean_xps_state - clean xps state for every tx_ring +* @vsi: ptr to the VSI +**/ +static void i40e_clean_xps_state (struct i40e_vsi *vsi) +{ +int i; + +if (vsi->tx_rings) +for (i =0 ; i < vsi->num_queue_pairs; i++) +if (vsi->tx_rings[i]) +clear_bit (__I40E_TX_XPS_INIT_DONE, + vsi->tx_rings[i]->state); +} +/** * i40e_prep_for_reset - prep for the core to reset * @pf: board private structure
@@ -10543,8 +10558,10 @@ static void i40e_prep_for_reset(struct i40e_pf *pf)i40e_pf_quiesce_all_vsi (pf);for (v =0 ; v < pf->num_alloc_vsi; v++) { -if (pf->vsi[v]) +if (pf->vsi[v]) { +i40e_clean_xps_state (pf->vsi[v]); pf->vsi[v]->seid =0 ; + } }i40e_shutdown_adminq (&pf->hw);
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +2 -0
@@ -1578,6 +1578,7 @@ bool i40e_reset_vf(struct i40e_vf *vf, bool flr)i40e_cleanup_reset_vf (vf);i40e_flush (hw); +usleep_range (20000 ,40000 );clear_bit (I40E_VF_STATE_RESETTING , &vf->vf_states);return true;
@@ -1701,6 +1702,7 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) }i40e_flush (hw); +usleep_range (20000 ,40000 );clear_bit (__I40E_VF_DISABLE, pf->state);return true;
drivers/net/ethernet/intel/igb/igb_ethtool.c +2 -0
@@ -1409,6 +1409,8 @@ static int igb_intr_test(struct igb_adapter *adapter, u64 *data) *data =1 ;return -1 ; } +wr32 (E1000_IVAR_MISC ,E1000_IVAR_VALID <<8 ); +wr32 (E1000_EIMS ,BIT (0 )); }else if (adapter->flags &IGB_FLAG_HAS_MSI ) { shared_int = false; if (request_irq(irq,
drivers/net/ethernet/marvell/mvneta.c +1 -1
@@ -4162,7 +4162,7 @@ static void mvneta_percpu_elect(struct mvneta_port *pp)/* Use the cpu associated to the rxq when it is online, in all * the other cases, use the cpu 0 which can't be offline. */ -if (cpu_online (pp->rxq_def)) +if (pp->rxq_def < nr_cpu_ids &&cpu_online (pp->rxq_def)) elected_cpu = pp->rxq_def; max_cpu =num_present_cpus ();
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c +6 -1
@@ -1090,7 +1090,12 @@ int otx2_init_tc(struct otx2_nic *nic)return err; tc->flow_ht_params = tc_flow_ht_params; -return rhashtable_init (&tc->flow_table, &tc->flow_ht_params); + err =rhashtable_init (&tc->flow_table, &tc->flow_ht_params); +if (err) { +kfree (tc->tc_entries_bitmap); + tc->tc_entries_bitmap =NULL ; + } +return err; }void otx2_shutdown_tc (struct otx2_nic *nic)
drivers/net/ethernet/microchip/encx24j600-regmap.c +2 -2
@@ -359,7 +359,7 @@ static int regmap_encx24j600_phy_reg_read(void *context, unsigned int reg, goto err_out;usleep_range (26 ,100 ); -while ((ret =regmap_read (ctx->regmap,MISTAT , &mistat) !=0 ) && +while (((ret =regmap_read (ctx->regmap,MISTAT , &mistat)) ==0 ) && (mistat &BUSY ))cpu_relax ();
@@ -397,7 +397,7 @@ static int regmap_encx24j600_phy_reg_write(void *context, unsigned int reg, goto err_out;usleep_range (26 ,100 ); -while ((ret =regmap_read (ctx->regmap,MISTAT , &mistat) !=0 ) && +while (((ret =regmap_read (ctx->regmap,MISTAT , &mistat)) ==0 ) && (mistat &BUSY ))cpu_relax ();
drivers/net/ethernet/microchip/sparx5/sparx5_main.c +3 -0
@@ -829,6 +829,8 @@ static int mchp_sparx5_probe(struct platform_device *pdev) cleanup_ports:sparx5_cleanup_ports (sparx5); +if (sparx5->mact_queue) +destroy_workqueue (sparx5->mact_queue); cleanup_config:kfree (configs); cleanup_pnode:
@@ -852,6 +854,7 @@ static int mchp_sparx5_remove(struct platform_device *pdev)sparx5_cleanup_ports (sparx5);/* Unregister netdevs */ sparx5_unregister_notifier_blocks (sparx5); +destroy_workqueue (sparx5->mact_queue);return 0 ; }
drivers/net/ethernet/microsoft/mana/gdma.h +8 -1
@@ -488,7 +488,14 @@ enum {#define GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT BIT(0) -#define GDMA_DRV_CAP_FLAGS1 GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT +/* Advertise to the NIC firmware: the NAPI work_done variable race is fixed, +* so the driver is able to reliably support features like busy_poll. +*/ +#define GDMA_DRV_CAP_FLAG_1_NAPI_WKDONE_FIX BIT(2) + +#define GDMA_DRV_CAP_FLAGS1 \ + (GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT | \ + GDMA_DRV_CAP_FLAG_1_NAPI_WKDONE_FIX)#define GDMA_DRV_CAP_FLAGS2 0
drivers/net/ethernet/microsoft/mana/mana_en.c +11 -5
@@ -1071,10 +1071,11 @@ static void mana_poll_rx_cq(struct mana_cq *cq) } } -static void mana_cq_handler (void *context,struct gdma_queue *gdma_queue) +static int mana_cq_handler (void *context,struct gdma_queue *gdma_queue) {struct mana_cq *cq = context;u8 arm_bit; +int w;WARN_ON_ONCE (cq->gdma_cq != gdma_queue);
@@ -1083,26 +1084,31 @@ static void mana_cq_handler(void *context, struct gdma_queue *gdma_queue)else mana_poll_tx_cq (cq); -if (cq->work_done < cq->budget && -napi_complete_done (&cq->napi, cq->work_done)) { + w = cq->work_done; + +if (w < cq->budget && +napi_complete_done (&cq->napi, w)) { arm_bit =SET_ARM_BIT ; }else { arm_bit =0 ; }mana_gd_ring_cq (gdma_queue, arm_bit); + +return w; }static int mana_poll (struct napi_struct *napi,int budget) { struct mana_cq *cq = container_of(napi, struct mana_cq, napi); +int w; cq->work_done =0 ; cq->budget = budget; -mana_cq_handler (cq, cq->gdma_cq); + w =mana_cq_handler (cq, cq->gdma_cq); -return min (cq->work_done, budget); +return min (w, budget); }static void mana_schedule_napi (void *context,struct gdma_queue *gdma_queue)
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +4 -4
@@ -108,10 +108,10 @@ static struct stmmac_axi *stmmac_axi_setup(struct platform_device *pdev) axi->axi_lpi_en =of_property_read_bool (np,"snps,lpi_en" ); axi->axi_xit_frm =of_property_read_bool (np,"snps,xit_frm" ); - axi->axi_kbbe =of_property_read_bool (np,"snps,axi_kbbe" ); - axi->axi_fb =of_property_read_bool (np,"snps,axi_fb" ); - axi->axi_mb =of_property_read_bool (np,"snps,axi_mb" ); - axi->axi_rb =of_property_read_bool (np,"snps,axi_rb" ); + axi->axi_kbbe =of_property_read_bool (np,"snps,kbbe" ); + axi->axi_fb =of_property_read_bool (np,"snps,fb" ); + axi->axi_mb =of_property_read_bool (np,"snps,mb" ); + axi->axi_rb =of_property_read_bool (np,"snps,rb" );if (of_property_read_u32 (np,"snps,wr_osr_lmt" , &axi->axi_wr_osr_lmt)) axi->axi_wr_osr_lmt =1 ;
drivers/net/ieee802154/ca8210.c +1 -1
@@ -927,7 +927,7 @@ static int ca8210_spi_transfer(dev_dbg (&spi->dev,"%s called\n" , __func__); - cas_ctl =kmalloc (sizeof (*cas_ctl),GFP_ATOMIC ); + cas_ctl =kzalloc (sizeof (*cas_ctl),GFP_ATOMIC );if (!cas_ctl)return -ENOMEM ;
drivers/net/ieee802154/cc2520.c +1 -1
@@ -970,7 +970,7 @@ static int cc2520_hw_init(struct cc2520_private *priv)if (timeout-- <=0 ) {dev_err (&priv->spi->dev,"oscillator start failed!\n" ); -return ret; +return -ETIMEDOUT ; }udelay (1 ); }while (!(status &CC2520_STATUS_XOSC32M_STABLE ));
drivers/net/macsec.c +1 -0
@@ -3675,6 +3675,7 @@ static const struct nla_policy macsec_rtnl_policy[IFLA_MACSEC_MAX + 1] = { [IFLA_MACSEC_SCB] = { .type = NLA_U8 }, [IFLA_MACSEC_REPLAY_PROTECT] = { .type = NLA_U8 }, [IFLA_MACSEC_VALIDATION] = { .type = NLA_U8 }, + [IFLA_MACSEC_OFFLOAD] = { .type = NLA_U8 }, };static void macsec_free_netdev (struct net_device *dev)
drivers/net/mdio/fwnode_mdio.c +15 -10
@@ -77,6 +77,7 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,*/ rc =phy_device_register (phy);if (rc) { +device_set_node (&phy->mdio.dev,NULL );fwnode_handle_put (child);return rc; }
@@ -110,8 +111,8 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,else phy =phy_device_create (bus, addr, phy_id,0 ,NULL );if (IS_ERR (phy)) { -unregister_mii_timestamper (mii_ts); -return PTR_ERR (phy); + rc =PTR_ERR (phy); + goto clean_mii_ts; }if (is_acpi_node (child)) {
@@ -125,17 +126,14 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,/* All data is now stored in the phy struct, so register it */ rc =phy_device_register (phy);if (rc) { -phy_device_free (phy); -fwnode_handle_put (phy->mdio.dev.fwnode); -return rc; + phy->mdio.dev.fwnode =NULL ; +fwnode_handle_put (child); + goto clean_phy; } }else if (is_of_node (child)) { rc =fwnode_mdiobus_phy_device_register (bus, phy, child, addr); -if (rc) { -unregister_mii_timestamper (mii_ts); -phy_device_free (phy); -return rc; - } +if (rc) + goto clean_phy; }/* phy->mii_ts may already be defined by the PHY driver. A
@@ -145,5 +143,12 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,if (mii_ts) phy->mii_ts = mii_ts;return 0 ; + +clean_phy: +phy_device_free (phy); +clean_mii_ts: +unregister_mii_timestamper (mii_ts); + +return rc; }EXPORT_SYMBOL (fwnode_mdiobus_register_phy);
drivers/net/mdio/of_mdio.c +2 -1
@@ -68,8 +68,9 @@ static int of_mdiobus_register_device(struct mii_bus *mdio,/* All data is now stored in the mdiodev struct; register it. */ rc =mdio_device_register (mdiodev);if (rc) { +device_set_node (&mdiodev->dev,NULL ); +fwnode_handle_put (fwnode);mdio_device_free (mdiodev); -of_node_put (child);return rc; }
drivers/net/phy/mdio_device.c +2 -0
@@ -21,6 +21,7 @@#include <linux/slab.h> #include <linux/string.h> #include <linux/unistd.h> +#include <linux/property.h> void mdio_device_free (struct mdio_device *mdiodev) {
@@ -30,6 +31,7 @@ EXPORT_SYMBOL(mdio_device_free);static void mdio_device_release (struct device *dev) { +fwnode_handle_put (dev->fwnode);kfree (to_mdio_device (dev)); }
drivers/net/phy/mxl-gpy.c +6 -5
@@ -96,6 +96,7 @@ static int gpy_config_init(struct phy_device *phydev)static int gpy_probe (struct phy_device *phydev) { +int fw_version;int ret;if (!phydev->is_c45) {
@@ -105,12 +106,12 @@ static int gpy_probe(struct phy_device *phydev) }/* Show GPY PHY FW version in dmesg */ - ret =phy_read (phydev,PHY_FWV ); -if (ret <0 ) -return ret; + fw_version =phy_read (phydev,PHY_FWV ); +if (fw_version <0 ) +return fw_version; -phydev_info (phydev,"Firmware Version: 0x%04X (%s)\n" , ret, - (ret &PHY_FWV_REL_MASK ) ?"release" :"test" ); +phydev_info (phydev,"Firmware Version: 0x%04X (%s)\n" , fw_version, + (fw_version &PHY_FWV_REL_MASK ) ?"release" :"test" );return 0 ; }
drivers/net/plip/plip.c +2 -2
@@ -446,12 +446,12 @@ plip_bh_timeout_error(struct net_device *dev, struct net_local *nl, } rcv->state =PLIP_PK_DONE ;if (rcv->skb) { -kfree_skb (rcv->skb); +dev_kfree_skb_irq (rcv->skb); rcv->skb =NULL ; } snd->state =PLIP_PK_DONE ;if (snd->skb) { -dev_kfree_skb (snd->skb); +dev_consume_skb_irq (snd->skb); snd->skb =NULL ; }spin_unlock_irq (&nl->lock);
drivers/net/thunderbolt.c +1 -0
@@ -902,6 +902,7 @@ static int tbnet_open(struct net_device *dev) tbnet_start_poll, net);if (!ring) {netdev_err (dev,"failed to allocate Rx ring\n" ); +tb_xdomain_release_out_hopid (xd, hopid);tb_ring_free (net->tx_ring.ring); net->tx_ring.ring =NULL ;return -ENOMEM ;
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1413,6 +1413,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x0489, 0xe0b4, 0)}, /* Foxconn T77W968 LTE */ {QMI_FIXED_INTF(0x0489, 0xe0b5, 0)}, /* Foxconn T77W968 LTE with eSIM support*/ {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */ + {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 *//* 4. Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
drivers/net/vmxnet3/vmxnet3_drv.c +23 -4
@@ -75,8 +75,14 @@ vmxnet3_enable_all_intrs(struct vmxnet3_adapter *adapter)for (i =0 ; i < adapter->intr.num_intrs; i++)vmxnet3_enable_intr (adapter, i); - adapter->shared->devRead.intrConf.intrCtrl &= +if (!VMXNET3_VERSION_GE_6 (adapter) || + !adapter->queuesExtEnabled) { + adapter->shared->devRead.intrConf.intrCtrl &= +cpu_to_le32 (~VMXNET3_IC_DISABLE_ALL ); + }else { + adapter->shared->devReadExt.intrConfExt.intrCtrl &=cpu_to_le32 (~VMXNET3_IC_DISABLE_ALL ); + } }
@@ -85,8 +91,14 @@ vmxnet3_disable_all_intrs(struct vmxnet3_adapter *adapter) {int i; - adapter->shared->devRead.intrConf.intrCtrl |= +if (!VMXNET3_VERSION_GE_6 (adapter) || + !adapter->queuesExtEnabled) { + adapter->shared->devRead.intrConf.intrCtrl |= +cpu_to_le32 (VMXNET3_IC_DISABLE_ALL ); + }else { + adapter->shared->devReadExt.intrConfExt.intrCtrl |=cpu_to_le32 (VMXNET3_IC_DISABLE_ALL ); + }for (i =0 ; i < adapter->intr.num_intrs; i++)vmxnet3_disable_intr (adapter, i); }
@@ -1350,6 +1362,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, };u32 num_pkts =0 ;bool skip_page_frags = false; +bool encap_lro = false;struct Vmxnet3_RxCompDesc *rcd;struct vmxnet3_rx_ctx *ctx = &rq->rx_ctx;u16 segCnt =0 , mss =0 ;
@@ -1508,13 +1521,18 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,if (VMXNET3_VERSION_GE_2 (adapter) && rcd->type ==VMXNET3_CDTYPE_RXCOMP_LRO ) {struct Vmxnet3_RxCompDescExt *rcdlro; +union Vmxnet3_GenericDesc *gdesc; + rcdlro = (struct Vmxnet3_RxCompDescExt *)rcd; + gdesc = (union Vmxnet3_GenericDesc *)rcd; segCnt = rcdlro->segCnt;WARN_ON_ONCE (segCnt ==0 ); mss = rcdlro->mss;if (unlikely (segCnt <=1 )) segCnt =0 ; + encap_lro = (le32_to_cpu (gdesc->dword[0 ]) & + (1UL <<VMXNET3_RCD_HDR_INNER_SHIFT )); }else { segCnt =0 ; }
@@ -1582,7 +1600,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,vmxnet3_rx_csum (adapter, skb, (union Vmxnet3_GenericDesc *)rcd); skb->protocol =eth_type_trans (skb, adapter->netdev); -if (!rcd->tcp || +if ((!rcd->tcp && !encap_lro) || !(adapter->netdev->features &NETIF_F_LRO )) goto not_lro;
@@ -1591,7 +1609,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, SKB_GSO_TCPV4 :SKB_GSO_TCPV6 ;skb_shinfo (skb)->gso_size = mss;skb_shinfo (skb)->gso_segs = segCnt; - }else if (segCnt !=0 || skb->len > mtu) { + }else if ((segCnt !=0 || skb->len > mtu) && !encap_lro) {u32 hlen; hlen = vmxnet3_get_hdr_len(adapter, skb,
@@ -1620,6 +1638,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,napi_gro_receive (&rq->napi, skb); ctx->skb =NULL ; + encap_lro = false; num_pkts++; }
drivers/net/xen-netback/common.h +1 -13
@@ -48,7 +48,6 @@#include <linux/debugfs.h> typedef unsigned int pending_ring_idx_t ; -#define INVALID_PENDING_RING_IDX (~0U)struct pending_tx_info {struct xen_netif_tx_request req;/* tx request */
@@ -82,8 +81,6 @@ struct xenvif_rx_meta {/* Discriminate from any valid pending_idx value. */ #define INVALID_PENDING_IDX 0xFFFF -#define MAX_BUFFER_OFFSET XEN_PAGE_SIZE -#define MAX_PENDING_REQS XEN_NETIF_TX_RING_SIZE/* The maximum number of frags is derived from the size of a grant (same
@@ -367,11 +364,6 @@ void xenvif_free(struct xenvif *vif);int xenvif_xenbus_init (void );void xenvif_xenbus_fini (void ); -int xenvif_schedulable (struct xenvif *vif); - -int xenvif_queue_stopped (struct xenvif_queue *queue); -void xenvif_wake_queue (struct xenvif_queue *queue); -/* (Un)Map communication rings. */ void xenvif_unmap_frontend_data_rings (struct xenvif_queue *queue); int xenvif_map_frontend_data_rings(struct xenvif_queue *queue,
@@ -394,8 +386,7 @@ int xenvif_dealloc_kthread(void *data);irqreturn_t xenvif_ctrl_irq_fn (int irq,void *data);bool xenvif_have_rx_work (struct xenvif_queue *queue,bool test_kthread); -void xenvif_rx_action (struct xenvif_queue *queue); -void xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb); +bool xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb);void xenvif_carrier_on (struct xenvif *vif);
@@ -403,9 +394,6 @@ void xenvif_carrier_on(struct xenvif *vif);void xenvif_zerocopy_callback (struct sk_buff *skb,struct ubuf_info *ubuf,bool zerocopy_success); -/* Unmap a pending page and release it back to the guest */ -void xenvif_idx_unmap (struct xenvif_queue *queue,u16 pending_idx); -static inline pending_ring_idx_t nr_pending_reqs (struct xenvif_queue *queue) { return MAX_PENDING_REQS -
drivers/net/xen-netback/interface.c +5 -17
@@ -70,7 +70,7 @@ void xenvif_skb_zerocopy_complete(struct xenvif_queue *queue)wake_up (&queue->dealloc_wq); } -int xenvif_schedulable (struct xenvif *vif) +static int xenvif_schedulable (struct xenvif *vif) {return netif_running (vif->dev) && test_bit(VIF_STATUS_CONNECTED, &vif->status) &&
@@ -178,20 +178,6 @@ irqreturn_t xenvif_interrupt(int irq, void *dev_id)return IRQ_HANDLED ; } -int xenvif_queue_stopped (struct xenvif_queue *queue) -{ -struct net_device *dev = queue->vif->dev; -unsigned int id = queue->id; -return netif_tx_queue_stopped (netdev_get_tx_queue (dev, id)); -} - -void xenvif_wake_queue (struct xenvif_queue *queue) -{ -struct net_device *dev = queue->vif->dev; -unsigned int id = queue->id; -netif_tx_wake_queue (netdev_get_tx_queue (dev, id)); -} -static u16 xenvif_select_queue (struct net_device *dev,struct sk_buff *skb,struct net_device *sb_dev) {
@@ -269,14 +255,16 @@ xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev)if (vif->hash.alg ==XEN_NETIF_CTRL_HASH_ALGORITHM_NONE )skb_clear_hash (skb); -xenvif_rx_queue_tail (queue, skb); +if (!xenvif_rx_queue_tail (queue, skb)) + goto drop; +xenvif_kick_thread (queue);return NETDEV_TX_OK ; drop: vif->dev->stats.tx_dropped++; -dev_kfree_skb (skb); +dev_kfree_skb_any (skb);return NETDEV_TX_OK ; }
drivers/net/xen-netback/netback.c +127 -102
353 lines not on this page · raw message
drivers/net/xen-netback/rx.c +6 -4
@@ -82,9 +82,10 @@ static bool xenvif_rx_ring_slots_available(struct xenvif_queue *queue)return false; } -void xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb) +bool xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb) {unsigned long flags; +bool ret = true;spin_lock_irqsave (&queue->rx_queue.lock, flags);
@@ -92,8 +93,7 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb)struct net_device *dev = queue->vif->dev;netif_tx_stop_queue (netdev_get_tx_queue (dev, queue->id)); -kfree_skb (skb); - queue->vif->dev->stats.rx_dropped++; + ret = false; }else {if (skb_queue_empty (&queue->rx_queue))xenvif_update_needed_slots (queue, skb);
@@ -104,6 +104,8 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb) }spin_unlock_irqrestore (&queue->rx_queue.lock, flags); + +return ret; }static struct sk_buff *xenvif_rx_dequeue (struct xenvif_queue *queue)
@@ -486,7 +488,7 @@ static void xenvif_rx_skb(struct xenvif_queue *queue)#define RX_BATCH_SIZE 64 -void xenvif_rx_action (struct xenvif_queue *queue) +static void xenvif_rx_action (struct xenvif_queue *queue) {struct sk_buff_head completed_skbs;unsigned int work_done =0 ;
drivers/net/xen-netfront.c +6 -0
@@ -1866,6 +1866,12 @@ static int netfront_resume(struct xenbus_device *dev)netif_tx_unlock_bh (info->netdev);xennet_disconnect_backend (info); + +rtnl_lock (); +if (info->queues) +xennet_destroy_queues (info); +rtnl_unlock (); +return 0 ; }
drivers/nvme/host/core.c +4 -4
@@ -2921,10 +2921,6 @@ static int nvme_init_identify(struct nvme_ctrl *ctrl)if (!ctrl->identified) {unsigned int i; - ret =nvme_init_subsystem (ctrl, id); -if (ret) - goto out_free; -/* * Check for quirks. Quirk can depend on firmware version, * so, in principle, the set of quirks present can change
@@ -2937,6 +2933,10 @@ static int nvme_init_identify(struct nvme_ctrl *ctrl)if (quirk_matches (id, &core_quirks[i])) ctrl->quirks |= core_quirks[i].quirks; } + + ret =nvme_init_subsystem (ctrl, id); +if (ret) + goto out_free; }memcpy (ctrl->subsys->firmware_rev, id->fr,sizeof (ctrl->subsys->firmware_rev));
drivers/regulator/slg51000-regulator.c +2 -0
@@ -457,6 +457,8 @@ static int slg51000_i2c_probe(struct i2c_client *client) chip->cs_gpiod = cs_gpiod; } +usleep_range (10000 ,11000 ); +i2c_set_clientdata (client, chip); chip->chip_irq = client->irq; chip->dev = dev;
drivers/regulator/twl6030-regulator.c +11 -4
@@ -67,6 +67,7 @@ struct twlreg_info {#define TWL6030_CFG_STATE_SLEEP 0x03#define TWL6030_CFG_STATE_GRP_SHIFT 5#define TWL6030_CFG_STATE_APP_SHIFT 2 +#define TWL6030_CFG_STATE_MASK 0x03#define TWL6030_CFG_STATE_APP_MASK (0x03 << TWL6030_CFG_STATE_APP_SHIFT)#define TWL6030_CFG_STATE_APP (v) (((v) & TWL6030_CFG_STATE_APP_MASK) >>\ TWL6030_CFG_STATE_APP_SHIFT)
@@ -128,13 +129,14 @@ static int twl6030reg_is_enabled(struct regulator_dev *rdev)if (grp <0 )return grp; grp &=P1_GRP_6030 ; + val =twlreg_read (info,TWL_MODULE_PM_RECEIVER ,VREG_STATE ); + val =TWL6030_CFG_STATE_APP (val); }else { + val =twlreg_read (info,TWL_MODULE_PM_RECEIVER ,VREG_STATE ); + val &=TWL6030_CFG_STATE_MASK ; grp =1 ; } - val =twlreg_read (info,TWL_MODULE_PM_RECEIVER ,VREG_STATE ); - val =TWL6030_CFG_STATE_APP (val); -return grp && (val ==TWL6030_CFG_STATE_ON ); }
@@ -187,7 +189,12 @@ static int twl6030reg_get_status(struct regulator_dev *rdev) val =twlreg_read (info,TWL_MODULE_PM_RECEIVER ,VREG_STATE ); -switch (TWL6030_CFG_STATE_APP (val)) { +if (info->features &TWL6032_SUBCLASS ) + val &=TWL6030_CFG_STATE_MASK ; +else + val =TWL6030_CFG_STATE_APP (val); + +switch (val) {case TWL6030_CFG_STATE_ON :return REGULATOR_STATUS_NORMAL ;
drivers/rtc/rtc-cmos.c +115 -64
224 lines not on this page · raw message
drivers/rtc/rtc-mc146818-lib.c +70 -0
76 lines not on this page · raw message
drivers/s390/net/qeth_l2_main.c +8 -8
@@ -661,13 +661,13 @@ static void qeth_l2_dev2br_fdb_notify(struct qeth_card *card, u8 code, card->dev, &info.info, NULL);QETH_CARD_TEXT (card,4 ,"andelmac" );QETH_CARD_TEXT_ (card,4 , -"mc%012lx" ,ether_addr_to_u64 (ntfy_mac)); +"mc%012llx" ,ether_addr_to_u64 (ntfy_mac)); }else {call_switchdev_notifiers (SWITCHDEV_FDB_ADD_TO_BRIDGE , card->dev, &info.info,NULL );QETH_CARD_TEXT (card,4 ,"anaddmac" );QETH_CARD_TEXT_ (card,4 , -"mc%012lx" ,ether_addr_to_u64 (ntfy_mac)); +"mc%012llx" ,ether_addr_to_u64 (ntfy_mac)); } }
@@ -764,9 +764,8 @@ static void qeth_l2_br2dev_worker(struct work_struct *work)struct list_head *iter;int err =0 ; -kfree (br2dev_event_work); -QETH_CARD_TEXT_ (card,4 ,"b2dw%04x" , event); -QETH_CARD_TEXT_ (card,4 ,"ma%012lx" ,ether_addr_to_u64 (addr)); +QETH_CARD_TEXT_ (card,4 ,"b2dw%04lx" , event); +QETH_CARD_TEXT_ (card,4 ,"ma%012llx" ,ether_addr_to_u64 (addr));rcu_read_lock ();/* Verify preconditions are still valid: */
@@ -795,7 +794,7 @@ static void qeth_l2_br2dev_worker(struct work_struct *work)if (err) {QETH_CARD_TEXT (card,2 ,"b2derris" );QETH_CARD_TEXT_ (card,2 , -"err%02x%03d" , event, +"err%02lx%03d" , event, lowerdev->ifindex); } }
@@ -813,7 +812,7 @@ static void qeth_l2_br2dev_worker(struct work_struct *work)break ; }if (err) -QETH_CARD_TEXT_ (card,2 ,"b2derr%02x" , event); +QETH_CARD_TEXT_ (card,2 ,"b2derr%02lx" , event); } unlock:
@@ -821,6 +820,7 @@ static void qeth_l2_br2dev_worker(struct work_struct *work)dev_put (brdev);dev_put (lsyncdev);dev_put (dstdev); +kfree (br2dev_event_work); } static int qeth_l2_br2dev_queue_work(struct net_device *brdev,
@@ -878,7 +878,7 @@ static int qeth_l2_switchdev_event(struct notifier_block *unused,while (lowerdev) {if (qeth_l2_must_learn (lowerdev, dstdev)) { card = lowerdev->ml_priv; -QETH_CARD_TEXT_ (card,4 ,"b2dqw%03x" , event); +QETH_CARD_TEXT_ (card,4 ,"b2dqw%03lx" , event); rc =qeth_l2_br2dev_queue_work (brdev, lowerdev, dstdev, event, fdb_info->addr);
drivers/soundwire/intel.c +1 -0
@@ -1285,6 +1285,7 @@ static int intel_link_probe(struct auxiliary_device *auxdev, cdns->msg_count =0 ; bus->link_id = auxdev->id; + bus->clk_stop_timeout =1 ;sdw_cdns_probe (cdns);
drivers/spi/spi-mt65xx.c +7 -1
@@ -912,14 +912,20 @@ static int mtk_spi_remove(struct platform_device *pdev) {struct spi_master *master =platform_get_drvdata (pdev);struct mtk_spi *mdata =spi_master_get_devdata (master); +int ret; -pm_runtime_disable (&pdev->dev); + ret =pm_runtime_resume_and_get (&pdev->dev); +if (ret <0 ) +return ret;mtk_spi_reset (mdata);if (mdata->dev_comp->no_need_unprepare)clk_unprepare (mdata->spi_clk); +pm_runtime_put_noidle (&pdev->dev); +pm_runtime_disable (&pdev->dev); +return 0 ; }
drivers/usb/dwc3/gadget.c +2 -1
@@ -291,7 +291,8 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned int cmd,* * DWC_usb3 3.30a and DWC_usb31 1.90a programming guide section 3.2.2 */ -if (dwc->gadget->speed <=USB_SPEED_HIGH ) { +if (dwc->gadget->speed <=USB_SPEED_HIGH || +DWC3_DEPCMD_CMD (cmd) ==DWC3_DEPCMD_ENDTRANSFER ) { reg =dwc3_readl (dwc->regs,DWC3_GUSB2PHYCFG (0 ));if (unlikely (reg &DWC3_GUSB2PHYCFG_SUSPHY )) { saved_config |=DWC3_GUSB2PHYCFG_SUSPHY ;
drivers/video/fbdev/core/fbcon.c +1 -1
@@ -601,7 +601,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,if (scr_readw (r) != vc->vc_video_erase_char)break ;if (r != q && new_rows >= rows + logo_lines) { - save =kmalloc (array3_size (logo_lines, new_cols,2 ), + save =kzalloc (array3_size (logo_lines, new_cols,2 ),GFP_KERNEL );if (save) {int i = cols < new_cols ? cols : new_cols;
fs/Makefile +0 -2
@@ -32,8 +32,6 @@ obj-$(CONFIG_TIMERFD) += timerfd.o obj-$(CONFIG_EVENTFD) += eventfd.o obj-$(CONFIG_USERFAULTFD) += userfaultfd.o obj-$(CONFIG_AIO) += aio.o -obj-$(CONFIG_IO_URING) += io_uring.o -obj-$(CONFIG_IO_WQ) += io-wq.o obj-$(CONFIG_FS_DAX) += dax.o obj-$(CONFIG_FS_ENCRYPTION) += crypto/ obj-$(CONFIG_FS_VERITY) += verity/
fs/btrfs/send.c +23 -1
@@ -5398,6 +5398,7 @@ static int clone_range(struct send_ctx *sctx,u64 ext_len;u64 clone_len;u64 clone_data_offset; +bool crossed_src_i_size = false;if (slot >=btrfs_header_nritems (leaf)) { ret =btrfs_next_leaf (clone_root->root, path);
@@ -5454,8 +5455,10 @@ static int clone_range(struct send_ctx *sctx,if (key.offset >= clone_src_i_size)break ; -if (key.offset + ext_len > clone_src_i_size) +if (key.offset + ext_len > clone_src_i_size) { ext_len = clone_src_i_size - key.offset; + crossed_src_i_size = true; + } clone_data_offset =btrfs_file_extent_offset (leaf, ei);if (btrfs_file_extent_disk_bytenr (leaf, ei) == disk_byte) {
@@ -5515,6 +5518,25 @@ static int clone_range(struct send_ctx *sctx, ret =send_clone (sctx, offset, clone_len, clone_root); } + }else if (crossed_src_i_size && clone_len < len) { +/* +* If we are at i_size of the clone source inode and we +* can not clone from it, terminate the loop. This is +* to avoid sending two write operations, one with a +* length matching clone_len and the final one after +* this loop with a length of len - clone_len. +* +* When using encoded writes (BTRFS_SEND_FLAG_COMPRESSED +* was passed to the send ioctl), this helps avoid +* sending an encoded write for an offset that is not +* sector size aligned, in case the i_size of the source +* inode is not sector size aligned. That will make the +* receiver fallback to decompression of the data and +* writing it using regular buffered IO, therefore while +* not incorrect, it's not optimal due decompression and +* possible re-compression at the receiver. +*/ +break ; }else { ret =send_extent_data (sctx, offset, clone_len); }
fs/cifs/connect.c +1 -0
@@ -1392,6 +1392,7 @@ cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect) server->session_key.response =NULL ; server->session_key.len =0 ;kfree (server->hostname); + server->hostname =NULL ; task =xchg (&server->tsk,NULL );if (task)
fs/file.c +10 -1
@@ -1029,7 +1029,16 @@ static unsigned long __fget_light(unsigned int fd, fmode_t mask)struct files_struct *files = current->files;struct file *file; -if (atomic_read (&files->count) ==1 ) { +/* +* If another thread is concurrently calling close_fd() followed +* by put_files_struct(), we must not observe the old table +* entry combined with the new refcount - otherwise we could +* return a file that is concurrently being freed. +* +* atomic_read_acquire() pairs with atomic_dec_and_test() in +* put_files_struct(). +*/ +if (atomic_read_acquire (&files->count) ==1 ) { file =files_lookup_fd_raw (files, fd);if (!file ||unlikely (file->f_mode & mask))return 0 ;
fs/io-wq.c deleted +0 -1398
352 lines not on this page · raw message
fs/io-wq.h deleted +0 -160
160 lines not on this page · raw message
fs/io_uring.c deleted +0 -11110
11,110 lines not on this page · raw message
include/linux/clk.h +109 -0
109 lines not on this page · raw message
io_uring/io-wq.c new file +1398 -0
1,398 lines not on this page · raw message
io_uring/io-wq.h new file +160 -0
160 lines not on this page · raw message
io_uring/io_uring.c new file +11112 -0
11,112 lines not on this page · raw message
mm/khugepaged.c +42 -5
47 lines not on this page · raw message
net/ipv4/ip_gre.c +29 -19
48 lines not on this page · raw message
tools/testing/selftests/net/fcnal-test.sh +7 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/fib_tests.sh +37 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/rtnetlink.sh +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.