1. 04 May, 2019 23 commits
    • Wen Yang's avatar
      net: ethernet: ti: fix possible object reference leak · 9842f4ce
      Wen Yang authored
      [ Upstream commit 75eac7b5 ]
      
      The call to of_get_child_by_name returns a node pointer with refcount
      incremented thus it must be explicitly decremented after the last
      usage.
      
      Detected by coccinelle with the following warnings:
      ./drivers/net/ethernet/ti/netcp_ethss.c:3661:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 3654, but without a corresponding object release within this function.
      ./drivers/net/ethernet/ti/netcp_ethss.c:3665:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 3654, but without a corresponding object release within this function.
      Signed-off-by: default avatarWen Yang <wen.yang99@zte.com.cn>
      Cc: Wingman Kwok <w-kwok2@ti.com>
      Cc: Murali Karicheri <m-karicheri2@ti.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      9842f4ce
    • Wen Yang's avatar
      net: ibm: fix possible object reference leak · a6989d3d
      Wen Yang authored
      [ Upstream commit be693df3 ]
      
      The call to ehea_get_eth_dn returns a node pointer with refcount
      incremented thus it must be explicitly decremented after the last
      usage.
      
      Detected by coccinelle with the following warnings:
      ./drivers/net/ethernet/ibm/ehea/ehea_main.c:3163:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 3154, but without a corresponding object release within this function.
      Signed-off-by: default avatarWen Yang <wen.yang99@zte.com.cn>
      Cc: Douglas Miller <dougmill@linux.ibm.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      a6989d3d
    • Wen Yang's avatar
      net: xilinx: fix possible object reference leak · 4cfa26b8
      Wen Yang authored
      [ Upstream commit fa3a419d ]
      
      The call to of_parse_phandle returns a node pointer with refcount
      incremented thus it must be explicitly decremented after the last
      usage.
      
      Detected by coccinelle with the following warnings:
      ./drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1624:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 1569, but without a corresponding object release within this function.
      Signed-off-by: default avatarWen Yang <wen.yang99@zte.com.cn>
      Cc: Anirudha Sarangi <anirudh@xilinx.com>
      Cc: John Linn <John.Linn@xilinx.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Michal Simek <michal.simek@xilinx.com>
      Cc: netdev@vger.kernel.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      4cfa26b8
    • Trond Myklebust's avatar
      NFS: Fix a typo in nfs_init_timeout_values() · 986fa92b
      Trond Myklebust authored
      [ Upstream commit 5a698243 ]
      
      Specifying a retrans=0 mount parameter to a NFS/TCP mount, is
      inadvertently causing the NFS client to rewrite any specified
      timeout parameter to the default of 60 seconds.
      
      Fixes: a956beda ("NFS: Allow the mount option retrans=0")
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      986fa92b
    • Dan Carpenter's avatar
      staging: rtl8712: uninitialized memory in read_bbreg_hdl() · 63bbfd06
      Dan Carpenter authored
      [ Upstream commit 22c971db ]
      
      Colin King reported a bug in read_bbreg_hdl():
      
      	memcpy(pcmd->rsp, (u8 *)&val, pcmd->rspsz);
      
      The problem is that "val" is uninitialized.
      
      This code is obviously not useful, but so far as I can tell
      "pcmd->cmdcode" is never GEN_CMD_CODE(_Read_BBREG) so it's not harmful
      either.  For now the easiest fix is to just call r8712_free_cmd_obj()
      and return.
      
      Fixes: 2865d42c ("staging: r8712u: Add the new driver to the mainline kernel")
      Reported-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      63bbfd06
    • Lukas Wunner's avatar
      net: ks8851: Set initial carrier state to down · a3c43491
      Lukas Wunner authored
      [ Upstream commit 9624bafa ]
      
      The ks8851 chip's initial carrier state is down. A Link Change Interrupt
      is signaled once interrupts are enabled if the carrier is up.
      
      The ks8851 driver has it backwards by assuming that the initial carrier
      state is up. The state is therefore misrepresented if the interface is
      opened with no cable attached. Fix it.
      
      The Link Change interrupt is sometimes not signaled unless the P1MBSR
      register (which contains the Link Status bit) is read on ->ndo_open().
      This might be a hardware erratum. Read the register by calling
      mii_check_link(), which has the desirable side effect of setting the
      carrier state to down if the cable was detached while the interface was
      closed.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Frank Pavlic <f.pavlic@kunbus.de>
      Cc: Ben Dooks <ben.dooks@codethink.co.uk>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      a3c43491
    • Lukas Wunner's avatar
      net: ks8851: Delay requesting IRQ until opened · d138939d
      Lukas Wunner authored
      [ Upstream commit d268f315 ]
      
      The ks8851 driver currently requests the IRQ before registering the
      net_device.  Because the net_device name is used as IRQ name and is
      still "eth%d" when the IRQ is requested, it's impossibe to tell IRQs
      apart if multiple ks8851 chips are present.  Most other drivers delay
      requesting the IRQ until the net_device is opened.  Do the same.
      
      The driver doesn't enable interrupts on the chip before opening the
      net_device and disables them when closing it, so there doesn't seem to
      be a need to request the IRQ already on probe.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Frank Pavlic <f.pavlic@kunbus.de>
      Cc: Ben Dooks <ben.dooks@codethink.co.uk>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      d138939d
    • Lukas Wunner's avatar
      net: ks8851: Reassert reset pin if chip ID check fails · 6f5cfdeb
      Lukas Wunner authored
      [ Upstream commit 761cfa97 ]
      
      Commit 73fdeb82 ("net: ks8851: Add optional vdd_io regulator and
      reset gpio") amended the ks8851 driver to briefly assert the chip's
      reset pin on probe. It also amended the probe routine's error path to
      reassert the reset pin if a subsequent initialization step fails.
      
      However the commit misplaced reassertion of the reset pin in the error
      path such that it is not performed if the check of the Chip ID and
      Enable Register (CIDER) fails. The error path is therefore slightly
      asymmetrical to the probe routine's body. Fix it.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Frank Pavlic <f.pavlic@kunbus.de>
      Cc: Stephen Boyd <sboyd@codeaurora.org>
      Cc: Nishanth Menon <nm@ti.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      6f5cfdeb
    • Lukas Wunner's avatar
      net: ks8851: Dequeue RX packets explicitly · 3098a8b5
      Lukas Wunner authored
      [ Upstream commit 536d3680 ]
      
      The ks8851 driver lets the chip auto-dequeue received packets once they
      have been read in full. It achieves that by setting the ADRFE flag in
      the RXQCR register ("Auto-Dequeue RXQ Frame Enable").
      
      However if allocation of a packet's socket buffer or retrieval of the
      packet over the SPI bus fails, the packet will not have been read in
      full and is not auto-dequeued. Such partial retrieval of a packet
      confuses the chip's RX queue management:  On the next RX interrupt,
      the first packet read from the queue will be the one left there
      previously and this one can be retrieved without issues. But for any
      newly received packets, the frame header status and byte count registers
      (RXFHSR and RXFHBCR) contain bogus values, preventing their retrieval.
      
      The chip allows explicitly dequeueing a packet from the RX queue by
      setting the RRXEF flag in the RXQCR register ("Release RX Error Frame").
      This could be used to dequeue the packet in case of an error, but if
      that error is a failed SPI transfer, it is unknown if the packet was
      transferred in full and was auto-dequeued or if it was only transferred
      in part and requires an explicit dequeue. The safest approach is thus
      to always dequeue packets explicitly and forgo auto-dequeueing.
      
      Without this change, I've witnessed packet retrieval break completely
      when an SPI DMA transfer fails, requiring a chip reset. Explicit
      dequeueing magically fixes this and makes packet retrieval absolutely
      robust for me.
      
      The chip's documentation suggests auto-dequeuing and uses the RRXEF
      flag only to dequeue error frames which the driver doesn't want to
      retrieve. But that seems to be a fair-weather approach.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Frank Pavlic <f.pavlic@kunbus.de>
      Cc: Ben Dooks <ben.dooks@codethink.co.uk>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      3098a8b5
    • Marco Felsch's avatar
      ARM: dts: pfla02: increase phy reset duration · 63aa211c
      Marco Felsch authored
      [ Upstream commit 032f85c9 ]
      
      Increase the reset duration to ensure correct phy functionality. The
      reset duration is taken from barebox commit 52fdd510de ("ARM: dts:
      pfla02: use long enough reset for ethernet phy"):
      
        Use a longer reset time for ethernet phy Micrel KSZ9031RNX. Otherwise a
        small percentage of modules have 'transmission timeouts' errors like
      
        barebox@Phytec phyFLEX-i.MX6 Quad Carrier-Board:/ ifup eth0
        warning: No MAC address set. Using random address 7e:94:4d:02:f8:f3
        eth0: 1000Mbps full duplex link detected
        eth0: transmission timeout
        T eth0: transmission timeout
        T eth0: transmission timeout
        T eth0: transmission timeout
        T eth0: transmission timeout
      
      Cc: Stefan Christ <s.christ@phytec.de>
      Cc: Christian Hemp <c.hemp@phytec.de>
      Signed-off-by: default avatarMarco Felsch <m.felsch@pengutronix.de>
      Fixes: 3180f956 ("ARM: dts: Phytec imx6q pfla02 and pbab01 support")
      Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      63aa211c
    • Guido Kiener's avatar
      usb: gadget: net2272: Fix net2272_dequeue() · 3cd83b59
      Guido Kiener authored
      [ Upstream commit 091dacc3 ]
      
      Restore the status of ep->stopped in function net2272_dequeue().
      
      When the given request is not found in the endpoint queue
      the function returns -EINVAL without restoring the state of
      ep->stopped. Thus the endpoint keeps blocked and does not transfer
      any data anymore.
      
      This fix is only compile-tested, since we do not have a
      corresponding hardware. An analogous fix was tested in the sibling
      driver. See "usb: gadget: net2280: Fix net2280_dequeue()"
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGuido Kiener <guido.kiener@rohde-schwarz.com>
      Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      3cd83b59
    • Guido Kiener's avatar
      usb: gadget: net2280: Fix net2280_dequeue() · 56b96117
      Guido Kiener authored
      [ Upstream commit f1d3fba1 ]
      
      When a request must be dequeued with net2280_dequeue() e.g. due
      to a device clear action and the same request is finished by the
      function scan_dma_completions() then the function net2280_dequeue()
      does not find the request in the following search loop and
      returns the error -EINVAL without restoring the status ep->stopped.
      Thus the endpoint keeps blocked and does not receive any data
      anymore.
      This fix restores the status and does not issue an error message.
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGuido Kiener <guido.kiener@rohde-schwarz.com>
      Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      56b96117
    • Guido Kiener's avatar
      usb: gadget: net2280: Fix overrun of OUT messages · ebb77904
      Guido Kiener authored
      [ Upstream commit 9d6a54c1 ]
      
      The OUT endpoint normally blocks (NAK) subsequent packets when a
      short packet was received and returns an incomplete queue entry to
      the gadget driver. Thereby the gadget driver can detect a short packet
      when reading queue entries with a length that is not equal to a
      multiple of packet size.
      
      The start_queue() function enables receiving OUT packets regardless of
      the content of the OUT FIFO. This results in a race: With the current
      code, it's possible that the "!ep->is_in && (readl(&ep->regs->ep_stat)
      & BIT(NAK_OUT_PACKETS))" test in start_dma() will fail, then a short
      packet will be received, and then start_queue() will call
      stop_out_naking(). That's what we don't want (OUT naking gets turned
      off while there is data in the FIFO) because then the next driver
      request might receive a mixture of old and new packets.
      
      With the patch, this race can't occur because the FIFO's state is
      tested after we know that OUT naking is already turned on, and OUT
      naking is stopped only when both of the conditions are met.  This
      ensures that all received data is delivered to the gadget driver,
      which can detect a short packet now before new packets are appended
      to the last short packet.
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGuido Kiener <guido.kiener@rohde-schwarz.com>
      Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      ebb77904
    • Petr Štetiar's avatar
      serial: ar933x_uart: Fix build failure with disabled console · 21cc1fcf
      Petr Štetiar authored
      [ Upstream commit 72ff51d8 ]
      
      Andrey has reported on OpenWrt's bug tracking system[1], that he
      currently can't use ar93xx_uart as pure serial UART without console
      (CONFIG_SERIAL_8250_CONSOLE and CONFIG_SERIAL_AR933X_CONSOLE undefined),
      because compilation ends with following error:
      
       ar933x_uart.c: In function 'ar933x_uart_console_write':
       ar933x_uart.c:550:14: error: 'struct uart_port' has no
                                     member named 'sysrq'
      
      So this patch moves all the code related to console handling behind
      series of CONFIG_SERIAL_AR933X_CONSOLE ifdefs.
      
      1. https://bugs.openwrt.org/index.php?do=details&task_id=2152
      
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Jiri Slaby <jslaby@suse.com>
      Cc: Andrey Batyiev <batyiev@gmail.com>
      Reported-by: default avatarAndrey Batyiev <batyiev@gmail.com>
      Tested-by: default avatarAndrey Batyiev <batyiev@gmail.com>
      Signed-off-by: default avatarPetr Štetiar <ynezz@true.cz>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      21cc1fcf
    • Mao Wenan's avatar
      sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init() · e88ec72e
      Mao Wenan authored
      [ Upstream commit ac0cdb3d ]
      
      Add the missing uart_unregister_driver() and i2c_del_driver() before return
      from sc16is7xx_init() in the error handling case.
      Signed-off-by: default avatarMao Wenan <maowenan@huawei.com>
      Reviewed-by: default avatarVladimir Zapolskiy <vz@mleia.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      e88ec72e
    • Xin Long's avatar
      netfilter: bridge: set skb transport_header before entering NF_INET_PRE_ROUTING · 1ca3379d
      Xin Long authored
      [ Upstream commit e166e4fd ]
      
      Since Commit 21d1196a ("ipv4: set transport header earlier"),
      skb->transport_header has been always set before entering INET
      netfilter. This patch is to set skb->transport_header for bridge
      before entering INET netfilter by bridge-nf-call-iptables.
      
      It also fixes an issue that sctp_error() couldn't compute a right
      csum due to unset skb->transport_header.
      
      Fixes: e6d8b64b ("net: sctp: fix and consolidate SCTP checksumming code")
      Reported-by: default avatarLi Shuang <shuali@redhat.com>
      Suggested-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      1ca3379d
    • Pablo Neira Ayuso's avatar
      netfilter: nft_set_rbtree: check for inactive element after flag mismatch · 54fa5832
      Pablo Neira Ayuso authored
      [ Upstream commit 05b7639d ]
      
      Otherwise, we hit bogus ENOENT when removing elements.
      
      Fixes: e701001e ("netfilter: nft_rbtree: allow adjacent intervals with dynamic updates")
      Reported-by: default avatarVáclav Zindulka <vaclav.zindulka@tlapnet.cz>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      54fa5832
    • Aditya Pakki's avatar
      qlcnic: Avoid potential NULL pointer dereference · aba0a087
      Aditya Pakki authored
      [ Upstream commit 5bf7295f ]
      
      netdev_alloc_skb can fail and return a NULL pointer which is
      dereferenced without a check. The patch avoids such a scenario.
      Signed-off-by: default avatarAditya Pakki <pakki001@umn.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      aba0a087
    • Martin Schwidefsky's avatar
      s390: limit brk randomization to 32MB · aa70f067
      Martin Schwidefsky authored
      [ Upstream commit cd479ecc ]
      
      For a 64-bit process the randomization of the program break is quite
      large with 1GB. That is as big as the randomization of the anonymous
      mapping base, for a test case started with '/lib/ld64.so.1 <exec>'
      it can happen that the heap is placed after the stack. To avoid
      this limit the program break randomization to 32MB for 64-bit and
      keep 8MB for 31-bit.
      Reported-by: default avatarStefan Liebler <stli@linux.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      aa70f067
    • Helen Koike's avatar
      ARM: dts: bcm283x: Fix hdmi hpd gpio pull · 9ab5cd31
      Helen Koike authored
      [ Upstream commit 544e7841 ]
      
      Raspberry pi board model B revison 2 have the hot plug detector gpio
      active high (and not low as it was in the dts).
      Signed-off-by: default avatarHelen Koike <helen.koike@collabora.com>
      Fixes: 49ac67e0 ("ARM: bcm2835: Add VC4 to the device tree.")
      Reviewed-by: default avatarEric Anholt <eric@anholt.net>
      Signed-off-by: default avatarEric Anholt <eric@anholt.net>
      Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
      9ab5cd31
    • Hans Verkuil's avatar
      media: vivid: check if the cec_adapter is valid · 8598e3f6
      Hans Verkuil authored
      commit ed356f11 upstream.
      
      If CEC is not enabled for the vivid driver, then the adap pointer is NULL
      and 'adap->phys_addr' will fail.
      
      Cc: <stable@vger.kernel.org>      # for v4.12 and up
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      [ Naresh: Fixed rebase conflict ]
      Signed-off-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8598e3f6
    • Gustavo A. R. Silva's avatar
      usbnet: ipheth: fix potential null pointer dereference in ipheth_carrier_set · aa06083d
      Gustavo A. R. Silva authored
      commit 61c59355 upstream.
      
      _dev_ is being dereferenced before it is null checked, hence there
      is a potential null pointer dereference.
      
      Fix this by moving the pointer dereference after _dev_ has been null
      checked.
      
      Addresses-Coverity-ID: 1462020
      Fixes: bb1b40c7 ("usbnet: ipheth: prevent TX queue timeouts when device not ready")
      Signed-off-by: default avatarGustavo A. R. Silva <garsilva@embeddedor.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      aa06083d
    • Alexander Kappner's avatar
      usbnet: ipheth: prevent TX queue timeouts when device not ready · ea7d6be5
      Alexander Kappner authored
      commit bb1b40c7 upstream.
      
      iOS devices require the host to be "trusted" before servicing network
      packets. Establishing trust requires the user to confirm a dialog on the
      iOS device.Until trust is established, the iOS device will silently discard
      network packets from the host. Currently, the ipheth driver does not detect
      whether an iOS device has established trust with the host, and immediately
      sets up the transmit queues.
      
      This causes the following problems:
      
      - Kernel taint due to WARN() in netdev watchdog.
      - Dmesg spam ("TX timeout").
      - Disruption of user space networking activity (dhcpd, etc...) when new
      interface comes up but cannot be used.
      - Unnecessary host and device wakeups and USB traffic
      
      Example dmesg output:
      
      [ 1101.319778] NETDEV WATCHDOG: eth1 (ipheth): transmit queue 0 timed out
      [ 1101.319817] ------------[ cut here ]------------
      [ 1101.319828] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:316 dev_watchdog+0x20f/0x220
      [ 1101.319831] Modules linked in: ipheth usbmon nvidia_drm(PO) nvidia_modeset(PO) nvidia(PO) iwlmvm mac80211 iwlwifi btusb btrtl btbcm btintel qmi_wwan bluetooth cfg80211 ecdh_generic thinkpad_acpi rfkill [last unloaded: ipheth]
      [ 1101.319861] CPU: 0 PID: 0 Comm: swapper/0 Tainted: P           O    4.13.12.1 #1
      [ 1101.319864] Hardware name: LENOVO 20ENCTO1WW/20ENCTO1WW, BIOS N1EET62W (1.35 ) 11/10/2016
      [ 1101.319867] task: ffffffff81e11500 task.stack: ffffffff81e00000
      [ 1101.319873] RIP: 0010:dev_watchdog+0x20f/0x220
      [ 1101.319876] RSP: 0018:ffff8810a3c03e98 EFLAGS: 00010292
      [ 1101.319880] RAX: 000000000000003a RBX: 0000000000000000 RCX: 0000000000000000
      [ 1101.319883] RDX: ffff8810a3c15c48 RSI: ffffffff81ccbfc2 RDI: 00000000ffffffff
      [ 1101.319886] RBP: ffff880c04ebc41c R08: 0000000000000000 R09: 0000000000000379
      [ 1101.319889] R10: 00000100696589d0 R11: 0000000000000378 R12: ffff880c04ebc000
      [ 1101.319892] R13: 0000000000000000 R14: 0000000000000001 R15: ffff880c2865fc80
      [ 1101.319896] FS:  0000000000000000(0000) GS:ffff8810a3c00000(0000) knlGS:0000000000000000
      [ 1101.319899] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 1101.319902] CR2: 00007f3ff24ac000 CR3: 0000000001e0a000 CR4: 00000000003406f0
      [ 1101.319905] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 1101.319908] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [ 1101.319910] Call Trace:
      [ 1101.319914]  <IRQ>
      [ 1101.319921]  ? dev_graft_qdisc+0x70/0x70
      [ 1101.319928]  ? dev_graft_qdisc+0x70/0x70
      [ 1101.319934]  ? call_timer_fn+0x2e/0x170
      [ 1101.319939]  ? dev_graft_qdisc+0x70/0x70
      [ 1101.319944]  ? run_timer_softirq+0x1ea/0x440
      [ 1101.319951]  ? timerqueue_add+0x54/0x80
      [ 1101.319956]  ? enqueue_hrtimer+0x38/0xa0
      [ 1101.319963]  ? __do_softirq+0xed/0x2e7
      [ 1101.319970]  ? irq_exit+0xb4/0xc0
      [ 1101.319976]  ? smp_apic_timer_interrupt+0x39/0x50
      [ 1101.319981]  ? apic_timer_interrupt+0x8c/0xa0
      [ 1101.319983]  </IRQ>
      [ 1101.319992]  ? cpuidle_enter_state+0xfa/0x2a0
      [ 1101.319999]  ? do_idle+0x1a3/0x1f0
      [ 1101.320004]  ? cpu_startup_entry+0x5f/0x70
      [ 1101.320011]  ? start_kernel+0x444/0x44c
      [ 1101.320017]  ? early_idt_handler_array+0x120/0x120
      [ 1101.320023]  ? x86_64_start_kernel+0x145/0x154
      [ 1101.320028]  ? secondary_startup_64+0x9f/0x9f
      [ 1101.320033] Code: 20 04 00 00 eb 9f 4c 89 e7 c6 05 59 44 71 00 01 e8 a7 df fd ff 89 d9 4c 89 e6 48 c7 c7 70 b7 cd 81 48 89 c2 31 c0 e8 97 64 90 ff <0f> ff eb bf 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00
      [ 1101.320103] ---[ end trace 0cc4d251e2b57080 ]---
      [ 1101.320110] ipheth 1-5:4.2: ipheth_tx_timeout: TX timeout
      
      The last message "TX timeout" is repeated every 5 seconds until trust is
      established or the device is disconnected, filling up dmesg.
      
      The proposed patch eliminates the problem by, upon connection, keeping the
      TX queue and carrier disabled until a packet is first received from the iOS
      device. This is reflected by the confirmed_pairing variable in the device
      structure. Only after at least one packet has been received from the iOS
      device, the transmit queue and carrier are brought up during the periodic
      device poll in ipheth_carrier_set. Because the iOS device will always send
      a packet immediately upon trust being established, this should not delay
      the interface becoming useable. To prevent failed UBRs in
      ipheth_rcvbulk_callback from perpetually re-enabling the queue if it was
      disabled, a new check is added so only successful transfers re-enable the
      queue, whereas failed transfers only trigger an immediate poll.
      
      This has the added benefit of removing the periodic control requests to the
      iOS device until trust has been established and thus should reduce wakeup
      events on both the host and the iOS device.
      Signed-off-by: default avatarAlexander Kappner <agk@godking.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      [groeck: Fixed context conflict seen because 45611c61 was applied first]
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ea7d6be5
  2. 02 May, 2019 17 commits