Linux 5.10.185
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.185 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/kernel-parameters.txt | 4 Documentation/admin-guide/sysctl/net.rst | 15 Documentation/core-api/kernel-api.rst | 7 Documentation/networking/decnet.rst | 243 -- Documentation/networking/index.rst | 1 Documentation/userspace-api/ioctl/ioctl-number.rst | 1 MAINTAINERS | 7 Makefile | 2 arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 1 arch/mips/alchemy/common/dbdma.c | 27 arch/mips/configs/decstation_64_defconfig | 2 arch/mips/configs/decstation_defconfig | 2 arch/mips/configs/decstation_r4k_defconfig | 2 arch/mips/configs/gpr_defconfig | 2 arch/mips/configs/mtx1_defconfig | 2 arch/mips/configs/nlm_xlp_defconfig | 2 arch/mips/configs/nlm_xlr_defconfig | 2 arch/mips/configs/rm200_defconfig | 2 arch/mips/kernel/setup.c | 9 arch/nios2/boot/dts/10m50_devboard.dts | 2 arch/nios2/boot/dts/3c120_devboard.dts | 2 arch/parisc/kernel/pci-dma.c | 18 arch/powerpc/configs/ppc6xx_defconfig | 2 arch/powerpc/purgatory/Makefile | 5 arch/um/kernel/um_arch.c | 2 arch/x86/purgatory/Makefile | 5 drivers/block/xen-blkfront.c | 3 drivers/char/agp/parisc-agp.c | 15 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 4 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 4 drivers/gpu/drm/i915/display/intel_bw.c | 80 drivers/gpu/drm/i915/i915_drv.c | 4 drivers/gpu/drm/i915/i915_drv.h | 1 drivers/gpu/drm/i915/i915_reg.h | 3 drivers/gpu/drm/i915/intel_dram.c | 82 drivers/gpu/drm/i915/intel_sideband.c | 15 drivers/gpu/drm/i915/intel_sideband.h | 2 drivers/gpu/drm/nouveau/nouveau_acpi.c | 3 drivers/gpu/drm/nouveau/nouveau_connector.c | 7 drivers/gpu/drm/nouveau/nouveau_drm.c | 14 drivers/infiniband/core/cma.c | 4 drivers/infiniband/core/uverbs_cmd.c | 7 drivers/infiniband/core/uverbs_main.c | 12 drivers/infiniband/hw/mlx5/main.c | 3 drivers/infiniband/sw/rxe/rxe_qp.c | 16 drivers/infiniband/sw/rxe/rxe_task.c | 5 drivers/infiniband/sw/rxe/rxe_task.h | 5 drivers/infiniband/ulp/isert/ib_isert.c | 16 drivers/infiniband/ulp/rtrs/rtrs.c | 4 drivers/irqchip/irq-gic-common.c | 10 drivers/irqchip/irq-gic-common.h | 1 drivers/irqchip/irq-gic-v3.c | 20 drivers/media/dvb-core/dvbdev.c | 88 drivers/mmc/core/block.c | 5 drivers/net/ethernet/freescale/enetc/enetc_qos.c | 4 drivers/net/ethernet/intel/iavf/iavf.h | 2 drivers/net/ethernet/intel/iavf/iavf_main.c | 15 drivers/net/ethernet/intel/iavf/iavf_register.h | 2 drivers/net/ethernet/intel/igb/igb_ethtool.c | 3 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 3 drivers/net/ipvlan/ipvlan_l3s.c | 4 drivers/net/usb/qmi_wwan.c | 2 drivers/net/wan/lapbether.c | 3 drivers/platform/x86/asus-nb-wmi.c | 2 drivers/power/supply/ab8500_btemp.c | 6 drivers/power/supply/ab8500_fg.c | 6 drivers/power/supply/bq27xxx_battery.c | 6 drivers/power/supply/power_supply_core.c | 8 drivers/power/supply/power_supply_sysfs.c | 3 drivers/power/supply/sc27xx_fuel_gauge.c | 9 drivers/regulator/core.c | 4 drivers/spi/spi-fsl-dspi.c | 15 drivers/tty/serial/lantiq.c | 1 drivers/usb/dwc3/gadget.c | 1 drivers/usb/serial/option.c | 16 fs/afs/vl_probe.c | 4 fs/btrfs/block-group.c | 14 fs/btrfs/file-item.c | 4 fs/btrfs/scrub.c | 9 fs/eventpoll.c | 6 fs/ext4/balloc.c | 20 fs/nilfs2/btnode.c | 12 fs/nilfs2/sufile.c | 9 fs/nilfs2/the_nilfs.c | 44 fs/ocfs2/file.c | 8 fs/ocfs2/super.c | 6 include/linux/kernel.h | 143 - include/linux/kstrtox.h | 155 + include/linux/netdevice.h | 4 include/linux/netfilter.h | 5 include/linux/netfilter_defs.h | 8 include/linux/string.h | 7 include/linux/sunrpc/cache.h | 1 include/media/dvbdev.h | 15 include/net/dn.h | 231 - include/net/dn_dev.h | 199 - include/net/dn_fib.h | 167 - include/net/dn_neigh.h | 30 include/net/dn_nsp.h | 195 - include/net/dn_route.h | 115 include/net/dst.h | 6 include/net/flow.h | 26 include/net/neighbour.h | 7 include/net/netns/netfilter.h | 3 include/rdma/ib_addr.h | 23 include/sound/soc-dpcm.h | 4 include/uapi/linux/dn.h | 149 - include/uapi/linux/netfilter_decnet.h | 72 include/uapi/linux/netlink.h | 2 io_uring/io_uring.c | 3 kernel/cgroup/cgroup.c | 17 kernel/kexec_file.c | 14 kernel/rcu/tree.c | 49 lib/kstrtox.c | 5 lib/parser.c | 1 lib/test_firmware.c | 72 lib/test_kmod.c | 26 mm/memory_hotplug.c | 105 net/Kconfig | 2 net/Makefile | 1 net/batman-adv/gateway_common.c | 2 net/core/dev.c | 4 net/core/neighbour.c | 34 net/decnet/Kconfig | 43 net/decnet/Makefile | 10 net/decnet/README | 8 net/decnet/af_decnet.c | 2400 -------------------- net/decnet/dn_dev.c | 1435 ----------- net/decnet/dn_fib.c | 799 ------ net/decnet/dn_neigh.c | 605 ----- net/decnet/dn_nsp_in.c | 906 ------- net/decnet/dn_nsp_out.c | 695 ----- net/decnet/dn_route.c | 1923 ---------------- net/decnet/dn_rules.c | 258 -- net/decnet/dn_table.c | 929 ------- net/decnet/dn_timer.c | 104 net/decnet/netfilter/Kconfig | 17 net/decnet/netfilter/Makefile | 6 net/decnet/netfilter/dn_rtmsg.c | 158 - net/decnet/sysctl_net_decnet.c | 362 --- net/ipv6/ping.c | 3 net/netfilter/core.c | 10 net/netfilter/nfnetlink.c | 3 net/sched/cls_api.c | 12 net/sched/cls_u32.c | 18 net/sctp/sm_statefuns.c | 2 net/tipc/bearer.c | 4 sound/pci/hda/patch_realtek.c | 1 sound/soc/dwc/dwc-i2s.c | 41 sound/soc/soc-pcm.c | 20 tools/gpio/lsgpio.c | 2 tools/testing/selftests/ptp/testptp.c | 6 152 files changed, 992 insertions(+), 12743 deletions(-)
Ahmed Zaki (1):
iavf: remove mask from iavf_irq_enable_queues()
Aleksandr Loktionov (1):
igb: fix nvm.ops.read() error handling
Alex Maftei (1):
selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET
Alexandru Sorodoc (1):
platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0
Alexey Dobriyan (1):
lib: cleanup kstrto*() usage
Andy Shevchenko (1):
kernel.h: split out kstrtox() and simple_strtox() to a separate header
Benjamin Segall (1):
epoll: ep_autoremove_wake_function should use list_del_init_careful
Bernhard Seibold (1):
serial: lantiq: add missing interrupt ack
Bob Pearson (1):
RDMA/rxe: Removed unused name from rxe_task struct
Christian Loehle (1):
mmc: block: ensure error propagation for non-blk
Christophe JAILLET (1):
test_firmware: Use kstrtobool() instead of strtobool()
Dan Carpenter (1):
sctp: fix an error code in sctp_sf_eat_auth()
Dave Airlie (1):
nouveau: fix client work fence deletion race
David Hildenbrand (1):
mm/memory_hotplug: extend offline_and_remove_memory() to handle more than one memory block
David Howells (1):
afs: Fix vlserver probe RTT handling
Dinghao Liu (1):
media: dvbdev: Fix memleak in dvb_register_device
Douglas Anderson (1):
irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues
Edson Juliano Drosdeck (1):
ALSA: hda/realtek: Add a quirk for Compaq N14JP6
Edward Srouji (1):
RDMA/uverbs: Restrict usage of privileged QKEYs
Elson Roy Serrao (1):
usb: dwc3: gadget: Reset num TRBs before giving back the request
Eric Dumazet (1):
net: lapbether: only support ethernet devices
Fabio M. De Francesco (1):
ext4: drop the call to ext4_error() from ext4_get_group_info()
Gaosheng Cui (2):
neighbour: Remove unused inline function neigh_key_eq16()
net: Remove unused inline function dst_hold_and_use()
Greg Kroah-Hartman (1):
Linux 5.10.185
Guillaume Nault (2):
ping6: Fix send to link-local addresses with VRF.
net: Remove DECnet leftovers from flow.h.
Hangbin Liu (1):
ipvlan: fix bound dev checking for IPv6 l3s mode
Hans de Goede (3):
power: supply: ab8500: Fix external_power_changed race
power: supply: sc27xx: Fix external_power_changed race
power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule()
Helge Deller (2):
parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu()
parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory()
Hyunwoo Kim (1):
media: dvb-core: Fix use-after-free due to race at dvb_register_device()
Janne Grunau (1):
nios2: dts: Fix tse_mac "max-frame-size" property
Jens Axboe (1):
io_uring: hold uring mutex around poll removal
Jerry Meng (1):
USB: serial: option: add Quectel EM061KGL series
Johannes Berg (1):
um: Fix build w/o CONFIG_PM_SLEEP
Johannes Thumshirn (1):
btrfs: handle memory allocation failure in btrfs_csum_one_bio
John Sperbeck (1):
cgroup: always put cset in cgroup_css_set_put_fork
José Roberto de Souza (1):
drm/i915/gen11+: Only load DRAM information from pcode
Krzysztof Kozlowski (1):
ARM: dts: vexpress: add missing cache properties
Lee Jones (1):
net/sched: cls_u32: Fix reference counter leak leading to overflow
Leon Romanovsky (1):
neighbour: delete neigh_lookup_nodev as not used
Li Zhijian (1):
RDMA/rtrs: Fix the last iu->buf leak in err path
Lin Ma (1):
net: tipc: resize nlattr array to correct size
Liviu Dudau (1):
mips: Move initrd_start check after initrd address sanitisation.
Luís Henriques (2):
ocfs2: fix use-after-free when unmounting read-only filesystem
ocfs2: check new file size on fallocate call
Maher Sanalla (1):
RDMA/mlx5: Initiate dropless RQ for RAW Ethernet functions
Manuel Lauss (1):
MIPS: Alchemy: fix dbdma2
Marc Zyngier (1):
irqchip/gic: Correctly validate OF quirk descriptors
Marek Vasut (1):
power: supply: Ratelimit no data debug output
Mario Limonciello (1):
power: supply: Fix logic checking if system is running from battery
Mark Zhang (1):
RDMA/cma: Always set static rate to 0 for RoCE
Matt Roper (1):
drm/i915/dg1: Wait for pcode/uncore handshake at startup
Mauro Carvalho Chehab (1):
media: dvbdev: fix error logic at dvb_register_device()
Maxim Kochetkov (1):
ASoC: dwc: move DMA init to snd_soc_dai_driver probe()
Milo Spadacini (1):
tools: gpio: fix debounce_period_us output of lsgpio
Mirsad Goran Todorovac (2):
test_firmware: prevent race conditions by a correct implementation of locking
test_firmware: fix a memory leak with reqs buffer
Natalia Petrova (2):
drm/nouveau/dp: check for NULL nv_connector->native_mode drm/nouveau: add nv_encoder pointer check for NULL
Osama Muhammad (1):
regulator: Fix error checking for debugfs_create_dir
Pablo Neira Ayuso (1):
netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM
Qu Wenruo (1):
btrfs: scrub: try harder to mark RAID56 block groups read-only
Ranjani Sridharan (1):
ASoC: soc-pcm: test if a BE can be prepared
Ratchanan Srirattanamet (1):
drm/nouveau: don't detect DSM for non-NVIDIA device
Ricardo Ribalda (3):
kexec: support purgatories with .text.hot sections x86/purgatory: remove PGO flags powerpc/purgatory: remove PGO flags
Ross Lagerwall (1):
xen/blkfront: Only check REQ_FUA for writes
Ryusuke Konishi (3):
nilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key()
nilfs2: fix possible out-of-bounds segment allocation in resize ioctl
nilfs2: reject devices with insufficient block count
Saravanan Vajravel (3):
IB/isert: Fix dead lock in ib_isert IB/isert: Fix possible list corruption in CMA handler IB/isert: Fix incorrect release of isert connection
Satha Rao (1):
octeontx2-af: fixed resource availability check
Stephen Hemminger (1):
Remove DECnet support from kernel
Sukrut Bellary (1):
drm:amd:amdgpu: Fix missing buffer object unlock in failure path
Sven Eckelmann (1):
batman-adv: Switch to kstrtox.h for kstrtou64
Vlad Buslov (1):
net/sched: cls_api: Fix lockup on flushing explicitly created chain
Vladimir Oltean (1):
spi: fsl-dspi: avoid SCK glitches with continuous transfers
Wei Fang (1):
net: enetc: correct the indexes of highest and 2nd highest TCs
Wes Huang (1):
net: usb: qmi_wwan: add support for Compal RXM-G1
Yishai Hadas (1):
IB/uverbs: Fix to consider event queue closing also upon non-blocking mode
Zhu Yanjun (2):
RDMA/rxe: Remove the unused variable obj
RDMA/rxe: Fix the use-before-initialization error of resp_pkts
Ziwei Dai (1):
rcu/kvfree: Avoid freeing new kfree_rcu() memory after old grace period
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +0 -4
@@ -866,10 +866,6 @@ debugpat [X86] Enable PAT debugging - decnet.addr= [HW,NET] - Format: <area>[,<node>] - See also Documentation/networking/decnet.rst. - default_hugepagesz= [HW] The size of the default HugeTLB page. This is the size represented by the legacy /proc/ hugepages
Documentation/admin-guide/sysctl/net.rst +8 -7
@@ -34,13 +34,14 @@ Table : Subdirectories in /proc/sys/net ========= =================== = ========== ================== Directory Content Directory Content ========= =================== = ========== ================== - core General parameter appletalk Appletalk protocol - unix Unix domain sockets netrom NET/ROM - 802 E802 protocol ax25 AX25 - ethernet Ethernet protocol rose X.25 PLP layer - ipv4 IP version 4 x25 X.25 protocol - bridge Bridging decnet DEC net - ipv6 IP version 6 tipc TIPC + 802 E802 protocol mptcp Multipath TCP + appletalk Appletalk protocol netfilter Network Filter + ax25 AX25 netrom NET/ROM + bridge Bridging rose X.25 PLP layer + core General parameter tipc TIPC + ethernet Ethernet protocol unix Unix domain sockets + ipv4 IP version 4 x25 X.25 protocol + ipv6 IP version 6 ========= =================== = ========== ================== 1. /proc/sys/net/core - Network core options
Documentation/core-api/kernel-api.rst +2 -5
@@ -24,11 +24,8 @@ String Conversions .. kernel-doc:: lib/vsprintf.c :export: -.. kernel-doc:: include/linux/kernel.h - :functions: kstrtol - -.. kernel-doc:: include/linux/kernel.h - :functions: kstrtoul +.. kernel-doc:: include/linux/kstrtox.h + :functions: kstrtol kstrtoul .. kernel-doc:: lib/kstrtox.c :export:
Documentation/networking/decnet.rst deleted +0 -243
243 lines not on this page · raw message
Documentation/networking/index.rst +0 -1
@@ -46,7 +46,6 @@ Contents: cdc_mbim dccp dctcp - decnet dns_resolver driver eql
Documentation/userspace-api/ioctl/ioctl-number.rst +0 -1
@@ -303,7 +303,6 @@ Code Seq# Include File Comments 0x89 00-06 arch/x86/include/asm/sockios.h 0x89 0B-DF linux/sockios.h 0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range -0x89 E0-EF linux/dn.h PROTOPRIVATE range 0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range 0x8B all linux/wireless.h 0x8C 00-3F WiNRADiO driver
MAINTAINERS +0 -7
@@ -4905,13 +4905,6 @@ F: include/linux/tfrc.h F: include/uapi/linux/dccp.h F: net/dccp/ -DECnet NETWORK LAYER -L: [email protected] -S: Orphan -W: http://linux-decnet.sourceforge.net -F: Documentation/networking/decnet.rst -F: net/decnet/ - DECSTATION PLATFORM SUPPORT M: "Maciej W. Rozycki" <[email protected]> L: [email protected]
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 184 +SUBLEVEL = 185 EXTRAVERSION = NAME = Dare mighty things
arch/arm/boot/dts/vexpress-v2p-ca5s.dts +1 -0
@@ -132,6 +132,7 @@ L2: cache-controller@2c0f0000 { reg = <0x2c0f0000 0x1000>; interrupts = <0 84 4>; cache-level = <2>; + cache-unified; }; pmu {
arch/mips/alchemy/common/dbdma.c +15 -12
@@ -30,6 +30,7 @@* */ +#include <linux/dma-map-ops.h> /* for dma_default_coherent */ #include <linux/init.h> #include <linux/kernel.h> #include <linux/slab.h>
@@ -623,17 +624,18 @@ u32 au1xxx_dbdma_put_source(u32 chanid, dma_addr_t buf, int nbytes, u32 flags) dp->dscr_cmd0 &= ~DSCR_CMD0_IE ;/* -* There is an errata on the Au1200/Au1550 parts that could result -* in "stale" data being DMA'ed. It has to do with the snoop logic on -* the cache eviction buffer. DMA_NONCOHERENT is on by default for -* these parts. If it is fixed in the future, these dma_cache_inv will -* just be nothing more than empty macros. See io.h. +* There is an erratum on certain Au1200/Au1550 revisions that could +* result in "stale" data being DMA'ed. It has to do with the snoop +* logic on the cache eviction buffer. dma_default_coherent is set +* to false on these parts. */ -dma_cache_wback_inv ((unsigned long )buf, nbytes); +if (!dma_default_coherent) +dma_cache_wback_inv (KSEG0ADDR (buf), nbytes); dp->dscr_cmd0 |=DSCR_CMD0_V ;/* Let it rip */ wmb ();/* drain writebuffer */ dma_cache_wback_inv ((unsigned long )dp,sizeof (*dp)); ctp->chan_ptr->ddma_dbell =0 ; +wmb ();/* force doorbell write out to dma engine */ /* Get next descriptor pointer. */ ctp->put_ptr =phys_to_virt (DSCR_GET_NXTPTR (dp->dscr_nxtptr));
@@ -685,17 +687,18 @@ u32 au1xxx_dbdma_put_dest(u32 chanid, dma_addr_t buf, int nbytes, u32 flags) dp->dscr_source1, dp->dscr_dest0, dp->dscr_dest1);#endif /* -* There is an errata on the Au1200/Au1550 parts that could result in -* "stale" data being DMA'ed. It has to do with the snoop logic on the -* cache eviction buffer. DMA_NONCOHERENT is on by default for these -* parts. If it is fixed in the future, these dma_cache_inv will just -* be nothing more than empty macros. See io.h. +* There is an erratum on certain Au1200/Au1550 revisions that could +* result in "stale" data being DMA'ed. It has to do with the snoop +* logic on the cache eviction buffer. dma_default_coherent is set +* to false on these parts. */ -dma_cache_inv ((unsigned long )buf, nbytes); +if (!dma_default_coherent) +dma_cache_inv (KSEG0ADDR (buf), nbytes); dp->dscr_cmd0 |=DSCR_CMD0_V ;/* Let it rip */ wmb ();/* drain writebuffer */ dma_cache_wback_inv ((unsigned long )dp,sizeof (*dp)); ctp->chan_ptr->ddma_dbell =0 ; +wmb ();/* force doorbell write out to dma engine */ /* Get next descriptor pointer. */ ctp->put_ptr =phys_to_virt (DSCR_GET_NXTPTR (dp->dscr_nxtptr));
arch/mips/configs/decstation_64_defconfig +0 -2
@@ -53,8 +53,6 @@ CONFIG_IPV6_SUBTREES=y CONFIG_NETWORK_SECMARK=y CONFIG_IP_SCTP=m CONFIG_VLAN_8021Q=m -CONFIG_DECNET=m -CONFIG_DECNET_ROUTER=y # CONFIG_WIRELESS is not set # CONFIG_UEVENT_HELPER is not set # CONFIG_FW_LOADER is not set
arch/mips/configs/decstation_defconfig +0 -2
@@ -49,8 +49,6 @@ CONFIG_IPV6_SUBTREES=y CONFIG_NETWORK_SECMARK=y CONFIG_IP_SCTP=m CONFIG_VLAN_8021Q=m -CONFIG_DECNET=m -CONFIG_DECNET_ROUTER=y # CONFIG_WIRELESS is not set # CONFIG_UEVENT_HELPER is not set # CONFIG_FW_LOADER is not set
arch/mips/configs/decstation_r4k_defconfig +0 -2
@@ -48,8 +48,6 @@ CONFIG_IPV6_SUBTREES=y CONFIG_NETWORK_SECMARK=y CONFIG_IP_SCTP=m CONFIG_VLAN_8021Q=m -CONFIG_DECNET=m -CONFIG_DECNET_ROUTER=y # CONFIG_WIRELESS is not set # CONFIG_UEVENT_HELPER is not set # CONFIG_FW_LOADER is not set
arch/mips/configs/gpr_defconfig +0 -2
@@ -69,7 +69,6 @@ CONFIG_IP_NF_RAW=m CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_DECNET_NF_GRABULATOR=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -99,7 +98,6 @@ CONFIG_ATM_MPOA=m CONFIG_ATM_BR2684=m CONFIG_BRIDGE=m CONFIG_VLAN_8021Q=m -CONFIG_DECNET=m CONFIG_LLC2=m CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m
arch/mips/configs/mtx1_defconfig +0 -2
@@ -117,7 +117,6 @@ CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m -CONFIG_DECNET_NF_GRABULATOR=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -147,7 +146,6 @@ CONFIG_ATM_MPOA=m CONFIG_ATM_BR2684=m CONFIG_BRIDGE=m CONFIG_VLAN_8021Q=m -CONFIG_DECNET=m CONFIG_LLC2=m CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m
arch/mips/configs/nlm_xlp_defconfig +0 -2
@@ -200,7 +200,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m CONFIG_IP6_NF_SECURITY=m -CONFIG_DECNET_NF_GRABULATOR=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -234,7 +233,6 @@ CONFIG_ATM_BR2684=m CONFIG_BRIDGE=m CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y -CONFIG_DECNET=m CONFIG_LLC2=m CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m
arch/mips/configs/nlm_xlr_defconfig +0 -2
@@ -198,7 +198,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m CONFIG_IP6_NF_SECURITY=m -CONFIG_DECNET_NF_GRABULATOR=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -232,7 +231,6 @@ CONFIG_ATM_BR2684=m CONFIG_BRIDGE=m CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y -CONFIG_DECNET=m CONFIG_LLC2=m CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m
arch/mips/configs/rm200_defconfig +0 -2
@@ -116,7 +116,6 @@ CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m -CONFIG_DECNET_NF_GRABULATOR=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -137,7 +136,6 @@ CONFIG_BRIDGE_EBT_REDIRECT=m CONFIG_BRIDGE_EBT_SNAT=m CONFIG_BRIDGE_EBT_LOG=m CONFIG_BRIDGE=m -CONFIG_DECNET=m CONFIG_NET_SCHED=y CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_HTB=m
arch/mips/kernel/setup.c +5 -4
@@ -154,10 +154,6 @@ static unsigned long __init init_initrd(void)pr_err ("initrd start must be page aligned\n" ); goto disable; } -if (initrd_start <PAGE_OFFSET ) { -pr_err ("initrd start < PAGE_OFFSET\n" ); - goto disable; - }/* * Sanitize initrd addresses. For example firmware
@@ -170,6 +166,11 @@ static unsigned long __init init_initrd(void) initrd_end = (unsigned long )__va (end); initrd_start = (unsigned long )__va (__pa (initrd_start)); +if (initrd_start <PAGE_OFFSET ) { +pr_err ("initrd start < PAGE_OFFSET\n" ); + goto disable; + } +ROOT_DEV = Root_RAM0;return PFN_UP (end); disable:
arch/nios2/boot/dts/10m50_devboard.dts +1 -1
@@ -97,7 +97,7 @@ rgmii_0_eth_tse_0: ethernet@400 { rx-fifo-depth = <8192>; tx-fifo-depth = <8192>; address-bits = <48>; - max-frame-size = <1518>; + max-frame-size = <1500>; local-mac-address = [00 00 00 00 00 00]; altr,has-supplementary-unicast; altr,enable-sup-addr = <1>;
arch/nios2/boot/dts/3c120_devboard.dts +1 -1
@@ -106,7 +106,7 @@ tse_mac: ethernet@4000 { interrupt-names = "rx_irq", "tx_irq"; rx-fifo-depth = <8192>; tx-fifo-depth = <8192>; - max-frame-size = <1518>; + max-frame-size = <1500>; local-mac-address = [ 00 00 00 00 00 00 ]; phy-mode = "rgmii-id"; phy-handle = <&phy0>;
arch/parisc/kernel/pci-dma.c +17 -1
@@ -446,11 +446,27 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr,void arch_sync_dma_for_device (phys_addr_t paddr,size_t size,enum dma_data_direction dir) { +/* +* fdc: The data cache line is written back to memory, if and only if +* it is dirty, and then invalidated from the data cache. +*/ flush_kernel_dcache_range ((unsigned long )phys_to_virt (paddr), size); }void arch_sync_dma_for_cpu (phys_addr_t paddr,size_t size,enum dma_data_direction dir) { -flush_kernel_dcache_range ((unsigned long )phys_to_virt (paddr), size); +unsigned long addr = (unsigned long )phys_to_virt (paddr); + +switch (dir) { +case DMA_TO_DEVICE : +case DMA_BIDIRECTIONAL : +flush_kernel_dcache_range (addr, size); +return ; +case DMA_FROM_DEVICE : +purge_kernel_dcache_range_asm (addr, addr + size); +return ; +default : +BUG (); + } }
arch/powerpc/configs/ppc6xx_defconfig +0 -2
@@ -245,8 +245,6 @@ CONFIG_ATM_LANE=m CONFIG_ATM_BR2684=m CONFIG_BRIDGE=m CONFIG_VLAN_8021Q=m -CONFIG_DECNET=m -CONFIG_DECNET_ROUTER=y CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m CONFIG_IPDDP=m
arch/powerpc/purgatory/Makefile +5 -0
@@ -4,6 +4,11 @@ KASAN_SANITIZE := n targets += trampoline_$(BITS).o purgatory.ro kexec-purgatory.c +# When profile-guided optimization is enabled, llvm emits two different +# overlapping text sections, which is not supported by kexec. Remove profile +# optimization flags. +KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS)) + LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined $(obj)/purgatory.ro: $(obj)/trampoline_$(BITS).o FORCE
arch/um/kernel/um_arch.c +1 -1
@@ -387,12 +387,12 @@ void text_poke_sync(void) { } -#ifdef CONFIG_PM_SLEEP void uml_pm_wake (void ) {pm_system_wakeup (); } +#ifdef CONFIG_PM_SLEEP static int init_pm_wake_signal (void ) {/*
arch/x86/purgatory/Makefile +5 -0
@@ -14,6 +14,11 @@ $(obj)/sha256.o: $(srctree)/lib/crypto/sha256.c FORCE CFLAGS_sha256.o := -D__DISABLE_EXPORTS +# When profile-guided optimization is enabled, llvm emits two different +# overlapping text sections, which is not supported by kexec. Remove profile +# optimization flags. +KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS)) + # When linking purgatory.ro with -r unresolved symbols are not checked, # also link a purgatory.chk binary without -r to check for unresolved symbols. PURGATORY_LDFLAGS := -e purgatory_start -nostdlib -z nodefaultlib
drivers/block/xen-blkfront.c +2 -1
@@ -792,7 +792,8 @@ static int blkif_queue_rw_req(struct request *req, struct blkfront_ring_info *ri ring_req->u.rw.handle = info->handle; ring_req->operation =rq_data_dir (req) ?BLKIF_OP_WRITE :BLKIF_OP_READ ; -if (req_op (req) ==REQ_OP_FLUSH || req->cmd_flags &REQ_FUA ) { +if (req_op (req) ==REQ_OP_FLUSH || + (req_op (req) ==REQ_OP_WRITE && (req->cmd_flags &REQ_FUA ))) {/* * Ideally we can do an unordered flush-to-disk. * In case the backend onlysupports barriers, use that.
drivers/char/agp/parisc-agp.c +14 -1
@@ -90,6 +90,9 @@ parisc_agp_tlbflush(struct agp_memory *mem) {struct _parisc_agp_info *info = &parisc_agp_info; +/* force fdc ops to be visible to IOMMU */ +asm_io_sync (); +writeq (info->gart_base |ilog2 (info->gart_size), info->ioc_regs+IOC_PCOM );readq (info->ioc_regs+IOC_PCOM );/* flush */ }
@@ -158,6 +161,7 @@ parisc_agp_insert_memory(struct agp_memory *mem, off_t pg_start, int type) info->gatt[j] =parisc_agp_mask_memory (agp_bridge, paddr, type); +asm_io_fdc (&info->gatt[j]); } }
@@ -191,7 +195,16 @@ static unsigned long parisc_agp_mask_memory(struct agp_bridge_data *bridge, dma_addr_t addr, int type) { - return SBA_PDIR_VALID_BIT | addr; + unsigned ci; /* coherent index */ +dma_addr_t pa; + + pa = addr &IOVP_MASK ; + asm("lci 0(%1), %0" :"=r" (ci) :"r" (phys_to_virt (pa))); + + pa |= (ci >>PAGE_SHIFT ) &0xff ;/* move CI (8 bits) into lowest byte */ + pa |=SBA_PDIR_VALID_BIT ;/* set "valid" bit */ + +return cpu_to_le64 (pa); } static void
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +3 -1
@@ -6702,8 +6702,10 @@ static int gfx_v10_0_kiq_resume(struct amdgpu_device *adev)return r; r =amdgpu_bo_kmap (ring->mqd_obj, (void **)&ring->mqd_ptr); -if (unlikely (r !=0 )) +if (unlikely (r !=0 )) { +amdgpu_bo_unreserve (ring->mqd_obj);return r; + }gfx_v10_0_kiq_init_queue (ring);amdgpu_bo_kunmap (ring->mqd_obj);
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +3 -1
@@ -3800,8 +3800,10 @@ static int gfx_v9_0_kiq_resume(struct amdgpu_device *adev)return r; r =amdgpu_bo_kmap (ring->mqd_obj, (void **)&ring->mqd_ptr); -if (unlikely (r !=0 )) +if (unlikely (r !=0 )) { +amdgpu_bo_unreserve (ring->mqd_obj);return r; + }gfx_v9_0_kiq_init_queue (ring);amdgpu_bo_kunmap (ring->mqd_obj);
drivers/gpu/drm/i915/display/intel_bw.c +8 -72
109 lines not on this page · raw message
drivers/gpu/drm/i915/i915_drv.c +4 -0
@@ -84,6 +84,7 @@#include "intel_gvt.h" #include "intel_memory_region.h" #include "intel_pm.h" +#include "intel_sideband.h" #include "vlv_suspend.h" static struct drm_driver driver;
@@ -608,6 +609,9 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv) goto err_msi;intel_opregion_setup (dev_priv); + +intel_pcode_init (dev_priv); +/* * Fill the dram structure to get the system raw bandwidth and * dram info. This will be used for memory latency calculation.
drivers/gpu/drm/i915/i915_drv.h +1 -0
@@ -1148,6 +1148,7 @@ struct drm_i915_private {INTEL_DRAM_LPDDR3 , INTEL_DRAM_LPDDR4 } type; +u8 num_qgv_points; } dram_info;struct intel_bw_info {
drivers/gpu/drm/i915/i915_reg.h +3 -0
@@ -9235,6 +9235,9 @@ enum {#define GEN9_SAGV_DISABLE 0x0#define GEN9_SAGV_IS_DISABLED 0x1#define GEN9_SAGV_ENABLE 0x3 +#define DG1_PCODE_STATUS 0x7E +#define DG1_UNCORE_GET_INIT_STATUS 0x0 +#define DG1_UNCORE_INIT_STATUS_COMPLETE 0x1#define GEN12_PCODE_READ_SAGV_BLOCK_TIME_US 0x23#define GEN6_PCODE_DATA _MMIO(0x138128)#define GEN6_PCODE_FREQ_IA_RATIO_SHIFT 8
drivers/gpu/drm/i915/intel_dram.c +81 -1
100 lines not on this page · raw message
drivers/gpu/drm/i915/intel_sideband.c +15 -0
@@ -555,3 +555,18 @@ int skl_pcode_request(struct drm_i915_private *i915, u32 mbox, u32 request,return ret ? ret : status;#undef COND } + +void intel_pcode_init (struct drm_i915_private *i915) +{ +int ret; + +if (!IS_DGFX (i915)) +return ; + + ret =skl_pcode_request (i915,DG1_PCODE_STATUS , +DG1_UNCORE_GET_INIT_STATUS , +DG1_UNCORE_INIT_STATUS_COMPLETE , +DG1_UNCORE_INIT_STATUS_COMPLETE ,50 ); +if (ret) +drm_err (&i915->drm,"Pcode did not report uncore initialization completion!\n" ); +}
drivers/gpu/drm/i915/intel_sideband.h +2 -0
@@ -138,4 +138,6 @@ int sandybridge_pcode_write_timeout(struct drm_i915_private *i915, u32 mbox,int skl_pcode_request (struct drm_i915_private *i915,u32 mbox,u32 request,u32 reply_mask,u32 reply,int timeout_base_ms); +void intel_pcode_init (struct drm_i915_private *i915); +#endif /* _INTEL_SIDEBAND_H */
drivers/gpu/drm/nouveau/nouveau_acpi.c +3 -0
@@ -220,6 +220,9 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_outint optimus_funcs;struct pci_dev *parent_pdev; +if (pdev->vendor !=PCI_VENDOR_ID_NVIDIA ) +return ; + *has_pr3 = false; parent_pdev =pci_upstream_bridge (pdev);if (parent_pdev) {
drivers/gpu/drm/nouveau/nouveau_connector.c +4 -3
@@ -726,7 +726,8 @@ nouveau_connector_detect_lvds(struct drm_connector *connector, bool force)#endif nouveau_connector_set_edid (nv_connector, edid); -nouveau_connector_set_encoder (connector, nv_encoder); +if (nv_encoder) +nouveau_connector_set_encoder (connector, nv_encoder);return status; }
@@ -946,7 +947,7 @@ nouveau_connector_get_modes(struct drm_connector *connector)/* Determine display colour depth for everything except LVDS now, * DP requires this before mode_valid() is called. */ -if (connector->connector_type !=DRM_MODE_CONNECTOR_LVDS ) +if (connector->connector_type !=DRM_MODE_CONNECTOR_LVDS && nv_connector->native_mode)nouveau_connector_detect_depth (connector);/* Find the native mode if this is a digital panel, if we didn't
@@ -967,7 +968,7 @@ nouveau_connector_get_modes(struct drm_connector *connector)* "native" mode as some VBIOS tables require us to use the * pixel clock as part of the lookup... */ -if (connector->connector_type ==DRM_MODE_CONNECTOR_LVDS ) +if (connector->connector_type ==DRM_MODE_CONNECTOR_LVDS && nv_connector->native_mode)nouveau_connector_detect_depth (connector);if (nv_encoder->dcb->type ==DCB_OUTPUT_TV )
drivers/gpu/drm/nouveau/nouveau_drm.c +10 -4
@@ -124,10 +124,16 @@ nouveau_name(struct drm_device *dev)static inline bool nouveau_cli_work_ready (struct dma_fence *fence) { -if (!dma_fence_is_signaled (fence)) -return false; -dma_fence_put (fence); -return true; +bool ret = true; + +spin_lock_irq (fence->lock); +if (!dma_fence_is_signaled_locked (fence)) + ret = false; +spin_unlock_irq (fence->lock); + +if (ret == true) +dma_fence_put (fence); +return ret; } static void
drivers/infiniband/core/cma.c +2 -2
@@ -3069,7 +3069,7 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv) route->path_rec->traffic_class = tos; route->path_rec->mtu =iboe_get_mtu (ndev->mtu); route->path_rec->rate_selector =IB_SA_EQ ; - route->path_rec->rate =iboe_get_rate (ndev); + route->path_rec->rate =IB_RATE_PORT_CURRENT ;dev_put (ndev); route->path_rec->packet_life_time_selector =IB_SA_EQ ;/* In case ACK timeout is set, use this value to calculate
@@ -4719,7 +4719,7 @@ static int cma_iboe_join_multicast(struct rdma_id_private *id_priv,if (!ndev)return -ENODEV ; - ib.rec.rate =iboe_get_rate (ndev); + ib.rec.rate =IB_RATE_PORT_CURRENT ; ib.rec.hop_limit =1 ; ib.rec.mtu =iboe_get_mtu (ndev->mtu);
drivers/infiniband/core/uverbs_cmd.c +6 -1
@@ -1842,8 +1842,13 @@ static int modify_qp(struct uverbs_attr_bundle *attrs, attr->path_mtu = cmd->base.path_mtu;if (cmd->base.attr_mask &IB_QP_PATH_MIG_STATE ) attr->path_mig_state = cmd->base.path_mig_state; -if (cmd->base.attr_mask &IB_QP_QKEY ) +if (cmd->base.attr_mask &IB_QP_QKEY ) { +if (cmd->base.qkey &IB_QP_SET_QKEY && !capable (CAP_NET_RAW )) { + ret = -EPERM ; + goto release_qp; + } attr->qkey = cmd->base.qkey; + }if (cmd->base.attr_mask &IB_QP_RQ_PSN ) attr->rq_psn = cmd->base.rq_psn;if (cmd->base.attr_mask &IB_QP_SQ_PSN )
drivers/infiniband/core/uverbs_main.c +5 -7
@@ -222,8 +222,12 @@ static ssize_t ib_uverbs_event_read(struct ib_uverbs_event_queue *ev_queue,spin_lock_irq (&ev_queue->lock);while (list_empty (&ev_queue->event_list)) { -spin_unlock_irq (&ev_queue->lock); +if (ev_queue->is_closed) { +spin_unlock_irq (&ev_queue->lock); +return -EIO ; + } +spin_unlock_irq (&ev_queue->lock);if (filp->f_flags &O_NONBLOCK )return -EAGAIN ;
@@ -233,12 +237,6 @@ static ssize_t ib_uverbs_event_read(struct ib_uverbs_event_queue *ev_queue,return -ERESTARTSYS ;spin_lock_irq (&ev_queue->lock); - -/* If device was disassociated and no event exists set an error */ -if (list_empty (&ev_queue->event_list) && ev_queue->is_closed) { -spin_unlock_irq (&ev_queue->lock); -return -EIO ; - } } event = list_entry(ev_queue->event_list.next, struct ib_uverbs_event, list);
drivers/infiniband/hw/mlx5/main.c +3 -0
@@ -4746,6 +4746,9 @@ const struct mlx5_ib_profile raw_eth_profile = {STAGE_CREATE (MLX5_IB_STAGE_POST_IB_REG_UMR , mlx5_ib_stage_post_ib_reg_umr_init,NULL ), +STAGE_CREATE (MLX5_IB_STAGE_DELAY_DROP , + mlx5_ib_stage_delay_drop_init, + mlx5_ib_stage_delay_drop_cleanup),STAGE_CREATE (MLX5_IB_STAGE_RESTRACK , mlx5_ib_restrack_init, NULL),
drivers/infiniband/sw/rxe/rxe_qp.c +6 -10
@@ -192,6 +192,9 @@ static void rxe_qp_init_misc(struct rxe_dev *rxe, struct rxe_qp *qp,spin_lock_init (&qp->rq.producer_lock);spin_lock_init (&qp->rq.consumer_lock); +skb_queue_head_init (&qp->req_pkts); +skb_queue_head_init (&qp->resp_pkts); +atomic_set (&qp->ssn,0 );atomic_set (&qp->skb_out,0 ); }
@@ -247,12 +250,8 @@ static int rxe_qp_init_req(struct rxe_dev *rxe, struct rxe_qp *qp, qp->req.opcode =-1 ; qp->comp.opcode =-1 ; -skb_queue_head_init (&qp->req_pkts); - -rxe_init_task (rxe, &qp->req.task, qp, - rxe_requester,"req" ); -rxe_init_task (rxe, &qp->comp.task, qp, - rxe_completer,"comp" ); +rxe_init_task (&qp->req.task, qp, rxe_requester); +rxe_init_task (&qp->comp.task, qp, rxe_completer); qp->qp_timeout_jiffies =0 ;/* Can't be set for UD/UC in modify_qp */ if (init->qp_type ==IB_QPT_RC ) {
@@ -296,10 +295,7 @@ static int rxe_qp_init_resp(struct rxe_dev *rxe, struct rxe_qp *qp, } } -skb_queue_head_init (&qp->resp_pkts); - -rxe_init_task (rxe, &qp->resp.task, qp, - rxe_responder,"resp" ); +rxe_init_task (&qp->resp.task, qp, rxe_responder); qp->resp.opcode =OPCODE_NONE ; qp->resp.msn =0 ;
drivers/infiniband/sw/rxe/rxe_task.c +1 -4
@@ -95,13 +95,10 @@ void rxe_do_task(struct tasklet_struct *t) task->ret = ret; } -int rxe_init_task (void *obj,struct rxe_task *task, -void *arg,int (*func)(void *),char *name) +int rxe_init_task (struct rxe_task *task,void *arg,int (*func)(void *)) { - task->obj = obj; task->arg = arg; task->func = func; -snprintf (task->name,sizeof (task->name),"%s" , name); task->destroyed = false;tasklet_setup (&task->tasklet, rxe_do_task);
drivers/infiniband/sw/rxe/rxe_task.h +1 -4
@@ -19,14 +19,12 @@ enum {* called again. */ struct rxe_task { -void *obj;struct tasklet_struct tasklet;int state;spinlock_t state_lock;/* spinlock for task state */ void *arg;int (*func)(void *arg);int ret; -char name[16 ];bool destroyed; };
@@ -35,8 +33,7 @@ struct rxe_task {* arg => parameter to pass to fcn * func => function to call until it returns != 0 */ -int rxe_init_task (void *obj,struct rxe_task *task, -void *arg,int (*func)(void *),char *name); +int rxe_init_task (struct rxe_task *task,void *arg,int (*func)(void *));/* cleanup task */ void rxe_cleanup_task (struct rxe_task *task);
drivers/infiniband/ulp/isert/ib_isert.c +12 -4
@@ -656,9 +656,13 @@ static int isert_connect_error(struct rdma_cm_id *cma_id) {struct isert_conn *isert_conn = cma_id->qp->qp_context; +struct isert_np *isert_np = cma_id->context;ib_drain_qp (isert_conn->qp); + +mutex_lock (&isert_np->mutex);list_del_init (&isert_conn->node); +mutex_unlock (&isert_np->mutex); isert_conn->cm_id =NULL ;isert_put_conn (isert_conn);
@@ -2421,6 +2425,7 @@ isert_free_np(struct iscsi_np *np) {struct isert_np *isert_np = np->np_context;struct isert_conn *isert_conn, *n; +LIST_HEAD (drop_conn_list);if (isert_np->cm_id)rdma_destroy_id (isert_np->cm_id);
@@ -2440,7 +2445,7 @@ isert_free_np(struct iscsi_np *np) node) {isert_info ("cleaning isert_conn %p state (%d)\n" , isert_conn, isert_conn->state); -isert_connect_release (isert_conn); +list_move_tail (&isert_conn->node, &drop_conn_list); } }
@@ -2451,11 +2456,16 @@ isert_free_np(struct iscsi_np *np) node) {isert_info ("cleaning isert_conn %p state (%d)\n" , isert_conn, isert_conn->state); -isert_connect_release (isert_conn); +list_move_tail (&isert_conn->node, &drop_conn_list); } }mutex_unlock (&isert_np->mutex); +list_for_each_entry_safe (isert_conn, n, &drop_conn_list, node) { +list_del_init (&isert_conn->node); +isert_connect_release (isert_conn); + } + np->np_context =NULL ;kfree (isert_np); }
@@ -2550,8 +2560,6 @@ static void isert_wait_conn(struct iscsi_conn *conn)isert_put_unsol_pending_cmds (conn);isert_wait4cmds (conn);isert_wait4logout (isert_conn); - -queue_work (isert_release_wq, &isert_conn->release_work); }static void isert_free_conn (struct iscsi_conn *conn)
drivers/infiniband/ulp/rtrs/rtrs.c +3 -1
@@ -37,8 +37,10 @@ struct rtrs_iu *rtrs_iu_alloc(u32 queue_size, size_t size, gfp_t gfp_mask, goto err; iu->dma_addr =ib_dma_map_single (dma_dev, iu->buf, size, dir); -if (ib_dma_mapping_error (dma_dev, iu->dma_addr)) +if (ib_dma_mapping_error (dma_dev, iu->dma_addr)) { +kfree (iu->buf); goto err; + } iu->cqe.done = done; iu->size = size;
drivers/irqchip/irq-gic-common.c +8 -2
@@ -29,7 +29,13 @@ void gic_enable_of_quirks(const struct device_node *np, const struct gic_quirk *quirks, void *data) {for (; quirks->desc; quirks++) { -if (!of_device_is_compatible (np, quirks->compatible)) +if (!quirks->compatible && !quirks->property) +continue ; +if (quirks->compatible && + !of_device_is_compatible (np, quirks->compatible)) +continue ; +if (quirks->property && + !of_property_read_bool (np, quirks->property))continue ;if (quirks->init (data)) pr_info("GIC: enabling workaround for %s\n",
@@ -41,7 +47,7 @@ void gic_enable_quirks(u32 iidr, const struct gic_quirk *quirks, void *data) {for (; quirks->desc; quirks++) { -if (quirks->compatible) +if (quirks->compatible || quirks->property)continue ;if (quirks->iidr != (quirks->mask & iidr))continue ;
drivers/irqchip/irq-gic-common.h +1 -0
@@ -13,6 +13,7 @@struct gic_quirk {const char *desc;const char *compatible; +const char *property;bool (*init)(void *data);u32 iidr;u32 mask;
drivers/irqchip/irq-gic-v3.c +20 -0
@@ -35,6 +35,7 @@#define FLAGS_WORKAROUND_GICR_WAKER_MSM8996 (1ULL << 0)#define FLAGS_WORKAROUND_CAVIUM_ERRATUM_38539 (1ULL << 1) +#define FLAGS_WORKAROUND_MTK_GICR_SAVE (1ULL << 2)#define GIC_IRQ_TYPE_PARTITION (GIC_IRQ_TYPE_LPI + 1)
@@ -1587,6 +1588,15 @@ static bool gic_enable_quirk_msm8996(void *data)return true; } +static bool gic_enable_quirk_mtk_gicr (void *data) +{ +struct gic_chip_data *d = data; + + d->flags |=FLAGS_WORKAROUND_MTK_GICR_SAVE ; + +return true; +} +static bool gic_enable_quirk_cavium_38539 (void *data) {struct gic_chip_data *d = data;
@@ -1622,6 +1632,11 @@ static const struct gic_quirk gic_quirks[] = { .compatible = "qcom,msm8996-gic-v3", .init = gic_enable_quirk_msm8996, }, + { + .desc = "GICv3: Mediatek Chromebook GICR save problem", + .property = "mediatek,broken-save-restore-fw", + .init = gic_enable_quirk_mtk_gicr, + }, { .desc = "GICv3: HIP06 erratum 161010803", .iidr = 0x0204043b,
@@ -1658,6 +1673,11 @@ static void gic_enable_nmi_support(void)if (!gic_prio_masking_enabled ())return ; +if (gic_data.flags &FLAGS_WORKAROUND_MTK_GICR_SAVE ) { +pr_warn ("Skipping NMI enable due to firmware issues\n" ); +return ; + } + ppi_nmi_refs =kcalloc (gic_data.ppi_nr,sizeof (*ppi_nmi_refs),GFP_KERNEL );if (!ppi_nmi_refs)return ;
drivers/media/dvb-core/dvbdev.c +68 -20
177 lines not on this page · raw message
drivers/mmc/core/block.c +5 -0
@@ -253,6 +253,7 @@ static ssize_t power_ro_lock_store(struct device *dev, goto out_put; }req_to_mmc_queue_req (req)->drv_op =MMC_DRV_OP_BOOT_WP ; +req_to_mmc_queue_req (req)->drv_op_result = -EIO ;blk_execute_rq (mq->queue,NULL , req,0 ); ret =req_to_mmc_queue_req (req)->drv_op_result;blk_put_request (req);
@@ -638,6 +639,7 @@ static int mmc_blk_ioctl_cmd(struct mmc_blk_data *md, idatas[0 ] = idata;req_to_mmc_queue_req (req)->drv_op = rpmb ?MMC_DRV_OP_IOCTL_RPMB :MMC_DRV_OP_IOCTL ; +req_to_mmc_queue_req (req)->drv_op_result = -EIO ;req_to_mmc_queue_req (req)->drv_op_data = idatas;req_to_mmc_queue_req (req)->ioc_count =1 ;blk_execute_rq (mq->queue,NULL , req,0 );
@@ -707,6 +709,7 @@ static int mmc_blk_ioctl_multi_cmd(struct mmc_blk_data *md, }req_to_mmc_queue_req (req)->drv_op = rpmb ?MMC_DRV_OP_IOCTL_RPMB :MMC_DRV_OP_IOCTL ; +req_to_mmc_queue_req (req)->drv_op_result = -EIO ;req_to_mmc_queue_req (req)->drv_op_data = idata;req_to_mmc_queue_req (req)->ioc_count = num_of_cmds;blk_execute_rq (mq->queue,NULL , req,0 );
@@ -2749,6 +2752,7 @@ static int mmc_dbg_card_status_get(void *data, u64 *val)if (IS_ERR (req))return PTR_ERR (req);req_to_mmc_queue_req (req)->drv_op =MMC_DRV_OP_GET_CARD_STATUS ; +req_to_mmc_queue_req (req)->drv_op_result = -EIO ;blk_execute_rq (mq->queue,NULL , req,0 ); ret =req_to_mmc_queue_req (req)->drv_op_result;if (ret >=0 ) {
@@ -2787,6 +2791,7 @@ static int mmc_ext_csd_open(struct inode *inode, struct file *filp) goto out_free; }req_to_mmc_queue_req (req)->drv_op =MMC_DRV_OP_GET_EXT_CSD ; +req_to_mmc_queue_req (req)->drv_op_result = -EIO ;req_to_mmc_queue_req (req)->drv_op_data = &ext_csd;blk_execute_rq (mq->queue,NULL , req,0 ); err =req_to_mmc_queue_req (req)->drv_op_result;
drivers/net/ethernet/freescale/enetc/enetc_qos.c +2 -2
@@ -196,8 +196,8 @@ int enetc_setup_tc_cbs(struct net_device *ndev, void *type_data)int bw_sum =0 ;u8 bw; - prio_top =netdev_get_prio_tc_map (ndev, tc_nums -1 ); - prio_next =netdev_get_prio_tc_map (ndev, tc_nums -2 ); + prio_top = tc_nums -1 ; + prio_next = tc_nums -2 ;/* Support highest prio and second prio tc in cbs mode */ if (tc != prio_top && tc != prio_next)
drivers/net/ethernet/intel/iavf/iavf.h +1 -1
@@ -398,7 +398,7 @@ void iavf_set_ethtool_ops(struct net_device *netdev);void iavf_update_stats (struct iavf_adapter *adapter);void iavf_reset_interrupt_capability (struct iavf_adapter *adapter);int iavf_init_interrupt_scheme (struct iavf_adapter *adapter); -void iavf_irq_enable_queues (struct iavf_adapter *adapter,u32 mask); +void iavf_irq_enable_queues (struct iavf_adapter *adapter);void iavf_free_all_tx_resources (struct iavf_adapter *adapter);void iavf_free_all_rx_resources (struct iavf_adapter *adapter);
drivers/net/ethernet/intel/iavf/iavf_main.c +6 -9
@@ -234,21 +234,18 @@ static void iavf_irq_disable(struct iavf_adapter *adapter) }/** -* iavf_irq_enable_queues - Enable interrupt for specified queues +* iavf_irq_enable_queues - Enable interrupt for all queues * @adapter: board private structure -* @mask: bitmap of queues to enable **/ -void iavf_irq_enable_queues (struct iavf_adapter *adapter,u32 mask) +void iavf_irq_enable_queues (struct iavf_adapter *adapter) {struct iavf_hw *hw = &adapter->hw;int i;for (i =1 ; i < adapter->num_msix_vectors; i++) { -if (mask &BIT (i -1 )) { -wr32 (hw,IAVF_VFINT_DYN_CTLN1 (i -1 ), -IAVF_VFINT_DYN_CTLN1_INTENA_MASK | -IAVF_VFINT_DYN_CTLN1_ITR_INDX_MASK ); - } +wr32 (hw,IAVF_VFINT_DYN_CTLN1 (i -1 ), +IAVF_VFINT_DYN_CTLN1_INTENA_MASK | +IAVF_VFINT_DYN_CTLN1_ITR_INDX_MASK ); } }
@@ -262,7 +259,7 @@ void iavf_irq_enable(struct iavf_adapter *adapter, bool flush)struct iavf_hw *hw = &adapter->hw;iavf_misc_irq_enable (adapter); -iavf_irq_enable_queues (adapter, ~0 ); +iavf_irq_enable_queues (adapter);if (flush)iavf_flush (hw);
drivers/net/ethernet/intel/iavf/iavf_register.h +1 -1
@@ -40,7 +40,7 @@#define IAVF_VFINT_DYN_CTL01_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTL01_INTENA_SHIFT)#define IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT 3#define IAVF_VFINT_DYN_CTL01_ITR_INDX_MASK IAVF_MASK(0x3, IAVF_VFINT_DYN_CTL01_ITR_INDX_SHIFT) -#define IAVF_VFINT_DYN_CTLN1 (_INTVF) (0x00003800 + ((_INTVF) * 4))/* _i=0...15 */ /* Reset: VFR */ +#define IAVF_VFINT_DYN_CTLN1 (_INTVF) (0x00003800 + ((_INTVF) * 4))/* _i=0...63 */ /* Reset: VFR */ #define IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT 0#define IAVF_VFINT_DYN_CTLN1_INTENA_MASK IAVF_MASK(0x1, IAVF_VFINT_DYN_CTLN1_INTENA_SHIFT)#define IAVF_VFINT_DYN_CTLN1_SWINT_TRIG_SHIFT 2
drivers/net/ethernet/intel/igb/igb_ethtool.c +3 -0
@@ -822,6 +822,8 @@ static int igb_set_eeprom(struct net_device *netdev,*/ ret_val = hw->nvm.ops.read (hw, last_word,1 , &eeprom_buff[last_word - first_word]); +if (ret_val) + goto out; }/* Device's eeprom is always little-endian, word addressable */
@@ -841,6 +843,7 @@ static int igb_set_eeprom(struct net_device *netdev, hw->nvm.ops.update (hw);igb_set_fw_version (adapter); +out:kfree (eeprom_buff);return ret_val; }
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +2 -1
@@ -1385,7 +1385,8 @@ static int nix_check_txschq_alloc_req(struct rvu *rvu, int lvl, u16 pcifunc, free_cnt =rvu_rsrc_free_count (&txsch->schq); } -if (free_cnt < req_schq || req_schq >MAX_TXSCHQ_PER_FUNC ) +if (free_cnt < req_schq || req->schq[lvl] >MAX_TXSCHQ_PER_FUNC || + req->schq_contig[lvl] >MAX_TXSCHQ_PER_FUNC )return NIX_AF_ERR_TLX_ALLOC_FAIL ;/* If contiguous queues are needed, check for availability */
drivers/net/ipvlan/ipvlan_l3s.c +4 -0
@@ -102,6 +102,10 @@ static unsigned int ipvlan_nf_input(void *priv, struct sk_buff *skb, skb->dev = addr->master->dev; skb->skb_iif = skb->dev->ifindex; +#if IS_ENABLED (CONFIG_IPV6 ) +if (addr->atype ==IPVL_IPV6 ) +IP6CB (skb)->iif = skb->dev->ifindex; +#endif len = skb->len +ETH_HLEN ;ipvlan_count_rx (addr->master, len, true, false); out:
drivers/net/usb/qmi_wwan.c +2 -0
@@ -1156,7 +1156,9 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x05c6, 0x9080, 8)}, {QMI_FIXED_INTF(0x05c6, 0x9083, 3)}, {QMI_FIXED_INTF(0x05c6, 0x9084, 4)}, + {QMI_QUIRK_SET_DTR(0x05c6, 0x9091, 2)}, /* Compal RXM-G1 */ {QMI_FIXED_INTF(0x05c6, 0x90b2, 3)}, /* ublox R410M */ + {QMI_QUIRK_SET_DTR(0x05c6, 0x90db, 2)}, /* Compal RXM-G1 */ {QMI_FIXED_INTF(0x05c6, 0x920d, 0)}, {QMI_FIXED_INTF(0x05c6, 0x920d, 5)}, {QMI_QUIRK_SET_DTR(0x05c6, 0x9625, 4)}, /* YUGA CLM920-NC5 */
drivers/net/wan/lapbether.c +3 -0
@@ -341,6 +341,9 @@ static int lapbeth_new_device(struct net_device *dev)ASSERT_RTNL (); +if (dev->type !=ARPHRD_ETHER ) +return -EINVAL ; + ndev =alloc_netdev (sizeof (*lapbeth),"lapb%d" ,NET_NAME_UNKNOWN , lapbeth_setup);if (!ndev)
drivers/platform/x86/asus-nb-wmi.c +2 -0
@@ -507,6 +507,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0x71, { KEY_F13 } }, /* General-purpose button */ { KE_IGNORE, 0x79, }, /* Charger type dectection notification */ { KE_KEY, 0x7a, { KEY_ALS_TOGGLE } }, /* Ambient Light Sensor Toggle */ + { KE_IGNORE, 0x7B, }, /* Charger connect/disconnect notification */ { KE_KEY, 0x7c, { KEY_MICMUTE } }, { KE_KEY, 0x7D, { KEY_BLUETOOTH } }, /* Bluetooth Enable */ { KE_KEY, 0x7E, { KEY_BLUETOOTH } }, /* Bluetooth Disable */
@@ -532,6 +533,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0xA6, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + TV + HDMI */ { KE_KEY, 0xA7, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV + HDMI */ { KE_KEY, 0xB5, { KEY_CALC } }, + { KE_IGNORE, 0xC0, }, /* External display connect/disconnect notification */ { KE_KEY, 0xC4, { KEY_KBDILLUMUP } }, { KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } }, { KE_IGNORE, 0xC6, }, /* Ambient Light Sensor notification */
drivers/power/supply/ab8500_btemp.c +2 -4
@@ -921,10 +921,8 @@ static int ab8500_btemp_get_ext_psy_data(struct device *dev, void *data)*/ static void ab8500_btemp_external_power_changed (struct power_supply *psy) { -struct ab8500_btemp *di =power_supply_get_drvdata (psy); - -class_for_each_device (power_supply_class,NULL , - di->btemp_psy, ab8500_btemp_get_ext_psy_data); +class_for_each_device (power_supply_class,NULL , psy, + ab8500_btemp_get_ext_psy_data); }/* ab8500 btemp driver interrupts and their respective isr */
drivers/power/supply/ab8500_fg.c +2 -4
@@ -2380,10 +2380,8 @@ static int ab8500_fg_init_hw_registers(struct ab8500_fg *di)*/ static void ab8500_fg_external_power_changed (struct power_supply *psy) { -struct ab8500_fg *di =power_supply_get_drvdata (psy); - -class_for_each_device (power_supply_class,NULL , - di->fg_psy, ab8500_fg_get_ext_psy_data); +class_for_each_device (power_supply_class,NULL , psy, + ab8500_fg_get_ext_psy_data); }/**
drivers/power/supply/bq27xxx_battery.c +2 -4
@@ -1018,10 +1018,8 @@ static int poll_interval_param_set(const char *val, const struct kernel_param *kreturn ret;mutex_lock (&bq27xxx_list_lock); -list_for_each_entry (di, &bq27xxx_battery_devices, list) { -cancel_delayed_work_sync (&di->work); -schedule_delayed_work (&di->work,0 ); - } +list_for_each_entry (di, &bq27xxx_battery_devices, list) +mod_delayed_work (system_wq, &di->work,0 );mutex_unlock (&bq27xxx_list_lock);return ret;
drivers/power/supply/power_supply_core.c +6 -2
@@ -347,6 +347,10 @@ static int __power_supply_is_system_supplied(struct device *dev, void *data)struct power_supply *psy =dev_get_drvdata (dev);unsigned int *count = data; +if (!psy->desc->get_property (psy,POWER_SUPPLY_PROP_SCOPE , &ret)) +if (ret.intval ==POWER_SUPPLY_SCOPE_DEVICE ) +return 0 ; + (*count)++;if (psy->desc->type !=POWER_SUPPLY_TYPE_BATTERY ) if (!psy->desc->get_property(psy, POWER_SUPPLY_PROP_ONLINE,
@@ -365,8 +369,8 @@ int power_supply_is_system_supplied(void) __power_supply_is_system_supplied);/* -* If no power class device was found at all, most probably we are -* running on a desktop system, so assume we are on mains power. +* If no system scope power class device was found at all, most probably we +* are running on a desktop system, so assume we are on mains power. */ if (count ==0 )return 1 ;
drivers/power/supply/power_supply_sysfs.c +2 -1
@@ -276,7 +276,8 @@ static ssize_t power_supply_show_property(struct device *dev,if (ret <0 ) {if (ret == -ENODATA ) -dev_dbg (dev,"driver has no data for `%s' property\n" , +dev_dbg_ratelimited (dev, +"driver has no data for `%s' property\n" , attr->attr.name);else if (ret != -ENODEV && ret != -EAGAIN ) dev_err_ratelimited(dev,
drivers/power/supply/sc27xx_fuel_gauge.c +1 -8
@@ -733,13 +733,6 @@ static int sc27xx_fgu_set_property(struct power_supply *psy,return ret; } -static void sc27xx_fgu_external_power_changed (struct power_supply *psy) -{ -struct sc27xx_fgu_data *data =power_supply_get_drvdata (psy); - -power_supply_changed (data->battery); -} -static int sc27xx_fgu_property_is_writeable (struct power_supply *psy,enum power_supply_property psp) {
@@ -774,7 +767,7 @@ static const struct power_supply_desc sc27xx_fgu_desc = { .num_properties = ARRAY_SIZE(sc27xx_fgu_props), .get_property = sc27xx_fgu_get_property, .set_property = sc27xx_fgu_set_property, - .external_power_changed = sc27xx_fgu_external_power_changed, + .external_power_changed = power_supply_changed, .property_is_writeable = sc27xx_fgu_property_is_writeable, .no_thermal = true, };
drivers/regulator/core.c +2 -2
@@ -5032,7 +5032,7 @@ static void rdev_init_debugfs(struct regulator_dev *rdev) } rdev->debugfs =debugfs_create_dir (rname, debugfs_root); -if (!rdev->debugfs) { +if (IS_ERR (rdev->debugfs)) {rdev_warn (rdev,"Failed to create debugfs directory\n" );return ; }
@@ -5937,7 +5937,7 @@ static int __init regulator_init(void) ret =class_register (®ulator_class); debugfs_root =debugfs_create_dir ("regulator" ,NULL ); -if (!debugfs_root) +if (IS_ERR (debugfs_root))pr_warn ("regulator: Failed to create debugfs directory\n" );#ifdef CONFIG_DEBUG_FS
drivers/spi/spi-fsl-dspi.c +15 -0
@@ -975,7 +975,9 @@ static int dspi_transfer_one_message(struct spi_controller *ctlr,static int dspi_setup (struct spi_device *spi) {struct fsl_dspi *dspi =spi_controller_get_devdata (spi->controller); +u32 period_ns =DIV_ROUND_UP (NSEC_PER_SEC , spi->max_speed_hz);unsigned char br =0 , pbr =0 , pcssck =0 , cssck =0 ; +u32 quarter_period_ns =DIV_ROUND_UP (period_ns,4 );u32 cs_sck_delay =0 , sck_cs_delay =0 ;struct fsl_dspi_platform_data *pdata;unsigned char pasc =0 , asc =0 ;
@@ -1003,6 +1005,19 @@ static int dspi_setup(struct spi_device *spi) sck_cs_delay = pdata->sck_cs_delay; } +/* Since tCSC and tASC apply to continuous transfers too, avoid SCK +* glitches of half a cycle by never allowing tCSC + tASC to go below +* half a SCK period. +*/ +if (cs_sck_delay < quarter_period_ns) + cs_sck_delay = quarter_period_ns; +if (sck_cs_delay < quarter_period_ns) + sck_cs_delay = quarter_period_ns; + +dev_dbg (&spi->dev, +"DSPI controller timing params: CS-to-SCK delay %u ns, SCK-to-CS delay %u ns\n" , + cs_sck_delay, sck_cs_delay); + clkrate =clk_get_rate (dspi->clk);hz_to_spi_baud (&pbr, &br, spi->max_speed_hz, clkrate);
drivers/tty/serial/lantiq.c +1 -0
@@ -274,6 +274,7 @@ lqasc_err_int(int irq, void *_port)struct ltq_uart_port *ltq_port =to_ltq_uart_port (port);spin_lock_irqsave (<q_port->lock, flags); +__raw_writel (ASC_IRNCR_EIR , port->membase +LTQ_ASC_IRNCR );/* clear any pending interrupts */ asc_update_bits (0 ,ASCWHBSTATE_CLRPE |ASCWHBSTATE_CLRFE |ASCWHBSTATE_CLRROE , port->membase +LTQ_ASC_WHBSTATE );
drivers/usb/dwc3/gadget.c +1 -0
@@ -180,6 +180,7 @@ static void dwc3_gadget_del_and_unmap_request(struct dwc3_ep *dep,list_del (&req->list); req->remaining =0 ; req->needs_extra_trb = false; + req->num_trbs =0 ;if (req->request.status == -EINPROGRESS ) req->request.status = status;
drivers/usb/serial/option.c +16 -0
@@ -248,6 +248,8 @@ static void option_instat_callback(struct urb *urb);#define QUECTEL_VENDOR_ID 0x2c7c/* These Quectel products use Quectel's vendor ID */ #define QUECTEL_PRODUCT_EC21 0x0121 +#define QUECTEL_PRODUCT_EM061K_LTA 0x0123 +#define QUECTEL_PRODUCT_EM061K_LMS 0x0124#define QUECTEL_PRODUCT_EC25 0x0125#define QUECTEL_PRODUCT_EG91 0x0191#define QUECTEL_PRODUCT_EG95 0x0195
@@ -266,6 +268,8 @@ static void option_instat_callback(struct urb *urb);#define QUECTEL_PRODUCT_RM520N 0x0801#define QUECTEL_PRODUCT_EC200U 0x0901#define QUECTEL_PRODUCT_EC200S_CN 0x6002 +#define QUECTEL_PRODUCT_EM061K_LWW 0x6008 +#define QUECTEL_PRODUCT_EM061K_LCN 0x6009#define QUECTEL_PRODUCT_EC200T 0x6026#define QUECTEL_PRODUCT_RM500K 0x7001
@@ -1189,6 +1193,18 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0x00, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LMS, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LMS, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LMS, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LTA, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LTA, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LTA, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0xff, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff), .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
fs/afs/vl_probe.c +2 -2
@@ -115,8 +115,8 @@ void afs_vlserver_probe_result(struct afs_call *call) } } -if (rxrpc_kernel_get_srtt (call->net->socket, call->rxcall, &rtt_us) && - rtt_us < server->probe.rtt) { +rxrpc_kernel_get_srtt (call->net->socket, call->rxcall, &rtt_us); +if (rtt_us < server->probe.rtt) { server->probe.rtt = rtt_us; server->rtt = rtt_us; alist->preferred = index;
fs/btrfs/block-group.c +12 -2
@@ -2279,10 +2279,20 @@ int btrfs_inc_block_group_ro(struct btrfs_block_group *cache, } ret =inc_block_group_ro (cache,0 ); -if (!do_chunk_alloc || ret == -ETXTBSY ) - goto unlock_out;if (!ret) goto out; +if (ret == -ETXTBSY ) + goto unlock_out; + +/* +* Skip chunk alloction if the bg is SYSTEM, this is to avoid system +* chunk allocation storm to exhaust the system chunk array. Otherwise +* we still want to try our best to mark the block group read-only. +*/ +if (!do_chunk_alloc && ret == -ENOSPC && + (cache->flags &BTRFS_BLOCK_GROUP_SYSTEM )) + goto unlock_out; + alloc_flags =btrfs_get_alloc_profile (fs_info, cache->space_info->flags); ret =btrfs_chunk_alloc (trans, alloc_flags,CHUNK_ALLOC_FORCE );if (ret <0 )
fs/btrfs/file-item.c +3 -1
@@ -602,7 +602,9 @@ blk_status_t btrfs_csum_one_bio(struct btrfs_inode *inode, struct bio *bio, sums =kvzalloc (btrfs_ordered_sum_size (fs_info, bytes_left),GFP_KERNEL );memalloc_nofs_restore (nofs_flag); -BUG_ON (!sums);/* -ENOMEM */ +if (!sums) +return BLK_STS_RESOURCE ; + sums->len = bytes_left; ordered =btrfs_lookup_ordered_extent (inode, offset);
fs/btrfs/scrub.c +8 -1
@@ -3559,13 +3559,20 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx, ret =btrfs_inc_block_group_ro (cache, sctx->is_dev_replace);if (ret ==0 ) { ro_set =1 ; - }else if (ret == -ENOSPC && !sctx->is_dev_replace) { + }else if (ret == -ENOSPC && !sctx->is_dev_replace && + !(cache->flags &BTRFS_BLOCK_GROUP_RAID56_MASK )) {/* * btrfs_inc_block_group_ro return -ENOSPC when it * failed in creating new chunk for metadata. * It is not a problem for scrub, because * metadata are always cowed, and our scrub paused * commit_transactions. +* +* For RAID56 chunks, we have to mark them read-only +* for scrub, as later we would use our own cache +* out of RAID56 realm. +* Thus we want the RAID56 bg to be marked RO to +* prevent RMW from screwing up out cache. */ ro_set =0 ; }else if (ret == -ETXTBSY ) {
fs/eventpoll.c +5 -1
@@ -1817,7 +1817,11 @@ static int ep_autoremove_wake_function(struct wait_queue_entry *wq_entry, {int ret =default_wake_function (wq_entry, mode, sync, key); -list_del_init (&wq_entry->entry); +/* +* Pairs with list_empty_careful in ep_poll, and ensures future loop +* iterations see the cause of this wakeup. +*/ +list_del_init_careful (&wq_entry->entry);return ret; }
fs/ext4/balloc.c +9 -11
@@ -322,17 +322,15 @@ static ext4_fsblk_t ext4_valid_block_bitmap_padding(struct super_block *sb,struct ext4_group_info *ext4_get_group_info (struct super_block *sb,ext4_group_t group) { -struct ext4_group_info **grp_info; -long indexv, indexh; - -if (unlikely (group >=EXT4_SB (sb)->s_groups_count)) { -ext4_error (sb,"invalid group %u" , group); -return NULL ; - } - indexv = group >> (EXT4_DESC_PER_BLOCK_BITS (sb)); - indexh = group & ((EXT4_DESC_PER_BLOCK (sb)) -1 ); - grp_info =sbi_array_rcu_deref (EXT4_SB (sb), s_group_info, indexv); -return grp_info[indexh]; +struct ext4_group_info **grp_info; +long indexv, indexh; + +if (unlikely (group >=EXT4_SB (sb)->s_groups_count)) +return NULL ; + indexv = group >> (EXT4_DESC_PER_BLOCK_BITS (sb)); + indexh = group & ((EXT4_DESC_PER_BLOCK (sb)) -1 ); + grp_info =sbi_array_rcu_deref (EXT4_SB (sb), s_group_info, indexv); +return grp_info[indexh]; }/*
fs/nilfs2/btnode.c +10 -2
@@ -285,6 +285,14 @@ void nilfs_btnode_abort_change_key(struct address_space *btnc,if (nbh ==NULL ) {/* blocksize == pagesize */ xa_erase_irq (&btnc->i_pages, newkey);unlock_page (ctxt->bh->b_page); - }else -brelse (nbh); + }else { +/* +* When canceling a buffer that a prepare operation has +* allocated to copy a node block to another location, use +* nilfs_btnode_delete() to initialize and release the buffer +* so that the buffer flags will not be in an inconsistent +* state when it is reallocated. +*/ +nilfs_btnode_delete (nbh); + } }
fs/nilfs2/sufile.c +9 -0
@@ -779,6 +779,15 @@ int nilfs_sufile_resize(struct inode *sufile, __u64 newnsegs) goto out_header; sui->ncleansegs -= nsegs - newnsegs; + +/* +* If the sufile is successfully truncated, immediately adjust +* the segment allocation space while locking the semaphore +* "mi_sem" so that nilfs_sufile_alloc() never allocates +* segments in the truncated space. +*/ + sui->allocmax = newnsegs -1 ; + sui->allocmin =0 ; } kaddr =kmap_atomic (header_bh->b_page);
fs/nilfs2/the_nilfs.c +43 -1
62 lines not on this page · raw message
fs/ocfs2/file.c +7 -1
@@ -2103,14 +2103,20 @@ static long ocfs2_fallocate(struct file *file, int mode, loff_t offset,struct ocfs2_space_resv sr;int change_size =1 ;int cmd =OCFS2_IOC_RESVSP64 ; +int ret =0 ;if (mode & ~(FALLOC_FL_KEEP_SIZE |FALLOC_FL_PUNCH_HOLE ))return -EOPNOTSUPP ;if (!ocfs2_writes_unwritten_extents (osb))return -EOPNOTSUPP ; -if (mode &FALLOC_FL_KEEP_SIZE ) +if (mode &FALLOC_FL_KEEP_SIZE ) { change_size =0 ; + }else { + ret =inode_newsize_ok (inode, offset + len); +if (ret) +return ret; + }if (mode &FALLOC_FL_PUNCH_HOLE ) cmd =OCFS2_IOC_UNRESVSP64 ;
fs/ocfs2/super.c +4 -2
@@ -955,8 +955,10 @@ static void ocfs2_disable_quotas(struct ocfs2_super *osb)for (type =0 ; type <OCFS2_MAXQUOTAS ; type++) {if (!sb_has_quota_loaded (sb, type))continue ; - oinfo =sb_dqinfo (sb, type)->dqi_priv; -cancel_delayed_work_sync (&oinfo->dqi_sync_work); +if (!sb_has_quota_suspended (sb, type)) { + oinfo =sb_dqinfo (sb, type)->dqi_priv; +cancel_delayed_work_sync (&oinfo->dqi_sync_work); + } inode =igrab (sb->s_dquot.files[type]);/* Turn off quotas. This will remove all dquot structures from * memory and so they will be automatically synced to global
include/linux/kernel.h +1 -142
155 lines not on this page · raw message
include/linux/kstrtox.h new file +155 -0
155 lines not on this page · raw message
include/linux/netdevice.h +0 -4
@@ -1759,7 +1759,6 @@ enum netdev_ml_priv_type {* @tipc_ptr: TIPC specific data * @atalk_ptr: AppleTalk link * @ip_ptr: IPv4 specific data -* @dn_ptr: DECnet specific data * @ip6_ptr: IPv6 specific data * @ax25_ptr: AX.25 specific data * @ieee80211_ptr: IEEE 802.11 specific data, assign before registering
@@ -2038,9 +2037,6 @@ struct net_device {void *atalk_ptr;#endif struct in_device __rcu *ip_ptr; -#if IS_ENABLED (CONFIG_DECNET ) -struct dn_dev __rcu *dn_ptr; -#endif struct inet6_dev __rcu *ip6_ptr;#if IS_ENABLED (CONFIG_AX25 )void *ax25_ptr;
include/linux/netfilter.h +0 -5
@@ -237,11 +237,6 @@ static inline int nf_hook(u_int8_t pf, unsigned int hook, struct net *net, hook_head =rcu_dereference (net->nf.hooks_bridge[hook]);#endif break ; -#if IS_ENABLED (CONFIG_DECNET ) -case NFPROTO_DECNET : - hook_head =rcu_dereference (net->nf.hooks_decnet[hook]); -break ; -#endif default :WARN_ON_ONCE (1 );break ;
include/linux/netfilter_defs.h +0 -8
@@ -7,14 +7,6 @@/* in/out/forward only */ #define NF_ARP_NUMHOOKS 3 -/* max hook is NF_DN_ROUTE (6), also see uapi/linux/netfilter_decnet.h */ -#define NF_DN_NUMHOOKS 7 - -#if IS_ENABLED (CONFIG_DECNET ) -/* Largest hook number + 1, see uapi/linux/netfilter_decnet.h */ -#define NF_MAX_HOOKS NF_DN_NUMHOOKS -#else #define NF_MAX_HOOKS NF_INET_NUMHOOKS -#endif #endif
include/linux/string.h +0 -7
@@ -2,7 +2,6 @@#ifndef _LINUX_STRING_H_#define _LINUX_STRING_H_ -#include <linux/compiler.h> /* for inline */ #include <linux/types.h> /* for size_t */ #include <linux/stddef.h> /* for NULL */
@@ -183,12 +182,6 @@ extern char **argv_split(gfp_t gfp, const char *str, int *argcp);extern void argv_free (char **argv);extern bool sysfs_streq (const char *s1,const char *s2); -extern int kstrtobool (const char *s,bool *res); -static inline int strtobool (const char *s,bool *res) -{ -return kstrtobool (s, res); -} -int match_string (const char *const *array,size_t n,const char *string);int __sysfs_match_string (const char *const *array,size_t n,const char *s);
include/linux/sunrpc/cache.h +1 -0
@@ -14,6 +14,7 @@#include <linux/kref.h> #include <linux/slab.h> #include <linux/atomic.h> +#include <linux/kstrtox.h> #include <linux/proc_fs.h> /*
include/media/dvbdev.h +15 -0
@@ -189,6 +189,21 @@ struct dvb_device {void *priv; }; +/** +* struct dvbdevfops_node - fops nodes registered in dvbdevfops_list +* +* @fops: Dynamically allocated fops for ->owner registration +* @type: type of dvb_device +* @template: dvb_device used for registration +* @list_head: list_head for dvbdevfops_list +*/ +struct dvbdevfops_node { +struct file_operations *fops; +enum dvb_device_type type; +const struct dvb_device *template; +struct list_head list_head; +}; +/** * dvb_device_get - Increase dvb_device reference *
include/net/dn.h deleted +0 -231
231 lines not on this page · raw message
include/net/dn_dev.h deleted +0 -199
199 lines not on this page · raw message
include/net/dn_fib.h deleted +0 -167
167 lines not on this page · raw message
include/net/dn_neigh.h deleted +0 -30
@@ -1,30 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _NET_DN_NEIGH_H -#define _NET_DN_NEIGH_H - -/* -* The position of the first two fields of -* this structure are critical - SJW -*/ -struct dn_neigh { -struct neighbour n; -__le16 addr; -unsigned long flags; -#define DN_NDFLAG_R1 0x0001/* Router L1 */ -#define DN_NDFLAG_R2 0x0002/* Router L2 */ -#define DN_NDFLAG_P3 0x0004/* Phase III Node */ -unsigned long blksize; -__u8 priority; -}; - -void dn_neigh_init (void ); -void dn_neigh_cleanup (void );
Lines of this file are not shown. View the raw message.
include/net/dn_nsp.h deleted +0 -195
195 lines not on this page · raw message
include/net/dn_route.h deleted +0 -115
115 lines not on this page · raw message
include/uapi/linux/dn.h deleted +0 -149
149 lines not on this page · raw message
include/uapi/linux/netfilter_decnet.h deleted +0 -72
72 lines not on this page · raw message
kernel/rcu/tree.c +35 -14
49 lines not on this page · raw message
lib/test_firmware.c +49 -23
72 lines not on this page · raw message
mm/memory_hotplug.c +89 -16
105 lines not on this page · raw message
net/decnet/Kconfig deleted +0 -43
43 lines not on this page · raw message
net/decnet/af_decnet.c deleted +0 -2400
2,400 lines not on this page · raw message
net/decnet/dn_dev.c deleted +0 -1435
1,435 lines not on this page · raw message
net/decnet/dn_fib.c deleted +0 -799
799 lines not on this page · raw message
net/decnet/dn_neigh.c deleted +0 -605
605 lines not on this page · raw message
net/decnet/dn_nsp_in.c deleted +0 -906
906 lines not on this page · raw message
net/decnet/dn_nsp_out.c deleted +0 -695
695 lines not on this page · raw message
net/decnet/dn_route.c deleted +0 -1923
1,923 lines not on this page · raw message
net/decnet/dn_rules.c deleted +0 -258
258 lines not on this page · raw message
net/decnet/dn_table.c deleted +0 -929
929 lines not on this page · raw message
net/decnet/dn_timer.c deleted +0 -104
104 lines not on this page · raw message
net/decnet/netfilter/dn_rtmsg.c deleted +0 -158
158 lines not on this page · raw message
net/decnet/sysctl_net_decnet.c deleted +0 -362
362 lines not on this page · raw message
sound/soc/dwc/dwc-i2s.c +9 -32
41 lines not on this page · 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.