Linux 4.19.199
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.199 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/bcm-cygnus.dtsi | 2 arch/arm/boot/dts/bcm-hr2.dtsi | 2 arch/arm/boot/dts/bcm-nsp.dtsi | 2 arch/arm/boot/dts/bcm63138.dtsi | 2 arch/arm/boot/dts/bcm7445-bcm97445svmb.dts | 4 arch/arm/boot/dts/bcm7445.dtsi | 2 arch/arm/boot/dts/bcm911360_entphn.dts | 4 arch/arm/boot/dts/bcm958300k.dts | 4 arch/arm/boot/dts/bcm958305k.dts | 4 arch/arm/boot/dts/bcm958522er.dts | 4 arch/arm/boot/dts/bcm958525er.dts | 4 arch/arm/boot/dts/bcm958525xmc.dts | 4 arch/arm/boot/dts/bcm958622hr.dts | 4 arch/arm/boot/dts/bcm958623hr.dts | 4 arch/arm/boot/dts/bcm958625hr.dts | 4 arch/arm/boot/dts/bcm958625k.dts | 4 arch/arm/boot/dts/bcm963138dvt.dts | 4 arch/arm/boot/dts/bcm988312hr.dts | 4 arch/arm/boot/dts/gemini-dlink-dns-313.dts | 2 arch/arm/boot/dts/gemini-nas4220b.dts | 2 arch/arm/boot/dts/gemini-rut1xx.dts | 2 arch/arm/boot/dts/gemini-wbd111.dts | 2 arch/arm/boot/dts/gemini-wbd222.dts | 2 arch/arm/boot/dts/gemini.dtsi | 1 arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi | 5 arch/arm/boot/dts/rk3036-kylin.dts | 2 arch/arm/boot/dts/rk3188.dtsi | 8 - arch/arm/boot/dts/rk322x.dtsi | 10 - arch/arm/boot/dts/rk3288-rock2-som.dtsi | 2 arch/arm/boot/dts/rk3288-vyasa.dts | 4 arch/arm/boot/dts/rk3288.dtsi | 14 - arch/arm/boot/dts/stm32429i-eval.dts | 8 - arch/arm/boot/dts/stm32746g-eval.dts | 6 arch/arm/boot/dts/stm32f429-disco.dts | 6 arch/arm/boot/dts/stm32f429.dtsi | 10 - arch/arm/boot/dts/stm32f469-disco.dts | 6 arch/arm/boot/dts/stm32f746.dtsi | 12 - arch/arm/boot/dts/stm32f769-disco.dts | 6 arch/arm/boot/dts/stm32h743.dtsi | 4 arch/arm/boot/dts/stm32mp157c.dtsi | 12 - arch/arm/mach-imx/suspend-imx53.S | 4 arch/arm64/boot/dts/arm/juno-base.dtsi | 6 arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 1 arch/arm64/boot/dts/rockchip/rk3328.dtsi | 6 arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 arch/mips/include/asm/pgalloc.h | 10 - arch/nds32/mm/mmap.c | 2 arch/powerpc/kvm/book3s_rtas.c | 25 ++- arch/powerpc/kvm/powerpc.c | 4 arch/s390/include/asm/ftrace.h | 1 arch/s390/kernel/ftrace.c | 2 arch/s390/kernel/mcount.S | 4 arch/s390/net/bpf_jit_comp.c | 2 drivers/dma-buf/sync_file.c | 13 - drivers/gpu/drm/drm_ioctl.c | 3 drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c | 1 drivers/iio/accel/bma180.c | 75 ++++++---- drivers/md/dm-writecache.c | 50 ++++-- drivers/media/pci/ngene/ngene-core.c | 2 drivers/media/pci/ngene/ngene.h | 14 + drivers/net/dsa/mv88e6xxx/chip.c | 6 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 22 +- drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c | 6 drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c | 2 drivers/net/ethernet/intel/e1000e/netdev.c | 1 drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 1 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 1 drivers/net/ethernet/intel/igb/igb_main.c | 15 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 4 drivers/net/ethernet/moxa/moxart_ether.c | 4 drivers/net/ethernet/qualcomm/emac/emac.c | 3 drivers/net/ethernet/ti/tlan.c | 3 drivers/nvme/host/pci.c | 5 drivers/pci/quirks.c | 4 drivers/reset/reset-ti-syscon.c | 4 drivers/rtc/rtc-max77686.c | 4 drivers/rtc/rtc-mxc_v2.c | 1 drivers/scsi/aic7xxx/aic7xxx_core.c | 2 drivers/scsi/aic94xx/aic94xx_init.c | 1 drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 1 drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 1 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1 drivers/scsi/isci/init.c | 1 drivers/scsi/libfc/fc_rport.c | 13 + drivers/scsi/libsas/sas_scsi_host.c | 9 + drivers/scsi/mvsas/mv_init.c | 1 drivers/scsi/pm8001/pm8001_init.c | 1 drivers/scsi/scsi_transport_iscsi.c | 90 ++++-------- drivers/soc/tegra/fuse/fuse-tegra30.c | 3 drivers/spi/spi-cadence.c | 14 + drivers/spi/spi-fsl-dspi.c | 4 drivers/spi/spi-mt65xx.c | 16 +- drivers/target/target_core_sbc.c | 35 ++-- drivers/thermal/thermal_core.c | 2 drivers/usb/core/hub.c | 120 +++++++++++----- drivers/usb/core/quirks.c | 4 drivers/usb/dwc2/gadget.c | 10 - drivers/usb/host/max3421-hcd.c | 44 +---- drivers/usb/host/xhci-hub.c | 3 drivers/usb/host/xhci-ring.c | 58 ++++++- drivers/usb/host/xhci.h | 3 drivers/usb/renesas_usbhs/fifo.c | 7 drivers/usb/serial/cp210x.c | 5 drivers/usb/serial/option.c | 3 drivers/usb/storage/unusual_uas.h | 7 fs/btrfs/inode.c | 2 fs/proc/base.c | 2 include/drm/drm_ioctl.h | 1 include/net/dst_metadata.h | 4 include/net/ip6_route.h | 2 kernel/sched/fair.c | 4 kernel/trace/ring_buffer.c | 28 +++ mm/slab_common.c | 18 +- net/bridge/br_if.c | 17 ++ net/caif/caif_socket.c | 3 net/decnet/af_decnet.c | 27 +-- net/ipv4/ip_tunnel.c | 22 ++ net/ipv4/tcp_fastopen.c | 19 ++ net/ipv4/tcp_ipv4.c | 4 net/ipv4/tcp_output.c | 1 net/ipv4/udp.c | 6 net/ipv6/ip6_output.c | 4 net/ipv6/tcp_ipv6.c | 22 ++ net/ipv6/udp.c | 2 net/ipv6/xfrm6_output.c | 2 net/netfilter/nf_conntrack_netlink.c | 3 net/netrom/nr_timer.c | 20 +- net/sched/act_skbmod.c | 12 + net/sched/cls_api.c | 2 net/sctp/auth.c | 2 scripts/mkcompile_h | 14 + sound/isa/sb/sb16_csp.c | 4 sound/usb/quirks.c | 3 tools/bpf/bpftool/common.c | 5 tools/bpf/bpftool/jit_disasm.c | 6 tools/perf/tests/bpf.c | 2 tools/perf/util/dso.c | 4 tools/perf/util/lzma.c | 8 - tools/perf/util/map.c | 2 tools/perf/util/probe-event.c | 4 tools/perf/util/probe-file.c | 4 tools/testing/selftests/vm/userfaultfd.c | 6 virt/kvm/kvm_main.c | 36 ++++ 144 files changed, 788 insertions(+), 501 deletions(-)
Aleksandr Loktionov (1):
igb: Check if num of q_vectors is smaller than max before array access
Alexander Ovechkin (1):
net: send SYNACK packet with accepted fwmark
Alexander Tsoy (1):
ALSA: usb-audio: Add registration quirk for JBL Quantum headsets
Alexandre Torgue (5):
ARM: dts: stm32: fix gpio-keys node on STM32 MCU boards
ARM: dts: stm32: fix RCC node name on stm32f429 MCU
ARM: dts: stm32: fix timer nodes on STM32 MCU to prevent warnings
ARM: dts: stm32: fix i2c node name on stm32f746 to prevent warnings
ARM: dts: stm32: move stmmac axi config in ethernet node on stm32mp15
Benjamin Gaignard (1):
ARM: dts: rockchip: Fix IOMMU nodes properties on rk322x
Bixuan Cui (1):
rtc: mxc_v2: add missing MODULE_DEVICE_TABLE
Casey Chen (1):
nvme-pci: do not call nvme_dev_remove_admin from nvme_remove
Charles Baylis (1):
drm: Return -ENOTTY for non-drm ioctls
Christophe JAILLET (6):
ixgbe: Fix an error handling path in 'ixgbe_probe()'
igb: Fix an error handling path in 'igb_probe()'
fm10k: Fix an error handling path in 'fm10k_probe()'
e1000e: Fix an error handling path in 'e1000_probe()'
iavf: Fix an error handling path in 'iavf_probe()'
spi: spi-fsl-dspi: Fix a resource leak in an error handling path
Colin Ian King (3):
scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8
liquidio: Fix unintentional sign extension issue on left shift of u16 s390/bpf: Perform r1 range checking before accessing jit->seen_reg[r1]
Corentin Labbe (2):
ARM: dts: gemini: rename mdio to the right name
ARM: dts: gemini: add device_type on pci
David Sterba (1):
btrfs: compression: don't try to compress if we don't have enough pages
Dmitry Bogdanov (1):
scsi: target: Fix protect handling in WRITE SAME(32)
Doug Berger (1):
net: bcmgenet: ensure EXT_ENERGY_DET_MASK is clear
Elaine Zhang (2):
ARM: dts: rockchip: Fix power-controller node names for rk3288
arm64: dts: rockchip: Fix power-controller node names for rk3328
Eric Dumazet (4):
tcp: annotate data races around tp->mtu_info
ipv6: tcp: drop silly ICMPv6 packet too big messages
udp: annotate data races around unix_sk(sk)->gso_size net/tcp_fastopen: fix data races around tfo_active_disable_stamp
Evan Quan (1):
PCI: Mark AMD Navi14 GPU ATS as broken
Ezequiel Garcia (1):
ARM: dts: rockchip: Fix the timer clocks order
Florian Fainelli (1):
net: bcmgenet: Ensure all TX/RX queues DMAs are disabled
Greg Kroah-Hartman (2):
nds32: fix up stack guard gap
Linux 4.19.199
Gu Shengxian (1):
bpftool: Properly close va_list 'ap' by va_end() on error
Gustavo A. R. Silva (1):
media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf()
Hangbin Liu (1):
net: ip_tunnel: fix mtu calculation for ETHER tunnel devices
Haoran Luo (1):
tracing: Fix bug in rb_per_cpu_empty() that might cause deadloop.
Huang Pei (1):
Revert "MIPS: add PMD table accounting into MIPS'pmd_alloc_one"
Ian Ray (1):
USB: serial: cp210x: fix comments for GE CS1000
Jason Ekstrand (1):
dma-buf/sync_file: Don't leak fences on merge failure
Javed Hasan (1):
scsi: libfc: Fix array index out of bound exception
Jedrzej Jagielski (1):
igb: Fix position of assignment to *ring
Johan Jonker (3):
ARM: dts: rockchip: fix pinctrl sleep nodename for rk3036-kylin and rk3288
arm64: dts: rockchip: fix pinctrl sleep nodename for rk3399.dtsi
ARM: dts: rockchip: fix supply properties in io-domains nodes
John Keeping (1):
USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick
Jonathan Neuschäfer (1):
ARM: imx: pm-imx5: Fix references to imx5_cpu_suspend_info
Julian Sikorski (1):
USB: usb-storage: Add LaCie Rugged USB3-FW to IGNORE_UAS
Krzysztof Kozlowski (1):
rtc: max77686: Do not enforce (incorrect) interrupt trigger type
Linus Walleij (1):
iio: accel: bma180: Use explicit member assignment
Marcelo Henrique Cerri (1):
proc: Avoid mixing integer types in mem_rw()
Marco De Marco (1):
USB: serial: option: add support for u-blox LARA-R6 family
Marek Behún (2):
net: dsa: mv88e6xxx: enable .rmu_disable() on Topaz
net: dsa: mv88e6xxx: use correct .stats_set_histogram() on Topaz
Marek Vasut (1):
spi: cadence: Correct initialisation of runtime PM again
Mark Tomlinson (1):
usb: max-3421: Prevent corruption of freed memory
Markus Boehme (1):
ixgbe: Fix packet corruption due to missing DMA sync
Mathias Nyman (4):
xhci: Fix lost USB 2 remote wake
usb: hub: Disable USB 3 device initiated lpm if exit latency is too high
usb: hub: Fix link power management max exit latency (MEL) calculations
xhci: add xhci_get_virt_ep() helper
Matthias Maennich (1):
kbuild: mkcompile_h: consider timestamp if KBUILD_BUILD_TIMESTAMP is set
Maxime Ripard (1):
drm/panel: raspberrypi-touchscreen: Prevent double-free
Mian Yousaf Kaukab (1):
arm64: dts: ls208xa: remove bus-num from dspi node
Mike Christie (1):
scsi: iscsi: Fix iface sysfs attr detection
Mikulas Patocka (2):
dm writecache: return the exact table values that were set dm writecache: fix writing beyond end of underlying device when shrinking
Minas Harutyunyan (1):
usb: dwc2: gadget: Fix sending zero length packet in DDMA mode.
Nanyong Sun (1):
mm: slab: fix kmem_cache_create failed when sysfs node not destroyed
Nguyen Dinh Phi (1):
netrom: Decrease sock refcount when sock timers expire
Nicholas Piggin (3):
KVM: PPC: Fix kvm_arch_vcpu_ioctl vcpu_load leak
KVM: PPC: Book3S: Fix H_RTAS rets buffer overflow
KVM: do not allow mapping valid but non-reference-counted pages
Nicolas Dichtel (1):
ipv6: fix 'disable_policy' for fwd packets
Odin Ugedal (1):
sched/fair: Fix CFS bandwidth hrtimer expiry type
Paolo Bonzini (1):
KVM: do not assume PTE is writable after follow_pfn
Pavel Skripkin (3):
net: moxa: fix UAF in moxart_mac_probe
net: qcom/emac: fix UAF in emac_remove
net: ti: fix UAF in tlan_remove_one
Peilin Ye (1):
net/sched: act_skbmod: Skip non-Ethernet packets
Peter Collingbourne (1):
selftest: use mmap instead of posix_memalign to allocate memory
Peter Hess (1):
spi: mediatek: fix fifo rx mode
Philipp Zabel (1):
reset: ti-syscon: fix to_ti_syscon_reset_data macro
Primoz Fiser (1):
ARM: dts: imx6: phyFLEX: Fix UART hardware flow control
Rafał Miłecki (5):
ARM: brcmstb: dts: fix NAND nodes names
ARM: Cygnus: dts: fix NAND nodes names
ARM: NSP: dts: fix NAND nodes names
ARM: dts: BCM63xx: Fix NAND nodes names
ARM: dts: Hurricane 2: Fix NAND nodes names
Riccardo Mancini (6):
perf map: Fix dso->nsinfo refcounting
perf probe: Fix dso->nsinfo refcounting
perf dso: Fix memory leak in dso__new_map()
perf lzma: Close lzma stream on exit
perf test bpf: Free obj_buf
perf probe-file: Delete namelist in del_events() on the error path
Sean Christopherson (1):
KVM: Use kvm_pfn_t for local PFN variable in hva_to_pfn_remapped()
Stephan Gerhold (1):
iio: accel: bma180: Fix BMA25x bandwidth register values
Sudeep Holla (1):
arm64: dts: juno: Update SCPI nodes as per the YAML schema
Taehee Yoo (1):
net: validate lwtstate->data before returning from skb_tunnel_info()
Takashi Iwai (1):
ALSA: sb: Fix potential ABBA deadlock in CSP driver
Thierry Reding (1):
soc/tegra: fuse: Fix Tegra234-only builds
Tobias Klauser (1):
bpftool: Check malloc return value in mount_bpffs_for_pin
Vadim Fedorenko (1):
net: ipv6: fix return value of ip6_skb_dst_mtu
Vasily Averin (1):
netfilter: ctnetlink: suspicious RCU usage in ctnetlink_dump_helpinfo
Vasily Gorbik (1):
s390/ftrace: fix ftrace_update_ftrace_func implementation
Vincent Palatin (1):
Revert "USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem"
Vinicius Costa Gomes (1):
igb: Fix use-after-free error during reset
Wolfgang Bumiller (1):
net: bridge: sync fdb to new unicast-filtering ports
Xin Long (1):
sctp: update active_key for asoc when old key is being replaced
Yajun Deng (2):
net: decnet: Fix sleeping inside in af_decnet
net: sched: cls_api: Fix the the wrong parameter
Yang Yingliang (1):
thermal/core: Correct function name thermal_zone_device_unregister()
Yoshihiro Shimoda (1):
usb: renesas_usbhs: Fix superfluous irqs happen after usb_pkt_pop()
Yufen Yu (1):
scsi: libsas: Add LUN number check in .slave_alloc callback
Zhihao Cheng (1):
nvme-pci: don't WARN_ON in nvme_reset_work if ctrl.state is not RESETTING
Ziyang Xuan (1):
net: fix uninit-value in caif_seqpkt_sendmsg
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 198 +SUBLEVEL = 199 EXTRAVERSION = NAME = "People's Front"
arch/arm/boot/dts/bcm-cygnus.dtsi +1 -1
@@ -455,7 +455,7 @@ status = "disabled"; }; - nand: nand@18046000 { + nand_controller: nand-controller@18046000 { compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; reg = <0x18046000 0x600>, <0xf8105408 0x600>, <0x18046f00 0x20>;
arch/arm/boot/dts/bcm-hr2.dtsi +1 -1
@@ -179,7 +179,7 @@ status = "disabled"; }; - nand: nand@26000 { + nand_controller: nand-controller@26000 { compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; reg = <0x26000 0x600>, <0x11b408 0x600>,
arch/arm/boot/dts/bcm-nsp.dtsi +1 -1
@@ -259,7 +259,7 @@ dma-coherent; }; - nand: nand@26000 { + nand_controller: nand-controller@26000 { compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; reg = <0x026000 0x600>, <0x11b408 0x600>,
arch/arm/boot/dts/bcm63138.dtsi +1 -1
@@ -175,7 +175,7 @@ status = "disabled"; }; - nand: nand@2000 { + nand_controller: nand-controller@2000 { #address-cells = <1>; #size-cells = <0>; compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand";
arch/arm/boot/dts/bcm7445-bcm97445svmb.dts +2 -2
@@ -14,10 +14,10 @@ }; }; -&nand { +&nand_controller { status = "okay"; - nandcs@1 { + nand@1 { compatible = "brcm,nandcs"; reg = <1>; nand-ecc-step-size = <512>;
arch/arm/boot/dts/bcm7445.dtsi +1 -1
@@ -150,7 +150,7 @@ reg-names = "aon-ctrl", "aon-sram"; }; - nand: nand@3e2800 { + nand_controller: nand-controller@3e2800 { status = "disabled"; #address-cells = <1>; #size-cells = <0>;
arch/arm/boot/dts/bcm911360_entphn.dts +2 -2
@@ -84,8 +84,8 @@ status = "okay"; }; -&nand { - nandcs@1 { +&nand_controller { + nand@1 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958300k.dts +2 -2
@@ -60,8 +60,8 @@ status = "okay"; }; -&nand { - nandcs@1 { +&nand_controller { + nand@1 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958305k.dts +2 -2
@@ -68,8 +68,8 @@ status = "okay"; }; -&nand { - nandcs@1 { +&nand_controller { + nand@1 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958522er.dts +2 -2
@@ -74,8 +74,8 @@ status = "okay"; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958525er.dts +2 -2
@@ -74,8 +74,8 @@ status = "okay"; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958525xmc.dts +2 -2
@@ -90,8 +90,8 @@ }; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958622hr.dts +2 -2
@@ -78,8 +78,8 @@ status = "okay"; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958623hr.dts +2 -2
@@ -78,8 +78,8 @@ status = "okay"; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958625hr.dts +2 -2
@@ -76,8 +76,8 @@ status = "okay"; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm958625k.dts +2 -2
@@ -69,8 +69,8 @@ status = "okay"; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/bcm963138dvt.dts +2 -2
@@ -30,10 +30,10 @@ status = "okay"; }; -&nand { +&nand_controller { status = "okay"; - nandcs@0 { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-ecc-strength = <4>;
arch/arm/boot/dts/bcm988312hr.dts +2 -2
@@ -78,8 +78,8 @@ status = "okay"; }; -&nand { - nandcs@0 { +&nand_controller { + nand@0 { compatible = "brcm,nandcs"; reg = <0>; nand-on-flash-bbt;
arch/arm/boot/dts/gemini-dlink-dns-313.dts +1 -1
@@ -140,7 +140,7 @@ }; }; - mdio0: ethernet-phy { + mdio0: mdio { compatible = "virtual,mdio-gpio"; /* Uses MDC and MDIO */ gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
arch/arm/boot/dts/gemini-nas4220b.dts +1 -1
@@ -62,7 +62,7 @@ }; }; - mdio0: ethernet-phy { + mdio0: mdio { compatible = "virtual,mdio-gpio"; gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
arch/arm/boot/dts/gemini-rut1xx.dts +1 -1
@@ -56,7 +56,7 @@ }; }; - mdio0: ethernet-phy { + mdio0: mdio { compatible = "virtual,mdio-gpio"; gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
arch/arm/boot/dts/gemini-wbd111.dts +1 -1
@@ -68,7 +68,7 @@ }; }; - mdio0: ethernet-phy { + mdio0: mdio { compatible = "virtual,mdio-gpio"; gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
arch/arm/boot/dts/gemini-wbd222.dts +1 -1
@@ -67,7 +67,7 @@ }; }; - mdio0: ethernet-phy { + mdio0: mdio { compatible = "virtual,mdio-gpio"; gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
arch/arm/boot/dts/gemini.dtsi +1 -0
@@ -286,6 +286,7 @@ clock-names = "PCLK", "PCICLK"; pinctrl-names = "default"; pinctrl-0 = <&pci_default_pins>; + device_type = "pci"; #address-cells = <3>; #size-cells = <2>; #interrupt-cells = <1>;
arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi +3 -2
@@ -306,8 +306,8 @@ fsl,pins = < MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1 MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1 - MX6QDL_PAD_EIM_D30__UART3_RTS_B 0x1b0b1 - MX6QDL_PAD_EIM_D31__UART3_CTS_B 0x1b0b1 + MX6QDL_PAD_EIM_D31__UART3_RTS_B 0x1b0b1 + MX6QDL_PAD_EIM_D30__UART3_CTS_B 0x1b0b1 >; };
@@ -394,6 +394,7 @@ &uart3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart3>; + uart-has-rtscts; status = "disabled"; };
arch/arm/boot/dts/rk3036-kylin.dts +1 -1
@@ -391,7 +391,7 @@ }; }; - sleep { + suspend { global_pwroff: global-pwroff { rockchip,pins = <2 7 RK_FUNC_1 &pcfg_pull_none>; };
arch/arm/boot/dts/rk3188.dtsi +4 -4
@@ -73,16 +73,16 @@ compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer"; reg = <0x2000e000 0x20>; interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cru SCLK_TIMER3>, <&cru PCLK_TIMER3>; - clock-names = "timer", "pclk"; + clocks = <&cru PCLK_TIMER3>, <&cru SCLK_TIMER3>; + clock-names = "pclk", "timer"; }; timer6: timer@200380a0 { compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer"; reg = <0x200380a0 0x20>; interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&cru SCLK_TIMER6>, <&cru PCLK_TIMER0>; - clock-names = "timer", "pclk"; + clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER6>; + clock-names = "pclk", "timer"; }; i2s0: i2s@1011a000 {
arch/arm/boot/dts/rk322x.dtsi +3 -7
@@ -548,10 +548,9 @@ compatible = "rockchip,iommu"; reg = <0x20020800 0x100>; interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "vpu_mmu"; clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; clock-names = "aclk", "iface"; - iommu-cells = <0>; + #iommu-cells = <0>; status = "disabled"; };
@@ -559,10 +558,9 @@ compatible = "rockchip,iommu"; reg = <0x20030480 0x40>, <0x200304c0 0x40>; interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "vdec_mmu"; clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>; clock-names = "aclk", "iface"; - iommu-cells = <0>; + #iommu-cells = <0>; status = "disabled"; };
@@ -570,7 +568,6 @@ compatible = "rockchip,iommu"; reg = <0x20053f00 0x100>; interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "vop_mmu"; clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>; clock-names = "aclk", "iface"; iommu-cells = <0>;
@@ -581,10 +578,9 @@ compatible = "rockchip,iommu"; reg = <0x20070800 0x100>; interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "iep_mmu"; clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>; clock-names = "aclk", "iface"; - iommu-cells = <0>; + #iommu-cells = <0>; status = "disabled"; };
arch/arm/boot/dts/rk3288-rock2-som.dtsi +1 -1
@@ -218,7 +218,7 @@ flash0-supply = <&vcc_flash>; flash1-supply = <&vccio_pmu>; gpio30-supply = <&vccio_pmu>; - gpio1830 = <&vcc_io>; + gpio1830-supply = <&vcc_io>; lcdc-supply = <&vcc_io>; sdcard-supply = <&vccio_sd>; wifi-supply = <&vcc_18>;
arch/arm/boot/dts/rk3288-vyasa.dts +2 -2
@@ -358,10 +358,10 @@ audio-supply = <&vcc_18>; bb-supply = <&vcc_io>; dvp-supply = <&vcc_io>; - flash0-suuply = <&vcc_18>; + flash0-supply = <&vcc_18>; flash1-supply = <&vcc_lan>; gpio30-supply = <&vcc_io>; - gpio1830 = <&vcc_io>; + gpio1830-supply = <&vcc_io>; lcdc-supply = <&vcc_io>; sdcard-supply = <&vccio_sd>; wifi-supply = <&vcc_18>;
arch/arm/boot/dts/rk3288.dtsi +7 -7
@@ -234,8 +234,8 @@ compatible = "rockchip,rk3288-timer"; reg = <0x0 0xff810000 0x0 0x20>; interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&xin24m>, <&cru PCLK_TIMER>; - clock-names = "timer", "pclk"; + clocks = <&cru PCLK_TIMER>, <&xin24m>; + clock-names = "pclk", "timer"; }; display-subsystem {
@@ -759,7 +759,7 @@ * *_HDMI HDMI * *_MIPI_* MIPI */ - pd_vio@RK3288_PD_VIO { + power-domain@RK3288_PD_VIO { reg = <RK3288_PD_VIO>; clocks = <&cru ACLK_IEP>, <&cru ACLK_ISP>,
@@ -801,7 +801,7 @@ * Note: The following 3 are HEVC(H.265) clocks, * and on the ACLK_HEVC_NIU (NOC). */ - pd_hevc@RK3288_PD_HEVC { + power-domain@RK3288_PD_HEVC { reg = <RK3288_PD_HEVC>; clocks = <&cru ACLK_HEVC>, <&cru SCLK_HEVC_CABAC>,
@@ -815,7 +815,7 @@ * (video endecoder & decoder) clocks that on the * ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC). */ - pd_video@RK3288_PD_VIDEO { + power-domain@RK3288_PD_VIDEO { reg = <RK3288_PD_VIDEO>; clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
@@ -826,7 +826,7 @@ * Note: ACLK_GPU is the GPU clock, * and on the ACLK_GPU_NIU (NOC). */ - pd_gpu@RK3288_PD_GPU { + power-domain@RK3288_PD_GPU { reg = <RK3288_PD_GPU>; clocks = <&cru ACLK_GPU>; pm_qos = <&qos_gpu_r>,
@@ -1541,7 +1541,7 @@ drive-strength = <12>; }; - sleep { + suspend { global_pwroff: global-pwroff { rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>; };
arch/arm/boot/dts/stm32429i-eval.dts +3 -5
@@ -111,17 +111,15 @@ }; }; - gpio_keys { + gpio-keys { compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; autorepeat; - button@0 { + button-0 { label = "Wake up"; linux,code = <KEY_WAKEUP>; gpios = <&gpioa 0 0>; }; - button@1 { + button-1 { label = "Tamper"; linux,code = <KEY_RESTART>; gpios = <&gpioc 13 0>;
arch/arm/boot/dts/stm32746g-eval.dts +2 -4
@@ -73,12 +73,10 @@ }; }; - gpio_keys { + gpio-keys { compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; autorepeat; - button@0 { + button-0 { label = "Wake up"; linux,code = <KEY_WAKEUP>; gpios = <&gpioc 13 0>;
arch/arm/boot/dts/stm32f429-disco.dts +2 -4
@@ -78,12 +78,10 @@ }; }; - gpio_keys { + gpio-keys { compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; autorepeat; - button@0 { + button-0 { label = "User"; linux,code = <KEY_HOME>; gpios = <&gpioa 0 0>;
arch/arm/boot/dts/stm32f429.dtsi +1 -9
@@ -263,8 +263,6 @@ }; timers13: timers@40001c00 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40001C00 0x400>; clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM13)>;
@@ -278,8 +276,6 @@ }; timers14: timers@40002000 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40002000 0x400>; clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM14)>;
@@ -558,8 +554,6 @@ }; timers10: timers@40014400 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40014400 0x400>; clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM10)>;
@@ -573,8 +567,6 @@ }; timers11: timers@40014800 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40014800 0x400>; clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM11)>;
@@ -609,7 +601,7 @@ status = "disabled"; }; - rcc: rcc@40023810 { + rcc: rcc@40023800 { #reset-cells = <1>; #clock-cells = <2>; compatible = "st,stm32f42xx-rcc", "st,stm32-rcc";
arch/arm/boot/dts/stm32f469-disco.dts +2 -4
@@ -103,12 +103,10 @@ }; }; - gpio_keys { + gpio-keys { compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; autorepeat; - button@0 { + button-0 { label = "User"; linux,code = <KEY_WAKEUP>; gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
arch/arm/boot/dts/stm32f746.dtsi +2 -10
@@ -258,8 +258,6 @@ }; timers13: timers@40001c00 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40001C00 0x400>; clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
@@ -273,8 +271,6 @@ }; timers14: timers@40002000 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40002000 0x400>; clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
@@ -357,9 +353,9 @@ status = "disabled"; }; - i2c3: i2c@40005C00 { + i2c3: i2c@40005c00 { compatible = "st,stm32f7-i2c"; - reg = <0x40005C00 0x400>; + reg = <0x40005c00 0x400>; interrupts = <72>, <73>; resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
@@ -521,8 +517,6 @@ }; timers10: timers@40014400 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40014400 0x400>; clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
@@ -536,8 +530,6 @@ }; timers11: timers@40014800 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-timers"; reg = <0x40014800 0x400>; clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
arch/arm/boot/dts/stm32f769-disco.dts +2 -4
@@ -74,12 +74,10 @@ }; }; - gpio_keys { + gpio-keys { compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; autorepeat; - button@0 { + button-0 { label = "User"; linux,code = <KEY_HOME>; gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
arch/arm/boot/dts/stm32h743.dtsi +0 -4
@@ -422,8 +422,6 @@ }; lptimer4: timer@58002c00 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-lptimer"; reg = <0x58002c00 0x400>; clocks = <&rcc LPTIM4_CK>;
@@ -438,8 +436,6 @@ }; lptimer5: timer@58003000 { - #address-cells = <1>; - #size-cells = <0>; compatible = "st,stm32-lptimer"; reg = <0x58003000 0x400>; clocks = <&rcc LPTIM5_CK>;
arch/arm/boot/dts/stm32mp157c.dtsi +6 -6
@@ -964,12 +964,6 @@ status = "disabled"; }; - stmmac_axi_config_0: stmmac-axi-config { - snps,wr_osr_lmt = <0x7>; - snps,rd_osr_lmt = <0x7>; - snps,blen = <0 0 0 0 16 8 4>; - }; - ethernet0: ethernet@5800a000 { compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a"; reg = <0x5800a000 0x2000>;
@@ -992,6 +986,12 @@ snps,axi-config = <&stmmac_axi_config_0>; snps,tso; status = "disabled"; + + stmmac_axi_config_0: stmmac-axi-config { + snps,wr_osr_lmt = <0x7>; + snps,rd_osr_lmt = <0x7>; + snps,blen = <0 0 0 0 16 8 4>; + }; }; usbh_ohci: usbh-ohci@5800c000 {
arch/arm/mach-imx/suspend-imx53.S +2 -2
@@ -33,11 +33,11 @@ * ^ * ^ * imx53_suspend code - * PM_INFO structure(imx53_suspend_info) + * PM_INFO structure(imx5_cpu_suspend_info) * ======================== low address ======================= */ -/* Offsets of members of struct imx53_suspend_info */ +/* Offsets of members of struct imx5_cpu_suspend_info */ #define SUSPEND_INFO_MX53_M4IF_V_OFFSET 0x0 #define SUSPEND_INFO_MX53_IOMUXC_V_OFFSET 0x4 #define SUSPEND_INFO_MX53_IO_COUNT_OFFSET 0x8
arch/arm64/boot/dts/arm/juno-base.dtsi +3 -3
@@ -533,13 +533,13 @@ clocks { compatible = "arm,scpi-clocks"; - scpi_dvfs: scpi-dvfs { + scpi_dvfs: clocks-0 { compatible = "arm,scpi-dvfs-clocks"; #clock-cells = <1>; clock-indices = <0>, <1>, <2>; clock-output-names = "atlclk", "aplclk","gpuclk"; }; - scpi_clk: scpi-clk { + scpi_clk: clocks-1 { compatible = "arm,scpi-variable-clocks"; #clock-cells = <1>; clock-indices = <3>;
@@ -547,7 +547,7 @@ }; }; - scpi_devpd: scpi-power-domains { + scpi_devpd: power-controller { compatible = "arm,scpi-power-domains"; num-domains = <2>; #power-domain-cells = <1>;
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi +0 -1
@@ -479,7 +479,6 @@ clocks = <&clockgen 4 3>; clock-names = "dspi"; spi-num-chipselects = <5>; - bus-num = <0>; }; esdhc: esdhc@2140000 {
arch/arm64/boot/dts/rockchip/rk3328.dtsi +3 -3
@@ -255,13 +255,13 @@ #address-cells = <1>; #size-cells = <0>; - pd_hevc@RK3328_PD_HEVC { + power-domain@RK3328_PD_HEVC { reg = <RK3328_PD_HEVC>; }; - pd_video@RK3328_PD_VIDEO { + power-domain@RK3328_PD_VIDEO { reg = <RK3328_PD_VIDEO>; }; - pd_vpu@RK3328_PD_VPU { + power-domain@RK3328_PD_VPU { reg = <RK3328_PD_VPU>; }; };
arch/arm64/boot/dts/rockchip/rk3399.dtsi +1 -1
@@ -2253,7 +2253,7 @@ }; }; - sleep { + suspend { ap_pwroff: ap-pwroff { rockchip,pins = <1 5 RK_FUNC_1 &pcfg_pull_none>; };
arch/mips/include/asm/pgalloc.h +3 -7
@@ -93,15 +93,11 @@ do { \static inline pmd_t *pmd_alloc_one (struct mm_struct *mm,unsigned long address) { -pmd_t *pmd =NULL ; -struct page *pg; +pmd_t *pmd; - pg =alloc_pages (GFP_KERNEL | __GFP_ACCOUNT,PMD_ORDER ); -if (pg) { -pgtable_pmd_page_ctor (pg); - pmd = (pmd_t *)page_address (pg); + pmd = (pmd_t *)__get_free_pages (GFP_KERNEL ,PMD_ORDER ); +if (pmd)pmd_init ((unsigned long )pmd, (unsigned long )invalid_pte_table); - }return pmd; }
arch/nds32/mm/mmap.c +1 -1
@@ -59,7 +59,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, vma =find_vma (mm, addr);if (TASK_SIZE - len >= addr && - (!vma || addr + len <= vma->vm_start)) + (!vma || addr + len <=vm_start_gap (vma)))return addr; }
arch/powerpc/kvm/book3s_rtas.c +22 -3
@@ -243,6 +243,17 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)* value so we can restore it on the way out. */ orig_rets = args.rets; +if (be32_to_cpu (args.nargs) >=ARRAY_SIZE (args.args)) { +/* +* Don't overflow our args array: ensure there is room for +* at least rets[0] (even if the call specifies 0 nret). +* +* Each handler must then check for the correct nargs and nret +* values, but they may always return failure in rets[0]. +*/ + rc = -EINVAL ; + goto fail; + } args.rets = &args.args[be32_to_cpu (args.nargs)];mutex_lock (&vcpu->kvm->arch.rtas_token_lock);
@@ -270,9 +281,17 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu) fail:/* * We only get here if the guest has called RTAS with a bogus -* args pointer. That means we can't get to the args, and so we -* can't fail the RTAS call. So fail right out to userspace, -* which should kill the guest. +* args pointer or nargs/nret values that would overflow the +* array. That means we can't get to the args, and so we can't +* fail the RTAS call. So fail right out to userspace, which +* should kill the guest. +* +* SLOF should actually pass the hcall return value from the +* rtas handler call in r3, so enter_rtas could be modified to +* return a failure indication in r3 and we could return such +* errors to the guest rather than failing to host userspace. +* However old guests that don't test for failure could then +* continue silently after errors, so for now we won't do this. */ return rc; }
arch/powerpc/kvm/powerpc.c +2 -2
@@ -1995,9 +1995,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp, {struct kvm_enable_cap cap; r = -EFAULT ; -vcpu_load (vcpu);if (copy_from_user (&cap, argp,sizeof (cap))) goto out; +vcpu_load (vcpu); r =kvm_vcpu_ioctl_enable_cap (vcpu, &cap);vcpu_put (vcpu);break ;
@@ -2021,9 +2021,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp,case KVM_DIRTY_TLB : {struct kvm_dirty_tlb dirty; r = -EFAULT ; -vcpu_load (vcpu);if (copy_from_user (&dirty, argp,sizeof (dirty))) goto out; +vcpu_load (vcpu); r =kvm_vcpu_ioctl_dirty_tlb (vcpu, &dirty);vcpu_put (vcpu);break ;
arch/s390/include/asm/ftrace.h +1 -0
@@ -20,6 +20,7 @@ void ftrace_caller(void);extern char ftrace_graph_caller_end;extern unsigned long ftrace_plt; +extern void *ftrace_func;struct dyn_arch_ftrace { };
arch/s390/kernel/ftrace.c +2 -0
@@ -57,6 +57,7 @@* > brasl %r0,ftrace_caller # offset 0 */ +void *ftrace_func__read_mostly = ftrace_stub;unsigned long ftrace_plt;static inline void ftrace_generate_orig_insn (struct ftrace_insn *insn)
@@ -166,6 +167,7 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)int ftrace_update_ftrace_func (ftrace_func_t func) { + ftrace_func = func;return 0 ; }
arch/s390/kernel/mcount.S +2 -2
@@ -60,13 +60,13 @@ ENTRY(ftrace_caller) #ifdef CONFIG_HAVE_MARCH_Z196_FEATURES aghik %r2,%r0,-MCOUNT_INSN_SIZE lgrl %r4,function_trace_op - lgrl %r1,ftrace_trace_function + lgrl %r1,ftrace_func #else lgr %r2,%r0 aghi %r2,-MCOUNT_INSN_SIZE larl %r4,function_trace_op lg %r4,0(%r4) - larl %r1,ftrace_trace_function + larl %r1,ftrace_func lg %r1,0(%r1) #endif lgr %r3,%r14
arch/s390/net/bpf_jit_comp.c +1 -1
@@ -113,7 +113,7 @@ static inline void reg_set_seen(struct bpf_jit *jit, u32 b1) {u32 r1 = reg2hex[b1]; -if (!jit->seen_reg[r1] && r1 >=6 && r1 <=15 ) +if (r1 >=6 && r1 <=15 && !jit->seen_reg[r1]) jit->seen_reg[r1] =1 ; }
drivers/dma-buf/sync_file.c +7 -6
@@ -220,8 +220,8 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, struct sync_file *b) {struct sync_file *sync_file; -struct dma_fence **fences, **nfences, **a_fences, **b_fences; -int i, i_a, i_b, num_fences, a_num_fences, b_num_fences; +struct dma_fence **fences =NULL , **nfences, **a_fences, **b_fences; +int i =0 , i_a, i_b, num_fences, a_num_fences, b_num_fences; sync_file =sync_file_alloc ();if (!sync_file)
@@ -245,7 +245,7 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a,* If a sync_file can only be created with sync_file_merge * and sync_file_create, this is a reasonable assumption. */ -for (i = i_a = i_b =0 ; i_a < a_num_fences && i_b < b_num_fences; ) { +for (i_a = i_b =0 ; i_a < a_num_fences && i_b < b_num_fences; ) {struct dma_fence *pt_a = a_fences[i_a];struct dma_fence *pt_b = b_fences[i_b];
@@ -286,15 +286,16 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, fences = nfences; } -if (sync_file_set_fence (sync_file, fences, i) <0 ) { -kfree (fences); +if (sync_file_set_fence (sync_file, fences, i) <0 ) goto err; - }strlcpy (sync_file->user_name, name,sizeof (sync_file->user_name));return sync_file; err: +while (i) +dma_fence_put (fences[--i]); +kfree (fences);fput (sync_file->file);return NULL ;
drivers/gpu/drm/drm_ioctl.c +3 -0
@@ -797,6 +797,9 @@ long drm_ioctl(struct file *filp,if (drm_dev_is_unplugged (dev))return -ENODEV ; +if (DRM_IOCTL_TYPE (cmd) !=DRM_IOCTL_BASE ) +return -ENOTTY ; + is_driver_ioctl = nr >=DRM_COMMAND_BASE && nr <DRM_COMMAND_END ;if (is_driver_ioctl) {
drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c +0 -1
@@ -454,7 +454,6 @@ static int rpi_touchscreen_remove(struct i2c_client *i2c)drm_panel_remove (&ts->base);mipi_dsi_device_unregister (ts->dsi); -kfree (ts->dsi);return 0 ; }
drivers/iio/accel/bma180.c +49 -26
101 lines not on this page · raw message
drivers/md/dm-writecache.c +34 -16
140 lines not on this page · raw message
drivers/media/pci/ngene/ngene-core.c +1 -1
@@ -398,7 +398,7 @@ static int ngene_command_config_free_buf(struct ngene *dev, u8 *config) com.cmd.hdr.Opcode =CMD_CONFIGURE_FREE_BUFFER ; com.cmd.hdr.Length =6 ; -memcpy (&com.cmd.ConfigureBuffers.config, config,6 ); +memcpy (&com.cmd.ConfigureFreeBuffers.config, config,6 ); com.in_len =6 ; com.out_len =0 ;
drivers/media/pci/ngene/ngene.h +8 -6
@@ -419,12 +419,14 @@ enum _BUFFER_CONFIGS {struct FW_CONFIGURE_FREE_BUFFERS {struct FW_HEADER hdr; -u8 UVI1_BufferLength; -u8 UVI2_BufferLength; -u8 TVO_BufferLength; -u8 AUD1_BufferLength; -u8 AUD2_BufferLength; -u8 TVA_BufferLength; +struct { +u8 UVI1_BufferLength; +u8 UVI2_BufferLength; +u8 TVO_BufferLength; +u8 AUD1_BufferLength; +u8 AUD2_BufferLength; +u8 TVA_BufferLength; + } __packed config; } __attribute__ ((__packed__ ));struct FW_CONFIGURE_UART {
drivers/net/dsa/mv88e6xxx/chip.c +4 -2
@@ -3051,7 +3051,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = { .port_link_state = mv88e6352_port_link_state, .port_get_cmode = mv88e6352_port_get_cmode, .stats_snapshot = mv88e6390_g1_stats_snapshot, - .stats_set_histogram = mv88e6095_g1_stats_set_histogram, + .stats_set_histogram = mv88e6390_g1_stats_set_histogram, .stats_get_sset_count = mv88e6320_stats_get_sset_count, .stats_get_strings = mv88e6320_stats_get_strings, .stats_get_stats = mv88e6390_stats_get_stats,
@@ -3672,7 +3672,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = { .port_link_state = mv88e6352_port_link_state, .port_get_cmode = mv88e6352_port_get_cmode, .stats_snapshot = mv88e6390_g1_stats_snapshot, - .stats_set_histogram = mv88e6095_g1_stats_set_histogram, + .stats_set_histogram = mv88e6390_g1_stats_set_histogram, .stats_get_sset_count = mv88e6320_stats_get_sset_count, .stats_get_strings = mv88e6320_stats_get_strings, .stats_get_stats = mv88e6390_stats_get_stats,
@@ -3682,6 +3682,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = { .mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu, .pot_clear = mv88e6xxx_g2_pot_clear, .reset = mv88e6352_g1_reset, + .rmu_disable = mv88e6390_g1_rmu_disable, .vtu_getnext = mv88e6352_g1_vtu_getnext, .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge, .serdes_power = mv88e6341_serdes_power,
@@ -3764,6 +3765,7 @@ static const struct mv88e6xxx_ops mv88e6351_ops = { .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu, .pot_clear = mv88e6xxx_g2_pot_clear, .reset = mv88e6352_g1_reset, + .rmu_disable = mv88e6390_g1_rmu_disable, .vtu_getnext = mv88e6352_g1_vtu_getnext, .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge, .avb_ops = &mv88e6352_avb_ops,
drivers/net/ethernet/broadcom/genet/bcmgenet.c +8 -14
@@ -1189,7 +1189,8 @@ static void bcmgenet_power_up(struct bcmgenet_priv *priv,switch (mode) {case GENET_POWER_PASSIVE : - reg &= ~(EXT_PWR_DOWN_DLL |EXT_PWR_DOWN_BIAS ); + reg &= ~(EXT_PWR_DOWN_DLL |EXT_PWR_DOWN_BIAS | +EXT_ENERGY_DET_MASK );if (GENET_IS_V5 (priv)) { reg &= ~(EXT_PWR_DOWN_PHY_EN | EXT_PWR_DOWN_PHY_RD |
@@ -2790,15 +2791,21 @@ static void bcmgenet_set_hw_addr(struct bcmgenet_priv *priv,/* Returns a reusable dma control register value */ static u32 bcmgenet_dma_disable (struct bcmgenet_priv *priv) { +unsigned int i;u32 reg;u32 dma_ctrl;/* disable DMA */ dma_ctrl =1 << (DESC_INDEX +DMA_RING_BUF_EN_SHIFT ) |DMA_EN ; +for (i =0 ; i < priv->hw_params->tx_queues; i++) + dma_ctrl |= (1 << (i +DMA_RING_BUF_EN_SHIFT )); reg =bcmgenet_tdma_readl (priv,DMA_CTRL ); reg &= ~dma_ctrl;bcmgenet_tdma_writel (priv, reg,DMA_CTRL ); + dma_ctrl =1 << (DESC_INDEX +DMA_RING_BUF_EN_SHIFT ) |DMA_EN ; +for (i =0 ; i < priv->hw_params->rx_queues; i++) + dma_ctrl |= (1 << (i +DMA_RING_BUF_EN_SHIFT )); reg =bcmgenet_rdma_readl (priv,DMA_CTRL ); reg &= ~dma_ctrl;bcmgenet_rdma_writel (priv, reg,DMA_CTRL );
@@ -2902,12 +2909,6 @@ static int bcmgenet_open(struct net_device *dev)bcmgenet_set_hw_addr (priv, dev->dev_addr); -if (priv->internal_phy) { - reg =bcmgenet_ext_readl (priv,EXT_EXT_PWR_MGMT ); - reg |=EXT_ENERGY_DET_MASK ; -bcmgenet_ext_writel (priv, reg,EXT_EXT_PWR_MGMT ); - } -/* Disable RX/TX DMA and flush TX queues */ dma_ctrl =bcmgenet_dma_disable (priv);
@@ -3626,7 +3627,6 @@ static int bcmgenet_resume(struct device *d)struct bcmgenet_priv *priv =netdev_priv (dev);unsigned long dma_ctrl;int ret; -u32 reg;if (!netif_running (dev))return 0 ;
@@ -3658,12 +3658,6 @@ static int bcmgenet_resume(struct device *d)bcmgenet_set_hw_addr (priv, dev->dev_addr); -if (priv->internal_phy) { - reg =bcmgenet_ext_readl (priv,EXT_EXT_PWR_MGMT ); - reg |=EXT_ENERGY_DET_MASK ; -bcmgenet_ext_writel (priv, reg,EXT_EXT_PWR_MGMT ); - } -if (priv->wolopts)bcmgenet_power_up (priv,GENET_POWER_WOL_MAGIC );
drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +0 -6
@@ -166,12 +166,6 @@ int bcmgenet_wol_power_down_cfg(struct bcmgenet_priv *priv, reg |=CMD_RX_EN ;bcmgenet_umac_writel (priv, reg,UMAC_CMD ); -if (priv->hw_params->flags &GENET_HAS_EXT ) { - reg =bcmgenet_ext_readl (priv,EXT_EXT_PWR_MGMT ); - reg &= ~EXT_ENERGY_DET_MASK ; -bcmgenet_ext_writel (priv, reg,EXT_EXT_PWR_MGMT ); - } -return 0 ; }
drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c +1 -1
@@ -420,7 +420,7 @@ static int cn23xx_pf_setup_global_input_regs(struct octeon_device *oct)* bits 32:47 indicate the PVF num. */ for (q_no =0 ; q_no < ern; q_no++) { - reg_val = oct->pcie_port <<CN23XX_PKT_INPUT_CTL_MAC_NUM_POS ; + reg_val = (u64 )oct->pcie_port <<CN23XX_PKT_INPUT_CTL_MAC_NUM_POS ;/* for VF assigned queues. */ if (q_no < oct->sriov_info.pf_srn) {
drivers/net/ethernet/intel/e1000e/netdev.c +1 -0
@@ -7369,6 +7369,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) err_ioremap:free_netdev (netdev); err_alloc_etherdev: +pci_disable_pcie_error_reporting (pdev);pci_release_mem_regions (pdev); err_pci_reg: err_dma:
drivers/net/ethernet/intel/fm10k/fm10k_pci.c +1 -0
@@ -2228,6 +2228,7 @@ static int fm10k_probe(struct pci_dev *pdev, const struct pci_device_id *ent) err_ioremap:free_netdev (netdev); err_alloc_netdev: +pci_disable_pcie_error_reporting (pdev);pci_release_mem_regions (pdev); err_pci_reg: err_dma:
drivers/net/ethernet/intel/i40evf/i40evf_main.c +1 -0
@@ -3735,6 +3735,7 @@ static int i40evf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) err_ioremap:free_netdev (netdev); err_alloc_etherdev: +pci_disable_pcie_error_reporting (pdev);pci_release_regions (pdev); err_pci_reg: err_dma:
drivers/net/ethernet/intel/igb/igb_main.c +13 -2
@@ -938,6 +938,7 @@ static void igb_configure_msix(struct igb_adapter *adapter)**/ static int igb_request_msix (struct igb_adapter *adapter) { +unsigned int num_q_vectors = adapter->num_q_vectors;struct net_device *netdev = adapter->netdev;int i, err =0 , vector =0 , free_vector =0 ;
@@ -946,7 +947,13 @@ static int igb_request_msix(struct igb_adapter *adapter)if (err) goto err_out; -for (i =0 ; i < adapter->num_q_vectors; i++) { +if (num_q_vectors >MAX_Q_VECTORS ) { + num_q_vectors =MAX_Q_VECTORS ; +dev_warn (&adapter->pdev->dev, +"The number of queue vectors (%d) is higher than max allowed (%d)\n" , + adapter->num_q_vectors,MAX_Q_VECTORS ); + } +for (i =0 ; i < num_q_vectors; i++) {struct igb_q_vector *q_vector = adapter->q_vector[i]; vector++;
@@ -1685,14 +1692,15 @@ static bool is_any_txtime_enabled(struct igb_adapter *adapter)**/ static void igb_config_tx_modes (struct igb_adapter *adapter,int queue) { -struct igb_ring *ring = adapter->tx_ring[queue];struct net_device *netdev = adapter->netdev;struct e1000_hw *hw = &adapter->hw; +struct igb_ring *ring;u32 tqavcc, tqavctrl;u16 value;WARN_ON (hw->mac.type != e1000_i210);WARN_ON (queue <0 || queue >1 ); + ring = adapter->tx_ring[queue];/* If any of the Qav features is enabled, configure queues as SR and * with HIGH PRIO. If none is, then configure them with LOW PRIO and
@@ -3495,6 +3503,7 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) err_ioremap:free_netdev (netdev); err_alloc_etherdev: +pci_disable_pcie_error_reporting (pdev);pci_release_mem_regions (pdev); err_pci_reg: err_dma:
@@ -4684,6 +4693,8 @@ static void igb_clean_tx_ring(struct igb_ring *tx_ring) DMA_TO_DEVICE); } + tx_buffer->next_to_watch =NULL ; +/* move us one more past the eop_desc for start of next pkt */ tx_buffer++; i++;
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +3 -1
@@ -1823,7 +1823,8 @@ static void ixgbe_dma_sync_frag(struct ixgbe_ring *rx_ring, struct sk_buff *skb) {if (ring_uses_build_skb (rx_ring)) { -unsigned long offset = (unsigned long )(skb->data) & ~PAGE_MASK ; +unsigned long mask = (unsigned long )ixgbe_rx_pg_size (rx_ring) -1 ; +unsigned long offset = (unsigned long )(skb->data) & mask; dma_sync_single_range_for_cpu(rx_ring->dev, IXGBE_CB(skb)->dma,
@@ -10925,6 +10926,7 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent) disable_dev = !test_and_set_bit (__IXGBE_DISABLED, &adapter->state);free_netdev (netdev); err_alloc_etherdev: +pci_disable_pcie_error_reporting (pdev);pci_release_mem_regions (pdev); err_pci_reg: err_dma:
drivers/net/ethernet/moxa/moxart_ether.c +1 -3
@@ -538,10 +538,8 @@ static int moxart_mac_probe(struct platform_device *pdev)SET_NETDEV_DEV (ndev, &pdev->dev); ret =register_netdev (ndev); -if (ret) { -free_netdev (ndev); +if (ret) goto init_fail; - }netdev_dbg (ndev,"%s: IRQ=%d address=%pM\n" , __func__, ndev->irq, ndev->dev_addr);
drivers/net/ethernet/qualcomm/emac/emac.c +2 -1
@@ -759,12 +759,13 @@ static int emac_remove(struct platform_device *pdev)put_device (&adpt->phydev->mdio.dev);mdiobus_unregister (adpt->mii_bus); -free_netdev (netdev);if (adpt->phy.digital)iounmap (adpt->phy.digital);iounmap (adpt->phy.base); +free_netdev (netdev); +return 0 ; }
drivers/net/ethernet/ti/tlan.c +1 -2
@@ -312,9 +312,8 @@ static void tlan_remove_one(struct pci_dev *pdev)pci_release_regions (pdev);#endif -free_netdev (dev); -cancel_work_sync (&priv->tlan_tqueue); +free_netdev (dev); }static void tlan_start (struct net_device *dev)
drivers/nvme/host/pci.c +3 -2
@@ -2273,7 +2273,9 @@ static void nvme_reset_work(struct work_struct *work)int result;enum nvme_ctrl_state new_state =NVME_CTRL_LIVE ; -if (WARN_ON (dev->ctrl.state !=NVME_CTRL_RESETTING )) { +if (dev->ctrl.state !=NVME_CTRL_RESETTING ) { +dev_warn (dev->ctrl.device,"ctrl state %d is not RESETTING\n" , + dev->ctrl.state); result = -ENODEV ; goto out; }
@@ -2605,7 +2607,6 @@ static void nvme_remove(struct pci_dev *pdev)if (!pci_device_is_present (pdev)) {nvme_change_ctrl_state (&dev->ctrl,NVME_CTRL_DEAD );nvme_dev_disable (dev, true); -nvme_dev_remove_admin (dev); }flush_work (&dev->ctrl.reset_work);
drivers/pci/quirks.c +3 -1
@@ -5172,7 +5172,8 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0422, quirk_no_ext_tags);static void quirk_amd_harvest_no_ats (struct pci_dev *pdev) {if ((pdev->device ==0x7312 && pdev->revision !=0x00 ) || - (pdev->device ==0x7340 && pdev->revision !=0xc5 )) + (pdev->device ==0x7340 && pdev->revision !=0xc5 ) || + (pdev->device ==0x7341 && pdev->revision !=0x00 ))return ;pci_info (pdev,"disabling ATS\n" );
@@ -5187,6 +5188,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6900, quirk_amd_harvest_no_ats);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x7312 , quirk_amd_harvest_no_ats);/* AMD Navi14 dGPU */ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x7340 , quirk_amd_harvest_no_ats); +DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x7341 , quirk_amd_harvest_no_ats);#endif /* CONFIG_PCI_ATS */ /* Freescale PCIe doesn't support MSI in RC mode */
drivers/reset/reset-ti-syscon.c +2 -2
@@ -58,8 +58,8 @@ struct ti_syscon_reset_data {unsigned int nr_controls; }; -#define to_ti_syscon_reset_data (rcdev) \ - container_of(rcdev, struct ti_syscon_reset_data, rcdev) +#define to_ti_syscon_reset_data (_rcdev) \ + container_of(_rcdev, struct ti_syscon_reset_data, rcdev)/** * ti_syscon_reset_assert() - assert device reset
drivers/rtc/rtc-max77686.c +2 -2
@@ -710,8 +710,8 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info) add_rtc_irq: ret =regmap_add_irq_chip (info->rtc_regmap, info->rtc_irq, -IRQF_TRIGGER_FALLING |IRQF_ONESHOT | -IRQF_SHARED ,0 , info->drv_data->rtc_irq_chip, +IRQF_ONESHOT |IRQF_SHARED , +0 , info->drv_data->rtc_irq_chip, &info->rtc_irq_data);if (ret <0 ) {dev_err (info->dev,"Failed to add RTC irq chip: %d\n" , ret);
drivers/rtc/rtc-mxc_v2.c +1 -0
@@ -395,6 +395,7 @@ static const struct of_device_id mxc_ids[] = { { .compatible = "fsl,imx53-rtc", }, {} }; +MODULE_DEVICE_TABLE (of, mxc_ids);static struct platform_driver mxc_rtc_driver = { .driver = {
drivers/scsi/aic7xxx/aic7xxx_core.c +1 -1
@@ -500,7 +500,7 @@ ahc_inq(struct ahc_softc *ahc, u_int port)return ((ahc_inb (ahc, port)) | (ahc_inb (ahc, port+1 ) <<8 ) | (ahc_inb (ahc, port+2 ) <<16 ) - | (ahc_inb (ahc, port+3 ) <<24 ) + | (((uint64_t )ahc_inb (ahc, port+3 )) <<24 ) | (((uint64_t )ahc_inb (ahc, port+4 )) <<32 ) | (((uint64_t )ahc_inb (ahc, port+5 )) <<40 ) | (((uint64_t)ahc_inb(ahc, port+6)) << 48)
drivers/scsi/aic94xx/aic94xx_init.c +1 -0
@@ -71,6 +71,7 @@ static struct scsi_host_template aic94xx_sht = { .use_clustering = ENABLE_CLUSTERING, .eh_device_reset_handler = sas_eh_device_reset_handler, .eh_target_reset_handler = sas_eh_target_reset_handler, + .slave_alloc = sas_slave_alloc, .target_destroy = sas_target_destroy, .ioctl = sas_ioctl, .track_queue_depth = 1,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c +1 -0
@@ -1814,6 +1814,7 @@ static struct scsi_host_template sht_v1_hw = { .use_clustering = ENABLE_CLUSTERING, .eh_device_reset_handler = sas_eh_device_reset_handler, .eh_target_reset_handler = sas_eh_target_reset_handler, + .slave_alloc = sas_slave_alloc, .target_destroy = sas_target_destroy, .ioctl = sas_ioctl, .shost_attrs = host_attrs,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c +1 -0
@@ -3565,6 +3565,7 @@ static struct scsi_host_template sht_v2_hw = { .use_clustering = ENABLE_CLUSTERING, .eh_device_reset_handler = sas_eh_device_reset_handler, .eh_target_reset_handler = sas_eh_target_reset_handler, + .slave_alloc = sas_slave_alloc, .target_destroy = sas_target_destroy, .ioctl = sas_ioctl, .shost_attrs = host_attrs,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +1 -0
@@ -2115,6 +2115,7 @@ static struct scsi_host_template sht_v3_hw = { .use_clustering = ENABLE_CLUSTERING, .eh_device_reset_handler = sas_eh_device_reset_handler, .eh_target_reset_handler = sas_eh_target_reset_handler, + .slave_alloc = sas_slave_alloc, .target_destroy = sas_target_destroy, .ioctl = sas_ioctl, .shost_attrs = host_attrs,
drivers/scsi/isci/init.c +1 -0
@@ -167,6 +167,7 @@ static struct scsi_host_template isci_sht = { .eh_abort_handler = sas_eh_abort_handler, .eh_device_reset_handler = sas_eh_device_reset_handler, .eh_target_reset_handler = sas_eh_target_reset_handler, + .slave_alloc = sas_slave_alloc, .target_destroy = sas_target_destroy, .ioctl = sas_ioctl, .shost_attrs = isci_host_attrs,
drivers/scsi/libfc/fc_rport.c +8 -5
@@ -1169,6 +1169,7 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp, resp_code = (pp->spp.spp_flags &FC_SPP_RESP_MASK );FC_RPORT_DBG (rdata,"PRLI spp_flags = 0x%x spp_type 0x%x\n" , pp->spp.spp_flags, pp->spp.spp_type); + rdata->spp_type = pp->spp.spp_type;if (resp_code !=FC_SPP_RESP_ACK ) {if (resp_code ==FC_SPP_RESP_CONF )
@@ -1189,11 +1190,13 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,/* * Call prli provider if we should act as a target */ - prov = fc_passive_prov[rdata->spp_type]; -if (prov) { -memset (&temp_spp,0 ,sizeof (temp_spp)); - prov->prli (rdata, pp->prli.prli_spp_len, - &pp->spp, &temp_spp); +if (rdata->spp_type <FC_FC4_PROV_SIZE ) { + prov = fc_passive_prov[rdata->spp_type]; +if (prov) { +memset (&temp_spp,0 ,sizeof (temp_spp)); + prov->prli (rdata, pp->prli.prli_spp_len, + &pp->spp, &temp_spp); + } }/* * Check if the image pair could be established
drivers/scsi/libsas/sas_scsi_host.c +9 -0
@@ -942,6 +942,14 @@ void sas_task_abort(struct sas_task *task) } } +int sas_slave_alloc (struct scsi_device *sdev) +{ +if (dev_is_sata (sdev_to_domain_dev (sdev)) && sdev->lun) +return -ENXIO ; + +return 0 ; +} +void sas_target_destroy (struct scsi_target *starget) {struct domain_device *found_dev = starget->hostdata;
@@ -988,5 +996,6 @@ EXPORT_SYMBOL_GPL(sas_task_abort);EXPORT_SYMBOL_GPL (sas_phy_reset);EXPORT_SYMBOL_GPL (sas_eh_device_reset_handler);EXPORT_SYMBOL_GPL (sas_eh_target_reset_handler); +EXPORT_SYMBOL_GPL (sas_slave_alloc);EXPORT_SYMBOL_GPL (sas_target_destroy);EXPORT_SYMBOL_GPL (sas_ioctl);
drivers/scsi/mvsas/mv_init.c +1 -0
@@ -62,6 +62,7 @@ static struct scsi_host_template mvs_sht = { .use_clustering = ENABLE_CLUSTERING, .eh_device_reset_handler = sas_eh_device_reset_handler, .eh_target_reset_handler = sas_eh_target_reset_handler, + .slave_alloc = sas_slave_alloc, .target_destroy = sas_target_destroy, .ioctl = sas_ioctl, .shost_attrs = mvst_host_attrs,
drivers/scsi/pm8001/pm8001_init.c +1 -0
@@ -87,6 +87,7 @@ static struct scsi_host_template pm8001_sht = { .use_clustering = ENABLE_CLUSTERING, .eh_device_reset_handler = sas_eh_device_reset_handler, .eh_target_reset_handler = sas_eh_target_reset_handler, + .slave_alloc = sas_slave_alloc, .target_destroy = sas_target_destroy, .ioctl = sas_ioctl, .shost_attrs = pm8001_host_attrs,
drivers/scsi/scsi_transport_iscsi.c +34 -56
111 lines not on this page · raw message
drivers/soc/tegra/fuse/fuse-tegra30.c +2 -1
@@ -48,7 +48,8 @@defined (CONFIG_ARCH_TEGRA_132_SOC ) || \defined (CONFIG_ARCH_TEGRA_210_SOC ) || \defined (CONFIG_ARCH_TEGRA_186_SOC ) || \ - defined(CONFIG_ARCH_TEGRA_194_SOC) +defined (CONFIG_ARCH_TEGRA_194_SOC ) || \ + defined(CONFIG_ARCH_TEGRA_234_SOC)static u32 tegra30_fuse_read_early (struct tegra_fuse *fuse,unsigned int offset) {if (WARN_ON (!fuse->base))
drivers/spi/spi-cadence.c +9 -5
@@ -585,6 +585,12 @@ static int cdns_spi_probe(struct platform_device *pdev) goto clk_dis_apb; } +pm_runtime_use_autosuspend (&pdev->dev); +pm_runtime_set_autosuspend_delay (&pdev->dev,SPI_AUTOSUSPEND_TIMEOUT ); +pm_runtime_get_noresume (&pdev->dev); +pm_runtime_set_active (&pdev->dev); +pm_runtime_enable (&pdev->dev); + ret =of_property_read_u32 (pdev->dev.of_node,"num-cs" , &num_cs);if (ret <0 ) master->num_chipselect =CDNS_SPI_DEFAULT_NUM_CS ;
@@ -599,11 +605,6 @@ static int cdns_spi_probe(struct platform_device *pdev)/* SPI controller initializations */ cdns_spi_init_hw (xspi); -pm_runtime_set_active (&pdev->dev); -pm_runtime_enable (&pdev->dev); -pm_runtime_use_autosuspend (&pdev->dev); -pm_runtime_set_autosuspend_delay (&pdev->dev,SPI_AUTOSUSPEND_TIMEOUT ); - irq =platform_get_irq (pdev,0 );if (irq <=0 ) { ret = -ENXIO ;
@@ -636,6 +637,9 @@ static int cdns_spi_probe(struct platform_device *pdev) master->bits_per_word_mask =SPI_BPW_MASK (8 ); +pm_runtime_mark_last_busy (&pdev->dev); +pm_runtime_put_autosuspend (&pdev->dev); + ret =spi_register_master (master);if (ret) {dev_err (&pdev->dev,"spi_register_master failed\n" );
drivers/spi/spi-fsl-dspi.c +3 -1
@@ -1124,11 +1124,13 @@ static int dspi_probe(struct platform_device *pdev) ret =spi_register_master (master);if (ret !=0 ) {dev_err (&pdev->dev,"Problem registering DSPI master\n" ); - goto out_free_irq; + goto out_release_dma; }return ret; +out_release_dma: +dspi_release_dma (dspi); out_free_irq:if (dspi->irq)free_irq (dspi->irq, dspi);
drivers/spi/spi-mt65xx.c +13 -3
@@ -392,13 +392,23 @@ static int mtk_spi_fifo_transfer(struct spi_master *master,mtk_spi_setup_packet (master); cnt = xfer->len /4 ; -iowrite32_rep (mdata->base +SPI_TX_DATA_REG , xfer->tx_buf, cnt); +if (xfer->tx_buf) +iowrite32_rep (mdata->base +SPI_TX_DATA_REG , xfer->tx_buf, cnt); + +if (xfer->rx_buf) +ioread32_rep (mdata->base +SPI_RX_DATA_REG , xfer->rx_buf, cnt); remainder = xfer->len %4 ;if (remainder >0 ) { reg_val =0 ; -memcpy (®_val, xfer->tx_buf + (cnt *4 ), remainder); -writel (reg_val, mdata->base +SPI_TX_DATA_REG ); +if (xfer->tx_buf) { +memcpy (®_val, xfer->tx_buf + (cnt *4 ), remainder); +writel (reg_val, mdata->base +SPI_TX_DATA_REG ); + } +if (xfer->rx_buf) { + reg_val =readl (mdata->base +SPI_RX_DATA_REG ); +memcpy (xfer->rx_buf + (cnt *4 ), ®_val, remainder); + } }mtk_spi_enable_transfer (master);
drivers/target/target_core_sbc.c +17 -18
@@ -38,7 +38,7 @@#include "target_core_alua.h" static sense_reason_t -sbc_check_prot (struct se_device *,struct se_cmd *,unsigned char *,u32 ,bool ); +sbc_check_prot (struct se_device *,struct se_cmd *,unsigned char ,u32 ,bool );static sense_reason_t sbc_execute_unmap (struct se_cmd *cmd); static sense_reason_t
@@ -292,14 +292,14 @@ static inline unsigned long long transport_lba_64_ext(unsigned char *cdb) }static sense_reason_t -sbc_setup_write_same (struct se_cmd *cmd,unsigned char *flags,struct sbc_ops *ops) +sbc_setup_write_same (struct se_cmd *cmd,unsigned char flags,struct sbc_ops *ops) {struct se_device *dev = cmd->se_dev;sector_t end_lba = dev->transport->get_blocks (dev) +1 ;unsigned int sectors =sbc_get_write_same_sectors (cmd);sense_reason_t ret; -if ((flags[0 ] &0x04 ) || (flags[0 ] &0x02 )) { +if ((flags &0x04 ) || (flags &0x02 )) {pr_err ("WRITE_SAME PBDATA and LBDATA" " bits not supported for Block Discard" " Emulation\n" );
@@ -321,7 +321,7 @@ sbc_setup_write_same(struct se_cmd *cmd, unsigned char *flags, struct sbc_ops *o }/* We always have ANC_SUP == 0 so setting ANCHOR is always an error */ -if (flags[0 ] &0x10 ) { +if (flags &0x10 ) {pr_warn ("WRITE SAME with ANCHOR not supported\n" );return TCM_INVALID_CDB_FIELD ; }
@@ -329,7 +329,7 @@ sbc_setup_write_same(struct se_cmd *cmd, unsigned char *flags, struct sbc_ops *o* Special case for WRITE_SAME w/ UNMAP=1 that ends up getting * translated into block discard requests within backend code. */ -if (flags[0 ] &0x08 ) { +if (flags &0x08 ) {if (!ops->execute_unmap)return TCM_UNSUPPORTED_SCSI_OPCODE ;
@@ -344,7 +344,7 @@ sbc_setup_write_same(struct se_cmd *cmd, unsigned char *flags, struct sbc_ops *oif (!ops->execute_write_same)return TCM_UNSUPPORTED_SCSI_OPCODE ; - ret =sbc_check_prot (dev, cmd, &cmd->t_task_cdb[0 ], sectors, true); + ret =sbc_check_prot (dev, cmd, flags >>5 , sectors, true);if (ret)return ret;
@@ -702,10 +702,9 @@ sbc_set_prot_op_checks(u8 protect, bool fabric_prot, enum target_prot_type prot_ }static sense_reason_t -sbc_check_prot (struct se_device *dev,struct se_cmd *cmd,unsigned char *cdb, +sbc_check_prot (struct se_device *dev,struct se_cmd *cmd,unsigned char protect,u32 sectors,bool is_write) { -u8 protect = cdb[1 ] >>5 ;int sp_ops = cmd->se_sess->sup_prot_ops;int pi_prot_type = dev->dev_attrib.pi_prot_type;bool fabric_prot = false;
@@ -753,7 +752,7 @@ sbc_check_prot(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb,/* Fallthrough */ default :pr_err ("Unable to determine pi_prot_type for CDB: 0x%02x " -"PROTECT: 0x%02x\n" , cdb[0 ], protect); +"PROTECT: 0x%02x\n" , cmd->t_task_cdb[0 ], protect);return TCM_INVALID_CDB_FIELD ; }
@@ -828,7 +827,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops)if (sbc_check_dpofua (dev, cmd, cdb))return TCM_INVALID_CDB_FIELD ; - ret =sbc_check_prot (dev, cmd, cdb, sectors, false); + ret =sbc_check_prot (dev, cmd, cdb[1 ] >>5 , sectors, false);if (ret)return ret;
@@ -842,7 +841,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops)if (sbc_check_dpofua (dev, cmd, cdb))return TCM_INVALID_CDB_FIELD ; - ret =sbc_check_prot (dev, cmd, cdb, sectors, false); + ret =sbc_check_prot (dev, cmd, cdb[1 ] >>5 , sectors, false);if (ret)return ret;
@@ -856,7 +855,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops)if (sbc_check_dpofua (dev, cmd, cdb))return TCM_INVALID_CDB_FIELD ; - ret =sbc_check_prot (dev, cmd, cdb, sectors, false); + ret =sbc_check_prot (dev, cmd, cdb[1 ] >>5 , sectors, false);if (ret)return ret;
@@ -877,7 +876,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops)if (sbc_check_dpofua (dev, cmd, cdb))return TCM_INVALID_CDB_FIELD ; - ret =sbc_check_prot (dev, cmd, cdb, sectors, true); + ret =sbc_check_prot (dev, cmd, cdb[1 ] >>5 , sectors, true);if (ret)return ret;
@@ -891,7 +890,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops)if (sbc_check_dpofua (dev, cmd, cdb))return TCM_INVALID_CDB_FIELD ; - ret =sbc_check_prot (dev, cmd, cdb, sectors, true); + ret =sbc_check_prot (dev, cmd, cdb[1 ] >>5 , sectors, true);if (ret)return ret;
@@ -906,7 +905,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops)if (sbc_check_dpofua (dev, cmd, cdb))return TCM_INVALID_CDB_FIELD ; - ret =sbc_check_prot (dev, cmd, cdb, sectors, true); + ret =sbc_check_prot (dev, cmd, cdb[1 ] >>5 , sectors, true);if (ret)return ret;
@@ -965,7 +964,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops) size =sbc_get_size (cmd,1 ); cmd->t_task_lba =get_unaligned_be64 (&cdb[12 ]); - ret =sbc_setup_write_same (cmd, &cdb[10 ], ops); + ret =sbc_setup_write_same (cmd, cdb[10 ], ops);if (ret)return ret;break ;
@@ -1064,7 +1063,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops) size =sbc_get_size (cmd,1 ); cmd->t_task_lba =get_unaligned_be64 (&cdb[2 ]); - ret =sbc_setup_write_same (cmd, &cdb[1 ], ops); + ret =sbc_setup_write_same (cmd, cdb[1 ], ops);if (ret)return ret;break ;
@@ -1082,7 +1081,7 @@ sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops)* Follow sbcr26 with WRITE_SAME (10) and check for the existence * of byte 1 bit 3 UNMAP instead of original reserved field */ - ret =sbc_setup_write_same (cmd, &cdb[1 ], ops); + ret =sbc_setup_write_same (cmd, cdb[1 ], ops);if (ret)return ret;break ;
drivers/thermal/thermal_core.c +1 -1
@@ -1303,7 +1303,7 @@ thermal_zone_device_register(const char *type, int trips, int mask,EXPORT_SYMBOL_GPL (thermal_zone_device_register);/** -* thermal_device_unregister - removes the registered thermal zone device +* thermal_zone_device_unregister - removes the registered thermal zone device * @tz: the thermal zone device to remove */ void thermal_zone_device_unregister (struct thermal_zone_device *tz)
drivers/usb/core/hub.c +84 -36
159 lines not on this page · raw message
drivers/usb/core/quirks.c +0 -4
@@ -502,10 +502,6 @@ static const struct usb_device_id usb_quirk_list[] = {/* DJI CineSSD */ { USB_DEVICE(0x2ca3, 0x0031), .driver_info = USB_QUIRK_NO_LPM }, - /* Fibocom L850-GL LTE Modem */ - { USB_DEVICE(0x2cb7, 0x0007), .driver_info = - USB_QUIRK_IGNORE_REMOTE_WAKEUP }, - /* INTEL VALUE SSD */ { USB_DEVICE(0x8086, 0xf1a5), .driver_info = USB_QUIRK_RESET_RESUME },
drivers/usb/dwc2/gadget.c +6 -4
@@ -2645,12 +2645,14 @@ static void dwc2_hsotg_complete_in(struct dwc2_hsotg *hsotg,return ; } -/* Zlp for all endpoints, for ep0 only in DATA IN stage */ +/* Zlp for all endpoints in non DDMA, for ep0 only in DATA IN stage */ if (hs_ep->send_zlp) { -dwc2_hsotg_program_zlp (hsotg, hs_ep); hs_ep->send_zlp =0 ; -/* transfer will be completed on next complete interrupt */ -return ; +if (!using_desc_dma (hsotg)) { +dwc2_hsotg_program_zlp (hsotg, hs_ep); +/* transfer will be completed on next complete interrupt */ +return ; + } }if (hs_ep->index ==0 && hsotg->ep0_state ==DWC2_EP0_DATA_IN ) {
drivers/usb/host/max3421-hcd.c +14 -30
95 lines not on this page · raw message
drivers/usb/host/xhci-hub.c +2 -1
@@ -1458,11 +1458,12 @@ int xhci_hub_status_data(struct usb_hcd *hcd, char *buf)* Inform the usbcore about resume-in-progress by returning * a non-zero value even if there are no status changes. */ +spin_lock_irqsave (&xhci->lock, flags); + status = bus_state->resuming_ports; mask =PORT_CSC |PORT_PEC |PORT_OCC |PORT_PLC |PORT_WRC |PORT_CEC ; -spin_lock_irqsave (&xhci->lock, flags);/* For each port, did anything change? If so, set that bit in buf. */ for (i =0 ; i < max_ports; i++) { temp =readl (ports[i]->addr);
drivers/usb/host/xhci-ring.c +45 -13
118 lines not on this page · raw message
drivers/usb/host/xhci.h +2 -1
@@ -991,6 +991,7 @@ struct xhci_interval_bw_table {unsigned int ss_bw_out; }; +#define EP_CTX_PER_DEV 31struct xhci_virt_device {struct usb_device *udev;
@@ -1005,7 +1006,7 @@ struct xhci_virt_device {struct xhci_container_ctx *out_ctx;/* Used for addressing devices and configuration changes */ struct xhci_container_ctx *in_ctx; -struct xhci_virt_ep eps[31 ]; +struct xhci_virt_ep eps[EP_CTX_PER_DEV ];u8 fake_port;u8 real_port;struct xhci_interval_bw_table *bw_table;
drivers/usb/renesas_usbhs/fifo.c +7 -0
@@ -101,6 +101,8 @@ static struct dma_chan *usbhsf_dma_chan_get(struct usbhs_fifo *fifo,#define usbhsf_dma_map (p) __usbhsf_dma_map_ctrl(p, 1)#define usbhsf_dma_unmap (p) __usbhsf_dma_map_ctrl(p, 0)static int __usbhsf_dma_map_ctrl (struct usbhs_pkt *pkt,int map); +static void usbhsf_tx_irq_ctrl (struct usbhs_pipe *pipe,int enable); +static void usbhsf_rx_irq_ctrl (struct usbhs_pipe *pipe,int enable);struct usbhs_pkt *usbhs_pkt_pop (struct usbhs_pipe *pipe,struct usbhs_pkt *pkt) {struct usbhs_priv *priv =usbhs_pipe_to_priv (pipe);
@@ -123,6 +125,11 @@ struct usbhs_pkt *usbhs_pkt_pop(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt)if (chan) {dmaengine_terminate_all (chan);usbhsf_dma_unmap (pkt); + }else { +if (usbhs_pipe_is_dir_in (pipe)) +usbhsf_rx_irq_ctrl (pipe,0 ); +else +usbhsf_tx_irq_ctrl (pipe,0 ); }usbhs_pipe_clear_without_sequence (pipe,0 ,0 );
drivers/usb/serial/cp210x.c +3 -2
@@ -156,6 +156,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(0x10C4, 0x89A4) }, /* CESINEL FTBC Flexible Thyristor Bridge Controller */ { USB_DEVICE(0x10C4, 0x89FB) }, /* Qivicon ZigBee USB Radio Stick */ { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */ + { USB_DEVICE(0x10C4, 0x8A5B) }, /* CEL EM3588 ZigBee USB Stick */ { USB_DEVICE(0x10C4, 0x8A5E) }, /* CEL EM3588 ZigBee USB Stick Long Range */ { USB_DEVICE(0x10C4, 0x8B34) }, /* Qivicon ZigBee USB Radio Stick */ { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
@@ -203,8 +204,8 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(0x1901, 0x0194) }, /* GE Healthcare Remote Alarm Box */ { USB_DEVICE(0x1901, 0x0195) }, /* GE B850/B650/B450 CP2104 DP UART interface */ { USB_DEVICE(0x1901, 0x0196) }, /* GE B850 CP2105 DP UART interface */ - { USB_DEVICE(0x1901, 0x0197) }, /* GE CS1000 Display serial interface */ - { USB_DEVICE(0x1901, 0x0198) }, /* GE CS1000 M.2 Key E serial interface */ + { USB_DEVICE(0x1901, 0x0197) }, /* GE CS1000 M.2 Key E serial interface */ + { USB_DEVICE(0x1901, 0x0198) }, /* GE CS1000 Display serial interface */ { USB_DEVICE(0x199B, 0xBA30) }, /* LORD WSDA-200-USB */ { USB_DEVICE(0x19CF, 0x3000) }, /* Parrot NMEA GPS Flight Recorder */ { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */
drivers/usb/serial/option.c +3 -0
@@ -238,6 +238,7 @@ static void option_instat_callback(struct urb *urb);#define QUECTEL_PRODUCT_UC15 0x9090/* These u-blox products use Qualcomm's vendor ID */ #define UBLOX_PRODUCT_R410M 0x90b2 +#define UBLOX_PRODUCT_R6XX 0x90fa/* These Yuga products use Qualcomm's vendor ID */ #define YUGA_PRODUCT_CLM920_NC5 0x9625
@@ -1101,6 +1102,8 @@ static const struct usb_device_id option_ids[] = {/* u-blox products using Qualcomm vendor ID */ { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M), .driver_info = RSVD(1) | RSVD(3) }, + { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R6XX), + .driver_info = RSVD(3) }, /* Quectel products using Quectel vendor ID */ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff), .driver_info = NUMEP2 },
drivers/usb/storage/unusual_uas.h +7 -0
@@ -45,6 +45,13 @@ UNUSUAL_DEV(0x059f, 0x105f, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME), +/* Reported-by: Julian Sikorski <[email protected]> */ +UNUSUAL_DEV (0x059f ,0x1061 ,0x0000 ,0x9999 , +"LaCie" , +"Rugged USB3-FW" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , + US_FL_IGNORE_UAS), +/* * Apricorn USB3 dongle sometimes returns "USBSUSBSUSBS" in response to SCSI * commands in UAS mode. Observed with the 1.28 firmware; are there others?
fs/btrfs/inode.c +1 -1
@@ -530,7 +530,7 @@ static noinline void compress_file_range(struct inode *inode,* inode has not been flagged as nocompress. This flag can * change at any time if we discover bad compression ratios. */ -if (inode_need_compress (inode, start, end)) { +if (nr_pages >1 &&inode_need_compress (inode, start, end)) {WARN_ON (pages); pages =kcalloc (nr_pages,sizeof (struct page *),GFP_NOFS );if (!pages) {
fs/proc/base.c +1 -1
@@ -835,7 +835,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf, flags =FOLL_FORCE | (write ?FOLL_WRITE :0 );while (count >0 ) { -int this_len =min_t (int, count,PAGE_SIZE ); +size_t this_len =min_t (size_t, count,PAGE_SIZE );if (write &©_from_user (page, buf, this_len)) { copied = -EFAULT ;
include/drm/drm_ioctl.h +1 -0
@@ -68,6 +68,7 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, unsigned long arg);#define DRM_IOCTL_NR (n) _IOC_NR(n) +#define DRM_IOCTL_TYPE (n) _IOC_TYPE(n)#define DRM_MAJOR 226/**
include/net/dst_metadata.h +3 -1
@@ -45,7 +45,9 @@ skb_tunnel_info(const struct sk_buff *skb)return &md_dst->u.tun_info; dst =skb_dst (skb); -if (dst && dst->lwtstate) +if (dst && dst->lwtstate && + (dst->lwtstate->type ==LWTUNNEL_ENCAP_IP || + dst->lwtstate->type ==LWTUNNEL_ENCAP_IP6 ))return lwt_tun_info (dst->lwtstate);return NULL ;
include/net/ip6_route.h +1 -1
@@ -241,7 +241,7 @@ static inline bool ipv6_anycast_destination(const struct dst_entry *dst,int ip6_fragment (struct net *net,struct sock *sk,struct sk_buff *skb,int (*output)(struct net *,struct sock *,struct sk_buff *)); -static inline int ip6_skb_dst_mtu (struct sk_buff *skb) +static inline unsigned int ip6_skb_dst_mtu (struct sk_buff *skb) {int mtu;
kernel/sched/fair.c +2 -2
@@ -4714,7 +4714,7 @@ static const u64 cfs_bandwidth_slack_period = 5 * NSEC_PER_MSEC;static int runtime_refresh_within (struct cfs_bandwidth *cfs_b,u64 min_expire) {struct hrtimer *refresh_timer = &cfs_b->period_timer; -u64 remaining; +s64 remaining;/* if the call-back is running a quota refresh is already occurring */ if (hrtimer_callback_running (refresh_timer))
@@ -4722,7 +4722,7 @@ static int runtime_refresh_within(struct cfs_bandwidth *cfs_b, u64 min_expire)/* is a quota refresh about to occur? */ remaining =ktime_to_ns (hrtimer_expires_remaining (refresh_timer)); -if (remaining < min_expire) +if (remaining < (s64 )min_expire)return 1 ;return 0 ;
kernel/trace/ring_buffer.c +24 -4
@@ -3172,10 +3172,30 @@ static bool rb_per_cpu_empty(struct ring_buffer_per_cpu *cpu_buffer)if (unlikely (!head))return true; -return reader->read ==rb_page_commit (reader) && - (commit == reader || - (commit == head && - head->read ==rb_page_commit (commit))); +/* Reader should exhaust content in reader page */ +if (reader->read !=rb_page_commit (reader)) +return false; + +/* +* If writers are committing on the reader page, knowing all +* committed content has been read, the ring buffer is empty. +*/ +if (commit == reader) +return true; + +/* +* If writers are committing on a page other than reader page +* and head page, there should always be content to read. +*/ +if (commit != head) +return false; + +/* +* Writers are committing on the head page, we just need +* to care about there're committed data, and the reader will +* swap reader page with head page when it is to read data. +*/ +return rb_page_commit (commit) ==0 ; }/**
mm/slab_common.c +10 -8
@@ -311,14 +311,6 @@ int slab_unmergeable(struct kmem_cache *s)if (s->refcount <0 )return 1 ; -#ifdef CONFIG_MEMCG_KMEM -/* -* Skip the dying kmem_cache. -*/ -if (s->memcg_params.dying) -return 1 ; -#endif -return 0 ; }
@@ -918,6 +910,16 @@ void kmem_cache_destroy(struct kmem_cache *s)get_online_mems ();mutex_lock (&slab_mutex); + +/* +* Another thread referenced it again +*/ +if (READ_ONCE (s->refcount)) { +spin_lock_irq (&memcg_kmem_wq_lock); + s->memcg_params.dying = false; +spin_unlock_irq (&memcg_kmem_wq_lock); + goto out_unlock; + }#endif err =shutdown_memcg_caches (s);
net/bridge/br_if.c +16 -1
@@ -564,7 +564,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,struct net_bridge_port *p;int err =0 ;unsigned br_hr, dev_hr; -bool changed_addr; +bool changed_addr, fdb_synced = false;/* Don't allow bridging non-ethernet like devices, or DSA-enabled * master network devices since the bridge layer rx_handler prevents
@@ -640,6 +640,19 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,list_add_rcu (&p->list, &br->port_list);nbp_update_port_count (br); +if (!br_promisc_port (p) && (p->dev->priv_flags &IFF_UNICAST_FLT )) { +/* When updating the port count we also update all ports' +* promiscuous mode. +* A port leaving promiscuous mode normally gets the bridge's +* fdb synced to the unicast filter (if supported), however, +* `br_port_clear_promisc` does not distinguish between +* non-promiscuous ports and *new* ports, so we need to +* sync explicitly here. +*/ + fdb_synced =br_fdb_sync_static (br, p) ==0 ; +if (!fdb_synced) +netdev_err (dev,"failed to sync bridge static fdb addresses to this port\n" ); + }netdev_update_features (br->dev);
@@ -680,6 +693,8 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,return 0 ; err7: +if (fdb_synced) +br_fdb_unsync_static (br, p);list_del_rcu (&p->list);br_fdb_delete_by_port (br, p,0 ,1 );nbp_update_port_count (br);
net/caif/caif_socket.c +2 -1
@@ -539,7 +539,8 @@ static int caif_seqpkt_sendmsg(struct socket *sock, struct msghdr *msg, goto err; ret = -EINVAL ; -if (unlikely (msg->msg_iter.iov->iov_base ==NULL )) +if (unlikely (msg->msg_iter.nr_segs ==0 ) || +unlikely (msg->msg_iter.iov->iov_base ==NULL )) goto err; noblock = msg->msg_flags &MSG_DONTWAIT ;
net/decnet/af_decnet.c +12 -15
@@ -823,7 +823,7 @@ static int dn_auto_bind(struct socket *sock)static int dn_confirm_accept (struct sock *sk,long *timeo,gfp_t allocation) {struct dn_scp *scp =DN_SK (sk); -DEFINE_WAIT (wait); +DEFINE_WAIT_FUNC (wait, woken_wake_function);int err;if (scp->state !=DN_CR )
@@ -833,11 +833,11 @@ static int dn_confirm_accept(struct sock *sk, long *timeo, gfp_t allocation) scp->segsize_loc =dst_metric_advmss (__sk_dst_get (sk));dn_send_conn_conf (sk, allocation); -prepare_to_wait (sk_sleep (sk), &wait,TASK_INTERRUPTIBLE ); +add_wait_queue (sk_sleep (sk), &wait);for (;;) {release_sock (sk);if (scp->state ==DN_CC ) - *timeo =schedule_timeout (*timeo); + *timeo =wait_woken (&wait,TASK_INTERRUPTIBLE , *timeo);lock_sock (sk); err =0 ;if (scp->state ==DN_RUN )
@@ -851,9 +851,8 @@ static int dn_confirm_accept(struct sock *sk, long *timeo, gfp_t allocation) err = -EAGAIN ;if (!*timeo)break ; -prepare_to_wait (sk_sleep (sk), &wait,TASK_INTERRUPTIBLE ); } -finish_wait (sk_sleep (sk), &wait); +remove_wait_queue (sk_sleep (sk), &wait);if (err ==0 ) { sk->sk_socket->state =SS_CONNECTED ; }else if (scp->state !=DN_CC ) {
@@ -865,7 +864,7 @@ static int dn_confirm_accept(struct sock *sk, long *timeo, gfp_t allocation)static int dn_wait_run (struct sock *sk,long *timeo) {struct dn_scp *scp =DN_SK (sk); -DEFINE_WAIT (wait); +DEFINE_WAIT_FUNC (wait, woken_wake_function);int err =0 ;if (scp->state ==DN_RUN )
@@ -874,11 +873,11 @@ static int dn_wait_run(struct sock *sk, long *timeo)if (!*timeo)return -EALREADY ; -prepare_to_wait (sk_sleep (sk), &wait,TASK_INTERRUPTIBLE ); +add_wait_queue (sk_sleep (sk), &wait);for (;;) {release_sock (sk);if (scp->state ==DN_CI || scp->state ==DN_CC ) - *timeo =schedule_timeout (*timeo); + *timeo =wait_woken (&wait,TASK_INTERRUPTIBLE , *timeo);lock_sock (sk); err =0 ;if (scp->state ==DN_RUN )
@@ -892,9 +891,8 @@ static int dn_wait_run(struct sock *sk, long *timeo) err = -ETIMEDOUT ;if (!*timeo)break ; -prepare_to_wait (sk_sleep (sk), &wait,TASK_INTERRUPTIBLE ); } -finish_wait (sk_sleep (sk), &wait); +remove_wait_queue (sk_sleep (sk), &wait); out:if (err ==0 ) { sk->sk_socket->state =SS_CONNECTED ;
@@ -1039,16 +1037,16 @@ static void dn_user_copy(struct sk_buff *skb, struct optdata_dn *opt)static struct sk_buff *dn_wait_for_connect (struct sock *sk,long *timeo) { -DEFINE_WAIT (wait); +DEFINE_WAIT_FUNC (wait, woken_wake_function);struct sk_buff *skb =NULL ;int err =0 ; -prepare_to_wait (sk_sleep (sk), &wait,TASK_INTERRUPTIBLE ); +add_wait_queue (sk_sleep (sk), &wait);for (;;) {release_sock (sk); skb =skb_dequeue (&sk->sk_receive_queue);if (skb ==NULL ) { - *timeo =schedule_timeout (*timeo); + *timeo =wait_woken (&wait,TASK_INTERRUPTIBLE , *timeo); skb =skb_dequeue (&sk->sk_receive_queue); }lock_sock (sk);
@@ -1063,9 +1061,8 @@ static struct sk_buff *dn_wait_for_connect(struct sock *sk, long *timeo) err = -EAGAIN ;if (!*timeo)break ; -prepare_to_wait (sk_sleep (sk), &wait,TASK_INTERRUPTIBLE ); } -finish_wait (sk_sleep (sk), &wait); +remove_wait_queue (sk_sleep (sk), &wait);return skb ==NULL ?ERR_PTR (err) : skb; }
net/ipv4/ip_tunnel.c +18 -4
@@ -330,7 +330,7 @@ static int ip_tunnel_bind_dev(struct net_device *dev) } dev->needed_headroom = t_hlen + hlen; - mtu -= t_hlen; + mtu -= t_hlen + (dev->type ==ARPHRD_ETHER ? dev->hard_header_len :0 );if (mtu <IPV4_MIN_MTU ) mtu =IPV4_MIN_MTU ;
@@ -361,6 +361,9 @@ static struct ip_tunnel *ip_tunnel_create(struct net *net, t_hlen = nt->hlen +sizeof (struct iphdr ); dev->min_mtu =ETH_MIN_MTU ; dev->max_mtu =IP_MAX_MTU - t_hlen; +if (dev->type ==ARPHRD_ETHER ) + dev->max_mtu -= dev->hard_header_len; +ip_tunnel_add (itn, nt);return nt;
@@ -502,13 +505,18 @@ static int tnl_update_pmtu(struct net_device *dev, struct sk_buff *skb, const struct iphdr *inner_iph) {struct ip_tunnel *tunnel =netdev_priv (dev); -int pkt_size = skb->len - tunnel->hlen; +int pkt_size;int mtu; -if (df) + pkt_size = skb->len - tunnel->hlen; + pkt_size -= dev->type ==ARPHRD_ETHER ? dev->hard_header_len :0 ; + +if (df) { mtu =dst_mtu (&rt->dst) - (sizeof (struct iphdr ) + tunnel->hlen); -else + mtu -= dev->type ==ARPHRD_ETHER ? dev->hard_header_len :0 ; + }else { mtu =skb_dst (skb) ?dst_mtu (skb_dst (skb)) : dev->mtu; + }skb_dst_update_pmtu_no_confirm (skb, mtu);
@@ -936,6 +944,9 @@ int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict)int t_hlen = tunnel->hlen +sizeof (struct iphdr );int max_mtu =IP_MAX_MTU - t_hlen; +if (dev->type ==ARPHRD_ETHER ) + max_mtu -= dev->hard_header_len; +if (new_mtu <ETH_MIN_MTU )return -EINVAL ;
@@ -1113,6 +1124,9 @@ int ip_tunnel_newlink(struct net_device *dev, struct nlattr *tb[],if (tb[IFLA_MTU ]) {unsigned int max =IP_MAX_MTU - (nt->hlen +sizeof (struct iphdr )); +if (dev->type ==ARPHRD_ETHER ) + max -= dev->hard_header_len; + mtu =clamp (dev->mtu, (unsigned int )ETH_MIN_MTU , max); }
net/ipv4/tcp_fastopen.c +16 -3
@@ -454,8 +454,15 @@ void tcp_fastopen_active_disable(struct sock *sk) {struct net *net =sock_net (sk); +/* Paired with READ_ONCE() in tcp_fastopen_active_should_disable() */ +WRITE_ONCE (net->ipv4.tfo_active_disable_stamp, jiffies); + +/* Paired with smp_rmb() in tcp_fastopen_active_should_disable(). +* We want net->ipv4.tfo_active_disable_stamp to be updated first. +*/ +smp_mb__before_atomic ();atomic_inc (&net->ipv4.tfo_active_disable_times); - net->ipv4.tfo_active_disable_stamp = jiffies; +NET_INC_STATS (net,LINUX_MIB_TCPFASTOPENBLACKHOLE ); }
@@ -473,10 +480,16 @@ bool tcp_fastopen_active_should_disable(struct sock *sk)if (!tfo_da_times)return false; +/* Paired with smp_mb__before_atomic() in tcp_fastopen_active_disable() */ +smp_rmb (); +/* Limit timout to max: 2^6 * initial timeout */ multiplier =1 <<min (tfo_da_times -1 ,6 ); - timeout = multiplier * tfo_bh_timeout *HZ ; -if (time_before (jiffies,sock_net (sk)->ipv4.tfo_active_disable_stamp + timeout)) + +/* Paired with the WRITE_ONCE() in tcp_fastopen_active_disable(). */ + timeout =READ_ONCE (sock_net (sk)->ipv4.tfo_active_disable_stamp) + + multiplier * tfo_bh_timeout *HZ ; +if (time_before (jiffies, timeout))return true;/* Mark check bit so we can check for successful active TFO
net/ipv4/tcp_ipv4.c +2 -2
@@ -348,7 +348,7 @@ void tcp_v4_mtu_reduced(struct sock *sk)if ((1 << sk->sk_state) & (TCPF_LISTEN |TCPF_CLOSE ))return ; - mtu =tcp_sk (sk)->mtu_info; + mtu =READ_ONCE (tcp_sk (sk)->mtu_info); dst =inet_csk_update_pmtu (sk, mtu);if (!dst)return ;
@@ -516,7 +516,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)if (sk->sk_state ==TCP_LISTEN ) goto out; - tp->mtu_info = info; +WRITE_ONCE (tp->mtu_info, info);if (!sock_owned_by_user (sk)) {tcp_v4_mtu_reduced (sk); }else {
net/ipv4/tcp_output.c +1 -0
@@ -1472,6 +1472,7 @@ int tcp_mtu_to_mss(struct sock *sk, int pmtu)return __tcp_mtu_to_mss (sk, pmtu) - (tcp_sk (sk)->tcp_header_len -sizeof (struct tcphdr )); } +EXPORT_SYMBOL (tcp_mtu_to_mss);/* Inverse of above */ int tcp_mss_to_mtu (struct sock *sk,int mss)
net/ipv4/udp.c +3 -3
@@ -997,7 +997,7 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) }ipcm_init_sk (&ipc, inet); - ipc.gso_size = up->gso_size; + ipc.gso_size =READ_ONCE (up->gso_size);if (msg->msg_controllen) { err =udp_cmsg_send (sk, msg, &ipc.gso_size);
@@ -2505,7 +2505,7 @@ int udp_lib_setsockopt(struct sock *sk, int level, int optname,case UDP_SEGMENT :if (val <0 || val >USHRT_MAX )return -EINVAL ; - up->gso_size = val; +WRITE_ONCE (up->gso_size, val);break ;/*
@@ -2599,7 +2599,7 @@ int udp_lib_getsockopt(struct sock *sk, int level, int optname,break ;case UDP_SEGMENT : - val = up->gso_size; + val =READ_ONCE (up->gso_size);break ;/* The following two cannot be changed on UDP sockets, the return is
net/ipv6/ip6_output.c +3 -1
@@ -459,7 +459,9 @@ int ip6_forward(struct sk_buff *skb)if (skb_warn_if_lro (skb)) goto drop; -if (!xfrm6_policy_check (NULL ,XFRM_POLICY_FWD , skb)) { +if (!net->ipv6.devconf_all->disable_policy && + !idev->cnf.disable_policy && + !xfrm6_policy_check (NULL ,XFRM_POLICY_FWD , skb)) {__IP6_INC_STATS (net, idev,IPSTATS_MIB_INDISCARDS ); goto drop; }
net/ipv6/tcp_ipv6.c +19 -3
@@ -336,11 +336,20 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,static void tcp_v6_mtu_reduced (struct sock *sk) {struct dst_entry *dst; +u32 mtu;if ((1 << sk->sk_state) & (TCPF_LISTEN |TCPF_CLOSE ))return ; - dst =inet6_csk_update_pmtu (sk,tcp_sk (sk)->mtu_info); + mtu =READ_ONCE (tcp_sk (sk)->mtu_info); + +/* Drop requests trying to increase our current mss. +* Check done in __ip6_rt_update_pmtu() is too late. +*/ +if (tcp_mtu_to_mss (sk, mtu) >=tcp_sk (sk)->mss_cache) +return ; + + dst =inet6_csk_update_pmtu (sk, mtu);if (!dst)return ;
@@ -419,6 +428,8 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, }if (type ==ICMPV6_PKT_TOOBIG ) { +u32 mtu =ntohl (info); +/* We are not interested in TCP_LISTEN and open_requests * (SYN-ACKs send out by Linux are always <576bytes so * they should go through unfragmented).
@@ -429,7 +440,11 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,if (!ip6_sk_accept_pmtu (sk)) goto out; - tp->mtu_info =ntohl (info); +if (mtu <IPV6_MIN_MTU ) + goto out; + +WRITE_ONCE (tp->mtu_info, mtu); +if (!sock_owned_by_user (sk))tcp_v6_mtu_reduced (sk); else if (!test_and_set_bit(TCP_MTU_REDUCED_DEFERRED,
@@ -503,7 +518,8 @@ static int tcp_v6_send_synack(const struct sock *sk, struct dst_entry *dst, opt = ireq->ipv6_opt;if (!opt) opt =rcu_dereference (np->opt); - err =ip6_xmit (sk, skb, fl6, sk->sk_mark, opt, np->tclass); + err =ip6_xmit (sk, skb, fl6, skb->mark ? : sk->sk_mark, opt, + np->tclass);rcu_read_unlock (); err =net_xmit_eval (err); }
net/ipv6/udp.c +1 -1
@@ -1175,7 +1175,7 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)int (*getfrag)(void *,char *,int ,int ,int ,struct sk_buff *);ipcm6_init (&ipc6); - ipc6.gso_size = up->gso_size; + ipc6.gso_size =READ_ONCE (up->gso_size); ipc6.sockc.tsflags = sk->sk_tsflags;/* destination address check */
net/ipv6/xfrm6_output.c +1 -1
@@ -146,7 +146,7 @@ static int __xfrm6_output(struct net *net, struct sock *sk, struct sk_buff *skb) {struct dst_entry *dst =skb_dst (skb);struct xfrm_state *x = dst->xfrm; -int mtu; +unsigned int mtu;bool toobig;#ifdef CONFIG_NETFILTER
net/netfilter/nf_conntrack_netlink.c +3 -0
@@ -213,6 +213,7 @@ static int ctnetlink_dump_helpinfo(struct sk_buff *skb,if (!help)return 0 ; +rcu_read_lock (); helper =rcu_dereference (help->helper);if (!helper) goto out;
@@ -228,9 +229,11 @@ static int ctnetlink_dump_helpinfo(struct sk_buff *skb,nla_nest_end (skb, nest_helper); out: +rcu_read_unlock ();return 0 ; nla_put_failure: +rcu_read_unlock ();return -1 ; }
net/netrom/nr_timer.c +11 -9
@@ -124,11 +124,9 @@ static void nr_heartbeat_expiry(struct timer_list *t)is accepted() it isn't 'dead' so doesn't get removed. */ if (sock_flag (sk,SOCK_DESTROY ) || (sk->sk_state ==TCP_LISTEN &&sock_flag (sk,SOCK_DEAD ))) { -sock_hold (sk);bh_unlock_sock (sk);nr_destroy_socket (sk); -sock_put (sk); -return ; + goto out; }break ;
@@ -149,6 +147,8 @@ static void nr_heartbeat_expiry(struct timer_list *t)nr_start_heartbeat (sk);bh_unlock_sock (sk); +out: +sock_put (sk); }static void nr_t2timer_expiry (struct timer_list *t)
@@ -162,6 +162,7 @@ static void nr_t2timer_expiry(struct timer_list *t)nr_enquiry_response (sk); }bh_unlock_sock (sk); +sock_put (sk); }static void nr_t4timer_expiry (struct timer_list *t)
@@ -172,6 +173,7 @@ static void nr_t4timer_expiry(struct timer_list *t)bh_lock_sock (sk);nr_sk (sk)->condition &= ~NR_COND_PEER_RX_BUSY ;bh_unlock_sock (sk); +sock_put (sk); }static void nr_idletimer_expiry (struct timer_list *t)
@@ -200,6 +202,7 @@ static void nr_idletimer_expiry(struct timer_list *t)sock_set_flag (sk,SOCK_DEAD ); }bh_unlock_sock (sk); +sock_put (sk); }static void nr_t1timer_expiry (struct timer_list *t)
@@ -212,8 +215,7 @@ static void nr_t1timer_expiry(struct timer_list *t)case NR_STATE_1 :if (nr->n2count == nr->n2) {nr_disconnect (sk,ETIMEDOUT ); -bh_unlock_sock (sk); -return ; + goto out; }else { nr->n2count++;nr_write_internal (sk,NR_CONNREQ );
@@ -223,8 +225,7 @@ static void nr_t1timer_expiry(struct timer_list *t)case NR_STATE_2 :if (nr->n2count == nr->n2) {nr_disconnect (sk,ETIMEDOUT ); -bh_unlock_sock (sk); -return ; + goto out; }else { nr->n2count++;nr_write_internal (sk,NR_DISCREQ );
@@ -234,8 +235,7 @@ static void nr_t1timer_expiry(struct timer_list *t)case NR_STATE_3 :if (nr->n2count == nr->n2) {nr_disconnect (sk,ETIMEDOUT ); -bh_unlock_sock (sk); -return ; + goto out; }else { nr->n2count++;nr_requeue_frames (sk);
@@ -244,5 +244,7 @@ static void nr_t1timer_expiry(struct timer_list *t) }nr_start_t1timer (sk); +out:bh_unlock_sock (sk); +sock_put (sk); }
net/sched/act_skbmod.c +8 -4
@@ -10,6 +10,7 @@*/ #include <linux/module.h> +#include <linux/if_arp.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/skbuff.h>
@@ -36,6 +37,13 @@ static int tcf_skbmod_act(struct sk_buff *skb, const struct tc_action *a,tcf_lastuse_update (&d->tcf_tm);bstats_cpu_update (this_cpu_ptr (d->common.cpu_bstats), skb); + action =READ_ONCE (d->tcf_action); +if (unlikely (action ==TC_ACT_SHOT )) + goto drop; + +if (!skb->dev || skb->dev->type !=ARPHRD_ETHER ) +return action; +/* XXX: if you are going to edit more fields beyond ethernet header * (example when you add IP header replacement or vlan swap) * then MAX_EDIT_LEN needs to change appropriately
@@ -44,10 +52,6 @@ static int tcf_skbmod_act(struct sk_buff *skb, const struct tc_action *a,if (unlikely (err))/* best policy is to drop on the floor */ goto drop; - action =READ_ONCE (d->tcf_action); -if (unlikely (action ==TC_ACT_SHOT )) - goto drop; - p =rcu_dereference_bh (d->skbmod_p); flags = p->flags;if (flags &SKBMOD_F_DMAC )
net/sched/cls_api.c +1 -1
@@ -1918,7 +1918,7 @@ static int tc_ctl_chain(struct sk_buff *skb, struct nlmsghdr *n,break ;case RTM_GETCHAIN : err =tc_chain_notify (chain, skb, n->nlmsg_seq, - n->nlmsg_seq, n->nlmsg_type, true); + n->nlmsg_flags, n->nlmsg_type, true);if (err <0 )NL_SET_ERR_MSG (extack,"Failed to send chain notify message" );break ;
net/sctp/auth.c +2 -0
@@ -883,6 +883,8 @@ int sctp_auth_set_key(struct sctp_endpoint *ep,if (replace) {list_del_init (&shkey->key_list);sctp_auth_shkey_release (shkey); +if (asoc && asoc->active_key_id == auth_key->sca_keynumber) +sctp_auth_asoc_init_active_key (asoc,GFP_KERNEL ); }list_add (&cur_key->key_list, sh_keys);
scripts/mkcompile_h +11 -3
@@ -78,15 +78,23 @@ UTS_TRUNCATE="cut -b -$UTS_LEN" # Only replace the real compile.h if the new one is different, # in order to preserve the timestamp and avoid unnecessary # recompilations. -# We don't consider the file changed if only the date/time changed. +# We don't consider the file changed if only the date/time changed, +# unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for +# reproducible builds with that value referring to a commit timestamp). # A kernel config change will increase the generation number, thus # causing compile.h to be updated (including date/time) due to the # changed comment in the # first line. +if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then + IGNORE_PATTERN="UTS_VERSION" +else + IGNORE_PATTERN="NOT_A_PATTERN_TO_BE_MATCHED" +fi + if [ -r $TARGET ] && \ - grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \ - grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \ + grep -v $IGNORE_PATTERN $TARGET > .tmpver.1 && \ + grep -v $IGNORE_PATTERN .tmpcompile > .tmpver.2 && \ cmp -s .tmpver.1 .tmpver.2; then rm -f .tmpcompile else
sound/isa/sb/sb16_csp.c +4 -0
@@ -828,6 +828,7 @@ static int snd_sb_csp_start(struct snd_sb_csp * p, int sample_width, int channel mixR =snd_sbmixer_read (p->chip,SB_DSP4_PCM_DEV +1 );snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV , mixL &0x7 );snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV +1 , mixR &0x7 ); +spin_unlock_irqrestore (&p->chip->mixer_lock, flags);spin_lock (&p->chip->reg_lock);set_mode_register (p->chip,0xc0 );/* c0 = STOP */
@@ -867,6 +868,7 @@ static int snd_sb_csp_start(struct snd_sb_csp * p, int sample_width, int channelspin_unlock (&p->chip->reg_lock);/* restore PCM volume */ +spin_lock_irqsave (&p->chip->mixer_lock, flags);snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV , mixL);snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV +1 , mixR);spin_unlock_irqrestore (&p->chip->mixer_lock, flags);
@@ -892,6 +894,7 @@ static int snd_sb_csp_stop(struct snd_sb_csp * p) mixR =snd_sbmixer_read (p->chip,SB_DSP4_PCM_DEV +1 );snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV , mixL &0x7 );snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV +1 , mixR &0x7 ); +spin_unlock_irqrestore (&p->chip->mixer_lock, flags);spin_lock (&p->chip->reg_lock);if (p->running &SNDRV_SB_CSP_ST_QSOUND ) {
@@ -906,6 +909,7 @@ static int snd_sb_csp_stop(struct snd_sb_csp * p)spin_unlock (&p->chip->reg_lock);/* restore PCM volume */ +spin_lock_irqsave (&p->chip->mixer_lock, flags);snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV , mixL);snd_sbmixer_write (p->chip,SB_DSP4_PCM_DEV +1 , mixR);spin_unlock_irqrestore (&p->chip->mixer_lock, flags);
sound/usb/quirks.c +3 -0
@@ -1553,6 +1553,9 @@ static const struct registration_quirk registration_quirks[] = {REG_QUIRK_ENTRY (0x0951 ,0x16d8 ,2 ),/* Kingston HyperX AMP */ REG_QUIRK_ENTRY (0x0951 ,0x16ed ,2 ),/* Kingston HyperX Cloud Alpha S */ REG_QUIRK_ENTRY (0x0951 ,0x16ea ,2 ),/* Kingston HyperX Cloud Flight S */ +REG_QUIRK_ENTRY (0x0ecb ,0x1f46 ,2 ),/* JBL Quantum 600 */ +REG_QUIRK_ENTRY (0x0ecb ,0x2039 ,2 ),/* JBL Quantum 400 */ +REG_QUIRK_ENTRY (0x0ecb ,0x203e ,2 ),/* JBL Quantum 800 */ { 0 } /* terminator */ };
tools/bpf/bpftool/common.c +5 -0
@@ -182,6 +182,11 @@ int do_pin_fd(int fd, const char *name) goto out;
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vm/userfaultfd.c +4 -2
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.