Merge tag 'net-5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 14 Jul 2021 16:24:32 +0000 (09:24 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 14 Jul 2021 16:24:32 +0000 (09:24 -0700)
Pull networking fixes from Jakub Kicinski.
 "Including fixes from bpf and netfilter.

  Current release - regressions:

   - sock: fix parameter order in sock_setsockopt()

  Current release - new code bugs:

   - netfilter: nft_last:
       - fix incorrect arithmetic when restoring last used
       - honor NFTA_LAST_SET on restoration

  Previous releases - regressions:

   - udp: properly flush normal packet at GRO time

   - sfc: ensure correct number of XDP queues; don't allow enabling the
     feature if there isn't sufficient resources to Tx from any CPU

   - dsa: sja1105: fix address learning getting disabled on the CPU port

   - mptcp: addresses a rmem accounting issue that could keep packets in
     subflow receive buffers longer than necessary, delaying MPTCP-level
     ACKs

   - ip_tunnel: fix mtu calculation for ETHER tunnel devices

   - do not reuse skbs allocated from skbuff_fclone_cache in the napi
     skb cache, we'd try to return them to the wrong slab cache

   - tcp: consistently disable header prediction for mptcp

  Previous releases - always broken:

   - bpf: fix subprog poke descriptor tracking use-after-free

   - ipv6:
       - allocate enough headroom in ip6_finish_output2() in case
         iptables TEE is used
       - tcp: drop silly ICMPv6 packet too big messages to avoid
         expensive and pointless lookups (which may serve as a DDOS
         vector)
       - make sure fwmark is copied in SYNACK packets
       - fix 'disable_policy' for forwarded packets (align with IPv4)

   - netfilter: conntrack:
       - do not renew entry stuck in tcp SYN_SENT state
       - do not mark RST in the reply direction coming after SYN packet
         for an out-of-sync entry

   - mptcp: cleanly handle error conditions with MP_JOIN and syncookies

   - mptcp: fix double free when rejecting a join due to port mismatch

   - validate lwtstate->data before returning from skb_tunnel_info()

   - tcp: call sk_wmem_schedule before sk_mem_charge in zerocopy path

   - mt76: mt7921: continue to probe driver when fw already downloaded

   - bonding: fix multiple issues with offloading IPsec to (thru?) bond

   - stmmac: ptp: fix issues around Qbv support and setting time back

   - bcmgenet: always clear wake-up based on energy detection

  Misc:

   - sctp: move 198 addresses from unusable to private scope

   - ptp: support virtual clocks and timestamping

   - openvswitch: optimize operation for key comparison"

* tag 'net-5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (158 commits)
  net: dsa: properly check for the bridge_leave methods in dsa_switch_bridge_leave()
  sfc: add logs explaining XDP_TX/REDIRECT is not available
  sfc: ensure correct number of XDP queues
  sfc: fix lack of XDP TX queues - error XDP TX failed (-22)
  net: fddi: fix UAF in fza_probe
  net: dsa: sja1105: fix address learning getting disabled on the CPU port
  net: ocelot: fix switchdev objects synced for wrong netdev with LAG offload
  net: Use nlmsg_unicast() instead of netlink_unicast()
  octeontx2-pf: Fix uninitialized boolean variable pps
  ipv6: allocate enough headroom in ip6_finish_output2()
  net: hdlc: rename 'mod_init' & 'mod_exit' functions to be module-specific
  net: bridge: multicast: fix MRD advertisement router port marking race
  net: bridge: multicast: fix PIM hello router port marking race
  net: phy: marvell10g: fix differentiation of 88X3310 from 88X3340
  dsa: fix for_each_child.cocci warnings
  virtio_net: check virtqueue_add_sgs() return value
  mptcp: properly account bulk freed memory
  selftests: mptcp: fix case multiple subflows limited by server
  mptcp: avoid processing packet if a subflow reset
  mptcp: fix syncookie process if mptcp can not_accept new subflow
  ...

1  2 
MAINTAINERS
drivers/net/virtio_net.c

diff --combined MAINTAINERS
@@@ -299,6 -299,7 +299,6 @@@ M: William Breathitt Gray <vilhelm.gray
  M:    Syed Nayyar Waris <syednwaris@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/ABI/testing/sysfs-bus-counter-104-quad-8
  F:    drivers/counter/104-quad-8.c
  
  ACCES PCI-IDIO-16 GPIO DRIVER
@@@ -430,14 -431,6 +430,14 @@@ W:       https://01.org/linux-acp
  B:    https://bugzilla.kernel.org
  F:    drivers/acpi/acpi_video.c
  
 +ACPI VIOT DRIVER
 +M:    Jean-Philippe Brucker <jean-philippe@linaro.org>
 +L:    linux-acpi@vger.kernel.org
 +L:    iommu@lists.linux-foundation.org
 +S:    Maintained
 +F:    drivers/acpi/viot.c
 +F:    include/linux/acpi_viot.h
 +
  ACPI WMI DRIVER
  L:    platform-driver-x86@vger.kernel.org
  S:    Orphan
@@@ -752,12 -745,6 +752,12 @@@ L:       linux-crypto@vger.kernel.or
  S:    Maintained
  F:    drivers/crypto/allwinner/
  
 +ALLWINNER HARDWARE SPINLOCK SUPPORT
 +M:    Wilken Gottwalt <wilken.gottwalt@posteo.net>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwlock/allwinner,sun6i-hwspinlock.yaml
 +F:    drivers/hwspinlock/sun6i_hwspinlock.c
 +
  ALLWINNER THERMAL DRIVER
  M:    Vasily Khoruzhick <anarsoul@gmail.com>
  M:    Yangtao Li <tiny.windzz@gmail.com>
@@@ -796,14 -783,6 +796,14 @@@ M:       Ley Foon Tan <ley.foon.tan@intel.com
  S:    Maintained
  F:    drivers/mailbox/mailbox-altera.c
  
 +ALTERA MSGDMA IP CORE DRIVER
 +M:    Olivier Dautricourt <olivier.dautricourt@orolia.com>
 +R:    Stefan Roese <sr@denx.de>
 +L:    dmaengine@vger.kernel.org
 +S:    Odd Fixes
 +F:    Documentation/devicetree/bindings/dma/altr,msgdma.yaml
 +F:    drivers/dma/altera-msgdma.c
 +
  ALTERA PIO DRIVER
  M:    Joyce Ooi <joyce.ooi@intel.com>
  L:    linux-gpio@vger.kernel.org
@@@ -899,7 -878,7 +899,7 @@@ M: Harry Wentland <harry.wentland@amd.c
  M:    Leo Li <sunpeng.li@amd.com>
  L:    amd-gfx@lists.freedesktop.org
  S:    Supported
 -T:    git git://people.freedesktop.org/~agd5f/linux
 +T:    git https://gitlab.freedesktop.org/agd5f/linux.git
  F:    drivers/gpu/drm/amd/display/
  
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
@@@ -975,7 -954,7 +975,7 @@@ AMD POWERPLA
  M:    Evan Quan <evan.quan@amd.com>
  L:    amd-gfx@lists.freedesktop.org
  S:    Supported
 -T:    git git://people.freedesktop.org/~agd5f/linux
 +T:    git https://gitlab.freedesktop.org/agd5f/linux.git
  F:    drivers/gpu/drm/amd/pm/powerplay/
  
  AMD SEATTLE DEVICE TREE SUPPORT
@@@ -1332,7 -1311,6 +1332,7 @@@ W:      http://www.aquantia.co
  F:    drivers/net/ethernet/aquantia/atlantic/aq_ptp*
  
  ARASAN NAND CONTROLLER DRIVER
 +M:    Miquel Raynal <miquel.raynal@bootlin.com>
  M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
  L:    linux-mtd@lists.infradead.org
  S:    Maintained
@@@ -1474,22 -1452,6 +1474,22 @@@ S:    Odd Fixe
  F:    drivers/amba/
  F:    include/linux/amba/bus.h
  
 +ARM PRIMECELL PL35X NAND CONTROLLER DRIVER
 +M:    Miquel Raynal <miquel.raynal@bootlin.com@bootlin.com>
 +M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/mtd/arm,pl353-nand-r2p1.yaml
 +F:    drivers/mtd/nand/raw/pl35x-nand-controller.c
 +
 +ARM PRIMECELL PL35X SMC DRIVER
 +M:    Miquel Raynal <miquel.raynal@bootlin.com@bootlin.com>
 +M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/mtd/arm,pl353-smc.yaml
 +F:    drivers/memory/pl353-smc.c
 +
  ARM PRIMECELL CLCD PL110 DRIVER
  M:    Russell King <linux@armlinux.org.uk>
  S:    Odd Fixes
@@@ -1693,11 -1655,9 +1693,11 @@@ C:    irc://chat.freenode.net/asahi-de
  T:    git https://github.com/AsahiLinux/linux.git
  F:    Documentation/devicetree/bindings/arm/apple.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml
 +F:    Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml
  F:    arch/arm64/boot/dts/apple/
  F:    drivers/irqchip/irq-apple-aic.c
  F:    include/dt-bindings/interrupt-controller/apple-aic.h
 +F:    include/dt-bindings/pinctrl/apple.h
  
  ARM/ARTPEC MACHINE SUPPORT
  M:    Jesper Nilsson <jesper.nilsson@axis.com>
@@@ -1850,7 -1810,6 +1850,7 @@@ F:      Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
  F:    Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.txt
  F:    Documentation/devicetree/bindings/rtc/faraday,ftrtc010.txt
 +F:    arch/arm/boot/dts/gemini*
  F:    arch/arm/mach-gemini/
  F:    drivers/crypto/gemini/
  F:    drivers/net/ethernet/cortina/
@@@ -2211,7 -2170,6 +2211,7 @@@ M:      Daniel Palmer <daniel@thingy.jp
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  W:    http://linux-chenxing.org/
 +T:    git git://github.com/linux-chenxing/linux.git
  F:    Documentation/devicetree/bindings/arm/mstar/*
  F:    Documentation/devicetree/bindings/clock/mstar,msc313-mpll.yaml
  F:    Documentation/devicetree/bindings/gpio/mstar,msc313-gpio.yaml
@@@ -2219,7 -2177,6 +2219,7 @@@ F:      arch/arm/boot/dts/mstar-
  F:    arch/arm/mach-mstar/
  F:    drivers/clk/mstar/
  F:    drivers/gpio/gpio-msc313.c
 +F:    drivers/watchdog/msc313e_wdt.c
  F:    include/dt-bindings/clock/mstar-*
  F:    include/dt-bindings/gpio/msc313-gpio.h
  
@@@ -2481,12 -2438,9 +2481,12 @@@ F:    drivers/*/*/*s3c24
  F:    drivers/*/*s3c24*
  F:    drivers/*/*s3c64xx*
  F:    drivers/*/*s5pv210*
 +F:    drivers/clocksource/samsung_pwm_timer.c
  F:    drivers/memory/samsung/
 +F:    drivers/pwm/pwm-samsung.c
  F:    drivers/soc/samsung/
  F:    drivers/tty/serial/samsung*
 +F:    include/clocksource/samsung_pwm.h
  F:    include/linux/platform_data/*s3c*
  F:    include/linux/serial_s3c.h
  F:    include/linux/soc/samsung/
@@@ -3781,19 -3735,11 +3781,19 @@@ S:   Supporte
  F:    Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt
  F:    drivers/gpio/gpio-bcm-kona.c
  
 +BROADCOM MPI3 STORAGE CONTROLLER DRIVER
 +M:    Sathya Prakash Veerichetty <sathya.prakash@broadcom.com>
 +M:    Kashyap Desai <kashyap.desai@broadcom.com>
 +M:    Sumit Saxena <sumit.saxena@broadcom.com>
 +M:    Sreekanth Reddy <sreekanth.reddy@broadcom.com>
 +L:    mpi3mr-linuxdrv.pdl@broadcom.com
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +W:    https://www.broadcom.com/support/storage
 +F:    drivers/scsi/mpi3mr/
 +
  BROADCOM NETXTREME-E ROCE DRIVER
  M:    Selvin Xavier <selvin.xavier@broadcom.com>
 -M:    Devesh Sharma <devesh.sharma@broadcom.com>
 -M:    Somnath Kotur <somnath.kotur@broadcom.com>
 -M:    Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
  M:    Naresh Kumar PBS <nareshkumar.pbs@broadcom.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
@@@ -4097,9 -4043,7 +4097,9 @@@ W:      https://github.com/linux-ca
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
  F:    Documentation/devicetree/bindings/net/can/
 +F:    Documentation/devicetree/bindings/phy/ti,tcan104x-can.yaml
  F:    drivers/net/can/
 +F:    drivers/phy/phy-can-transceiver.c
  F:    include/linux/can/bittiming.h
  F:    include/linux/can/dev.h
  F:    include/linux/can/led.h
@@@ -4760,7 -4704,7 +4760,7 @@@ COUNTER SUBSYSTE
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/ABI/testing/sysfs-bus-counter*
 +F:    Documentation/ABI/testing/sysfs-bus-counter
  F:    Documentation/driver-api/generic-counter.rst
  F:    drivers/counter/
  F:    include/linux/counter.h
@@@ -5083,10 -5027,11 +5083,10 @@@ S:   Maintaine
  F:    drivers/input/touchscreen/cy8ctma140.c
  
  CYTTSP TOUCHSCREEN DRIVER
 -M:    Ferruh Yigit <fery@cypress.com>
 +M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-input@vger.kernel.org
 -S:    Supported
 +S:    Maintained
  F:    drivers/input/touchscreen/cyttsp*
 -F:    include/linux/input/cyttsp.h
  
  D-LINK DIR-685 TOUCHKEYS DRIVER
  M:    Linus Walleij <linus.walleij@linaro.org>
@@@ -5967,13 -5912,6 +5967,13 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/savage/
  F:    include/uapi/drm/savage_drm.h
  
 +DRM DRIVER FOR SIMPLE FRAMEBUFFERS
 +M:    Thomas Zimmermann <tzimmermann@suse.de>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/tiny/simpledrm.c
 +
  DRM DRIVER FOR SIS VIDEO CARDS
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/sis/
@@@ -6181,14 -6119,6 +6181,14 @@@ T:    git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/hisilicon/
  F:    drivers/gpu/drm/hisilicon/
  
 +DRM DRIVER FOR HYPERV SYNTHETIC VIDEO DEVICE
 +M:    Deepak Rawat <drawat.floss@gmail.com>
 +L:    linux-hyperv@vger.kernel.org
 +L:    dri-devel@lists.freedesktop.org
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/hyperv
 +
  DRM DRIVERS FOR LIMA
  M:    Qiang Yu <yuq825@gmail.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -6351,7 -6281,7 +6351,7 @@@ M:      Christian Koenig <christian.koenig@a
  M:    Huang Rui <ray.huang@amd.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
 -T:    git git://people.freedesktop.org/~agd5f/linux
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/ttm/
  F:    include/drm/ttm/
  
@@@ -6834,6 -6764,7 +6834,6 @@@ F:      drivers/net/ethernet/emulex/benet
  
  EMULEX ONECONNECT ROCE DRIVER
  M:    Selvin Xavier <selvin.xavier@broadcom.com>
 -M:    Devesh Sharma <devesh.sharma@broadcom.com>
  L:    linux-rdma@vger.kernel.org
  S:    Odd Fixes
  W:    http://www.broadcom.com
@@@ -6848,15 -6779,6 +6848,15 @@@ S:    Supporte
  W:    http://www.broadcom.com
  F:    drivers/scsi/lpfc/
  
 +EMULEX/BROADCOM EFCT FC/FCOE SCSI TARGET DRIVER
 +M:    James Smart <james.smart@broadcom.com>
 +M:    Ram Vegesna <ram.vegesna@broadcom.com>
 +L:    linux-scsi@vger.kernel.org
 +L:    target-devel@vger.kernel.org
 +S:    Supported
 +W:    http://www.broadcom.com
 +F:    drivers/scsi/elx/
 +
  ENE CB710 FLASH CARD READER DRIVER
  M:    Michał Mirosław <mirq-linux@rere.qmqm.pl>
  S:    Maintained
@@@ -7026,7 -6948,7 +7026,7 @@@ F:      drivers/iommu/exynos-iommu.
  
  F2FS FILE SYSTEM
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
 -M:    Chao Yu <yuchao0@huawei.com>
 +M:    Chao Yu <chao@kernel.org>
  L:    linux-f2fs-devel@lists.sourceforge.net
  S:    Maintained
  W:    https://f2fs.wiki.kernel.org/
@@@ -7193,13 -7115,6 +7193,13 @@@ F:    include/linux/firewire.
  F:    include/uapi/linux/firewire*.h
  F:    tools/firewire/
  
 +FIRMWARE FRAMEWORK FOR ARMV8-A
 +M:    Sudeep Holla <sudeep.holla@arm.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    drivers/firmware/arm_ffa/
 +F:    include/linux/arm_ffa.h
 +
  FIRMWARE LOADER (request_firmware)
  M:    Luis Chamberlain <mcgrof@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -7218,6 -7133,7 +7218,6 @@@ FLEXTIMER FTM-QUADDEC DRIVE
  M:    Patrick Havelange <patrick.havelange@essensium.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/ABI/testing/sysfs-bus-counter-ftm-quaddec
  F:    Documentation/devicetree/bindings/counter/ftm-quaddec.txt
  F:    drivers/counter/ftm-quaddec.c
  
@@@ -7233,13 -7149,6 +7233,13 @@@ L:    linux-input@vger.kernel.or
  S:    Maintained
  F:    drivers/input/joystick/fsia6b.c
  
 +FOCUSRITE SCARLETT GEN 2/3 MIXER DRIVER
 +M:    Geoffrey D. Bennett <g@b4.vu>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
 +F:    sound/usb/mixer_scarlett_gen2.c
 +
  FORCEDETH GIGABIT ETHERNET DRIVER
  M:    Rain River <rain.1986.08.12@gmail.com>
  M:    Zhu Yanjun <zyjzyj2000@gmail.com>
@@@ -7782,14 -7691,6 +7782,14 @@@ L:    linux-input@vger.kernel.or
  S:    Maintained
  F:    drivers/input/touchscreen/resistive-adc-touch.c
  
 +GENERIC STRING LIBRARY
 +R:    Andy Shevchenko <andy@kernel.org>
 +S:    Maintained
 +F:    lib/string.c
 +F:    lib/string_helpers.c
 +F:    lib/test_string.c
 +F:    lib/test-string_helpers.c
 +
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -8425,13 -8326,6 +8425,13 @@@ S:    Maintaine
  W:    http://www.hisilicon.com
  F:    drivers/spi/spi-hisi-kunpeng.c
  
 +HISILICON SPMI CONTROLLER DRIVER FOR HIKEY 970
 +M:    Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spmi/hisilicon,hisi-spmi-controller.yaml
 +F:    drivers/spmi/hisi-spmi-controller.c
 +
  HISILICON STAGING DRIVERS FOR HIKEY 960/970
  M:    Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
  S:    Maintained
@@@ -8999,7 -8893,7 +8999,7 @@@ IIO MULTIPLEXE
  M:    Peter Rosin <peda@axentia.se>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.txt
 +F:    Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.yaml
  F:    drivers/iio/multiplexer/iio-mux.c
  
  IIO SCMI BASED DRIVER
@@@ -9273,14 -9167,6 +9273,14 @@@ F:    drivers/net/ethernet/intel/*
  F:    include/linux/avf/virtchnl.h
  F:    include/linux/net/intel/iidc.h
  
 +INTEL ETHERNET PROTOCOL DRIVER FOR RDMA
 +M:    Mustafa Ismail <mustafa.ismail@intel.com>
 +M:    Shiraz Saleem <shiraz.saleem@intel.com>
 +L:    linux-rdma@vger.kernel.org
 +S:    Supported
 +F:    drivers/infiniband/hw/irdma/
 +F:    include/uapi/rdma/irdma-abi.h
 +
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
  M:    Maik Broemme <mbroemme@libmpq.org>
  L:    linux-fbdev@vger.kernel.org
@@@ -9404,7 -9290,6 +9404,7 @@@ F:      include/linux/soc/ixp4xx/qmgr.
  INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
  M:    Deepak Saxena <dsaxena@plexity.net>
  S:    Maintained
 +F:    Documentation/devicetree/bindings/display/intel,ixp46x-rng.yaml
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
  INTEL KEEM BAY DRM DRIVER
@@@ -9456,6 -9341,16 +9456,6 @@@ F:     drivers/hwmon/intel-m10-bmc-hwmon.
  F:    drivers/mfd/intel-m10-bmc.c
  F:    include/linux/mfd/intel-m10-bmc.h
  
 -INTEL MAX 10 BMC MFD DRIVER
 -M:    Xu Yilun <yilun.xu@intel.com>
 -R:    Tom Rix <trix@redhat.com>
 -S:    Maintained
 -F:    Documentation/ABI/testing/sysfs-driver-intel-m10-bmc
 -F:    Documentation/hwmon/intel-m10-bmc-hwmon.rst
 -F:    drivers/hwmon/intel-m10-bmc-hwmon.c
 -F:    drivers/mfd/intel-m10-bmc.c
 -F:    include/linux/mfd/intel-m10-bmc.h
 -
  INTEL MENLOW THERMAL DRIVER
  M:    Sujith Thomas <sujith.thomas@intel.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -9511,10 -9406,13 +9511,10 @@@ L:   linux-pm@vger.kernel.or
  S:    Supported
  F:    drivers/cpufreq/intel_pstate.c
  
 -INTEL RDMA RNIC DRIVER
 -M:    Faisal Latif <faisal.latif@intel.com>
 -M:    Shiraz Saleem <shiraz.saleem@intel.com>
 -L:    linux-rdma@vger.kernel.org
 -S:    Supported
 -F:    drivers/infiniband/hw/i40iw/
 -F:    include/uapi/rdma/i40iw-abi.h
 +INTEL QUADRATURE ENCODER PERIPHERAL DRIVER
 +M:    Jarkko Nikula <jarkko.nikula@linux.intel.com>
 +L:    linux-iio@vger.kernel.org
 +F:    drivers/counter/intel-qep.c
  
  INTEL SCU DRIVERS
  M:    Mika Westerberg <mika.westerberg@linux.intel.com>
@@@ -9875,14 -9773,6 +9875,14 @@@ Q:    http://patchwork.linuxtv.org/project
  T:    git git://linuxtv.org/anttip/media_tree.git
  F:    drivers/media/tuners/it913x*
  
 +ITE IT66121 HDMI BRIDGE DRIVER
 +M:    Phong LE <ple@baylibre.com>
 +M:    Neil Armstrong <narmstrong@baylibre.com>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml
 +F:    drivers/gpu/drm/bridge/ite-it66121.c
 +
  IVTV VIDEO4LINUX DRIVER
  M:    Andy Walls <awalls@md.metrocast.net>
  L:    linux-media@vger.kernel.org
@@@ -11055,7 -10945,7 +11055,7 @@@ MARVELL ARMADA 3700 PHY DRIVER
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/phy/phy-mvebu-comphy.txt
 -F:    Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
 +F:    Documentation/devicetree/bindings/phy/marvell,armada-3700-utmi-phy.yaml
  F:    drivers/phy/marvell/phy-mvebu-a3700-comphy.c
  F:    drivers/phy/marvell/phy-mvebu-a3700-utmi.c
  
@@@ -11965,7 -11855,6 +11965,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/memory-controllers/
  F:    drivers/memory/
  F:    include/dt-bindings/memory/
 +F:    include/memory/
  
  MEMORY FREQUENCY SCALING DRIVERS FOR NVIDIA TEGRA
  M:    Dmitry Osipenko <digetx@gmail.com>
@@@ -11990,7 -11879,6 +11990,7 @@@ F:   include/linux/mmzone.
  F:    include/linux/pagewalk.h
  F:    include/linux/vmalloc.h
  F:    mm/
 +F:    tools/testing/selftests/vm/
  
  MEMORY TECHNOLOGY DEVICES (MTD)
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
@@@ -12559,8 -12447,7 +12559,8 @@@ S:   Maintaine
  F:    drivers/net/phy/motorcomm.c
  
  MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
 -S:    Orphan
 +M:    Jiri Slaby <jirislaby@kernel.org>
 +S:    Maintained
  F:    Documentation/driver-api/serial/moxa-smartio.rst
  F:    drivers/tty/mxser.*
  
@@@ -13387,13 -13274,6 +13387,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/sound/tfa9879.txt
  F:    sound/soc/codecs/tfa9879*
  
 +NXP/Goodix TFA989X (TFA1) DRIVER
 +M:    Stephan Gerhold <stephan@gerhold.net>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/nxp,tfa989x.yaml
 +F:    sound/soc/codecs/tfa989x.c
 +
  NXP-NCI NFC DRIVER
  R:    Charles Gorand <charles.gorand@effinnov.com>
  L:    linux-nfc@lists.01.org (subscribers-only)
@@@ -13514,7 -13394,7 +13514,7 @@@ M:   Santosh Shilimkar <ssantosh@kernel.o
  M:    Kevin Hilman <khilman@kernel.org>
  L:    linux-omap@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/gpio/gpio-omap.txt
 +F:    Documentation/devicetree/bindings/gpio/ti,omap-gpio.yaml
  F:    drivers/gpio/gpio-omap.c
  
  OMAP HARDWARE SPINLOCK SUPPORT
@@@ -13535,6 -13415,12 +13535,6 @@@ L:  linux-omap@vger.kernel.or
  S:    Maintained
  F:    arch/arm/mach-omap2/omap_hwmod*data*
  
 -OMAP HWMOD DATA FOR OMAP4-BASED DEVICES
 -M:    Benoît Cousson <bcousson@baylibre.com>
 -L:    linux-omap@vger.kernel.org
 -S:    Maintained
 -F:    arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 -
  OMAP HWMOD SUPPORT
  M:    Benoît Cousson <bcousson@baylibre.com>
  M:    Paul Walmsley <paul@pwsan.com>
@@@ -13547,7 -13433,7 +13547,7 @@@ M:   Vignesh R <vigneshr@ti.com
  L:    linux-omap@vger.kernel.org
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-omap.txt
 +F:    Documentation/devicetree/bindings/i2c/ti,omap4-i2c.yaml
  F:    drivers/i2c/busses/i2c-omap.c
  
  OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS)
@@@ -14125,7 -14011,8 +14125,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pci-aardvark.c
  
  PCI DRIVER FOR ALTERA PCIE IP
 -M:    Ley Foon Tan <ley.foon.tan@intel.com>
 -L:    rfi@lists.rocketboards.org (moderated for non-subscribers)
 +M:    Joyce Ooi <joyce.ooi@intel.com>
  L:    linux-pci@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/pci/altera-pcie.txt
@@@ -14198,12 -14085,6 +14198,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml
  F:    drivers/pci/controller/dwc/pcie-fu740.c
  
 +PCI DRIVER FOR INTEL IXP4XX
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/intel,ixp4xx-pci.yaml
 +F:    drivers/pci/controller/pci-ixp4xx.c
 +
  PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
  M:    Jonathan Derrick <jonathan.derrick@intel.com>
  L:    linux-pci@vger.kernel.org
@@@ -14329,7 -14210,8 +14329,7 @@@ S:   Supporte
  F:    Documentation/PCI/pci-error-recovery.rst
  
  PCI MSI DRIVER FOR ALTERA MSI IP
 -M:    Ley Foon Tan <ley.foon.tan@intel.com>
 -L:    rfi@lists.rocketboards.org (moderated for non-subscribers)
 +M:    Joyce Ooi <joyce.ooi@intel.com>
  L:    linux-pci@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/pci/altera-pcie-msi.txt
@@@ -14850,7 -14732,6 +14850,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/ABI/testing/sysfs-class-power
  F:    Documentation/devicetree/bindings/power/supply/
  F:    drivers/power/supply/
 +F:    include/linux/power/
  F:    include/linux/power_supply.h
  
  POWERNV OPERATOR PANEL LCD DISPLAY DRIVER
@@@ -15009,6 -14890,13 +15009,13 @@@ F: drivers/net/phy/dp83640
  F:    drivers/ptp/*
  F:    include/linux/ptp_cl*
  
+ PTP VIRTUAL CLOCK SUPPORT
+ M:    Yangbo Lu <yangbo.lu@nxp.com>
+ L:    netdev@vger.kernel.org
+ S:    Maintained
+ F:    drivers/ptp/ptp_vclock.c
+ F:    net/ethtool/phc_vclocks.c
  PTRACE SUPPORT
  M:    Oleg Nesterov <oleg@redhat.com>
  S:    Maintained
@@@ -15455,7 -15343,6 +15462,7 @@@ F:   drivers/net/wireless/quantenn
  RADEON and AMDGPU DRM DRIVERS
  M:    Alex Deucher <alexander.deucher@amd.com>
  M:    Christian König <christian.koenig@amd.com>
 +M:    Pan, Xinhui <Xinhui.Pan@amd.com>
  L:    amd-gfx@lists.freedesktop.org
  S:    Supported
  T:    git https://gitlab.freedesktop.org/agd5f/linux.git
@@@ -15780,9 -15667,8 +15787,9 @@@ F:   drivers/clk/renesas
  
  RENESAS EMEV2 I2C DRIVER
  M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
 +L:    linux-renesas-soc@vger.kernel.org
  S:    Supported
 -F:    Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
 +F:    Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
  F:    drivers/i2c/busses/i2c-emev2.c
  
  RENESAS ETHERNET DRIVERS
@@@ -15802,10 -15688,9 +15809,10 @@@ F: drivers/iio/adc/rcar-gyroadc.
  
  RENESAS R-CAR I2C DRIVERS
  M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
 +L:    linux-renesas-soc@vger.kernel.org
  S:    Supported
 -F:    Documentation/devicetree/bindings/i2c/renesas,i2c.txt
 -F:    Documentation/devicetree/bindings/i2c/renesas,iic.txt
 +F:    Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
 +F:    Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml
  F:    drivers/i2c/busses/i2c-rcar.c
  F:    drivers/i2c/busses/i2c-sh_mobile.c
  
@@@ -15820,9 -15705,8 +15827,9 @@@ F:   drivers/thermal/rcar_thermal.
  
  RENESAS RIIC DRIVER
  M:    Chris Brandt <chris.brandt@renesas.com>
 +L:    linux-renesas-soc@vger.kernel.org
  S:    Supported
 -F:    Documentation/devicetree/bindings/i2c/renesas,riic.txt
 +F:    Documentation/devicetree/bindings/i2c/renesas,riic.yaml
  F:    drivers/i2c/busses/i2c-riic.c
  
  RENESAS USB PHY DRIVER
@@@ -16237,7 -16121,7 +16244,7 @@@ W:   http://www.ibm.com/developerworks/li
  F:    drivers/s390/scsi/zfcp_*
  
  S3C ADC BATTERY DRIVER
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
  L:    linux-samsung-soc@vger.kernel.org
  S:    Odd Fixes
  F:    drivers/power/supply/s3c_adc_battery.c
@@@ -16703,8 -16587,6 +16710,8 @@@ M:   Tomasz Duszynski <tduszyns@gmail.com
  S:    Maintained
  F:    Documentation/devicetree/bindings/iio/chemical/sensirion,sps30.yaml
  F:    drivers/iio/chemical/sps30.c
 +F:    drivers/iio/chemical/sps30_i2c.c
 +F:    drivers/iio/chemical/sps30_serial.c
  
  SERIAL DEVICE BUS
  M:    Rob Herring <robh@kernel.org>
@@@ -17931,7 -17813,7 +17938,7 @@@ M:   Sudeep Holla <sudeep.holla@arm.com
  R:    Cristian Marussi <cristian.marussi@arm.com>
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/arm/arm,sc[mp]i.txt
 +F:    Documentation/devicetree/bindings/firmware/arm,sc[mp]i.yaml
  F:    drivers/clk/clk-sc[mp]i.c
  F:    drivers/cpufreq/sc[mp]i-cpufreq.c
  F:    drivers/firmware/arm_scmi/
@@@ -18151,7 -18033,6 +18158,7 @@@ F:   include/media/i2c/tw9910.
  
  TEE SUBSYSTEM
  M:    Jens Wiklander <jens.wiklander@linaro.org>
 +R:    Sumit Garg <sumit.garg@linaro.org>
  L:    op-tee@lists.trustedfirmware.org
  S:    Maintained
  F:    Documentation/staging/tee.rst
@@@ -18305,11 -18186,11 +18312,11 @@@ L:        linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml
  F:    Documentation/devicetree/bindings/arm/keystone/ti,sci.txt
 -F:    Documentation/devicetree/bindings/clock/ti,sci-clk.txt
 +F:    Documentation/devicetree/bindings/clock/ti,sci-clk.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/ti,sci-inta.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.yaml
 -F:    Documentation/devicetree/bindings/reset/ti,sci-reset.txt
 -F:    Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
 +F:    Documentation/devicetree/bindings/reset/ti,sci-reset.yaml
 +F:    Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
  F:    drivers/clk/keystone/sci-clk.c
  F:    drivers/firmware/ti_sci*
  F:    drivers/irqchip/irq-ti-sci-inta.c
@@@ -18330,13 -18211,6 +18337,13 @@@ F: Documentation/devicetree/bindings/hw
  F:    Documentation/hwmon/tps23861.rst
  F:    drivers/hwmon/tps23861.c
  
 +TEXAS INSTRUMENTS' TMP117 TEMPERATURE SENSOR DRIVER
 +M:    Puranjay Mohan <puranjay12@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    Documentation/devicetree/bindings/iio/temperature/ti,tmp117.yaml
 +F:    drivers/iio/temperature/tmp117.c
 +
  THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -18500,7 -18374,7 +18507,7 @@@ TI DAVINCI SERIES GPIO DRIVE
  M:    Keerthy <j-keerthy@ti.com>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/gpio/gpio-davinci.txt
 +F:    Documentation/devicetree/bindings/gpio/gpio-davinci.yaml
  F:    drivers/gpio/gpio-davinci.c
  
  TI DAVINCI SERIES MEDIA DRIVER
@@@ -18573,14 -18447,6 +18580,14 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/net/nfc/trf7970a.txt
  F:    drivers/nfc/trf7970a.c
  
 +TI TSC2046 ADC DRIVER
 +M:    Oleksij Rempel <o.rempel@pengutronix.de>
 +R:    kernel@pengutronix.de
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/adc/ti,tsc2046.yaml
 +F:    drivers/iio/adc/ti-tsc2046.c
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -18804,13 -18670,9 +18811,13 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/driver-api/serial/
  F:    drivers/tty/
  F:    drivers/tty/serial/serial_core.c
 +F:    include/linux/selection.h
  F:    include/linux/serial.h
  F:    include/linux/serial_core.h
 -F:    include/linux/tty.h
 +F:    include/linux/sysrq.h
 +F:    include/linux/tty*.h
 +F:    include/linux/vt.h
 +F:    include/linux/vt_*.h
  F:    include/uapi/linux/serial.h
  F:    include/uapi/linux/serial_core.h
  F:    include/uapi/linux/tty.h
@@@ -19101,7 -18963,7 +19108,7 @@@ L:   linux-usb@vger.kernel.or
  S:    Maintained
  F:    drivers/usb/roles/intel-xhci-usb-role-switch.c
  
 -USB IP DRIVER FOR HISILICON KIRIN
 +USB IP DRIVER FOR HISILICON KIRIN 960
  M:    Yu Chen <chenyu56@huawei.com>
  M:    Binghui Wang <wangbinghui@hisilicon.com>
  L:    linux-usb@vger.kernel.org
@@@ -19109,13 -18971,6 +19116,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/phy/hisilicon,hi3660-usb3.yaml
  F:    drivers/phy/hisilicon/phy-hi3660-usb3.c
  
 +USB IP DRIVER FOR HISILICON KIRIN 970
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/phy/hisilicon,hi3670-usb3.yaml
 +F:    drivers/phy/hisilicon/phy-kirin970-usb3.c
 +
  USB ISP116X DRIVER
  M:    Olav Kongas <ok@artecdesign.ee>
  L:    linux-usb@vger.kernel.org
@@@ -20437,6 -20292,7 +20444,6 @@@ M:   Seth Jennings <sjenning@redhat.com
  M:    Dan Streetman <ddstreet@ieee.org>
  L:    linux-mm@kvack.org
  S:    Maintained
 -F:    include/linux/zbud.h
  F:    mm/zbud.c
  
  ZD1211RW WIRELESS DRIVER
diff --combined drivers/net/virtio_net.c
@@@ -1516,16 -1516,12 +1516,16 @@@ static void virtnet_poll_cleantx(struc
                return;
  
        if (__netif_tx_trylock(txq)) {
 -              free_old_xmit_skbs(sq, true);
 +              do {
 +                      virtqueue_disable_cb(sq->vq);
 +                      free_old_xmit_skbs(sq, true);
 +              } while (unlikely(!virtqueue_enable_cb_delayed(sq->vq)));
 +
 +              if (sq->vq->num_free >= 2 + MAX_SKB_FRAGS)
 +                      netif_tx_wake_queue(txq);
 +
                __netif_tx_unlock(txq);
        }
 -
 -      if (sq->vq->num_free >= 2 + MAX_SKB_FRAGS)
 -              netif_tx_wake_queue(txq);
  }
  
  static int virtnet_poll(struct napi_struct *napi, int budget)
@@@ -1596,8 -1592,6 +1596,8 @@@ static int virtnet_poll_tx(struct napi_
        struct virtnet_info *vi = sq->vq->vdev->priv;
        unsigned int index = vq2txq(sq->vq);
        struct netdev_queue *txq;
 +      int opaque;
 +      bool done;
  
        if (unlikely(is_xdp_raw_buffer_queue(vi, index))) {
                /* We don't need to enable cb for XDP */
  
        txq = netdev_get_tx_queue(vi->dev, index);
        __netif_tx_lock(txq, raw_smp_processor_id());
 +      virtqueue_disable_cb(sq->vq);
        free_old_xmit_skbs(sq, true);
 -      __netif_tx_unlock(txq);
 -
 -      virtqueue_napi_complete(napi, sq->vq, 0);
  
        if (sq->vq->num_free >= 2 + MAX_SKB_FRAGS)
                netif_tx_wake_queue(txq);
  
 +      opaque = virtqueue_enable_cb_prepare(sq->vq);
 +
 +      done = napi_complete_done(napi, 0);
 +
 +      if (!done)
 +              virtqueue_disable_cb(sq->vq);
 +
 +      __netif_tx_unlock(txq);
 +
 +      if (done) {
 +              if (unlikely(virtqueue_poll(sq->vq, opaque))) {
 +                      if (napi_schedule_prep(napi)) {
 +                              __netif_tx_lock(txq, raw_smp_processor_id());
 +                              virtqueue_disable_cb(sq->vq);
 +                              __netif_tx_unlock(txq);
 +                              __napi_schedule(napi);
 +                      }
 +              }
 +      }
 +
        return 0;
  }
  
@@@ -1694,14 -1670,10 +1694,14 @@@ static netdev_tx_t start_xmit(struct sk
        bool use_napi = sq->napi.weight;
  
        /* Free up any pending old buffers before queueing new ones. */
 -      free_old_xmit_skbs(sq, false);
 +      do {
 +              if (use_napi)
 +                      virtqueue_disable_cb(sq->vq);
 +
 +              free_old_xmit_skbs(sq, false);
  
 -      if (use_napi && kick)
 -              virtqueue_enable_cb_delayed(sq->vq);
 +      } while (use_napi && kick &&
 +             unlikely(!virtqueue_enable_cb_delayed(sq->vq)));
  
        /* timestamp packet in software */
        skb_tx_timestamp(skb);
@@@ -1771,6 -1743,7 +1771,7 @@@ static bool virtnet_send_command(struc
  {
        struct scatterlist *sgs[4], hdr, stat;
        unsigned out_num = 0, tmp;
+       int ret;
  
        /* Caller should know better */
        BUG_ON(!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ));
        sgs[out_num] = &stat;
  
        BUG_ON(out_num + 1 > ARRAY_SIZE(sgs));
-       virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC);
+       ret = virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC);
+       if (ret < 0) {
+               dev_warn(&vi->vdev->dev,
+                        "Failed to add sgs for command vq: %d\n.", ret);
+               return false;
+       }
  
        if (unlikely(!virtqueue_kick(vi->cvq)))
                return vi->ctrl->status == VIRTIO_NET_OK;
@@@ -3338,11 -3316,8 +3344,11 @@@ static __maybe_unused int virtnet_resto
        virtnet_set_queues(vi, vi->curr_queue_pairs);
  
        err = virtnet_cpu_notif_add(vi);
 -      if (err)
 +      if (err) {
 +              virtnet_freeze_down(vdev);
 +              remove_vq_common(vi);
                return err;
 +      }
  
        return 0;
  }