1. 01 Jul, 2020 40 commits
    • Zhang Xiaoxu's avatar
      cifs/smb3: Fix data inconsistent when zero file range · 39dad730
      Zhang Xiaoxu authored
      [ Upstream commit 6b690402 ]
      
      CIFS implements the fallocate(FALLOC_FL_ZERO_RANGE) with send SMB
      ioctl(FSCTL_SET_ZERO_DATA) to server. It just set the range of the
      remote file to zero, but local page cache not update, then the data
      inconsistent with server, which leads the xfstest generic/008 failed.
      
      So we need to remove the local page caches before send SMB
      ioctl(FSCTL_SET_ZERO_DATA) to server. After next read, it will
      re-cache it.
      
      Fixes: 30175628 ("[SMB3] Enable fallocate -z support for SMB3 mounts")
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarZhang Xiaoxu <zhangxiaoxu5@huawei.com>
      Reviewed-by: default avatarPavel Shilovsky <pshilov@microsoft.com>
      Cc: stable@vger.kernel.org # v3.17
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      39dad730
    • Zhang Xiaoxu's avatar
      cifs/smb3: Fix data inconsistent when punch hole · f4c710c4
      Zhang Xiaoxu authored
      [ Upstream commit acc91c2d ]
      
      When punch hole success, we also can read old data from file:
        # strace -e trace=pread64,fallocate xfs_io -f -c "pread 20 40" \
                 -c "fpunch 20 40" -c"pread 20 40" file
        pread64(3, " version 5.8.0-rc1+"..., 40, 20) = 40
        fallocate(3, FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE, 20, 40) = 0
        pread64(3, " version 5.8.0-rc1+"..., 40, 20) = 40
      
      CIFS implements the fallocate(FALLOCATE_FL_PUNCH_HOLE) with send SMB
      ioctl(FSCTL_SET_ZERO_DATA) to server. It just set the range of the
      remote file to zero, but local page caches not updated, then the
      local page caches inconsistent with server.
      
      Also can be found by xfstests generic/316.
      
      So, we need to remove the page caches before send the SMB
      ioctl(FSCTL_SET_ZERO_DATA) to server.
      
      Fixes: 31742c5a ("enable fallocate punch hole ("fallocate -p") for SMB3")
      Suggested-by: default avatarPavel Shilovsky <pshilov@microsoft.com>
      Reviewed-by: default avatarPavel Shilovsky <pshilov@microsoft.com>
      Signed-off-by: default avatarZhang Xiaoxu <zhangxiaoxu5@huawei.com>
      Cc: stable@vger.kernel.org # v3.17
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f4c710c4
    • Shay Drory's avatar
      IB/mad: Fix use after free when destroying MAD agent · c5bf9f88
      Shay Drory authored
      commit 116a1b9f upstream.
      
      Currently, when RMPP MADs are processed while the MAD agent is destroyed,
      it could result in use after free of rmpp_recv, as decribed below:
      
      	cpu-0						cpu-1
      	-----						-----
      ib_mad_recv_done()
       ib_mad_complete_recv()
        ib_process_rmpp_recv_wc()
      						unregister_mad_agent()
      						 ib_cancel_rmpp_recvs()
      						  cancel_delayed_work()
         process_rmpp_data()
          start_rmpp()
           queue_delayed_work(rmpp_recv->cleanup_work)
      						  destroy_rmpp_recv()
      						   free_rmpp_recv()
           cleanup_work()[1]
            spin_lock_irqsave(&rmpp_recv->agent->lock) <-- use after free
      
      [1] cleanup_work() == recv_cleanup_handler
      
      Fix it by waiting for the MAD agent reference count becoming zero before
      calling to ib_cancel_rmpp_recvs().
      
      Fixes: 9a41e38a ("IB/mad: Use IDR for agent IDs")
      Link: https://lore.kernel.org/r/20200621104738.54850-2-leon@kernel.orgSigned-off-by: default avatarShay Drory <shayd@mellanox.com>
      Reviewed-by: default avatarMaor Gottlieb <maorg@mellanox.com>
      Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
      Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c5bf9f88
    • Zheng Bin's avatar
      loop: replace kill_bdev with invalidate_bdev · a388c0a8
      Zheng Bin authored
      commit f4bd34b1 upstream.
      
      When a filesystem is mounted on a loop device and on a loop ioctl
      LOOP_SET_STATUS64, because of kill_bdev, buffer_head mappings are getting
      destroyed.
      kill_bdev
        truncate_inode_pages
          truncate_inode_pages_range
            do_invalidatepage
              block_invalidatepage
                discard_buffer  -->clear BH_Mapped flag
      
      sb_bread
        __bread_gfp
        bh = __getblk_gfp
        -->discard_buffer clear BH_Mapped flag
        __bread_slow
          submit_bh
            submit_bh_wbc
              BUG_ON(!buffer_mapped(bh))  --> hit this BUG_ON
      
      Fixes: 5db470e2 ("loop: drop caches if offset or block_size are changed")
      Signed-off-by: default avatarZheng Bin <zhengbin13@huawei.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a388c0a8
    • Joakim Tjernlund's avatar
      cdc-acm: Add DISABLE_ECHO quirk for Microchip/SMSC chip · a313eeaf
      Joakim Tjernlund authored
      commit 03894573 upstream.
      
      USB_DEVICE(0x0424, 0x274e) can send data before cdc_acm is ready,
      causing garbage chars on the TTY causing stray input to the shell
      and/or login prompt.
      Signed-off-by: default avatarJoakim Tjernlund <joakim.tjernlund@infinera.com>
      Cc: stable@vger.kernel.org
      Acked-by: default avatarOliver Neukum <oneukum@suse.com>
      Link: https://lore.kernel.org/r/20200605105418.22263-1-joakim.tjernlund@infinera.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a313eeaf
    • Kai-Heng Feng's avatar
      xhci: Return if xHCI doesn't support LPM · a81f69d6
      Kai-Heng Feng authored
      commit f0c472a6 upstream.
      
      Just return if xHCI is quirked to disable LPM. We can save some time
      from reading registers and doing spinlocks.
      
      Add stable tag as we want this patch together with the next one,
      "Poll for U0 after disabling USB2 LPM" which fixes a suspend issue
      for some USB2 LPM devices
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20200624135949.22611-5-mathias.nyman@linux.intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a81f69d6
    • Al Cooper's avatar
      xhci: Fix enumeration issue when setting max packet size for FS devices. · 26a7aefb
      Al Cooper authored
      commit a73d9d9c upstream.
      
      Unable to complete the enumeration of a USB TV Tuner device.
      
      Per XHCI spec (4.6.5), the EP state field of the input context shall
      be cleared for a set address command. In the special case of an FS
      device that has "MaxPacketSize0 = 8", the Linux XHCI driver does
      not do this before evaluating the context. With an XHCI controller
      that checks the EP state field for parameter context error this
      causes a problem in cases such as the device getting reset again
      after enumeration.
      
      When that field is cleared, the problem does not occur.
      
      This was found and fixed by Sasi Kumar.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAl Cooper <alcooperx@gmail.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20200624135949.22611-3-mathias.nyman@linux.intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      26a7aefb
    • Mathias Nyman's avatar
      xhci: Fix incorrect EP_STATE_MASK · d7ed5fc0
      Mathias Nyman authored
      commit dceea670 upstream.
      
      EP_STATE_MASK should be 0x7 instead of 0xf
      
      xhci spec 6.2.3 shows that the EP state field in the endpoint context data
      structure consist of bits [2:0].
      The old value included a bit from the next field which fortunately is a
       RsvdZ region. So hopefully this hasn't caused too much harm
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20200624135949.22611-2-mathias.nyman@linux.intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d7ed5fc0
    • Steffen Maier's avatar
      scsi: zfcp: Fix panic on ERP timeout for previously dismissed ERP action · d2621f15
      Steffen Maier authored
      commit 936e6b85 upstream.
      
      Suppose that, for unrelated reasons, FSF requests on behalf of recovery are
      very slow and can run into the ERP timeout.
      
      In the case at hand, we did adapter recovery to a large degree.  However
      due to the slowness a LUN open is pending so the corresponding fc_rport
      remains blocked.  After fast_io_fail_tmo we trigger close physical port
      recovery for the port under which the LUN should have been opened.  The new
      higher order port recovery dismisses the pending LUN open ERP action and
      dismisses the pending LUN open FSF request.  Such dismissal decouples the
      ERP action from the pending corresponding FSF request by setting
      zfcp_fsf_req->erp_action to NULL (among other things)
      [zfcp_erp_strategy_check_fsfreq()].
      
      If now the ERP timeout for the pending open LUN request runs out, we must
      not use zfcp_fsf_req->erp_action in the ERP timeout handler.  This is a
      problem since v4.15 commit 75492a51 ("s390/scsi: Convert timers to use
      timer_setup()"). Before that we intentionally only passed zfcp_erp_action
      as context argument to zfcp_erp_timeout_handler().
      
      Note: The lifetime of the corresponding zfcp_fsf_req object continues until
      a (late) response or an (unrelated) adapter recovery.
      
      Just like the regular response path ignores dismissed requests
      [zfcp_fsf_req_complete() => zfcp_fsf_protstatus_eval() => return early] the
      ERP timeout handler now needs to ignore dismissed requests.  So simply
      return early in the ERP timeout handler if the FSF request is marked as
      dismissed in its status flags.  To protect against the race where
      zfcp_erp_strategy_check_fsfreq() dismisses and sets
      zfcp_fsf_req->erp_action to NULL after our previous status flag check,
      return early if zfcp_fsf_req->erp_action is NULL.  After all, the former
      ERP action does not need to be woken up as that was already done as part of
      the dismissal above [zfcp_erp_action_dismiss()].
      
      This fixes the following panic due to kernel page fault in IRQ context:
      
      Unable to handle kernel pointer dereference in virtual kernel address space
      Failing address: 0000000000000000 TEID: 0000000000000483
      Fault in home space mode while using kernel ASCE.
      AS:000009859238c00b R2:00000e3e7ffd000b R3:00000e3e7ffcc007 S:00000e3e7ffd7000 P:000000000000013d
      Oops: 0004 ilc:2 [#1] SMP
      Modules linked in: ...
      CPU: 82 PID: 311273 Comm: stress Kdump: loaded Tainted: G            E  X   ...
      Hardware name: IBM 8561 T01 701 (LPAR)
      Krnl PSW : 0404c00180000000 001fffff80549be0 (zfcp_erp_notify+0x40/0xc0 [zfcp])
                 R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
      Krnl GPRS: 0000000000000080 00000e3d00000000 00000000000000f0 0000000000030000
                 000000010028e700 000000000400a39c 000000010028e700 00000e3e7cf87e02
                 0000000010000000 0700098591cb67f0 0000000000000000 0000000000000000
                 0000033840e9a000 0000000000000000 001fffe008d6bc18 001fffe008d6bbc8
      Krnl Code: 001fffff80549bd4: a7180000            lhi     %r1,0
                 001fffff80549bd8: 4120a0f0            la      %r2,240(%r10)
                #001fffff80549bdc: a53e0003            llilh   %r3,3
                >001fffff80549be0: ba132000            cs      %r1,%r3,0(%r2)
                 001fffff80549be4: a7740037            brc     7,1fffff80549c52
                 001fffff80549be8: e320b0180004        lg      %r2,24(%r11)
                 001fffff80549bee: e31020e00004        lg      %r1,224(%r2)
                 001fffff80549bf4: 412020e0            la      %r2,224(%r2)
      Call Trace:
       [<001fffff80549be0>] zfcp_erp_notify+0x40/0xc0 [zfcp]
       [<00000985915e26f0>] call_timer_fn+0x38/0x190
       [<00000985915e2944>] expire_timers+0xfc/0x190
       [<00000985915e2ac4>] run_timer_softirq+0xec/0x218
       [<0000098591ca7c4c>] __do_softirq+0x144/0x398
       [<00000985915110aa>] do_softirq_own_stack+0x72/0x88
       [<0000098591551b58>] irq_exit+0xb0/0xb8
       [<0000098591510c6a>] do_IRQ+0x82/0xb0
       [<0000098591ca7140>] ext_int_handler+0x128/0x12c
       [<0000098591722d98>] clear_subpage.constprop.13+0x38/0x60
      ([<000009859172ae4c>] clear_huge_page+0xec/0x250)
       [<000009859177e7a2>] do_huge_pmd_anonymous_page+0x32a/0x768
       [<000009859172a712>] __handle_mm_fault+0x88a/0x900
       [<000009859172a860>] handle_mm_fault+0xd8/0x1b0
       [<0000098591529ef6>] do_dat_exception+0x136/0x3e8
       [<0000098591ca6d34>] pgm_check_handler+0x1c8/0x220
      Last Breaking-Event-Address:
       [<001fffff80549c88>] zfcp_erp_timeout_handler+0x10/0x18 [zfcp]
      Kernel panic - not syncing: Fatal exception in interrupt
      
      Link: https://lore.kernel.org/r/20200623140242.98864-1-maier@linux.ibm.com
      Fixes: 75492a51 ("s390/scsi: Convert timers to use timer_setup()")
      Cc: <stable@vger.kernel.org> #4.15+
      Reviewed-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarSteffen Maier <maier@linux.ibm.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d2621f15
    • Takashi Iwai's avatar
      ALSA: usb-audio: Fix OOB access of mixer element list · f4e1c101
      Takashi Iwai authored
      commit 220345e9 upstream.
      
      The USB-audio mixer code holds a linked list of usb_mixer_elem_list,
      and several operations are performed for each mixer element.  A few of
      them (snd_usb_mixer_notify_id() and snd_usb_mixer_interrupt_v2())
      assume each mixer element being a usb_mixer_elem_info object that is a
      subclass of usb_mixer_elem_list, cast via container_of() and access it
      members.  This may result in an out-of-bound access when a
      non-standard list element has been added, as spotted by syzkaller
      recently.
      
      This patch adds a new field, is_std_info, in usb_mixer_elem_list to
      indicate that the element is the usb_mixer_elem_info type or not, and
      skip the access to such an element if needed.
      
      Reported-by: syzbot+fb14314433463ad51625@syzkaller.appspotmail.com
      Reported-by: syzbot+2405ca3401e943c538b5@syzkaller.appspotmail.com
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20200624122340.9615-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f4e1c101
    • Macpaul Lin's avatar
      ALSA: usb-audio: add quirk for Samsung USBC Headset (AKG) · 75208a11
      Macpaul Lin authored
      commit a32a1fc9 upstream.
      
      We've found Samsung USBC Headset (AKG) (VID: 0x04e8, PID: 0xa051)
      need a tiny delay after each class compliant request.
      Otherwise the device might not be able to be recognized each times.
      Signed-off-by: default avatarChihhao Chen <chihhao.chen@mediatek.com>
      Signed-off-by: default avatarMacpaul Lin <macpaul.lin@mediatek.com>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/1592910203-24035-1-git-send-email-macpaul.lin@mediatek.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      75208a11
    • Yick W. Tse's avatar
      ALSA: usb-audio: add quirk for Denon DCD-1500RE · 0237a33e
      Yick W. Tse authored
      commit c9808bbf upstream.
      
      fix error "clock source 41 is not valid, cannot use"
      
      [] New USB device found, idVendor=154e, idProduct=1002, bcdDevice= 1.00
      [] New USB device strings: Mfr=1, Product=2, SerialNumber=0
      [] Product: DCD-1500RE
      [] Manufacturer: D & M Holdings Inc.
      []
      [] clock source 41 is not valid, cannot use
      [] usbcore: registered new interface driver snd-usb-audio
      Signed-off-by: default avatarYick W. Tse <y_w_tse@yahoo.com.hk>
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/1373857985.210365.1592048406997@mail.yahoo.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0237a33e
    • Li Jun's avatar
      usb: typec: tcpci_rt1711h: avoid screaming irq causing boot hangs · 4309ab96
      Li Jun authored
      commit 302c570b upstream.
      
      John reported screaming irq caused by rt1711h when system boot[1],
      this is because irq request is done before tcpci_register_port(),
      so the chip->tcpci has not been setup, irq handler is entered but
      can't do anything, this patch is to address this by moving the irq
      request after tcpci_register_port().
      
      [1] https://lore.kernel.org/linux-usb/20200530040157.31038-1-john.stultz@linaro.org
      
      Fixes: ce08eaeb ("staging: typec: rt1711h typec chip driver")
      Cc: stable <stable@vger.kernel.org> # v4.18+
      Cc: John Stultz <john.stultz@linaro.org>
      Reported-and-tested-by: default avatarJohn Stultz <john.stultz@linaro.org>
      Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
      Signed-off-by: default avatarLi Jun <jun.li@nxp.com>
      Link: https://lore.kernel.org/r/20200604112118.38062-1-jun.li@nxp.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4309ab96
    • Tang Bin's avatar
      usb: host: ehci-exynos: Fix error check in exynos_ehci_probe() · bbf360ac
      Tang Bin authored
      commit 44ed240d upstream.
      
      If the function platform_get_irq() failed, the negative value
      returned will not be detected here. So fix error handling in
      exynos_ehci_probe(). And when get irq failed, the function
      platform_get_irq() logs an error message, so remove redundant
      message here.
      
      Fixes: 1bcc5aa8 ("USB: Add initial S5P EHCI driver")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarZhang Shengju <zhangshengju@cmss.chinamobile.com>
      Signed-off-by: default avatarTang Bin <tangbin@cmss.chinamobile.com>
      Link: https://lore.kernel.org/r/20200602114708.28620-1-tangbin@cmss.chinamobile.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bbf360ac
    • Kai-Heng Feng's avatar
      xhci: Poll for U0 after disabling USB2 LPM · e5e2b508
      Kai-Heng Feng authored
      commit b3d71abd upstream.
      
      USB2 devices with LPM enabled may interrupt the system suspend:
      [  932.510475] usb 1-7: usb suspend, wakeup 0
      [  932.510549] hub 1-0:1.0: hub_suspend
      [  932.510581] usb usb1: bus suspend, wakeup 0
      [  932.510590] xhci_hcd 0000:00:14.0: port 9 not suspended
      [  932.510593] xhci_hcd 0000:00:14.0: port 8 not suspended
      ..
      [  932.520323] xhci_hcd 0000:00:14.0: Port change event, 1-7, id 7, portsc: 0x400e03
      ..
      [  932.591405] PM: pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 returns -16
      [  932.591414] PM: dpm_run_callback(): pci_pm_suspend+0x0/0x160 returns -16
      [  932.591418] PM: Device 0000:00:14.0 failed to suspend async: error -16
      
      During system suspend, USB core will let HC suspends the device if it
      doesn't have remote wakeup enabled and doesn't have any children.
      However, from the log above we can see that the usb 1-7 doesn't get bus
      suspended due to not in U0. After a while the port finished U2 -> U0
      transition, interrupts the suspend process.
      
      The observation is that after disabling LPM, port doesn't transit to U0
      immediately and can linger in U2. xHCI spec 4.23.5.2 states that the
      maximum exit latency for USB2 LPM should be BESL + 10us. The BESL for
      the affected device is advertised as 400us, which is still not enough
      based on my testing result.
      
      So let's use the maximum permitted latency, 10000, to poll for U0
      status to solve the issue.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20200624135949.22611-6-mathias.nyman@linux.intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e5e2b508
    • Macpaul Lin's avatar
      usb: host: xhci-mtk: avoid runtime suspend when removing hcd · fdde3666
      Macpaul Lin authored
      commit a24d5072 upstream.
      
      When runtime suspend was enabled, runtime suspend might happen
      when xhci is removing hcd. This might cause kernel panic when hcd
      has been freed but runtime pm suspend related handle need to
      reference it.
      Signed-off-by: default avatarMacpaul Lin <macpaul.lin@mediatek.com>
      Reviewed-by: default avatarChunfeng Yun <chunfeng.yun@mediatek.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20200624135949.22611-4-mathias.nyman@linux.intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fdde3666
    • Longfang Liu's avatar
      USB: ehci: reopen solution for Synopsys HC bug · 290156ff
      Longfang Liu authored
      commit 1ddcb71a upstream.
      
      A Synopsys USB2.0 core used in Huawei Kunpeng920 SoC has a bug which
      might cause the host controller not issuing ping.
      
      Bug description:
      After indicating an Interrupt on Async Advance, the software uses the
      doorbell mechanism to delete the Next Link queue head of the last
      executed queue head. At this time, the host controller still references
      the removed queue head(the queue head is NULL). NULL reference causes
      the host controller to lose the USB device.
      
      Solution:
      After deleting the Next Link queue head, when has_synopsys_hc_bug set
      to 1,the software can write one of the valid queue head addresses to
      the ASYNCLISTADDR register to allow the host controller to get
      the valid queue head. in order to solve that problem, this patch set
      the flag for Huawei Kunpeng920
      
      There are detailed instructions and solutions in this patch:
      commit 2f7ac6c1 ("USB: ehci: add workaround for Synopsys HC bug")
      Signed-off-by: default avatarLongfang Liu <liulongfang@huawei.com>
      Cc: stable <stable@vger.kernel.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Link: https://lore.kernel.org/r/1591588019-44284-1-git-send-email-liulongfang@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      290156ff
    • Tomasz Meresiński's avatar
      usb: add USB_QUIRK_DELAY_INIT for Logitech C922 · 8736e585
      Tomasz Meresiński authored
      commit 5d802192 upstream.
      
      The Logitech C922, just like other Logitech webcams,
      needs the USB_QUIRK_DELAY_INIT or it will randomly
      not respond after device connection
      Signed-off-by: default avatarTomasz Meresiński <tomasz@meresinski.eu>
      Cc: stable <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20200603203347.7792-1-tomasz@meresinski.euSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8736e585
    • Minas Harutyunyan's avatar
      usb: dwc2: Postponed gadget registration to the udc class driver · 52404065
      Minas Harutyunyan authored
      commit 207324a3 upstream.
      
      During dwc2 driver probe, after gadget registration to the udc class
      driver, if exist any builtin function driver it immediately bound to
      dwc2 and after init host side (dwc2_hcd_init()) stucked in host mode.
      Patch postpone gadget registration after host side initialization done.
      
      Fixes: 117777b2 ("usb: dwc2: Move gadget probe function into platform code")
      Reported-by: default avatarkbuild test robot <lkp@intel.com>
      Tested-by: default avatarMarek Vasut <marex@denx.de>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarMinas Harutyunyan <hminas@synopsys.com>
      Link: https://lore.kernel.org/r/f21cb38fecc72a230b86155d94c7e60c9cb66f58.1591690938.git.hminas@synopsys.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      52404065
    • Chuhong Yuan's avatar
      USB: ohci-sm501: Add missed iounmap() in remove · b9baada6
      Chuhong Yuan authored
      commit 07c112fb upstream.
      
      This driver misses calling iounmap() in remove to undo the ioremap()
      called in probe.
      Add the missed call to fix it.
      
      Fixes: f54aab6e ("usb: ohci-sm501 driver")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarChuhong Yuan <hslester96@gmail.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Link: https://lore.kernel.org/r/20200610024844.3628408-1-hslester96@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b9baada6
    • Taehee Yoo's avatar
      net: core: reduce recursion limit value · b11d1c71
      Taehee Yoo authored
      [ Upstream commit fb7861d1 ]
      
      In the current code, ->ndo_start_xmit() can be executed recursively only
      10 times because of stack memory.
      But, in the case of the vxlan, 10 recursion limit value results in
      a stack overflow.
      In the current code, the nested interface is limited by 8 depth.
      There is no critical reason that the recursion limitation value should
      be 10.
      So, it would be good to be the same value with the limitation value of
      nesting interface depth.
      
      Test commands:
          ip link add vxlan10 type vxlan vni 10 dstport 4789 srcport 4789 4789
          ip link set vxlan10 up
          ip a a 192.168.10.1/24 dev vxlan10
          ip n a 192.168.10.2 dev vxlan10 lladdr fc:22:33:44:55:66 nud permanent
      
          for i in {9..0}
          do
              let A=$i+1
      	ip link add vxlan$i type vxlan vni $i dstport 4789 srcport 4789 4789
      	ip link set vxlan$i up
      	ip a a 192.168.$i.1/24 dev vxlan$i
      	ip n a 192.168.$i.2 dev vxlan$i lladdr fc:22:33:44:55:66 nud permanent
      	bridge fdb add fc:22:33:44:55:66 dev vxlan$A dst 192.168.$i.2 self
          done
          hping3 192.168.10.2 -2 -d 60000
      
      Splat looks like:
      [  103.814237][ T1127] =============================================================================
      [  103.871955][ T1127] BUG kmalloc-2k (Tainted: G    B            ): Padding overwritten. 0x00000000897a2e4f-0x000
      [  103.873187][ T1127] -----------------------------------------------------------------------------
      [  103.873187][ T1127]
      [  103.874252][ T1127] INFO: Slab 0x000000005cccc724 objects=5 used=5 fp=0x0000000000000000 flags=0x10000000001020
      [  103.881323][ T1127] CPU: 3 PID: 1127 Comm: hping3 Tainted: G    B             5.7.0+ #575
      [  103.882131][ T1127] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
      [  103.883006][ T1127] Call Trace:
      [  103.883324][ T1127]  dump_stack+0x96/0xdb
      [  103.883716][ T1127]  slab_err+0xad/0xd0
      [  103.884106][ T1127]  ? _raw_spin_unlock+0x1f/0x30
      [  103.884620][ T1127]  ? get_partial_node.isra.78+0x140/0x360
      [  103.885214][ T1127]  slab_pad_check.part.53+0xf7/0x160
      [  103.885769][ T1127]  ? pskb_expand_head+0x110/0xe10
      [  103.886316][ T1127]  check_slab+0x97/0xb0
      [  103.886763][ T1127]  alloc_debug_processing+0x84/0x1a0
      [  103.887308][ T1127]  ___slab_alloc+0x5a5/0x630
      [  103.887765][ T1127]  ? pskb_expand_head+0x110/0xe10
      [  103.888265][ T1127]  ? lock_downgrade+0x730/0x730
      [  103.888762][ T1127]  ? pskb_expand_head+0x110/0xe10
      [  103.889244][ T1127]  ? __slab_alloc+0x3e/0x80
      [  103.889675][ T1127]  __slab_alloc+0x3e/0x80
      [  103.890108][ T1127]  __kmalloc_node_track_caller+0xc7/0x420
      [ ... ]
      
      Fixes: 11a766ce ("net: Increase xmit RECURSION_LIMIT to 10.")
      Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b11d1c71
    • Tariq Toukan's avatar
      net: Do not clear the sock TX queue in sk_set_socket() · 51049163
      Tariq Toukan authored
      [ Upstream commit 41b14fb8 ]
      
      Clearing the sock TX queue in sk_set_socket() might cause unexpected
      out-of-order transmit when called from sock_orphan(), as outstanding
      packets can pick a different TX queue and bypass the ones already queued.
      
      This is undesired in general. More specifically, it breaks the in-order
      scheduling property guarantee for device-offloaded TLS sockets.
      
      Remove the call to sk_tx_queue_clear() in sk_set_socket(), and add it
      explicitly only where needed.
      
      Fixes: e022f0b4 ("net: Introduce sk_tx_queue_mapping")
      Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
      Reviewed-by: default avatarBoris Pismenny <borisp@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      51049163
    • guodeqing's avatar
      net: Fix the arp error in some cases · b821d059
      guodeqing authored
      [ Upstream commit 5eea3a63 ]
      
      ie.,
      $ ifconfig eth0 6.6.6.6 netmask 255.255.255.0
      
      $ ip rule add from 6.6.6.6 table 6666
      
      $ ip route add 9.9.9.9 via 6.6.6.6
      
      $ ping -I 6.6.6.6 9.9.9.9
      PING 9.9.9.9 (9.9.9.9) from 6.6.6.6 : 56(84) bytes of data.
      
      3 packets transmitted, 0 received, 100% packet loss, time 2079ms
      
      $ arp
      Address     HWtype  HWaddress           Flags Mask            Iface
      6.6.6.6             (incomplete)                              eth0
      
      The arp request address is error, this is because fib_table_lookup in
      fib_check_nh lookup the destnation 9.9.9.9 nexthop, the scope of
      the fib result is RT_SCOPE_LINK,the correct scope is RT_SCOPE_HOST.
      Here I add a check of whether this is RT_TABLE_MAIN to solve this problem.
      
      Fixes: 3bfd8472 ("net: Use passed in table for nexthop lookups")
      Signed-off-by: default avatarguodeqing <geffrey.guo@huawei.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b821d059
    • Toke Høiland-Jørgensen's avatar
      sch_cake: don't call diffserv parsing code when it is not needed · 90814e33
      Toke Høiland-Jørgensen authored
      [ Upstream commit 8c95eca0 ]
      
      As a further optimisation of the diffserv parsing codepath, we can skip it
      entirely if CAKE is configured to neither use diffserv-based
      classification, nor to zero out the diffserv bits.
      
      Fixes: c87b4ecd ("sch_cake: Make sure we can write the IP header before changing DSCP bits")
      Signed-off-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      90814e33
    • Neal Cardwell's avatar
      tcp_cubic: fix spurious HYSTART_DELAY exit upon drop in min RTT · 98e4a340
      Neal Cardwell authored
      [ Upstream commit b344579c ]
      
      Mirja Kuehlewind reported a bug in Linux TCP CUBIC Hystart, where
      Hystart HYSTART_DELAY mechanism can exit Slow Start spuriously on an
      ACK when the minimum rtt of a connection goes down. From inspection it
      is clear from the existing code that this could happen in an example
      like the following:
      
      o The first 8 RTT samples in a round trip are 150ms, resulting in a
        curr_rtt of 150ms and a delay_min of 150ms.
      
      o The 9th RTT sample is 100ms. The curr_rtt does not change after the
        first 8 samples, so curr_rtt remains 150ms. But delay_min can be
        lowered at any time, so delay_min falls to 100ms. The code executes
        the HYSTART_DELAY comparison between curr_rtt of 150ms and delay_min
        of 100ms, and the curr_rtt is declared far enough above delay_min to
        force a (spurious) exit of Slow start.
      
      The fix here is simple: allow every RTT sample in a round trip to
      lower the curr_rtt.
      
      Fixes: ae27e98a ("[TCP] CUBIC v2.3")
      Reported-by: default avatarMirja Kuehlewind <mirja.kuehlewind@ericsson.com>
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      98e4a340
    • Toke Høiland-Jørgensen's avatar
      sch_cake: fix a few style nits · 4184cc37
      Toke Høiland-Jørgensen authored
      [ Upstream commit 3f608f0c ]
      
      I spotted a few nits when comparing the in-tree version of sch_cake with
      the out-of-tree one: A redundant error variable declaration shadowing an
      outer declaration, and an indentation alignment issue. Fix both of these.
      
      Fixes: 046f6fd5 ("sched: Add Common Applications Kept Enhanced (cake) qdisc")
      Signed-off-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4184cc37
    • Ilya Ponetayev's avatar
      sch_cake: don't try to reallocate or unshare skb unconditionally · 79b73b9f
      Ilya Ponetayev authored
      [ Upstream commit 9208d286 ]
      
      cake_handle_diffserv() tries to linearize mac and network header parts of
      skb and to make it writable unconditionally. In some cases it leads to full
      skb reallocation, which reduces throughput and increases CPU load. Some
      measurements of IPv4 forward + NAPT on MIPS router with 580 MHz single-core
      CPU was conducted. It appears that on kernel 4.9 skb_try_make_writable()
      reallocates skb, if skb was allocated in ethernet driver via so-called
      'build skb' method from page cache (it was discovered by strange increase
      of kmalloc-2048 slab at first).
      
      Obtain DSCP value via read-only skb_header_pointer() call, and leave
      linearization only for DSCP bleaching or ECN CE setting. And, as an
      additional optimisation, skip diffserv parsing entirely if it is not needed
      by the current configuration.
      
      Fixes: c87b4ecd ("sch_cake: Make sure we can write the IP header before changing DSCP bits")
      Signed-off-by: default avatarIlya Ponetayev <i.ponetaev@ndmsystems.com>
      [ fix a few style issues, reflow commit message ]
      Signed-off-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      79b73b9f
    • Taehee Yoo's avatar
      ip_tunnel: fix use-after-free in ip_tunnel_lookup() · 3ee1d444
      Taehee Yoo authored
      [ Upstream commit ba61539c ]
      
      In the datapath, the ip_tunnel_lookup() is used and it internally uses
      fallback tunnel device pointer, which is fb_tunnel_dev.
      This pointer variable should be set to NULL when a fb interface is deleted.
      But there is no routine to set fb_tunnel_dev pointer to NULL.
      So, this pointer will be still used after interface is deleted and
      it eventually results in the use-after-free problem.
      
      Test commands:
          ip netns add A
          ip netns add B
          ip link add eth0 type veth peer name eth1
          ip link set eth0 netns A
          ip link set eth1 netns B
      
          ip netns exec A ip link set lo up
          ip netns exec A ip link set eth0 up
          ip netns exec A ip link add gre1 type gre local 10.0.0.1 \
      	    remote 10.0.0.2
          ip netns exec A ip link set gre1 up
          ip netns exec A ip a a 10.0.100.1/24 dev gre1
          ip netns exec A ip a a 10.0.0.1/24 dev eth0
      
          ip netns exec B ip link set lo up
          ip netns exec B ip link set eth1 up
          ip netns exec B ip link add gre1 type gre local 10.0.0.2 \
      	    remote 10.0.0.1
          ip netns exec B ip link set gre1 up
          ip netns exec B ip a a 10.0.100.2/24 dev gre1
          ip netns exec B ip a a 10.0.0.2/24 dev eth1
          ip netns exec A hping3 10.0.100.2 -2 --flood -d 60000 &
          ip netns del B
      
      Splat looks like:
      [   77.793450][    C3] ==================================================================
      [   77.794702][    C3] BUG: KASAN: use-after-free in ip_tunnel_lookup+0xcc4/0xf30
      [   77.795573][    C3] Read of size 4 at addr ffff888060bd9c84 by task hping3/2905
      [   77.796398][    C3]
      [   77.796664][    C3] CPU: 3 PID: 2905 Comm: hping3 Not tainted 5.8.0-rc1+ #616
      [   77.797474][    C3] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
      [   77.798453][    C3] Call Trace:
      [   77.798815][    C3]  <IRQ>
      [   77.799142][    C3]  dump_stack+0x9d/0xdb
      [   77.799605][    C3]  print_address_description.constprop.7+0x2cc/0x450
      [   77.800365][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
      [   77.800908][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
      [   77.801517][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
      [   77.802145][    C3]  kasan_report+0x154/0x190
      [   77.802821][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
      [   77.803503][    C3]  ip_tunnel_lookup+0xcc4/0xf30
      [   77.804165][    C3]  __ipgre_rcv+0x1ab/0xaa0 [ip_gre]
      [   77.804862][    C3]  ? rcu_read_lock_sched_held+0xc0/0xc0
      [   77.805621][    C3]  gre_rcv+0x304/0x1910 [ip_gre]
      [   77.806293][    C3]  ? lock_acquire+0x1a9/0x870
      [   77.806925][    C3]  ? gre_rcv+0xfe/0x354 [gre]
      [   77.807559][    C3]  ? erspan_xmit+0x2e60/0x2e60 [ip_gre]
      [   77.808305][    C3]  ? rcu_read_lock_sched_held+0xc0/0xc0
      [   77.809032][    C3]  ? rcu_read_lock_held+0x90/0xa0
      [   77.809713][    C3]  gre_rcv+0x1b8/0x354 [gre]
      [ ... ]
      Suggested-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Fixes: c5441932 ("GRE: Refactor GRE tunneling code.")
      Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3ee1d444
    • Florian Fainelli's avatar
      net: phy: Check harder for errors in get_phy_id() · 1c5f7643
      Florian Fainelli authored
      [ Upstream commit b2ffc75e ]
      
      Commit 02a6efca ("net: phy: allow scanning busses with missing
      phys") added a special condition to return -ENODEV in case -ENODEV or
      -EIO was returned from the first read of the MII_PHYSID1 register.
      
      In case the MDIO bus data line pull-up is not strong enough, the MDIO
      bus controller will not flag this as a read error. This can happen when
      a pluggable daughter card is not connected and weak internal pull-ups
      are used (since that is the only option, otherwise the pins are
      floating).
      
      The second read of MII_PHYSID2 will be correctly flagged an error
      though, but now we will return -EIO which will be treated as a hard
      error, thus preventing MDIO bus scanning loops to continue succesfully.
      
      Apply the same logic to both register reads, thus allowing the scanning
      logic to proceed.
      
      Fixes: 02a6efca ("net: phy: allow scanning busses with missing phys")
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1c5f7643
    • Taehee Yoo's avatar
      ip6_gre: fix use-after-free in ip6gre_tunnel_lookup() · a611d1a0
      Taehee Yoo authored
      [ Upstream commit dafabb65 ]
      
      In the datapath, the ip6gre_tunnel_lookup() is used and it internally uses
      fallback tunnel device pointer, which is fb_tunnel_dev.
      This pointer variable should be set to NULL when a fb interface is deleted.
      But there is no routine to set fb_tunnel_dev pointer to NULL.
      So, this pointer will be still used after interface is deleted and
      it eventually results in the use-after-free problem.
      
      Test commands:
          ip netns add A
          ip netns add B
          ip link add eth0 type veth peer name eth1
          ip link set eth0 netns A
          ip link set eth1 netns B
      
          ip netns exec A ip link set lo up
          ip netns exec A ip link set eth0 up
          ip netns exec A ip link add ip6gre1 type ip6gre local fc:0::1 \
      	    remote fc:0::2
          ip netns exec A ip -6 a a fc:100::1/64 dev ip6gre1
          ip netns exec A ip link set ip6gre1 up
          ip netns exec A ip -6 a a fc:0::1/64 dev eth0
          ip netns exec A ip link set ip6gre0 up
      
          ip netns exec B ip link set lo up
          ip netns exec B ip link set eth1 up
          ip netns exec B ip link add ip6gre1 type ip6gre local fc:0::2 \
      	    remote fc:0::1
          ip netns exec B ip -6 a a fc:100::2/64 dev ip6gre1
          ip netns exec B ip link set ip6gre1 up
          ip netns exec B ip -6 a a fc:0::2/64 dev eth1
          ip netns exec B ip link set ip6gre0 up
          ip netns exec A ping fc:100::2 -s 60000 &
          ip netns del B
      
      Splat looks like:
      [   73.087285][    C1] BUG: KASAN: use-after-free in ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
      [   73.088361][    C1] Read of size 4 at addr ffff888040559218 by task ping/1429
      [   73.089317][    C1]
      [   73.089638][    C1] CPU: 1 PID: 1429 Comm: ping Not tainted 5.7.0+ #602
      [   73.090531][    C1] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
      [   73.091725][    C1] Call Trace:
      [   73.092160][    C1]  <IRQ>
      [   73.092556][    C1]  dump_stack+0x96/0xdb
      [   73.093122][    C1]  print_address_description.constprop.6+0x2cc/0x450
      [   73.094016][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
      [   73.094894][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
      [   73.095767][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
      [   73.096619][    C1]  kasan_report+0x154/0x190
      [   73.097209][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
      [   73.097989][    C1]  ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
      [   73.098750][    C1]  ? gre_del_protocol+0x60/0x60 [gre]
      [   73.099500][    C1]  gre_rcv+0x1c5/0x1450 [ip6_gre]
      [   73.100199][    C1]  ? ip6gre_header+0xf00/0xf00 [ip6_gre]
      [   73.100985][    C1]  ? rcu_read_lock_sched_held+0xc0/0xc0
      [   73.101830][    C1]  ? ip6_input_finish+0x5/0xf0
      [   73.102483][    C1]  ip6_protocol_deliver_rcu+0xcbb/0x1510
      [   73.103296][    C1]  ip6_input_finish+0x5b/0xf0
      [   73.103920][    C1]  ip6_input+0xcd/0x2c0
      [   73.104473][    C1]  ? ip6_input_finish+0xf0/0xf0
      [   73.105115][    C1]  ? rcu_read_lock_held+0x90/0xa0
      [   73.105783][    C1]  ? rcu_read_lock_sched_held+0xc0/0xc0
      [   73.106548][    C1]  ipv6_rcv+0x1f1/0x300
      [ ... ]
      Suggested-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Fixes: c12b395a ("gre: Support GRE over IPv6")
      Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a611d1a0
    • David Christensen's avatar
      tg3: driver sleeps indefinitely when EEH errors exceed eeh_max_freezes · 00090425
      David Christensen authored
      [ Upstream commit 3a2656a2 ]
      
      The driver function tg3_io_error_detected() calls napi_disable twice,
      without an intervening napi_enable, when the number of EEH errors exceeds
      eeh_max_freezes, resulting in an indefinite sleep while holding rtnl_lock.
      
      Add check for pcierr_recovery which skips code already executed for the
      "Frozen" state.
      Signed-off-by: default avatarDavid Christensen <drc@linux.vnet.ibm.com>
      Reviewed-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      00090425
    • Eric Dumazet's avatar
      tcp: grow window for OOO packets only for SACK flows · bcf95ac6
      Eric Dumazet authored
      [ Upstream commit 66205121 ]
      
      Back in 2013, we made a change that broke fast retransmit
      for non SACK flows.
      
      Indeed, for these flows, a sender needs to receive three duplicate
      ACK before starting fast retransmit. Sending ACK with different
      receive window do not count.
      
      Even if enabling SACK is strongly recommended these days,
      there still are some cases where it has to be disabled.
      
      Not increasing the window seems better than having to
      rely on RTO.
      
      After the fix, following packetdrill test gives :
      
      // Initialize connection
          0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
         +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
         +0 bind(3, ..., ...) = 0
         +0 listen(3, 1) = 0
      
         +0 < S 0:0(0) win 32792 <mss 1000,nop,wscale 7>
         +0 > S. 0:0(0) ack 1 <mss 1460,nop,wscale 8>
         +0 < . 1:1(0) ack 1 win 514
      
         +0 accept(3, ..., ...) = 4
      
         +0 < . 1:1001(1000) ack 1 win 514
      // Quick ack
         +0 > . 1:1(0) ack 1001 win 264
      
         +0 < . 2001:3001(1000) ack 1 win 514
      // DUPACK : Normally we should not change the window
         +0 > . 1:1(0) ack 1001 win 264
      
         +0 < . 3001:4001(1000) ack 1 win 514
      // DUPACK : Normally we should not change the window
         +0 > . 1:1(0) ack 1001 win 264
      
         +0 < . 4001:5001(1000) ack 1 win 514
      // DUPACK : Normally we should not change the window
          +0 > . 1:1(0) ack 1001 win 264
      
         +0 < . 1001:2001(1000) ack 1 win 514
      // Hole is repaired.
         +0 > . 1:1(0) ack 5001 win 272
      
      Fixes: 4e4f1fc2 ("tcp: properly increase rcv_ssthresh for ofo packets")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarVenkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bcf95ac6
    • Denis Kirjanov's avatar
      tcp: don't ignore ECN CWR on pure ACK · a4f8b268
      Denis Kirjanov authored
      [ Upstream commit 25702840 ]
      
      there is a problem with the CWR flag set in an incoming ACK segment
      and it leads to the situation when the ECE flag is latched forever
      
      the following packetdrill script shows what happens:
      
      // Stack receives incoming segments with CE set
      +0.1 <[ect0]  . 11001:12001(1000) ack 1001 win 65535
      +0.0 <[ce]    . 12001:13001(1000) ack 1001 win 65535
      +0.0 <[ect0] P. 13001:14001(1000) ack 1001 win 65535
      
      // Stack repsonds with ECN ECHO
      +0.0 >[noecn]  . 1001:1001(0) ack 12001
      +0.0 >[noecn] E. 1001:1001(0) ack 13001
      +0.0 >[noecn] E. 1001:1001(0) ack 14001
      
      // Write a packet
      +0.1 write(3, ..., 1000) = 1000
      +0.0 >[ect0] PE. 1001:2001(1000) ack 14001
      
      // Pure ACK received
      +0.01 <[noecn] W. 14001:14001(0) ack 2001 win 65535
      
      // Since CWR was sent, this packet should NOT have ECE set
      
      +0.1 write(3, ..., 1000) = 1000
      +0.0 >[ect0]  P. 2001:3001(1000) ack 14001
      // but Linux will still keep ECE latched here, with packetdrill
      // flagging a missing ECE flag, expecting
      // >[ect0] PE. 2001:3001(1000) ack 14001
      // in the script
      
      In the situation above we will continue to send ECN ECHO packets
      and trigger the peer to reduce the congestion window. To avoid that
      we can check CWR on pure ACKs received.
      
      v3:
      - Add a sequence check to avoid sending an ACK to an ACK
      
      v2:
      - Adjusted the comment
      - move CWR check before checking for unacknowledged packets
      Signed-off-by: default avatarDenis Kirjanov <denis.kirjanov@suse.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a4f8b268
    • Marcelo Ricardo Leitner's avatar
      sctp: Don't advertise IPv4 addresses if ipv6only is set on the socket · 8a3839c7
      Marcelo Ricardo Leitner authored
      [ Upstream commit 471e39df ]
      
      If a socket is set ipv6only, it will still send IPv4 addresses in the
      INIT and INIT_ACK packets. This potentially misleads the peer into using
      them, which then would cause association termination.
      
      The fix is to not add IPv4 addresses to ipv6only sockets.
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Reported-by: default avatarCorey Minyard <cminyard@mvista.com>
      Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Tested-by: default avatarCorey Minyard <cminyard@mvista.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8a3839c7
    • David Howells's avatar
      rxrpc: Fix notification call on completion of discarded calls · a3bc2b29
      David Howells authored
      [ Upstream commit 0041cd5a ]
      
      When preallocated service calls are being discarded, they're passed to
      ->discard_new_call() to have the caller clean up any attached higher-layer
      preallocated pieces before being marked completed.  However, the act of
      marking them completed now invokes the call's notification function - which
      causes a problem because that function might assume that the previously
      freed pieces of memory are still there.
      
      Fix this by setting a dummy notification function on the socket after
      calling ->discard_new_call().
      
      This results in the following kasan message when the kafs module is
      removed.
      
      ==================================================================
      BUG: KASAN: use-after-free in afs_wake_up_async_call+0x6aa/0x770 fs/afs/rxrpc.c:707
      Write of size 1 at addr ffff8880946c39e4 by task kworker/u4:1/21
      
      CPU: 0 PID: 21 Comm: kworker/u4:1 Not tainted 5.8.0-rc1-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Workqueue: netns cleanup_net
      Call Trace:
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x18f/0x20d lib/dump_stack.c:118
       print_address_description.constprop.0.cold+0xd3/0x413 mm/kasan/report.c:383
       __kasan_report mm/kasan/report.c:513 [inline]
       kasan_report.cold+0x1f/0x37 mm/kasan/report.c:530
       afs_wake_up_async_call+0x6aa/0x770 fs/afs/rxrpc.c:707
       rxrpc_notify_socket+0x1db/0x5d0 net/rxrpc/recvmsg.c:40
       __rxrpc_set_call_completion.part.0+0x172/0x410 net/rxrpc/recvmsg.c:76
       __rxrpc_call_completed net/rxrpc/recvmsg.c:112 [inline]
       rxrpc_call_completed+0xca/0xf0 net/rxrpc/recvmsg.c:111
       rxrpc_discard_prealloc+0x781/0xab0 net/rxrpc/call_accept.c:233
       rxrpc_listen+0x147/0x360 net/rxrpc/af_rxrpc.c:245
       afs_close_socket+0x95/0x320 fs/afs/rxrpc.c:110
       afs_net_exit+0x1bc/0x310 fs/afs/main.c:155
       ops_exit_list.isra.0+0xa8/0x150 net/core/net_namespace.c:186
       cleanup_net+0x511/0xa50 net/core/net_namespace.c:603
       process_one_work+0x965/0x1690 kernel/workqueue.c:2269
       worker_thread+0x96/0xe10 kernel/workqueue.c:2415
       kthread+0x3b5/0x4a0 kernel/kthread.c:291
       ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:293
      
      Allocated by task 6820:
       save_stack+0x1b/0x40 mm/kasan/common.c:48
       set_track mm/kasan/common.c:56 [inline]
       __kasan_kmalloc mm/kasan/common.c:494 [inline]
       __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:467
       kmem_cache_alloc_trace+0x153/0x7d0 mm/slab.c:3551
       kmalloc include/linux/slab.h:555 [inline]
       kzalloc include/linux/slab.h:669 [inline]
       afs_alloc_call+0x55/0x630 fs/afs/rxrpc.c:141
       afs_charge_preallocation+0xe9/0x2d0 fs/afs/rxrpc.c:757
       afs_open_socket+0x292/0x360 fs/afs/rxrpc.c:92
       afs_net_init+0xa6c/0xe30 fs/afs/main.c:125
       ops_init+0xaf/0x420 net/core/net_namespace.c:151
       setup_net+0x2de/0x860 net/core/net_namespace.c:341
       copy_net_ns+0x293/0x590 net/core/net_namespace.c:482
       create_new_namespaces+0x3fb/0xb30 kernel/nsproxy.c:110
       unshare_nsproxy_namespaces+0xbd/0x1f0 kernel/nsproxy.c:231
       ksys_unshare+0x43d/0x8e0 kernel/fork.c:2983
       __do_sys_unshare kernel/fork.c:3051 [inline]
       __se_sys_unshare kernel/fork.c:3049 [inline]
       __x64_sys_unshare+0x2d/0x40 kernel/fork.c:3049
       do_syscall_64+0x60/0xe0 arch/x86/entry/common.c:359
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      
      Freed by task 21:
       save_stack+0x1b/0x40 mm/kasan/common.c:48
       set_track mm/kasan/common.c:56 [inline]
       kasan_set_free_info mm/kasan/common.c:316 [inline]
       __kasan_slab_free+0xf7/0x140 mm/kasan/common.c:455
       __cache_free mm/slab.c:3426 [inline]
       kfree+0x109/0x2b0 mm/slab.c:3757
       afs_put_call+0x585/0xa40 fs/afs/rxrpc.c:190
       rxrpc_discard_prealloc+0x764/0xab0 net/rxrpc/call_accept.c:230
       rxrpc_listen+0x147/0x360 net/rxrpc/af_rxrpc.c:245
       afs_close_socket+0x95/0x320 fs/afs/rxrpc.c:110
       afs_net_exit+0x1bc/0x310 fs/afs/main.c:155
       ops_exit_list.isra.0+0xa8/0x150 net/core/net_namespace.c:186
       cleanup_net+0x511/0xa50 net/core/net_namespace.c:603
       process_one_work+0x965/0x1690 kernel/workqueue.c:2269
       worker_thread+0x96/0xe10 kernel/workqueue.c:2415
       kthread+0x3b5/0x4a0 kernel/kthread.c:291
       ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:293
      
      The buggy address belongs to the object at ffff8880946c3800
       which belongs to the cache kmalloc-1k of size 1024
      The buggy address is located 484 bytes inside of
       1024-byte region [ffff8880946c3800, ffff8880946c3c00)
      The buggy address belongs to the page:
      page:ffffea000251b0c0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0
      flags: 0xfffe0000000200(slab)
      raw: 00fffe0000000200 ffffea0002546508 ffffea00024fa248 ffff8880aa000c40
      raw: 0000000000000000 ffff8880946c3000 0000000100000002 0000000000000000
      page dumped because: kasan: bad access detected
      
      Memory state around the buggy address:
       ffff8880946c3880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff8880946c3900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      >ffff8880946c3980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                             ^
       ffff8880946c3a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff8880946c3a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ==================================================================
      
      Reported-by: syzbot+d3eccef36ddbd02713e9@syzkaller.appspotmail.com
      Fixes: 5ac0d622 ("rxrpc: Fix missing notification")
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a3bc2b29
    • Aditya Pakki's avatar
      rocker: fix incorrect error handling in dma_rings_init · 3de8d385
      Aditya Pakki authored
      [ Upstream commit 58d0c864 ]
      
      In rocker_dma_rings_init, the goto blocks in case of errors
      caused by the functions rocker_dma_cmd_ring_waits_alloc() and
      rocker_dma_ring_create() are incorrect. The patch fixes the
      order consistent with cleanup in rocker_dma_rings_fini().
      Signed-off-by: default avatarAditya Pakki <pakki001@umn.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3de8d385
    • Jeremy Kerr's avatar
      net: usb: ax88179_178a: fix packet alignment padding · c191f7cf
      Jeremy Kerr authored
      [ Upstream commit e869e7a1 ]
      
      Using a AX88179 device (0b95:1790), I see two bytes of appended data on
      every RX packet. For example, this 48-byte ping, using 0xff as a
      payload byte:
      
        04:20:22.528472 IP 192.168.1.1 > 192.168.1.2: ICMP echo request, id 2447, seq 1, length 64
      	0x0000:  000a cd35 ea50 000a cd35 ea4f 0800 4500
      	0x0010:  0054 c116 4000 4001 f63e c0a8 0101 c0a8
      	0x0020:  0102 0800 b633 098f 0001 87ea cd5e 0000
      	0x0030:  0000 dcf2 0600 0000 0000 ffff ffff ffff
      	0x0040:  ffff ffff ffff ffff ffff ffff ffff ffff
      	0x0050:  ffff ffff ffff ffff ffff ffff ffff ffff
      	0x0060:  ffff 961f
      
      Those last two bytes - 96 1f - aren't part of the original packet.
      
      In the ax88179 RX path, the usbnet rx_fixup function trims a 2-byte
      'alignment pseudo header' from the start of the packet, and sets the
      length from a per-packet field populated by hardware. It looks like that
      length field *includes* the 2-byte header; the current driver assumes
      that it's excluded.
      
      This change trims the 2-byte alignment header after we've set the packet
      length, so the resulting packet length is correct. While we're moving
      the comment around, this also fixes the spelling of 'pseudo'.
      Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c191f7cf
    • Eric Dumazet's avatar
      net: increment xmit_recursion level in dev_direct_xmit() · 220e80d9
      Eric Dumazet authored
      [ Upstream commit 0ad6f6e7 ]
      
      Back in commit f60e5990 ("ipv6: protect skb->sk accesses
      from recursive dereference inside the stack") Hannes added code
      so that IPv6 stack would not trust skb->sk for typical cases
      where packet goes through 'standard' xmit path (__dev_queue_xmit())
      
      Alas af_packet had a dev_direct_xmit() path that was not
      dealing yet with xmit_recursion level.
      
      Also change sk_mc_loop() to dump a stack once only.
      
      Without this patch, syzbot was able to trigger :
      
      [1]
      [  153.567378] WARNING: CPU: 7 PID: 11273 at net/core/sock.c:721 sk_mc_loop+0x51/0x70
      [  153.567378] Modules linked in: nfnetlink ip6table_raw ip6table_filter iptable_raw iptable_nat nf_nat nf_conntrack nf_defrag_ipv4 nf_defrag_ipv6 iptable_filter macsec macvtap tap macvlan 8021q hsr wireguard libblake2s blake2s_x86_64 libblake2s_generic udp_tunnel ip6_udp_tunnel libchacha20poly1305 poly1305_x86_64 chacha_x86_64 libchacha curve25519_x86_64 libcurve25519_generic netdevsim batman_adv dummy team bridge stp llc w1_therm wire i2c_mux_pca954x i2c_mux cdc_acm ehci_pci ehci_hcd mlx4_en mlx4_ib ib_uverbs ib_core mlx4_core
      [  153.567386] CPU: 7 PID: 11273 Comm: b159172088 Not tainted 5.8.0-smp-DEV #273
      [  153.567387] RIP: 0010:sk_mc_loop+0x51/0x70
      [  153.567388] Code: 66 83 f8 0a 75 24 0f b6 4f 12 b8 01 00 00 00 31 d2 d3 e0 a9 bf ef ff ff 74 07 48 8b 97 f0 02 00 00 0f b6 42 3a 83 e0 01 5d c3 <0f> 0b b8 01 00 00 00 5d c3 0f b6 87 18 03 00 00 5d c0 e8 04 83 e0
      [  153.567388] RSP: 0018:ffff95c69bb93990 EFLAGS: 00010212
      [  153.567388] RAX: 0000000000000011 RBX: ffff95c6e0ee3e00 RCX: 0000000000000007
      [  153.567389] RDX: ffff95c69ae50000 RSI: ffff95c6c30c3000 RDI: ffff95c6c30c3000
      [  153.567389] RBP: ffff95c69bb93990 R08: ffff95c69a77f000 R09: 0000000000000008
      [  153.567389] R10: 0000000000000040 R11: 00003e0e00026128 R12: ffff95c6c30c3000
      [  153.567390] R13: ffff95c6cc4fd500 R14: ffff95c6f84500c0 R15: ffff95c69aa13c00
      [  153.567390] FS:  00007fdc3a283700(0000) GS:ffff95c6ff9c0000(0000) knlGS:0000000000000000
      [  153.567390] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  153.567391] CR2: 00007ffee758e890 CR3: 0000001f9ba20003 CR4: 00000000001606e0
      [  153.567391] Call Trace:
      [  153.567391]  ip6_finish_output2+0x34e/0x550
      [  153.567391]  __ip6_finish_output+0xe7/0x110
      [  153.567391]  ip6_finish_output+0x2d/0xb0
      [  153.567392]  ip6_output+0x77/0x120
      [  153.567392]  ? __ip6_finish_output+0x110/0x110
      [  153.567392]  ip6_local_out+0x3d/0x50
      [  153.567392]  ipvlan_queue_xmit+0x56c/0x5e0
      [  153.567393]  ? ksize+0x19/0x30
      [  153.567393]  ipvlan_start_xmit+0x18/0x50
      [  153.567393]  dev_direct_xmit+0xf3/0x1c0
      [  153.567393]  packet_direct_xmit+0x69/0xa0
      [  153.567394]  packet_sendmsg+0xbf0/0x19b0
      [  153.567394]  ? plist_del+0x62/0xb0
      [  153.567394]  sock_sendmsg+0x65/0x70
      [  153.567394]  sock_write_iter+0x93/0xf0
      [  153.567394]  new_sync_write+0x18e/0x1a0
      [  153.567395]  __vfs_write+0x29/0x40
      [  153.567395]  vfs_write+0xb9/0x1b0
      [  153.567395]  ksys_write+0xb1/0xe0
      [  153.567395]  __x64_sys_write+0x1a/0x20
      [  153.567395]  do_syscall_64+0x43/0x70
      [  153.567396]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  153.567396] RIP: 0033:0x453549
      [  153.567396] Code: Bad RIP value.
      [  153.567396] RSP: 002b:00007fdc3a282cc8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
      [  153.567397] RAX: ffffffffffffffda RBX: 00000000004d32d0 RCX: 0000000000453549
      [  153.567397] RDX: 0000000000000020 RSI: 0000000020000300 RDI: 0000000000000003
      [  153.567398] RBP: 00000000004d32d8 R08: 0000000000000000 R09: 0000000000000000
      [  153.567398] R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004d32dc
      [  153.567398] R13: 00007ffee742260f R14: 00007fdc3a282dc0 R15: 00007fdc3a283700
      [  153.567399] ---[ end trace c1d5ae2b1059ec62 ]---
      
      f60e5990 ("ipv6: protect skb->sk accesses from recursive dereference inside the stack")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      220e80d9
    • Florian Westphal's avatar
      net: use correct this_cpu primitive in dev_recursion_level · 3a708efa
      Florian Westphal authored
      commit 28b05b92 upstream.
      
      syzbot reports:
      BUG: using __this_cpu_read() in preemptible code:
      caller is dev_recursion_level include/linux/netdevice.h:3052 [inline]
       __this_cpu_preempt_check+0x246/0x270 lib/smp_processor_id.c:47
       dev_recursion_level include/linux/netdevice.h:3052 [inline]
       ip6_skb_dst_mtu include/net/ip6_route.h:245 [inline]
      
      I erronously downgraded a this_cpu_read to __this_cpu_read when
      moving dev_recursion_level() around.
      
      Reported-by: syzbot+51471b4aae195285a4a3@syzkaller.appspotmail.com
      Fixes: 97cdcf37 ("net: place xmit recursion in softnet data")
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3a708efa
    • Florian Westphal's avatar
      net: place xmit recursion in softnet data · edbe6532
      Florian Westphal authored
      commit 97cdcf37 upstream.
      
      This fills a hole in softnet data, so no change in structure size.
      
      Also prepares for xmit_more placement in the same spot;
      skb->xmit_more will be removed in followup patch.
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      edbe6532