From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02C7860EDB; Wed, 13 Mar 2024 17:04:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349480; cv=none; b=MAoTDFYuw6UZYFSFevRW3geRni1j3/x/T1SpWkYRQSWetw4iHpWGBsl7PDakvGLcRdcx/og1X31utcBpFmXSNSxnPi3arLJ9graVKAVh83Yum7nICWKFyAQeCvxAWOeF96YRIFHDlfmVkY2OxFr3wuW5//hdw6yY93qEaCvm470= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349480; c=relaxed/simple; bh=LqmNTwql1q0D/a6YWkuSr2MWBICkldUD1Tt7qIQlhbM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=o5Nvf7xqFXI0Y1gSAJ4le4hxgH1YcZXg2q9sCGEewYlBt8FjQtzQ9UnD+7TAYIrGiOjqmwYjdvP+9lsl4jdFWeRq9p95iD0BeoA2pCLgP9wxstlRZKt7tL8uFO8n85jR2FegiCWd3hNb87vQehyNCpR4D2pdL83WhgL+jnrFuNg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ihrheryJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ihrheryJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 08C0FC43399; Wed, 13 Mar 2024 17:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349479; bh=LqmNTwql1q0D/a6YWkuSr2MWBICkldUD1Tt7qIQlhbM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ihrheryJ+vLm+tSnsoTpEKy8vyNgl6wXo+FlX/LP0dYIQ9owiPSwlmkkO2cfaqr4g WpglWSFdYlvjfL+Nit/5EhXc9lx8ZuHfTgpxcI6ow8M0MGLTmaNvTMl3XfAq9dyOgV R5l33RgOginNzzBQrTI0GHOSsu75mskGuojugMg8xHhcHm2CTv9f+3yY66hvx/1/ni pF9r0kYsnQA51sTaLjzplMaqu2T21KnMFhNeke6me5f6NKg0syFKbt1uBF8+xJ97sQ a0w0EGMxI0Q6UudTcjQO3WMQbayPd6r2Xnd7QKLr/pcvKE0X01N/RHMfZwgt+hgPrC PkOwX795nw8KQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Lee Jones , Jakub Kicinski , Sasha Levin Subject: [PATCH 4.19 01/41] net: usb: lan78xx: Remove lots of set but unused 'ret' variables Date: Wed, 13 Mar 2024 13:03:55 -0400 Message-ID: <20240313170435.616724-2-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable From: Lee Jones [ Upstream commit 06cd7c46b3ab3f2252c61bf85b191236cf0254e1 ] Fixes the following W=3D1 kernel build warning(s): drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_read_raw_otp=E2=80= =99: drivers/net/usb/lan78xx.c:825:6: warning: variable =E2=80=98ret=E2=80=99 s= et but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_write_raw_otp=E2= =80=99: drivers/net/usb/lan78xx.c:879:6: warning: variable =E2=80=98ret=E2=80=99 s= et but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_deferred_multicast= _write=E2=80=99: drivers/net/usb/lan78xx.c:1041:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_update_flowcontrol= =E2=80=99: drivers/net/usb/lan78xx.c:1127:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_init_mac_address= =E2=80=99: drivers/net/usb/lan78xx.c:1666:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_link_status_change= =E2=80=99: drivers/net/usb/lan78xx.c:1841:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_irq_bus_sync_unloc= k=E2=80=99: drivers/net/usb/lan78xx.c:1920:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan8835_fixup=E2=80=99: drivers/net/usb/lan78xx.c:1994:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_set_rx_max_frame_l= ength=E2=80=99: drivers/net/usb/lan78xx.c:2192:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_change_mtu=E2=80= =99: drivers/net/usb/lan78xx.c:2270:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_set_mac_addr=E2=80= =99: drivers/net/usb/lan78xx.c:2299:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_set_features=E2=80= =99: drivers/net/usb/lan78xx.c:2333:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] drivers/net/usb/lan78xx.c: In function =E2=80=98lan78xx_set_suspend=E2=80= =99: drivers/net/usb/lan78xx.c:3807:6: warning: variable =E2=80=98ret=E2=80=99 = set but not used [-Wunused-but-set-variable] Signed-off-by: Lee Jones Link: https://lore.kernel.org/r/20201102114512.1062724-25-lee.jones@linaro.= org Signed-off-by: Jakub Kicinski Stable-dep-of: 1eecc7ab82c4 ("net: lan78xx: fix runtime PM count underflow = on link stop") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/usb/lan78xx.c | 168 ++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 90 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index c0fff40a98bb8..4d94af63cf190 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -835,20 +835,19 @@ static int lan78xx_read_raw_otp(struct lan78xx_net *d= ev, u32 offset, u32 length, u8 *data) { int i; - int ret; u32 buf; unsigned long timeout; =20 - ret =3D lan78xx_read_reg(dev, OTP_PWR_DN, &buf); + lan78xx_read_reg(dev, OTP_PWR_DN, &buf); =20 if (buf & OTP_PWR_DN_PWRDN_N_) { /* clear it and wait to be cleared */ - ret =3D lan78xx_write_reg(dev, OTP_PWR_DN, 0); + lan78xx_write_reg(dev, OTP_PWR_DN, 0); =20 timeout =3D jiffies + HZ; do { usleep_range(1, 10); - ret =3D lan78xx_read_reg(dev, OTP_PWR_DN, &buf); + lan78xx_read_reg(dev, OTP_PWR_DN, &buf); if (time_after(jiffies, timeout)) { netdev_warn(dev->net, "timeout on OTP_PWR_DN"); @@ -858,18 +857,18 @@ static int lan78xx_read_raw_otp(struct lan78xx_net *d= ev, u32 offset, } =20 for (i =3D 0; i < length; i++) { - ret =3D lan78xx_write_reg(dev, OTP_ADDR1, + lan78xx_write_reg(dev, OTP_ADDR1, ((offset + i) >> 8) & OTP_ADDR1_15_11); - ret =3D lan78xx_write_reg(dev, OTP_ADDR2, + lan78xx_write_reg(dev, OTP_ADDR2, ((offset + i) & OTP_ADDR2_10_3)); =20 - ret =3D lan78xx_write_reg(dev, OTP_FUNC_CMD, OTP_FUNC_CMD_READ_); - ret =3D lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_); + lan78xx_write_reg(dev, OTP_FUNC_CMD, OTP_FUNC_CMD_READ_); + lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_); =20 timeout =3D jiffies + HZ; do { udelay(1); - ret =3D lan78xx_read_reg(dev, OTP_STATUS, &buf); + lan78xx_read_reg(dev, OTP_STATUS, &buf); if (time_after(jiffies, timeout)) { netdev_warn(dev->net, "timeout on OTP_STATUS"); @@ -877,7 +876,7 @@ static int lan78xx_read_raw_otp(struct lan78xx_net *dev= , u32 offset, } } while (buf & OTP_STATUS_BUSY_); =20 - ret =3D lan78xx_read_reg(dev, OTP_RD_DATA, &buf); + lan78xx_read_reg(dev, OTP_RD_DATA, &buf); =20 data[i] =3D (u8)(buf & 0xFF); } @@ -889,20 +888,19 @@ static int lan78xx_write_raw_otp(struct lan78xx_net *= dev, u32 offset, u32 length, u8 *data) { int i; - int ret; u32 buf; unsigned long timeout; =20 - ret =3D lan78xx_read_reg(dev, OTP_PWR_DN, &buf); + lan78xx_read_reg(dev, OTP_PWR_DN, &buf); =20 if (buf & OTP_PWR_DN_PWRDN_N_) { /* clear it and wait to be cleared */ - ret =3D lan78xx_write_reg(dev, OTP_PWR_DN, 0); + lan78xx_write_reg(dev, OTP_PWR_DN, 0); =20 timeout =3D jiffies + HZ; do { udelay(1); - ret =3D lan78xx_read_reg(dev, OTP_PWR_DN, &buf); + lan78xx_read_reg(dev, OTP_PWR_DN, &buf); if (time_after(jiffies, timeout)) { netdev_warn(dev->net, "timeout on OTP_PWR_DN completion"); @@ -912,21 +910,21 @@ static int lan78xx_write_raw_otp(struct lan78xx_net *= dev, u32 offset, } =20 /* set to BYTE program mode */ - ret =3D lan78xx_write_reg(dev, OTP_PRGM_MODE, OTP_PRGM_MODE_BYTE_); + lan78xx_write_reg(dev, OTP_PRGM_MODE, OTP_PRGM_MODE_BYTE_); =20 for (i =3D 0; i < length; i++) { - ret =3D lan78xx_write_reg(dev, OTP_ADDR1, + lan78xx_write_reg(dev, OTP_ADDR1, ((offset + i) >> 8) & OTP_ADDR1_15_11); - ret =3D lan78xx_write_reg(dev, OTP_ADDR2, + lan78xx_write_reg(dev, OTP_ADDR2, ((offset + i) & OTP_ADDR2_10_3)); - ret =3D lan78xx_write_reg(dev, OTP_PRGM_DATA, data[i]); - ret =3D lan78xx_write_reg(dev, OTP_TST_CMD, OTP_TST_CMD_PRGVRFY_); - ret =3D lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_); + lan78xx_write_reg(dev, OTP_PRGM_DATA, data[i]); + lan78xx_write_reg(dev, OTP_TST_CMD, OTP_TST_CMD_PRGVRFY_); + lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_); =20 timeout =3D jiffies + HZ; do { udelay(1); - ret =3D lan78xx_read_reg(dev, OTP_STATUS, &buf); + lan78xx_read_reg(dev, OTP_STATUS, &buf); if (time_after(jiffies, timeout)) { netdev_warn(dev->net, "Timeout on OTP_STATUS completion"); @@ -1051,7 +1049,6 @@ static void lan78xx_deferred_multicast_write(struct w= ork_struct *param) container_of(param, struct lan78xx_priv, set_multicast); struct lan78xx_net *dev =3D pdata->dev; int i; - int ret; =20 netif_dbg(dev, drv, dev->net, "deferred multicast write 0x%08x\n", pdata->rfe_ctl); @@ -1060,14 +1057,14 @@ static void lan78xx_deferred_multicast_write(struct= work_struct *param) DP_SEL_VHF_HASH_LEN, pdata->mchash_table); =20 for (i =3D 1; i < NUM_OF_MAF; i++) { - ret =3D lan78xx_write_reg(dev, MAF_HI(i), 0); - ret =3D lan78xx_write_reg(dev, MAF_LO(i), + lan78xx_write_reg(dev, MAF_HI(i), 0); + lan78xx_write_reg(dev, MAF_LO(i), pdata->pfilter_table[i][1]); - ret =3D lan78xx_write_reg(dev, MAF_HI(i), + lan78xx_write_reg(dev, MAF_HI(i), pdata->pfilter_table[i][0]); } =20 - ret =3D lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); + lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); } =20 static void lan78xx_set_multicast(struct net_device *netdev) @@ -1137,7 +1134,6 @@ static int lan78xx_update_flowcontrol(struct lan78xx_= net *dev, u8 duplex, u16 lcladv, u16 rmtadv) { u32 flow =3D 0, fct_flow =3D 0; - int ret; u8 cap; =20 if (dev->fc_autoneg) @@ -1160,10 +1156,10 @@ static int lan78xx_update_flowcontrol(struct lan78x= x_net *dev, u8 duplex, (cap & FLOW_CTRL_RX ? "enabled" : "disabled"), (cap & FLOW_CTRL_TX ? "enabled" : "disabled")); =20 - ret =3D lan78xx_write_reg(dev, FCT_FLOW, fct_flow); + lan78xx_write_reg(dev, FCT_FLOW, fct_flow); =20 /* threshold value should be set before enabling flow */ - ret =3D lan78xx_write_reg(dev, FLOW, flow); + lan78xx_write_reg(dev, FLOW, flow); =20 return 0; } @@ -1694,11 +1690,10 @@ static int lan78xx_ioctl(struct net_device *netdev,= struct ifreq *rq, int cmd) static void lan78xx_init_mac_address(struct lan78xx_net *dev) { u32 addr_lo, addr_hi; - int ret; u8 addr[6]; =20 - ret =3D lan78xx_read_reg(dev, RX_ADDRL, &addr_lo); - ret =3D lan78xx_read_reg(dev, RX_ADDRH, &addr_hi); + lan78xx_read_reg(dev, RX_ADDRL, &addr_lo); + lan78xx_read_reg(dev, RX_ADDRH, &addr_hi); =20 addr[0] =3D addr_lo & 0xFF; addr[1] =3D (addr_lo >> 8) & 0xFF; @@ -1731,12 +1726,12 @@ static void lan78xx_init_mac_address(struct lan78xx= _net *dev) (addr[2] << 16) | (addr[3] << 24); addr_hi =3D addr[4] | (addr[5] << 8); =20 - ret =3D lan78xx_write_reg(dev, RX_ADDRL, addr_lo); - ret =3D lan78xx_write_reg(dev, RX_ADDRH, addr_hi); + lan78xx_write_reg(dev, RX_ADDRL, addr_lo); + lan78xx_write_reg(dev, RX_ADDRH, addr_hi); } =20 - ret =3D lan78xx_write_reg(dev, MAF_LO(0), addr_lo); - ret =3D lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_); + lan78xx_write_reg(dev, MAF_LO(0), addr_lo); + lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_); =20 ether_addr_copy(dev->net->dev_addr, addr); } @@ -1870,7 +1865,7 @@ static void lan78xx_remove_mdio(struct lan78xx_net *d= ev) static void lan78xx_link_status_change(struct net_device *net) { struct phy_device *phydev =3D net->phydev; - int ret, temp; + int temp; =20 /* At forced 100 F/H mode, chip may fail to set mode correctly * when cable is switched between long(~50+m) and short one. @@ -1881,7 +1876,7 @@ static void lan78xx_link_status_change(struct net_dev= ice *net) /* disable phy interrupt */ temp =3D phy_read(phydev, LAN88XX_INT_MASK); temp &=3D ~LAN88XX_INT_MASK_MDINTPIN_EN_; - ret =3D phy_write(phydev, LAN88XX_INT_MASK, temp); + phy_write(phydev, LAN88XX_INT_MASK, temp); =20 temp =3D phy_read(phydev, MII_BMCR); temp &=3D ~(BMCR_SPEED100 | BMCR_SPEED1000); @@ -1895,7 +1890,7 @@ static void lan78xx_link_status_change(struct net_dev= ice *net) /* enable phy interrupt back */ temp =3D phy_read(phydev, LAN88XX_INT_MASK); temp |=3D LAN88XX_INT_MASK_MDINTPIN_EN_; - ret =3D phy_write(phydev, LAN88XX_INT_MASK, temp); + phy_write(phydev, LAN88XX_INT_MASK, temp); } } =20 @@ -1949,14 +1944,13 @@ static void lan78xx_irq_bus_sync_unlock(struct irq_= data *irqd) struct lan78xx_net *dev =3D container_of(data, struct lan78xx_net, domain_data); u32 buf; - int ret; =20 /* call register access here because irq_bus_lock & irq_bus_sync_unlock * are only two callbacks executed in non-atomic contex. */ - ret =3D lan78xx_read_reg(dev, INT_EP_CTL, &buf); + lan78xx_read_reg(dev, INT_EP_CTL, &buf); if (buf !=3D data->irqenable) - ret =3D lan78xx_write_reg(dev, INT_EP_CTL, data->irqenable); + lan78xx_write_reg(dev, INT_EP_CTL, data->irqenable); =20 mutex_unlock(&data->irq_lock); } @@ -2023,7 +2017,6 @@ static void lan78xx_remove_irq_domain(struct lan78xx_= net *dev) static int lan8835_fixup(struct phy_device *phydev) { int buf; - int ret; struct lan78xx_net *dev =3D netdev_priv(phydev->attached_dev); =20 /* LED2/PME_N/IRQ_N/RGMII_ID pin to IRQ_N mode */ @@ -2033,11 +2026,11 @@ static int lan8835_fixup(struct phy_device *phydev) phy_write_mmd(phydev, MDIO_MMD_PCS, 0x8010, buf); =20 /* RGMII MAC TXC Delay Enable */ - ret =3D lan78xx_write_reg(dev, MAC_RGMII_ID, + lan78xx_write_reg(dev, MAC_RGMII_ID, MAC_RGMII_ID_TXC_DELAY_EN_); =20 /* RGMII TX DLL Tune Adjust */ - ret =3D lan78xx_write_reg(dev, RGMII_TX_BYP_DLL, 0x3D00); + lan78xx_write_reg(dev, RGMII_TX_BYP_DLL, 0x3D00); =20 dev->interface =3D PHY_INTERFACE_MODE_RGMII_TXID; =20 @@ -2217,28 +2210,27 @@ static int lan78xx_phy_init(struct lan78xx_net *dev) =20 static int lan78xx_set_rx_max_frame_length(struct lan78xx_net *dev, int si= ze) { - int ret =3D 0; u32 buf; bool rxenabled; =20 - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + lan78xx_read_reg(dev, MAC_RX, &buf); =20 rxenabled =3D ((buf & MAC_RX_RXEN_) !=3D 0); =20 if (rxenabled) { buf &=3D ~MAC_RX_RXEN_; - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + lan78xx_write_reg(dev, MAC_RX, buf); } =20 /* add 4 to size for FCS */ buf &=3D ~MAC_RX_MAX_SIZE_MASK_; buf |=3D (((size + 4) << MAC_RX_MAX_SIZE_SHIFT_) & MAC_RX_MAX_SIZE_MASK_); =20 - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + lan78xx_write_reg(dev, MAC_RX, buf); =20 if (rxenabled) { buf |=3D MAC_RX_RXEN_; - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + lan78xx_write_reg(dev, MAC_RX, buf); } =20 return 0; @@ -2295,13 +2287,12 @@ static int lan78xx_change_mtu(struct net_device *ne= tdev, int new_mtu) int ll_mtu =3D new_mtu + netdev->hard_header_len; int old_hard_mtu =3D dev->hard_mtu; int old_rx_urb_size =3D dev->rx_urb_size; - int ret; =20 /* no second zero-length packet read wanted after mtu-sized packets */ if ((ll_mtu % dev->maxpacket) =3D=3D 0) return -EDOM; =20 - ret =3D lan78xx_set_rx_max_frame_length(dev, new_mtu + VLAN_ETH_HLEN); + lan78xx_set_rx_max_frame_length(dev, new_mtu + VLAN_ETH_HLEN); =20 netdev->mtu =3D new_mtu; =20 @@ -2324,7 +2315,6 @@ static int lan78xx_set_mac_addr(struct net_device *ne= tdev, void *p) struct lan78xx_net *dev =3D netdev_priv(netdev); struct sockaddr *addr =3D p; u32 addr_lo, addr_hi; - int ret; =20 if (netif_running(netdev)) return -EBUSY; @@ -2341,12 +2331,12 @@ static int lan78xx_set_mac_addr(struct net_device *= netdev, void *p) addr_hi =3D netdev->dev_addr[4] | netdev->dev_addr[5] << 8; =20 - ret =3D lan78xx_write_reg(dev, RX_ADDRL, addr_lo); - ret =3D lan78xx_write_reg(dev, RX_ADDRH, addr_hi); + lan78xx_write_reg(dev, RX_ADDRL, addr_lo); + lan78xx_write_reg(dev, RX_ADDRH, addr_hi); =20 /* Added to support MAC address changes */ - ret =3D lan78xx_write_reg(dev, MAF_LO(0), addr_lo); - ret =3D lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_); + lan78xx_write_reg(dev, MAF_LO(0), addr_lo); + lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_); =20 return 0; } @@ -2358,7 +2348,6 @@ static int lan78xx_set_features(struct net_device *ne= tdev, struct lan78xx_net *dev =3D netdev_priv(netdev); struct lan78xx_priv *pdata =3D (struct lan78xx_priv *)(dev->data[0]); unsigned long flags; - int ret; =20 spin_lock_irqsave(&pdata->rfe_ctl_lock, flags); =20 @@ -2382,7 +2371,7 @@ static int lan78xx_set_features(struct net_device *ne= tdev, =20 spin_unlock_irqrestore(&pdata->rfe_ctl_lock, flags); =20 - ret =3D lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); + lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); =20 return 0; } @@ -3846,7 +3835,6 @@ static u16 lan78xx_wakeframe_crc16(const u8 *buf, int= len) static int lan78xx_set_suspend(struct lan78xx_net *dev, u32 wol) { u32 buf; - int ret; int mask_index; u16 crc; u32 temp_wucsr; @@ -3855,26 +3843,26 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) const u8 ipv6_multicast[3] =3D { 0x33, 0x33 }; const u8 arp_type[2] =3D { 0x08, 0x06 }; =20 - ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + lan78xx_read_reg(dev, MAC_TX, &buf); buf &=3D ~MAC_TX_TXEN_; - ret =3D lan78xx_write_reg(dev, MAC_TX, buf); - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + lan78xx_write_reg(dev, MAC_TX, buf); + lan78xx_read_reg(dev, MAC_RX, &buf); buf &=3D ~MAC_RX_RXEN_; - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + lan78xx_write_reg(dev, MAC_RX, buf); =20 - ret =3D lan78xx_write_reg(dev, WUCSR, 0); - ret =3D lan78xx_write_reg(dev, WUCSR2, 0); - ret =3D lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); + lan78xx_write_reg(dev, WUCSR, 0); + lan78xx_write_reg(dev, WUCSR2, 0); + lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); =20 temp_wucsr =3D 0; =20 temp_pmt_ctl =3D 0; - ret =3D lan78xx_read_reg(dev, PMT_CTL, &temp_pmt_ctl); + lan78xx_read_reg(dev, PMT_CTL, &temp_pmt_ctl); temp_pmt_ctl &=3D ~PMT_CTL_RES_CLR_WKP_EN_; temp_pmt_ctl |=3D PMT_CTL_RES_CLR_WKP_STS_; =20 for (mask_index =3D 0; mask_index < NUM_OF_WUF_CFG; mask_index++) - ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), 0); + lan78xx_write_reg(dev, WUF_CFG(mask_index), 0); =20 mask_index =3D 0; if (wol & WAKE_PHY) { @@ -3903,30 +3891,30 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) =20 /* set WUF_CFG & WUF_MASK for IPv4 Multicast */ crc =3D lan78xx_wakeframe_crc16(ipv4_multicast, 3); - ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), + lan78xx_write_reg(dev, WUF_CFG(mask_index), WUF_CFGX_EN_ | WUF_CFGX_TYPE_MCAST_ | (0 << WUF_CFGX_OFFSET_SHIFT_) | (crc & WUF_CFGX_CRC16_MASK_)); =20 - ret =3D lan78xx_write_reg(dev, WUF_MASK0(mask_index), 7); - ret =3D lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); - ret =3D lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); - ret =3D lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK0(mask_index), 7); + lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); mask_index++; =20 /* for IPv6 Multicast */ crc =3D lan78xx_wakeframe_crc16(ipv6_multicast, 2); - ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), + lan78xx_write_reg(dev, WUF_CFG(mask_index), WUF_CFGX_EN_ | WUF_CFGX_TYPE_MCAST_ | (0 << WUF_CFGX_OFFSET_SHIFT_) | (crc & WUF_CFGX_CRC16_MASK_)); =20 - ret =3D lan78xx_write_reg(dev, WUF_MASK0(mask_index), 3); - ret =3D lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); - ret =3D lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); - ret =3D lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK0(mask_index), 3); + lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); mask_index++; =20 temp_pmt_ctl |=3D PMT_CTL_WOL_EN_; @@ -3947,16 +3935,16 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) * for packettype (offset 12,13) =3D ARP (0x0806) */ crc =3D lan78xx_wakeframe_crc16(arp_type, 2); - ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), + lan78xx_write_reg(dev, WUF_CFG(mask_index), WUF_CFGX_EN_ | WUF_CFGX_TYPE_ALL_ | (0 << WUF_CFGX_OFFSET_SHIFT_) | (crc & WUF_CFGX_CRC16_MASK_)); =20 - ret =3D lan78xx_write_reg(dev, WUF_MASK0(mask_index), 0x3000); - ret =3D lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); - ret =3D lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); - ret =3D lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK0(mask_index), 0x3000); + lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); + lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); mask_index++; =20 temp_pmt_ctl |=3D PMT_CTL_WOL_EN_; @@ -3964,7 +3952,7 @@ static int lan78xx_set_suspend(struct lan78xx_net *de= v, u32 wol) temp_pmt_ctl |=3D PMT_CTL_SUS_MODE_0_; } =20 - ret =3D lan78xx_write_reg(dev, WUCSR, temp_wucsr); + lan78xx_write_reg(dev, WUCSR, temp_wucsr); =20 /* when multiple WOL bits are set */ if (hweight_long((unsigned long)wol) > 1) { @@ -3972,16 +3960,16 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) temp_pmt_ctl &=3D ~PMT_CTL_SUS_MODE_MASK_; temp_pmt_ctl |=3D PMT_CTL_SUS_MODE_0_; } - ret =3D lan78xx_write_reg(dev, PMT_CTL, temp_pmt_ctl); + lan78xx_write_reg(dev, PMT_CTL, temp_pmt_ctl); =20 /* clear WUPS */ - ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + lan78xx_read_reg(dev, PMT_CTL, &buf); buf |=3D PMT_CTL_WUPS_MASK_; - ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + lan78xx_write_reg(dev, PMT_CTL, buf); =20 - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + lan78xx_read_reg(dev, MAC_RX, &buf); buf |=3D MAC_RX_RXEN_; - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + lan78xx_write_reg(dev, MAC_RX, buf); =20 return 0; } --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC7AF60EF7; Wed, 13 Mar 2024 17:04:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349481; cv=none; b=TcutEnHc5Wya8QfIY1MK+qJrLZ27538hux7u59zTHmtknXd21VpUCwhwr8CK++Wwat7yl4Or/UEfppZxUdLgxYBgTwYTs4lJ0/G/1vSBWheyja/sbXLqt9sDg1Qqx/0W8kJZQx0dkmn2M/eDnGuHl+jNj446Zs3akNz20ikS8rk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349481; c=relaxed/simple; bh=4Abb+MVNgzXfSodg8DfPY0g6C3fckhgqfbQVzxu5Ytw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S/8cPZcO6GWIuvNyIR+/O/qA573uG+6fNfO2IRttfyUKzSLaeN8ub1FdRohnFFcyjcNfO8+0bSPYdMWg7r6sFiLnyaQLuwcA2YzLT0E0c72WbkuSzFgcIdSNh1RCLlmC4Mqeatvzy6CS72BpEZMGyu9BeiGdUMcOjjygqlf3uvM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oPNchxku; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oPNchxku" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21BDAC433B2; Wed, 13 Mar 2024 17:04:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349480; bh=4Abb+MVNgzXfSodg8DfPY0g6C3fckhgqfbQVzxu5Ytw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oPNchxku+GoDhA4XDJ56gIviws+FWrVoqyKzAD9ukAP6aELjkPnxJyKvhNlsBf9Jb tXdah/LU4bJubG+ES7TluI04LpgSfCN2zFW45Cl66K1SzM8yD/zV6nSrvLicQ6lDO5 vYYpNPh9u5hYYeZVYPhH6QCUHzB6NIsUX3Kq9COBC7x0R1Z3v5gwvkA/rpqtNvZnRF 5RNepV5fvdkE/nbX74gG1ImRxVjIw9vPgSZTlmBrnXZSQdalQnBAknutwkZblP2aYw Nx6dGR42Cls5T+YRR2ATdTayQCBxRGFvMp0KbXoPLmbu1ZIlTTnAXxt7vw7U6u36I1 yAN17B04VVcIQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: John Efstathiades , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 02/41] lan78xx: Fix white space and style issues Date: Wed, 13 Mar 2024 13:03:56 -0400 Message-ID: <20240313170435.616724-3-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: John Efstathiades [ Upstream commit 9ceec7d33adf9647293f24d2fd9a055b89c63864 ] Fix white space and code style issues identified by checkpatch. Signed-off-by: John Efstathiades Signed-off-by: David S. Miller Stable-dep-of: 1eecc7ab82c4 ("net: lan78xx: fix runtime PM count underflow = on link stop") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/usb/lan78xx.c | 80 ++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 38 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 4d94af63cf190..2f4f85e03df2c 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -396,7 +396,7 @@ struct lan78xx_net { struct usb_anchor deferred; =20 struct mutex phy_mutex; /* for phy access */ - unsigned pipe_in, pipe_out, pipe_intr; + unsigned int pipe_in, pipe_out, pipe_intr; =20 u32 hard_mtu; /* count any extra framing */ size_t rx_urb_size; /* size for rx urbs */ @@ -406,7 +406,7 @@ struct lan78xx_net { wait_queue_head_t *wait; unsigned char suspend_count; =20 - unsigned maxpacket; + unsigned int maxpacket; struct timer_list delay; struct timer_list stat_monitor; =20 @@ -515,7 +515,7 @@ static int lan78xx_read_stats(struct lan78xx_net *dev, if (likely(ret >=3D 0)) { src =3D (u32 *)stats; dst =3D (u32 *)data; - for (i =3D 0; i < sizeof(*stats)/sizeof(u32); i++) { + for (i =3D 0; i < sizeof(*stats) / sizeof(u32); i++) { le32_to_cpus(&src[i]); dst[i] =3D src[i]; } @@ -529,10 +529,11 @@ static int lan78xx_read_stats(struct lan78xx_net *dev, return ret; } =20 -#define check_counter_rollover(struct1, dev_stats, member) { \ - if (struct1->member < dev_stats.saved.member) \ - dev_stats.rollover_count.member++; \ - } +#define check_counter_rollover(struct1, dev_stats, member) \ + do { \ + if ((struct1)->member < (dev_stats).saved.member) \ + (dev_stats).rollover_count.member++; \ + } while (0) =20 static void lan78xx_check_stat_rollover(struct lan78xx_net *dev, struct lan78xx_statstage *stats) @@ -858,9 +859,9 @@ static int lan78xx_read_raw_otp(struct lan78xx_net *dev= , u32 offset, =20 for (i =3D 0; i < length; i++) { lan78xx_write_reg(dev, OTP_ADDR1, - ((offset + i) >> 8) & OTP_ADDR1_15_11); + ((offset + i) >> 8) & OTP_ADDR1_15_11); lan78xx_write_reg(dev, OTP_ADDR2, - ((offset + i) & OTP_ADDR2_10_3)); + ((offset + i) & OTP_ADDR2_10_3)); =20 lan78xx_write_reg(dev, OTP_FUNC_CMD, OTP_FUNC_CMD_READ_); lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_); @@ -914,9 +915,9 @@ static int lan78xx_write_raw_otp(struct lan78xx_net *de= v, u32 offset, =20 for (i =3D 0; i < length; i++) { lan78xx_write_reg(dev, OTP_ADDR1, - ((offset + i) >> 8) & OTP_ADDR1_15_11); + ((offset + i) >> 8) & OTP_ADDR1_15_11); lan78xx_write_reg(dev, OTP_ADDR2, - ((offset + i) & OTP_ADDR2_10_3)); + ((offset + i) & OTP_ADDR2_10_3)); lan78xx_write_reg(dev, OTP_PRGM_DATA, data[i]); lan78xx_write_reg(dev, OTP_TST_CMD, OTP_TST_CMD_PRGVRFY_); lan78xx_write_reg(dev, OTP_CMD_GO, OTP_CMD_GO_GO_); @@ -973,7 +974,7 @@ static int lan78xx_dataport_wait_not_busy(struct lan78x= x_net *dev) usleep_range(40, 100); } =20 - netdev_warn(dev->net, "lan78xx_dataport_wait_not_busy timed out"); + netdev_warn(dev->net, "%s timed out", __func__); =20 return -EIO; } @@ -986,7 +987,7 @@ static int lan78xx_dataport_write(struct lan78xx_net *d= ev, u32 ram_select, int i, ret; =20 if (usb_autopm_get_interface(dev->intf) < 0) - return 0; + return 0; =20 mutex_lock(&pdata->dataport_mutex); =20 @@ -1059,9 +1060,9 @@ static void lan78xx_deferred_multicast_write(struct w= ork_struct *param) for (i =3D 1; i < NUM_OF_MAF; i++) { lan78xx_write_reg(dev, MAF_HI(i), 0); lan78xx_write_reg(dev, MAF_LO(i), - pdata->pfilter_table[i][1]); + pdata->pfilter_table[i][1]); lan78xx_write_reg(dev, MAF_HI(i), - pdata->pfilter_table[i][0]); + pdata->pfilter_table[i][0]); } =20 lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); @@ -1080,11 +1081,12 @@ static void lan78xx_set_multicast(struct net_device= *netdev) RFE_CTL_DA_PERFECT_ | RFE_CTL_MCAST_HASH_); =20 for (i =3D 0; i < DP_SEL_VHF_HASH_LEN; i++) - pdata->mchash_table[i] =3D 0; + pdata->mchash_table[i] =3D 0; + /* pfilter_table[0] has own HW address */ for (i =3D 1; i < NUM_OF_MAF; i++) { - pdata->pfilter_table[i][0] =3D - pdata->pfilter_table[i][1] =3D 0; + pdata->pfilter_table[i][0] =3D 0; + pdata->pfilter_table[i][1] =3D 0; } =20 pdata->rfe_ctl |=3D RFE_CTL_BCAST_EN_; @@ -1279,9 +1281,10 @@ static void lan78xx_status(struct lan78xx_net *dev, = struct urb *urb) generic_handle_irq(dev->domain_data.phyirq); local_irq_enable(); } - } else + } else { netdev_warn(dev->net, "unexpected interrupt: 0x%08x\n", intdata); + } } =20 static int lan78xx_ethtool_get_eeprom_len(struct net_device *netdev) @@ -1370,7 +1373,7 @@ static void lan78xx_get_wol(struct net_device *netdev, struct lan78xx_priv *pdata =3D (struct lan78xx_priv *)(dev->data[0]); =20 if (usb_autopm_get_interface(dev->intf) < 0) - return; + return; =20 ret =3D lan78xx_read_reg(dev, USB_CFG0, &buf); if (unlikely(ret < 0)) { @@ -2027,7 +2030,7 @@ static int lan8835_fixup(struct phy_device *phydev) =20 /* RGMII MAC TXC Delay Enable */ lan78xx_write_reg(dev, MAC_RGMII_ID, - MAC_RGMII_ID_TXC_DELAY_EN_); + MAC_RGMII_ID_TXC_DELAY_EN_); =20 /* RGMII TX DLL Tune Adjust */ lan78xx_write_reg(dev, RGMII_TX_BYP_DLL, 0x3D00); @@ -3383,9 +3386,10 @@ static void lan78xx_tx_bh(struct lan78xx_net *dev) if (skb) dev_kfree_skb_any(skb); usb_free_urb(urb); - } else + } else { netif_dbg(dev, tx_queued, dev->net, "> tx, len %d, type 0x%x\n", length, skb->protocol); + } } =20 static void lan78xx_rx_bh(struct lan78xx_net *dev) @@ -3486,7 +3490,7 @@ static void lan78xx_delayedwork(struct work_struct *w= ork) unlink_urbs(dev, &dev->rxq); status =3D usb_autopm_get_interface(dev->intf); if (status < 0) - goto fail_halt; + goto fail_halt; status =3D usb_clear_halt(dev->udev, dev->pipe_in); usb_autopm_put_interface(dev->intf); if (status < 0 && @@ -3659,8 +3663,8 @@ static int lan78xx_probe(struct usb_interface *intf, struct net_device *netdev; struct usb_device *udev; int ret; - unsigned maxp; - unsigned period; + unsigned int maxp; + unsigned int period; u8 *buf =3D NULL; =20 udev =3D interface_to_usbdev(intf); @@ -3892,10 +3896,10 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) /* set WUF_CFG & WUF_MASK for IPv4 Multicast */ crc =3D lan78xx_wakeframe_crc16(ipv4_multicast, 3); lan78xx_write_reg(dev, WUF_CFG(mask_index), - WUF_CFGX_EN_ | - WUF_CFGX_TYPE_MCAST_ | - (0 << WUF_CFGX_OFFSET_SHIFT_) | - (crc & WUF_CFGX_CRC16_MASK_)); + WUF_CFGX_EN_ | + WUF_CFGX_TYPE_MCAST_ | + (0 << WUF_CFGX_OFFSET_SHIFT_) | + (crc & WUF_CFGX_CRC16_MASK_)); =20 lan78xx_write_reg(dev, WUF_MASK0(mask_index), 7); lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); @@ -3906,10 +3910,10 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) /* for IPv6 Multicast */ crc =3D lan78xx_wakeframe_crc16(ipv6_multicast, 2); lan78xx_write_reg(dev, WUF_CFG(mask_index), - WUF_CFGX_EN_ | - WUF_CFGX_TYPE_MCAST_ | - (0 << WUF_CFGX_OFFSET_SHIFT_) | - (crc & WUF_CFGX_CRC16_MASK_)); + WUF_CFGX_EN_ | + WUF_CFGX_TYPE_MCAST_ | + (0 << WUF_CFGX_OFFSET_SHIFT_) | + (crc & WUF_CFGX_CRC16_MASK_)); =20 lan78xx_write_reg(dev, WUF_MASK0(mask_index), 3); lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); @@ -3936,10 +3940,10 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) */ crc =3D lan78xx_wakeframe_crc16(arp_type, 2); lan78xx_write_reg(dev, WUF_CFG(mask_index), - WUF_CFGX_EN_ | - WUF_CFGX_TYPE_ALL_ | - (0 << WUF_CFGX_OFFSET_SHIFT_) | - (crc & WUF_CFGX_CRC16_MASK_)); + WUF_CFGX_EN_ | + WUF_CFGX_TYPE_ALL_ | + (0 << WUF_CFGX_OFFSET_SHIFT_) | + (crc & WUF_CFGX_CRC16_MASK_)); =20 lan78xx_write_reg(dev, WUF_MASK0(mask_index), 0x3000); lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); @@ -4087,7 +4091,7 @@ static int lan78xx_resume(struct usb_interface *intf) if (!--dev->suspend_count) { /* resume interrupt URBs */ if (dev->urb_intr && test_bit(EVENT_DEV_OPEN, &dev->flags)) - usb_submit_urb(dev->urb_intr, GFP_NOIO); + usb_submit_urb(dev->urb_intr, GFP_NOIO); =20 spin_lock_irq(&dev->txq.lock); while ((res =3D usb_get_from_anchor(&dev->deferred))) { --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14BC719A56A; Wed, 13 Mar 2024 17:04:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349482; cv=none; b=TN+tTK9cVMuFsODa/p5708t+HPcl6JDDIDAM3BGtMX/vp1ZwiPBE912pvcldIkWeuXyenU+ewl+E9Zh1bQc4+Su1lN46PFFYnf2KqPiNMcpUQggn67Xr15vDQloAxcgwwOllA9irZs69HCS+5x70T/TMwYvNDktVcC6wcTm5F+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349482; c=relaxed/simple; bh=/5u+ePgq/DVOfpzFMkOqcePp5l6zS8rWnljN6RcAmkY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iJMq46dv5VUXnKnkk/NREHFJVDn0sco7gDeI7A0YgjTCLmfgY9uXHX+TBBpRf4IrQPgi/jBKTaeD7Q0Ia2TiivJIa21JzofvGen9ool9g58/taxCWDKgdv2pvHIHB0sOXOB76bMAZ1TjbMt+1dRL6qbd5isOOjGnJP1FHTD3Ykc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=E48LnsLJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="E48LnsLJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 228E9C433A6; Wed, 13 Mar 2024 17:04:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349482; bh=/5u+ePgq/DVOfpzFMkOqcePp5l6zS8rWnljN6RcAmkY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E48LnsLJ6iBNeKzAx2r5V1EgwIGQUdTuNaalV8qiX1e6FOdI/RvJaMKIWx/JAFbeG jTUsk9TJ9GB2DNIDf5g7PckbN4RNV8k9VSkIhEUap0K2k9/429fNb1ZqqGUMUb93Jy 8oLsP3DMBXt3yjR4nYI+XzdU6Y5sBxzsQjqf0X0eU7WfpnI1Rv/ZtZgXI1hZUWRHXn r+c7tetEZCgu02zZxZsG9MOXMq17ke0nNjLyNS/AN+YhAsdZCbKqlkZ691iYAdoHpR i1muICd2cUg3nMeXQuKbDpdSYcKl5ZWfACphZFD4Am0TPOQmLaHKov5zTkedTv6C2u HjBKsGIdV5QZw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: John Efstathiades , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 03/41] lan78xx: Add missing return code checks Date: Wed, 13 Mar 2024 13:03:57 -0400 Message-ID: <20240313170435.616724-4-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: John Efstathiades [ Upstream commit 3415f6baaddb9b39d7112247ab39ef3c700f882e ] There are many places in the driver where the return code from a function call is captured but without a subsequent test of the return code and appropriate action taken. This patch adds the missing return code tests and action. In most cases the action is an early exit from the calling function. The function lan78xx_set_suspend() was also updated to make it consistent with lan78xx_suspend(). Signed-off-by: John Efstathiades Signed-off-by: David S. Miller Stable-dep-of: 1eecc7ab82c4 ("net: lan78xx: fix runtime PM count underflow = on link stop") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/usb/lan78xx.c | 399 +++++++++++++++++++++++++++++++------- 1 file changed, 333 insertions(+), 66 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 2f4f85e03df2c..a20aff073b865 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -1176,7 +1176,7 @@ static int lan78xx_link_reset(struct lan78xx_net *dev) /* clear LAN78xx interrupt status */ ret =3D lan78xx_write_reg(dev, INT_STS, INT_STS_PHY_INT_); if (unlikely(ret < 0)) - return -EIO; + return ret; =20 mutex_lock(&phydev->lock); phy_read_status(phydev); @@ -1189,11 +1189,11 @@ static int lan78xx_link_reset(struct lan78xx_net *d= ev) /* reset MAC */ ret =3D lan78xx_read_reg(dev, MAC_CR, &buf); if (unlikely(ret < 0)) - return -EIO; + return ret; buf |=3D MAC_CR_RST_; ret =3D lan78xx_write_reg(dev, MAC_CR, buf); if (unlikely(ret < 0)) - return -EIO; + return ret; =20 del_timer(&dev->stat_monitor); } else if (link && !dev->link_on) { @@ -1205,18 +1205,30 @@ static int lan78xx_link_reset(struct lan78xx_net *d= ev) if (ecmd.base.speed =3D=3D 1000) { /* disable U2 */ ret =3D lan78xx_read_reg(dev, USB_CFG1, &buf); + if (ret < 0) + return ret; buf &=3D ~USB_CFG1_DEV_U2_INIT_EN_; ret =3D lan78xx_write_reg(dev, USB_CFG1, buf); + if (ret < 0) + return ret; /* enable U1 */ ret =3D lan78xx_read_reg(dev, USB_CFG1, &buf); + if (ret < 0) + return ret; buf |=3D USB_CFG1_DEV_U1_INIT_EN_; ret =3D lan78xx_write_reg(dev, USB_CFG1, buf); + if (ret < 0) + return ret; } else { /* enable U1 & U2 */ ret =3D lan78xx_read_reg(dev, USB_CFG1, &buf); + if (ret < 0) + return ret; buf |=3D USB_CFG1_DEV_U2_INIT_EN_; buf |=3D USB_CFG1_DEV_U1_INIT_EN_; ret =3D lan78xx_write_reg(dev, USB_CFG1, buf); + if (ret < 0) + return ret; } } =20 @@ -1234,6 +1246,8 @@ static int lan78xx_link_reset(struct lan78xx_net *dev) =20 ret =3D lan78xx_update_flowcontrol(dev, ecmd.base.duplex, ladv, radv); + if (ret < 0) + return ret; =20 if (!timer_pending(&dev->stat_monitor)) { dev->delta =3D 1; @@ -1244,7 +1258,7 @@ static int lan78xx_link_reset(struct lan78xx_net *dev) tasklet_schedule(&dev->bh); } =20 - return ret; + return 0; } =20 /* some work can't be done in tasklets, so we use keventd @@ -2469,23 +2483,33 @@ static void lan78xx_init_ltm(struct lan78xx_net *de= v) static int lan78xx_reset(struct lan78xx_net *dev) { struct lan78xx_priv *pdata =3D (struct lan78xx_priv *)(dev->data[0]); - u32 buf; - int ret =3D 0; unsigned long timeout; + int ret; + u32 buf; u8 sig; =20 ret =3D lan78xx_read_reg(dev, HW_CFG, &buf); + if (ret < 0) + return ret; + buf |=3D HW_CFG_LRST_; + ret =3D lan78xx_write_reg(dev, HW_CFG, buf); + if (ret < 0) + return ret; =20 timeout =3D jiffies + HZ; do { mdelay(1); ret =3D lan78xx_read_reg(dev, HW_CFG, &buf); + if (ret < 0) + return ret; + if (time_after(jiffies, timeout)) { netdev_warn(dev->net, "timeout on completion of LiteReset"); - return -EIO; + ret =3D -ETIMEDOUT; + return ret; } } while (buf & HW_CFG_LRST_); =20 @@ -2493,13 +2517,22 @@ static int lan78xx_reset(struct lan78xx_net *dev) =20 /* save DEVID for later usage */ ret =3D lan78xx_read_reg(dev, ID_REV, &buf); + if (ret < 0) + return ret; + dev->chipid =3D (buf & ID_REV_CHIP_ID_MASK_) >> 16; dev->chiprev =3D buf & ID_REV_CHIP_REV_MASK_; =20 /* Respond to the IN token with a NAK */ ret =3D lan78xx_read_reg(dev, USB_CFG0, &buf); + if (ret < 0) + return ret; + buf |=3D USB_CFG_BIR_; + ret =3D lan78xx_write_reg(dev, USB_CFG0, buf); + if (ret < 0) + return ret; =20 /* Init LTM */ lan78xx_init_ltm(dev); @@ -2522,53 +2555,105 @@ static int lan78xx_reset(struct lan78xx_net *dev) } =20 ret =3D lan78xx_write_reg(dev, BURST_CAP, buf); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, BULK_IN_DLY, DEFAULT_BULK_IN_DELAY); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, HW_CFG, &buf); + if (ret < 0) + return ret; + buf |=3D HW_CFG_MEF_; + ret =3D lan78xx_write_reg(dev, HW_CFG, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, USB_CFG0, &buf); + if (ret < 0) + return ret; + buf |=3D USB_CFG_BCE_; + ret =3D lan78xx_write_reg(dev, USB_CFG0, buf); + if (ret < 0) + return ret; =20 /* set FIFO sizes */ buf =3D (MAX_RX_FIFO_SIZE - 512) / 512; + ret =3D lan78xx_write_reg(dev, FCT_RX_FIFO_END, buf); + if (ret < 0) + return ret; =20 buf =3D (MAX_TX_FIFO_SIZE - 512) / 512; + ret =3D lan78xx_write_reg(dev, FCT_TX_FIFO_END, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL_); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, FLOW, 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, FCT_FLOW, 0); + if (ret < 0) + return ret; =20 /* Don't need rfe_ctl_lock during initialisation */ ret =3D lan78xx_read_reg(dev, RFE_CTL, &pdata->rfe_ctl); + if (ret < 0) + return ret; + pdata->rfe_ctl |=3D RFE_CTL_BCAST_EN_ | RFE_CTL_DA_PERFECT_; + ret =3D lan78xx_write_reg(dev, RFE_CTL, pdata->rfe_ctl); + if (ret < 0) + return ret; =20 /* Enable or disable checksum offload engines */ - lan78xx_set_features(dev->net, dev->net->features); + ret =3D lan78xx_set_features(dev->net, dev->net->features); + if (ret < 0) + return ret; =20 lan78xx_set_multicast(dev->net); =20 /* reset PHY */ ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + return ret; + buf |=3D PMT_CTL_PHY_RST_; + ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + return ret; =20 timeout =3D jiffies + HZ; do { mdelay(1); ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + return ret; + if (time_after(jiffies, timeout)) { netdev_warn(dev->net, "timeout waiting for PHY Reset"); - return -EIO; + ret =3D -ETIMEDOUT; + return ret; } } while ((buf & PMT_CTL_PHY_RST_) || !(buf & PMT_CTL_READY_)); =20 ret =3D lan78xx_read_reg(dev, MAC_CR, &buf); + if (ret < 0) + return ret; + /* LAN7801 only has RGMII mode */ if (dev->chipid =3D=3D ID_REV_CHIP_ID_7801_) buf &=3D ~MAC_CR_GMII_EN_; @@ -2583,25 +2668,53 @@ static int lan78xx_reset(struct lan78xx_net *dev) } } ret =3D lan78xx_write_reg(dev, MAC_CR, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + if (ret < 0) + return ret; + buf |=3D MAC_TX_TXEN_; + ret =3D lan78xx_write_reg(dev, MAC_TX, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, FCT_TX_CTL, &buf); + if (ret < 0) + return ret; + buf |=3D FCT_TX_CTL_EN_; + ret =3D lan78xx_write_reg(dev, FCT_TX_CTL, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_set_rx_max_frame_length(dev, dev->net->mtu + VLAN_ETH_HLEN); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + if (ret < 0) + return ret; + buf |=3D MAC_RX_RXEN_; + ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, FCT_RX_CTL, &buf); + if (ret < 0) + return ret; + buf |=3D FCT_RX_CTL_EN_; + ret =3D lan78xx_write_reg(dev, FCT_RX_CTL, buf); + if (ret < 0) + return ret; =20 return 0; } @@ -2639,7 +2752,7 @@ static int lan78xx_open(struct net_device *net) =20 ret =3D usb_autopm_get_interface(dev->intf); if (ret < 0) - goto out; + return ret; =20 phy_start(net->phydev); =20 @@ -2667,7 +2780,6 @@ static int lan78xx_open(struct net_device *net) done: usb_autopm_put_interface(dev->intf); =20 -out: return ret; } =20 @@ -3838,35 +3950,62 @@ static u16 lan78xx_wakeframe_crc16(const u8 *buf, i= nt len) =20 static int lan78xx_set_suspend(struct lan78xx_net *dev, u32 wol) { - u32 buf; - int mask_index; - u16 crc; - u32 temp_wucsr; - u32 temp_pmt_ctl; const u8 ipv4_multicast[3] =3D { 0x01, 0x00, 0x5E }; const u8 ipv6_multicast[3] =3D { 0x33, 0x33 }; const u8 arp_type[2] =3D { 0x08, 0x06 }; + u32 temp_pmt_ctl; + int mask_index; + u32 temp_wucsr; + u32 buf; + u16 crc; + int ret; + + ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + if (ret < 0) + return ret; =20 - lan78xx_read_reg(dev, MAC_TX, &buf); buf &=3D ~MAC_TX_TXEN_; - lan78xx_write_reg(dev, MAC_TX, buf); - lan78xx_read_reg(dev, MAC_RX, &buf); + + ret =3D lan78xx_write_reg(dev, MAC_TX, buf); + if (ret < 0) + return ret; + + ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + if (ret < 0) + return ret; + buf &=3D ~MAC_RX_RXEN_; - lan78xx_write_reg(dev, MAC_RX, buf); =20 - lan78xx_write_reg(dev, WUCSR, 0); - lan78xx_write_reg(dev, WUCSR2, 0); - lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); + ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + if (ret < 0) + return ret; + + ret =3D lan78xx_write_reg(dev, WUCSR, 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUCSR2, 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); + if (ret < 0) + return ret; =20 temp_wucsr =3D 0; =20 temp_pmt_ctl =3D 0; - lan78xx_read_reg(dev, PMT_CTL, &temp_pmt_ctl); + + ret =3D lan78xx_read_reg(dev, PMT_CTL, &temp_pmt_ctl); + if (ret < 0) + return ret; + temp_pmt_ctl &=3D ~PMT_CTL_RES_CLR_WKP_EN_; temp_pmt_ctl |=3D PMT_CTL_RES_CLR_WKP_STS_; =20 - for (mask_index =3D 0; mask_index < NUM_OF_WUF_CFG; mask_index++) - lan78xx_write_reg(dev, WUF_CFG(mask_index), 0); + for (mask_index =3D 0; mask_index < NUM_OF_WUF_CFG; mask_index++) { + ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), 0); + if (ret < 0) + return ret; + } =20 mask_index =3D 0; if (wol & WAKE_PHY) { @@ -3895,30 +4034,52 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) =20 /* set WUF_CFG & WUF_MASK for IPv4 Multicast */ crc =3D lan78xx_wakeframe_crc16(ipv4_multicast, 3); - lan78xx_write_reg(dev, WUF_CFG(mask_index), - WUF_CFGX_EN_ | - WUF_CFGX_TYPE_MCAST_ | - (0 << WUF_CFGX_OFFSET_SHIFT_) | - (crc & WUF_CFGX_CRC16_MASK_)); - - lan78xx_write_reg(dev, WUF_MASK0(mask_index), 7); - lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); - lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); - lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), + WUF_CFGX_EN_ | + WUF_CFGX_TYPE_MCAST_ | + (0 << WUF_CFGX_OFFSET_SHIFT_) | + (crc & WUF_CFGX_CRC16_MASK_)); + if (ret < 0) + return ret; + + ret =3D lan78xx_write_reg(dev, WUF_MASK0(mask_index), 7); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + if (ret < 0) + return ret; + mask_index++; =20 /* for IPv6 Multicast */ crc =3D lan78xx_wakeframe_crc16(ipv6_multicast, 2); - lan78xx_write_reg(dev, WUF_CFG(mask_index), - WUF_CFGX_EN_ | - WUF_CFGX_TYPE_MCAST_ | - (0 << WUF_CFGX_OFFSET_SHIFT_) | - (crc & WUF_CFGX_CRC16_MASK_)); - - lan78xx_write_reg(dev, WUF_MASK0(mask_index), 3); - lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); - lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); - lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), + WUF_CFGX_EN_ | + WUF_CFGX_TYPE_MCAST_ | + (0 << WUF_CFGX_OFFSET_SHIFT_) | + (crc & WUF_CFGX_CRC16_MASK_)); + if (ret < 0) + return ret; + + ret =3D lan78xx_write_reg(dev, WUF_MASK0(mask_index), 3); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + if (ret < 0) + return ret; + mask_index++; =20 temp_pmt_ctl |=3D PMT_CTL_WOL_EN_; @@ -3939,16 +4100,27 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) * for packettype (offset 12,13) =3D ARP (0x0806) */ crc =3D lan78xx_wakeframe_crc16(arp_type, 2); - lan78xx_write_reg(dev, WUF_CFG(mask_index), - WUF_CFGX_EN_ | - WUF_CFGX_TYPE_ALL_ | - (0 << WUF_CFGX_OFFSET_SHIFT_) | - (crc & WUF_CFGX_CRC16_MASK_)); - - lan78xx_write_reg(dev, WUF_MASK0(mask_index), 0x3000); - lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); - lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); - lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + ret =3D lan78xx_write_reg(dev, WUF_CFG(mask_index), + WUF_CFGX_EN_ | + WUF_CFGX_TYPE_ALL_ | + (0 << WUF_CFGX_OFFSET_SHIFT_) | + (crc & WUF_CFGX_CRC16_MASK_)); + if (ret < 0) + return ret; + + ret =3D lan78xx_write_reg(dev, WUF_MASK0(mask_index), 0x3000); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK1(mask_index), 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK2(mask_index), 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUF_MASK3(mask_index), 0); + if (ret < 0) + return ret; + mask_index++; =20 temp_pmt_ctl |=3D PMT_CTL_WOL_EN_; @@ -3956,7 +4128,9 @@ static int lan78xx_set_suspend(struct lan78xx_net *de= v, u32 wol) temp_pmt_ctl |=3D PMT_CTL_SUS_MODE_0_; } =20 - lan78xx_write_reg(dev, WUCSR, temp_wucsr); + ret =3D lan78xx_write_reg(dev, WUCSR, temp_wucsr); + if (ret < 0) + return ret; =20 /* when multiple WOL bits are set */ if (hweight_long((unsigned long)wol) > 1) { @@ -3964,16 +4138,30 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) temp_pmt_ctl &=3D ~PMT_CTL_SUS_MODE_MASK_; temp_pmt_ctl |=3D PMT_CTL_SUS_MODE_0_; } - lan78xx_write_reg(dev, PMT_CTL, temp_pmt_ctl); + ret =3D lan78xx_write_reg(dev, PMT_CTL, temp_pmt_ctl); + if (ret < 0) + return ret; =20 /* clear WUPS */ - lan78xx_read_reg(dev, PMT_CTL, &buf); + ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + return ret; + buf |=3D PMT_CTL_WUPS_MASK_; - lan78xx_write_reg(dev, PMT_CTL, buf); + + ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + return ret; =20 lan78xx_read_reg(dev, MAC_RX, &buf); + if (ret < 0) + return ret; + buf |=3D MAC_RX_RXEN_; + lan78xx_write_reg(dev, MAC_RX, buf); + if (ret < 0) + return ret; =20 return 0; } @@ -3981,7 +4169,6 @@ static int lan78xx_set_suspend(struct lan78xx_net *de= v, u32 wol) static int lan78xx_suspend(struct usb_interface *intf, pm_message_t messag= e) { struct lan78xx_net *dev =3D usb_get_intfdata(intf); - struct lan78xx_priv *pdata =3D (struct lan78xx_priv *)(dev->data[0]); u32 buf; int ret; int event; @@ -4004,11 +4191,24 @@ static int lan78xx_suspend(struct usb_interface *in= tf, pm_message_t message) =20 /* stop TX & RX */ ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + if (ret < 0) + return ret; + buf &=3D ~MAC_TX_TXEN_; + ret =3D lan78xx_write_reg(dev, MAC_TX, buf); + if (ret < 0) + return ret; + ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + if (ret < 0) + return ret; + buf &=3D ~MAC_RX_RXEN_; + ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + if (ret < 0) + return ret; =20 /* empty out the rx and queues */ netif_device_detach(dev->net); @@ -4025,25 +4225,50 @@ static int lan78xx_suspend(struct usb_interface *in= tf, pm_message_t message) if (PMSG_IS_AUTO(message)) { /* auto suspend (selective suspend) */ ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + if (ret < 0) + return ret; + buf &=3D ~MAC_TX_TXEN_; + ret =3D lan78xx_write_reg(dev, MAC_TX, buf); + if (ret < 0) + return ret; + ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + if (ret < 0) + return ret; + buf &=3D ~MAC_RX_RXEN_; + ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_write_reg(dev, WUCSR, 0); + if (ret < 0) + return ret; ret =3D lan78xx_write_reg(dev, WUCSR2, 0); + if (ret < 0) + return ret; ret =3D lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); + if (ret < 0) + return ret; =20 /* set goodframe wakeup */ ret =3D lan78xx_read_reg(dev, WUCSR, &buf); + if (ret < 0) + return ret; =20 buf |=3D WUCSR_RFE_WAKE_EN_; buf |=3D WUCSR_STORE_WAKE_; =20 ret =3D lan78xx_write_reg(dev, WUCSR, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + return ret; =20 buf &=3D ~PMT_CTL_RES_CLR_WKP_EN_; buf |=3D PMT_CTL_RES_CLR_WKP_STS_; @@ -4054,18 +4279,36 @@ static int lan78xx_suspend(struct usb_interface *in= tf, pm_message_t message) buf |=3D PMT_CTL_SUS_MODE_3_; =20 ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + return ret; =20 buf |=3D PMT_CTL_WUPS_MASK_; =20 ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + if (ret < 0) + return ret; + buf |=3D MAC_RX_RXEN_; + ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + if (ret < 0) + return ret; } else { - lan78xx_set_suspend(dev, pdata->wol); + struct lan78xx_priv *pdata; + + pdata =3D (struct lan78xx_priv *)(dev->data[0]); + + ret =3D lan78xx_set_suspend(dev, pdata->wol); + if (ret < 0) + return ret; } } =20 @@ -4090,8 +4333,11 @@ static int lan78xx_resume(struct usb_interface *intf) =20 if (!--dev->suspend_count) { /* resume interrupt URBs */ - if (dev->urb_intr && test_bit(EVENT_DEV_OPEN, &dev->flags)) - usb_submit_urb(dev->urb_intr, GFP_NOIO); + if (dev->urb_intr && test_bit(EVENT_DEV_OPEN, &dev->flags)) { + ret =3D usb_submit_urb(dev->urb_intr, GFP_NOIO); + if (ret < 0) + return ret; + } =20 spin_lock_irq(&dev->txq.lock); while ((res =3D usb_get_from_anchor(&dev->deferred))) { @@ -4118,13 +4364,21 @@ static int lan78xx_resume(struct usb_interface *int= f) } =20 ret =3D lan78xx_write_reg(dev, WUCSR2, 0); + if (ret < 0) + return ret; ret =3D lan78xx_write_reg(dev, WUCSR, 0); + if (ret < 0) + return ret; ret =3D lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); + if (ret < 0) + return ret; =20 ret =3D lan78xx_write_reg(dev, WUCSR2, WUCSR2_NS_RCD_ | WUCSR2_ARP_RCD_ | WUCSR2_IPV6_TCPSYN_RCD_ | WUCSR2_IPV4_TCPSYN_RCD_); + if (ret < 0) + return ret; =20 ret =3D lan78xx_write_reg(dev, WUCSR, WUCSR_EEE_TX_WAKE_ | WUCSR_EEE_RX_WAKE_ | @@ -4133,10 +4387,18 @@ static int lan78xx_resume(struct usb_interface *int= f) WUCSR_WUFR_ | WUCSR_MPR_ | WUCSR_BCST_FR_); + if (ret < 0) + return ret; =20 ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + if (ret < 0) + return ret; + buf |=3D MAC_TX_TXEN_; + ret =3D lan78xx_write_reg(dev, MAC_TX, buf); + if (ret < 0) + return ret; =20 return 0; } @@ -4144,12 +4406,17 @@ static int lan78xx_resume(struct usb_interface *int= f) static int lan78xx_reset_resume(struct usb_interface *intf) { struct lan78xx_net *dev =3D usb_get_intfdata(intf); + int ret; =20 - lan78xx_reset(dev); + ret =3D lan78xx_reset(dev); + if (ret < 0) + return ret; =20 phy_start(dev->net->phydev); =20 - return lan78xx_resume(intf); + ret =3D lan78xx_resume(intf); + + return ret; } =20 static const struct usb_device_id products[] =3D { --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 17CFF82D35; Wed, 13 Mar 2024 17:04:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349483; cv=none; b=cPjcGhsdXxhdk5rUmkc/R+dwyueslqRQQhLBpEHPEVb86U569+oCXQdrybI3ga/g+fj3Flt5IbGESIofgmoPbdblRnxIjuOwBk4l8x1u3tajmIAgQZD4Hlr/aF7j8y3ZMcwfh72XfAF4h+Oiw3oOhaLie0rlOCc0YWNCwH2PikQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349483; c=relaxed/simple; bh=RaPHUakkFn5UQvvFtamKOIMEK/+a0IcQcmB68Nv9olI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LWWc886sGhoYeIog1D5uIL+pC+xKWlCQAfwJ9SOT8hMdPIyOKZSbJGCPAZxeos3TdntUM0VJw2m12oYo5lGulU3+5SxV7BkirRgJmzdcaVtVY8uOua1hq1wfz8C4wXJTCS/WPP0dIYWkhxIgF1/e9mYm+AhUd/dO/2POUu8XeYw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n+ejeySY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="n+ejeySY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3F7FFC433C7; Wed, 13 Mar 2024 17:04:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349483; bh=RaPHUakkFn5UQvvFtamKOIMEK/+a0IcQcmB68Nv9olI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n+ejeySY48tqByOZTkcIew3TXlxQ4KIzUfKEk5e+l97Iz0o8hWBkMlO4eEQViE3/P zluFv2jzQxKGgndEagvA7xhcpkp+BDCXA0K4by6uxKJ2KqciKIA8oxatsGdX5QAPUz DoJJOWMypHm/1J2Wr9ZsBmeX0NcASh81KJyM8DRrzmmEO9evveAW3pMtb01IdAOkcq 7tGPAKhRuvAUU3qIqyrk2G7Z+o0O5vhzP0bdECuDyhpOXWlmyyR4lvvFIFLBGoMRiv kej4rvD1C5GvNRitXBeF3jaoLsv75C/7Z1pqvbzKpkSJTGDVbsvhlzhm6NH82cmDLC PBxAdNg/4ytyg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: John Efstathiades , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 04/41] lan78xx: Fix partial packet errors on suspend/resume Date: Wed, 13 Mar 2024 13:03:58 -0400 Message-ID: <20240313170435.616724-5-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: John Efstathiades [ Upstream commit e1210fe63bf8b080edd0805240e90b81b6b069c1 ] The MAC can get out of step with the internal packet FIFOs if the system goes to sleep when the link is active, especially at high data rates. This can result in partial frames in the packet FIFOs that in result in malformed frames being delivered to the host. This occurs because the driver does not enable/disable the internal packet FIFOs in step with the corresponding MAC data path. The following changes fix this problem. Update code that enables/disables the MAC receiver and transmitter to the more general Rx and Tx data path, where the data path in each direction consists of both the MAC function (Tx or Rx) and the corresponding packet FIFO. In the receive path the packet FIFO must be enabled before the MAC receiver but disabled after the MAC receiver. In the transmit path the opposite is true: the packet FIFO must be enabled after the MAC transmitter but disabled before the MAC transmitter. The packet FIFOs can be flushed safely once the corresponding data path is stopped. Signed-off-by: John Efstathiades Signed-off-by: David S. Miller Stable-dep-of: 1eecc7ab82c4 ("net: lan78xx: fix runtime PM count underflow = on link stop") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/usb/lan78xx.c | 303 +++++++++++++++++++++++++------------- 1 file changed, 197 insertions(+), 106 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index a20aff073b865..4f80f672f3184 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -101,6 +101,12 @@ /* statistic update interval (mSec) */ #define STAT_UPDATE_TIMER (1 * 1000) =20 +/* time to wait for MAC or FCT to stop (jiffies) */ +#define HW_DISABLE_TIMEOUT (HZ / 10) + +/* time to wait between polling MAC or FCT state (ms) */ +#define HW_DISABLE_DELAY_MS 1 + /* defines interrupts from interrupt EP */ #define MAX_INT_EP (32) #define INT_EP_INTEP (31) @@ -490,6 +496,26 @@ static int lan78xx_write_reg(struct lan78xx_net *dev, = u32 index, u32 data) return ret; } =20 +static int lan78xx_update_reg(struct lan78xx_net *dev, u32 reg, u32 mask, + u32 data) +{ + int ret; + u32 buf; + + ret =3D lan78xx_read_reg(dev, reg, &buf); + if (ret < 0) + return ret; + + buf &=3D ~mask; + buf |=3D (mask & data); + + ret =3D lan78xx_write_reg(dev, reg, buf); + if (ret < 0) + return ret; + + return 0; +} + static int lan78xx_read_stats(struct lan78xx_net *dev, struct lan78xx_statstage *data) { @@ -2480,6 +2506,156 @@ static void lan78xx_init_ltm(struct lan78xx_net *de= v) lan78xx_write_reg(dev, LTM_INACTIVE1, regs[5]); } =20 +static int lan78xx_start_hw(struct lan78xx_net *dev, u32 reg, u32 hw_enabl= e) +{ + return lan78xx_update_reg(dev, reg, hw_enable, hw_enable); +} + +static int lan78xx_stop_hw(struct lan78xx_net *dev, u32 reg, u32 hw_enable= d, + u32 hw_disabled) +{ + unsigned long timeout; + bool stopped =3D true; + int ret; + u32 buf; + + /* Stop the h/w block (if not already stopped) */ + + ret =3D lan78xx_read_reg(dev, reg, &buf); + if (ret < 0) + return ret; + + if (buf & hw_enabled) { + buf &=3D ~hw_enabled; + + ret =3D lan78xx_write_reg(dev, reg, buf); + if (ret < 0) + return ret; + + stopped =3D false; + timeout =3D jiffies + HW_DISABLE_TIMEOUT; + do { + ret =3D lan78xx_read_reg(dev, reg, &buf); + if (ret < 0) + return ret; + + if (buf & hw_disabled) + stopped =3D true; + else + msleep(HW_DISABLE_DELAY_MS); + } while (!stopped && !time_after(jiffies, timeout)); + } + + ret =3D stopped ? 0 : -ETIME; + + return ret; +} + +static int lan78xx_flush_fifo(struct lan78xx_net *dev, u32 reg, u32 fifo_f= lush) +{ + return lan78xx_update_reg(dev, reg, fifo_flush, fifo_flush); +} + +static int lan78xx_start_tx_path(struct lan78xx_net *dev) +{ + int ret; + + netif_dbg(dev, drv, dev->net, "start tx path"); + + /* Start the MAC transmitter */ + + ret =3D lan78xx_start_hw(dev, MAC_TX, MAC_TX_TXEN_); + if (ret < 0) + return ret; + + /* Start the Tx FIFO */ + + ret =3D lan78xx_start_hw(dev, FCT_TX_CTL, FCT_TX_CTL_EN_); + if (ret < 0) + return ret; + + return 0; +} + +static int lan78xx_stop_tx_path(struct lan78xx_net *dev) +{ + int ret; + + netif_dbg(dev, drv, dev->net, "stop tx path"); + + /* Stop the Tx FIFO */ + + ret =3D lan78xx_stop_hw(dev, FCT_TX_CTL, FCT_TX_CTL_EN_, FCT_TX_CTL_DIS_); + if (ret < 0) + return ret; + + /* Stop the MAC transmitter */ + + ret =3D lan78xx_stop_hw(dev, MAC_TX, MAC_TX_TXEN_, MAC_TX_TXD_); + if (ret < 0) + return ret; + + return 0; +} + +/* The caller must ensure the Tx path is stopped before calling + * lan78xx_flush_tx_fifo(). + */ +static int lan78xx_flush_tx_fifo(struct lan78xx_net *dev) +{ + return lan78xx_flush_fifo(dev, FCT_TX_CTL, FCT_TX_CTL_RST_); +} + +static int lan78xx_start_rx_path(struct lan78xx_net *dev) +{ + int ret; + + netif_dbg(dev, drv, dev->net, "start rx path"); + + /* Start the Rx FIFO */ + + ret =3D lan78xx_start_hw(dev, FCT_RX_CTL, FCT_RX_CTL_EN_); + if (ret < 0) + return ret; + + /* Start the MAC receiver*/ + + ret =3D lan78xx_start_hw(dev, MAC_RX, MAC_RX_RXEN_); + if (ret < 0) + return ret; + + return 0; +} + +static int lan78xx_stop_rx_path(struct lan78xx_net *dev) +{ + int ret; + + netif_dbg(dev, drv, dev->net, "stop rx path"); + + /* Stop the MAC receiver */ + + ret =3D lan78xx_stop_hw(dev, MAC_RX, MAC_RX_RXEN_, MAC_RX_RXD_); + if (ret < 0) + return ret; + + /* Stop the Rx FIFO */ + + ret =3D lan78xx_stop_hw(dev, FCT_RX_CTL, FCT_RX_CTL_EN_, FCT_RX_CTL_DIS_); + if (ret < 0) + return ret; + + return 0; +} + +/* The caller must ensure the Rx path is stopped before calling + * lan78xx_flush_rx_fifo(). + */ +static int lan78xx_flush_rx_fifo(struct lan78xx_net *dev) +{ + return lan78xx_flush_fifo(dev, FCT_RX_CTL, FCT_RX_CTL_RST_); +} + static int lan78xx_reset(struct lan78xx_net *dev) { struct lan78xx_priv *pdata =3D (struct lan78xx_priv *)(dev->data[0]); @@ -2671,23 +2847,7 @@ static int lan78xx_reset(struct lan78xx_net *dev) if (ret < 0) return ret; =20 - ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); - if (ret < 0) - return ret; - - buf |=3D MAC_TX_TXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_TX, buf); - if (ret < 0) - return ret; - - ret =3D lan78xx_read_reg(dev, FCT_TX_CTL, &buf); - if (ret < 0) - return ret; - - buf |=3D FCT_TX_CTL_EN_; - - ret =3D lan78xx_write_reg(dev, FCT_TX_CTL, buf); + ret =3D lan78xx_start_tx_path(dev); if (ret < 0) return ret; =20 @@ -2696,27 +2856,9 @@ static int lan78xx_reset(struct lan78xx_net *dev) if (ret < 0) return ret; =20 - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); - if (ret < 0) - return ret; - - buf |=3D MAC_RX_RXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); - if (ret < 0) - return ret; + ret =3D lan78xx_start_rx_path(dev); =20 - ret =3D lan78xx_read_reg(dev, FCT_RX_CTL, &buf); - if (ret < 0) - return ret; - - buf |=3D FCT_RX_CTL_EN_; - - ret =3D lan78xx_write_reg(dev, FCT_RX_CTL, buf); - if (ret < 0) - return ret; - - return 0; + return ret; } =20 static void lan78xx_init_stats(struct lan78xx_net *dev) @@ -3960,23 +4102,10 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) u16 crc; int ret; =20 - ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + ret =3D lan78xx_stop_tx_path(dev); if (ret < 0) return ret; - - buf &=3D ~MAC_TX_TXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_TX, buf); - if (ret < 0) - return ret; - - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); - if (ret < 0) - return ret; - - buf &=3D ~MAC_RX_RXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + ret =3D lan78xx_stop_rx_path(dev); if (ret < 0) return ret; =20 @@ -4153,17 +4282,9 @@ static int lan78xx_set_suspend(struct lan78xx_net *d= ev, u32 wol) if (ret < 0) return ret; =20 - lan78xx_read_reg(dev, MAC_RX, &buf); - if (ret < 0) - return ret; + ret =3D lan78xx_start_rx_path(dev); =20 - buf |=3D MAC_RX_RXEN_; - - lan78xx_write_reg(dev, MAC_RX, buf); - if (ret < 0) - return ret; - - return 0; + return ret; } =20 static int lan78xx_suspend(struct usb_interface *intf, pm_message_t messag= e) @@ -4189,24 +4310,17 @@ static int lan78xx_suspend(struct usb_interface *in= tf, pm_message_t message) spin_unlock_irq(&dev->txq.lock); } =20 - /* stop TX & RX */ - ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); + /* stop RX */ + ret =3D lan78xx_stop_rx_path(dev); if (ret < 0) return ret; =20 - buf &=3D ~MAC_TX_TXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_TX, buf); + ret =3D lan78xx_flush_rx_fifo(dev); if (ret < 0) return ret; =20 - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); - if (ret < 0) - return ret; - - buf &=3D ~MAC_RX_RXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + /* stop Tx */ + ret =3D lan78xx_stop_tx_path(dev); if (ret < 0) return ret; =20 @@ -4224,23 +4338,11 @@ static int lan78xx_suspend(struct usb_interface *in= tf, pm_message_t message) =20 if (PMSG_IS_AUTO(message)) { /* auto suspend (selective suspend) */ - ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); - if (ret < 0) - return ret; - - buf &=3D ~MAC_TX_TXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_TX, buf); - if (ret < 0) - return ret; - - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); + ret =3D lan78xx_stop_tx_path(dev); if (ret < 0) return ret; =20 - buf &=3D ~MAC_RX_RXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + ret =3D lan78xx_stop_rx_path(dev); if (ret < 0) return ret; =20 @@ -4292,13 +4394,7 @@ static int lan78xx_suspend(struct usb_interface *int= f, pm_message_t message) if (ret < 0) return ret; =20 - ret =3D lan78xx_read_reg(dev, MAC_RX, &buf); - if (ret < 0) - return ret; - - buf |=3D MAC_RX_RXEN_; - - ret =3D lan78xx_write_reg(dev, MAC_RX, buf); + ret =3D lan78xx_start_rx_path(dev); if (ret < 0) return ret; } else { @@ -4323,7 +4419,6 @@ static int lan78xx_resume(struct usb_interface *intf) struct sk_buff *skb; struct urb *res; int ret; - u32 buf; =20 if (!timer_pending(&dev->stat_monitor)) { dev->delta =3D 1; @@ -4331,6 +4426,10 @@ static int lan78xx_resume(struct usb_interface *intf) jiffies + STAT_UPDATE_TIMER); } =20 + ret =3D lan78xx_flush_tx_fifo(dev); + if (ret < 0) + return ret; + if (!--dev->suspend_count) { /* resume interrupt URBs */ if (dev->urb_intr && test_bit(EVENT_DEV_OPEN, &dev->flags)) { @@ -4390,17 +4489,9 @@ static int lan78xx_resume(struct usb_interface *intf) if (ret < 0) return ret; =20 - ret =3D lan78xx_read_reg(dev, MAC_TX, &buf); - if (ret < 0) - return ret; - - buf |=3D MAC_TX_TXEN_; + ret =3D lan78xx_start_tx_path(dev); =20 - ret =3D lan78xx_write_reg(dev, MAC_TX, buf); - if (ret < 0) - return ret; - - return 0; + return ret; } =20 static int lan78xx_reset_resume(struct usb_interface *intf) --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19E1A82D4C; Wed, 13 Mar 2024 17:04:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349484; cv=none; b=sxG8LjZQ29G9aJyK3bhUr2UwIBJjpBtQMFNAcP8SBKq0/N08SXW9X3FCphz0Dz1g36QYcPywk51fjoBsNUOCGcZjMkAsZsrTFhzmt1Ub1gLO9iKrlwwLg5K9+zcxOo0yB/cJ7EEBRM/vukmsKytBYk/hwH5myVYHJmsxKSsRGYE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349484; c=relaxed/simple; bh=7hfmEuZ60mJto64o3zls07chvw+jzpsDhyHe7iZ4s8U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EcObM6tNkso+i3PPnzBHK//bRj1A7lzSFp9rUcRp2hCSms8tESos43AYq88nCEwD7Bb3oWNYuoQCoWx8P5RWmivdzW2xq1C7dvyI7QwsGLxrkaTfLJf9Iwrzh5iLMTexIVOW1AvH9TZCUrP5B9vU+8QTVatB/AN7MZ6P+s9pbac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ab5yUXSy; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ab5yUXSy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 442E7C433F1; Wed, 13 Mar 2024 17:04:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349484; bh=7hfmEuZ60mJto64o3zls07chvw+jzpsDhyHe7iZ4s8U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ab5yUXSyhrjRtvszrfIadEQUKvtDZe6Vg4Ku7fgYWHmLA7+OVoqmWxN4CdnixN7IF aRrYOEl5hFr+w0KRzxK2x1hq3hZ5M/ngUfvw7sTWG10QMnGsCjlQ5HOOQdX/UUaZT2 903nEZCD0jxkZ7Bm0Ofo+vlG6mPkdEhTeh2TpLTNA4cKt3WAB/Gfg4MMIymMZ5X1kR 14VAkYxOSP+Lm8XwepmEjLNnd5SJa8z/3VMR/RkhPxY+CGM5Cs9cx5QjyMeBphRgIh bvvmlZt+bLHtmQawdXmNWK8cuoR8fDr0Cz9ABbqvU8Bx2ticnX9/lfbaPH9pZj57RD jT91mCa/s+JeA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: John Efstathiades , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 05/41] lan78xx: Fix race conditions in suspend/resume handling Date: Wed, 13 Mar 2024 13:03:59 -0400 Message-ID: <20240313170435.616724-6-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: John Efstathiades [ Upstream commit 5f4cc6e25148cc141f97afb41b4dfe9eb1cce613 ] If the interface is given an IP address while the device is suspended (as a result of an auto-suspend event) there is a race between lan78xx_resume() and lan78xx_open() that can result in an exception or failure to handle incoming packets. The following changes fix this problem. Introduce a mutex to serialise operations in the network interface open and stop entry points with respect to the USB driver suspend and resume entry points. Move Tx and Rx data path start/stop to lan78xx_start() and lan78xx_stop() respectively and flush the packet FIFOs before starting the Tx and Rx data paths. This prevents the MAC and FIFOs getting out of step and delivery of malformed packets to the network stack. Stop processing of received packets before disconnecting the PHY from the MAC to prevent a kernel exception caused by handling packets after the PHY device has been removed. Refactor device auto-suspend code to make it consistent with the the system suspend code and make the suspend handler easier to read. Add new code to stop wake-on-lan packets or PHY events resuming the host or device from suspend if the device has not been opened (typically after an IP address is assigned). This patch is dependent on changes to lan78xx_suspend() and lan78xx_resume() introduced in the previous patch of this patch set. Signed-off-by: John Efstathiades Signed-off-by: David S. Miller Stable-dep-of: 1eecc7ab82c4 ("net: lan78xx: fix runtime PM count underflow = on link stop") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/usb/lan78xx.c | 419 ++++++++++++++++++++++++++------------ 1 file changed, 284 insertions(+), 135 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 4f80f672f3184..52d1d922f6c5e 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -401,6 +401,7 @@ struct lan78xx_net { struct urb *urb_intr; struct usb_anchor deferred; =20 + struct mutex dev_mutex; /* serialise open/stop wrt suspend/resume */ struct mutex phy_mutex; /* for phy access */ unsigned int pipe_in, pipe_out, pipe_intr; =20 @@ -2330,11 +2331,16 @@ static int lan78xx_change_mtu(struct net_device *ne= tdev, int new_mtu) int ll_mtu =3D new_mtu + netdev->hard_header_len; int old_hard_mtu =3D dev->hard_mtu; int old_rx_urb_size =3D dev->rx_urb_size; + int ret; =20 /* no second zero-length packet read wanted after mtu-sized packets */ if ((ll_mtu % dev->maxpacket) =3D=3D 0) return -EDOM; =20 + ret =3D usb_autopm_get_interface(dev->intf); + if (ret < 0) + return ret; + lan78xx_set_rx_max_frame_length(dev, new_mtu + VLAN_ETH_HLEN); =20 netdev->mtu =3D new_mtu; @@ -2350,6 +2356,8 @@ static int lan78xx_change_mtu(struct net_device *netd= ev, int new_mtu) } } =20 + usb_autopm_put_interface(dev->intf); + return 0; } =20 @@ -2847,16 +2855,8 @@ static int lan78xx_reset(struct lan78xx_net *dev) if (ret < 0) return ret; =20 - ret =3D lan78xx_start_tx_path(dev); - if (ret < 0) - return ret; - ret =3D lan78xx_set_rx_max_frame_length(dev, dev->net->mtu + VLAN_ETH_HLEN); - if (ret < 0) - return ret; - - ret =3D lan78xx_start_rx_path(dev); =20 return ret; } @@ -2892,10 +2892,14 @@ static int lan78xx_open(struct net_device *net) struct lan78xx_net *dev =3D netdev_priv(net); int ret; =20 + netif_dbg(dev, ifup, dev->net, "open device"); + ret =3D usb_autopm_get_interface(dev->intf); if (ret < 0) return ret; =20 + mutex_lock(&dev->dev_mutex); + phy_start(net->phydev); =20 netif_dbg(dev, ifup, dev->net, "phy initialised successfully"); @@ -2910,6 +2914,20 @@ static int lan78xx_open(struct net_device *net) } } =20 + ret =3D lan78xx_flush_rx_fifo(dev); + if (ret < 0) + goto done; + ret =3D lan78xx_flush_tx_fifo(dev); + if (ret < 0) + goto done; + + ret =3D lan78xx_start_tx_path(dev); + if (ret < 0) + goto done; + ret =3D lan78xx_start_rx_path(dev); + if (ret < 0) + goto done; + lan78xx_init_stats(dev); =20 set_bit(EVENT_DEV_OPEN, &dev->flags); @@ -2920,6 +2938,8 @@ static int lan78xx_open(struct net_device *net) =20 lan78xx_defer_kevent(dev, EVENT_LINK_RESET); done: + mutex_unlock(&dev->dev_mutex); + usb_autopm_put_interface(dev->intf); =20 return ret; @@ -2938,38 +2958,56 @@ static void lan78xx_terminate_urbs(struct lan78xx_n= et *dev) temp =3D unlink_urbs(dev, &dev->txq) + unlink_urbs(dev, &dev->rxq); =20 /* maybe wait for deletions to finish. */ - while (!skb_queue_empty(&dev->rxq) && - !skb_queue_empty(&dev->txq) && - !skb_queue_empty(&dev->done)) { + while (!skb_queue_empty(&dev->rxq) || + !skb_queue_empty(&dev->txq)) { schedule_timeout(msecs_to_jiffies(UNLINK_TIMEOUT_MS)); set_current_state(TASK_UNINTERRUPTIBLE); netif_dbg(dev, ifdown, dev->net, - "waited for %d urb completions\n", temp); + "waited for %d urb completions", temp); } set_current_state(TASK_RUNNING); dev->wait =3D NULL; remove_wait_queue(&unlink_wakeup, &wait); + + while (!skb_queue_empty(&dev->done)) { + struct skb_data *entry; + struct sk_buff *skb; + + skb =3D skb_dequeue(&dev->done); + entry =3D (struct skb_data *)(skb->cb); + usb_free_urb(entry->urb); + dev_kfree_skb(skb); + } } =20 static int lan78xx_stop(struct net_device *net) { struct lan78xx_net *dev =3D netdev_priv(net); =20 + netif_dbg(dev, ifup, dev->net, "stop device"); + + mutex_lock(&dev->dev_mutex); + if (timer_pending(&dev->stat_monitor)) del_timer_sync(&dev->stat_monitor); =20 - if (net->phydev) - phy_stop(net->phydev); - clear_bit(EVENT_DEV_OPEN, &dev->flags); netif_stop_queue(net); + tasklet_kill(&dev->bh); + + lan78xx_terminate_urbs(dev); =20 netif_info(dev, ifdown, dev->net, "stop stats: rx/tx %lu/%lu, errs %lu/%lu\n", net->stats.rx_packets, net->stats.tx_packets, net->stats.rx_errors, net->stats.tx_errors); =20 - lan78xx_terminate_urbs(dev); + /* ignore errors that occur stopping the Tx and Rx data paths */ + lan78xx_stop_tx_path(dev); + lan78xx_stop_rx_path(dev); + + if (net->phydev) + phy_stop(net->phydev); =20 usb_kill_urb(dev->urb_intr); =20 @@ -2979,12 +3017,17 @@ static int lan78xx_stop(struct net_device *net) * can't flush_scheduled_work() until we drop rtnl (later), * else workers could deadlock; so make workers a NOP. */ - dev->flags =3D 0; + clear_bit(EVENT_TX_HALT, &dev->flags); + clear_bit(EVENT_RX_HALT, &dev->flags); + clear_bit(EVENT_LINK_RESET, &dev->flags); + clear_bit(EVENT_STAT_UPDATE, &dev->flags); + cancel_delayed_work_sync(&dev->wq); - tasklet_kill(&dev->bh); =20 usb_autopm_put_interface(dev->intf); =20 + mutex_unlock(&dev->dev_mutex); + return 0; } =20 @@ -3110,6 +3153,9 @@ lan78xx_start_xmit(struct sk_buff *skb, struct net_de= vice *net) struct lan78xx_net *dev =3D netdev_priv(net); struct sk_buff *skb2 =3D NULL; =20 + if (test_bit(EVENT_DEV_ASLEEP, &dev->flags)) + schedule_delayed_work(&dev->wq, 0); + if (skb) { skb_tx_timestamp(skb); skb2 =3D lan78xx_tx_prep(dev, skb, GFP_ATOMIC); @@ -3719,18 +3765,17 @@ static void lan78xx_delayedwork(struct work_struct = *work) =20 dev =3D container_of(work, struct lan78xx_net, wq.work); =20 + if (usb_autopm_get_interface(dev->intf) < 0) + return; + if (test_bit(EVENT_TX_HALT, &dev->flags)) { unlink_urbs(dev, &dev->txq); - status =3D usb_autopm_get_interface(dev->intf); - if (status < 0) - goto fail_pipe; + status =3D usb_clear_halt(dev->udev, dev->pipe_out); - usb_autopm_put_interface(dev->intf); if (status < 0 && status !=3D -EPIPE && status !=3D -ESHUTDOWN) { if (netif_msg_tx_err(dev)) -fail_pipe: netdev_err(dev->net, "can't clear tx halt, status %d\n", status); @@ -3740,18 +3785,14 @@ static void lan78xx_delayedwork(struct work_struct = *work) netif_wake_queue(dev->net); } } + if (test_bit(EVENT_RX_HALT, &dev->flags)) { unlink_urbs(dev, &dev->rxq); - status =3D usb_autopm_get_interface(dev->intf); - if (status < 0) - goto fail_halt; status =3D usb_clear_halt(dev->udev, dev->pipe_in); - usb_autopm_put_interface(dev->intf); if (status < 0 && status !=3D -EPIPE && status !=3D -ESHUTDOWN) { if (netif_msg_rx_err(dev)) -fail_halt: netdev_err(dev->net, "can't clear rx halt, status %d\n", status); @@ -3765,16 +3806,9 @@ static void lan78xx_delayedwork(struct work_struct *= work) int ret =3D 0; =20 clear_bit(EVENT_LINK_RESET, &dev->flags); - status =3D usb_autopm_get_interface(dev->intf); - if (status < 0) - goto skip_reset; if (lan78xx_link_reset(dev) < 0) { - usb_autopm_put_interface(dev->intf); -skip_reset: netdev_info(dev->net, "link reset failed (%d)\n", ret); - } else { - usb_autopm_put_interface(dev->intf); } } =20 @@ -3788,6 +3822,8 @@ static void lan78xx_delayedwork(struct work_struct *w= ork) =20 dev->delta =3D min((dev->delta * 2), 50); } + + usb_autopm_put_interface(dev->intf); } =20 static void intr_complete(struct urb *urb) @@ -3947,6 +3983,7 @@ static int lan78xx_probe(struct usb_interface *intf, skb_queue_head_init(&dev->rxq_pause); skb_queue_head_init(&dev->txq_pend); mutex_init(&dev->phy_mutex); + mutex_init(&dev->dev_mutex); =20 tasklet_init(&dev->bh, lan78xx_bh, (unsigned long)dev); INIT_DELAYED_WORK(&dev->wq, lan78xx_delayedwork); @@ -4090,6 +4127,74 @@ static u16 lan78xx_wakeframe_crc16(const u8 *buf, in= t len) return crc; } =20 +static int lan78xx_set_auto_suspend(struct lan78xx_net *dev) +{ + u32 buf; + int ret; + + ret =3D lan78xx_stop_tx_path(dev); + if (ret < 0) + return ret; + + ret =3D lan78xx_stop_rx_path(dev); + if (ret < 0) + return ret; + + /* auto suspend (selective suspend) */ + + ret =3D lan78xx_write_reg(dev, WUCSR, 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WUCSR2, 0); + if (ret < 0) + return ret; + ret =3D lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); + if (ret < 0) + return ret; + + /* set goodframe wakeup */ + + ret =3D lan78xx_read_reg(dev, WUCSR, &buf); + if (ret < 0) + return ret; + + buf |=3D WUCSR_RFE_WAKE_EN_; + buf |=3D WUCSR_STORE_WAKE_; + + ret =3D lan78xx_write_reg(dev, WUCSR, buf); + if (ret < 0) + return ret; + + ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + return ret; + + buf &=3D ~PMT_CTL_RES_CLR_WKP_EN_; + buf |=3D PMT_CTL_RES_CLR_WKP_STS_; + buf |=3D PMT_CTL_PHY_WAKE_EN_; + buf |=3D PMT_CTL_WOL_EN_; + buf &=3D ~PMT_CTL_SUS_MODE_MASK_; + buf |=3D PMT_CTL_SUS_MODE_3_; + + ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + return ret; + + ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + return ret; + + buf |=3D PMT_CTL_WUPS_MASK_; + + ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + return ret; + + ret =3D lan78xx_start_rx_path(dev); + + return ret; +} + static int lan78xx_set_suspend(struct lan78xx_net *dev, u32 wol) { const u8 ipv4_multicast[3] =3D { 0x01, 0x00, 0x5E }; @@ -4290,18 +4395,25 @@ static int lan78xx_set_suspend(struct lan78xx_net *= dev, u32 wol) static int lan78xx_suspend(struct usb_interface *intf, pm_message_t messag= e) { struct lan78xx_net *dev =3D usb_get_intfdata(intf); - u32 buf; + bool dev_open; int ret; int event; =20 event =3D message.event; =20 - if (!dev->suspend_count++) { + mutex_lock(&dev->dev_mutex); + + netif_dbg(dev, ifdown, dev->net, + "suspending: pm event %#x", message.event); + + dev_open =3D test_bit(EVENT_DEV_OPEN, &dev->flags); + + if (dev_open) { spin_lock_irq(&dev->txq.lock); /* don't autosuspend while transmitting */ if ((skb_queue_len(&dev->txq) || skb_queue_len(&dev->txq_pend)) && - PMSG_IS_AUTO(message)) { + PMSG_IS_AUTO(message)) { spin_unlock_irq(&dev->txq.lock); ret =3D -EBUSY; goto out; @@ -4313,171 +4425,204 @@ static int lan78xx_suspend(struct usb_interface *= intf, pm_message_t message) /* stop RX */ ret =3D lan78xx_stop_rx_path(dev); if (ret < 0) - return ret; + goto out; =20 ret =3D lan78xx_flush_rx_fifo(dev); if (ret < 0) - return ret; + goto out; =20 /* stop Tx */ ret =3D lan78xx_stop_tx_path(dev); if (ret < 0) - return ret; + goto out; =20 - /* empty out the rx and queues */ + /* empty out the Rx and Tx queues */ netif_device_detach(dev->net); lan78xx_terminate_urbs(dev); usb_kill_urb(dev->urb_intr); =20 /* reattach */ netif_device_attach(dev->net); - } =20 - if (test_bit(EVENT_DEV_ASLEEP, &dev->flags)) { del_timer(&dev->stat_monitor); =20 if (PMSG_IS_AUTO(message)) { - /* auto suspend (selective suspend) */ - ret =3D lan78xx_stop_tx_path(dev); + ret =3D lan78xx_set_auto_suspend(dev); if (ret < 0) - return ret; + goto out; + } else { + struct lan78xx_priv *pdata; =20 - ret =3D lan78xx_stop_rx_path(dev); + pdata =3D (struct lan78xx_priv *)(dev->data[0]); + netif_carrier_off(dev->net); + ret =3D lan78xx_set_suspend(dev, pdata->wol); if (ret < 0) - return ret; + goto out; + } + } else { + /* Interface is down; don't allow WOL and PHY + * events to wake up the host + */ + u32 buf; =20 - ret =3D lan78xx_write_reg(dev, WUCSR, 0); - if (ret < 0) - return ret; - ret =3D lan78xx_write_reg(dev, WUCSR2, 0); - if (ret < 0) - return ret; - ret =3D lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); - if (ret < 0) - return ret; + set_bit(EVENT_DEV_ASLEEP, &dev->flags); =20 - /* set goodframe wakeup */ - ret =3D lan78xx_read_reg(dev, WUCSR, &buf); - if (ret < 0) - return ret; + ret =3D lan78xx_write_reg(dev, WUCSR, 0); + if (ret < 0) + goto out; + ret =3D lan78xx_write_reg(dev, WUCSR2, 0); + if (ret < 0) + goto out; =20 - buf |=3D WUCSR_RFE_WAKE_EN_; - buf |=3D WUCSR_STORE_WAKE_; + ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + goto out; =20 - ret =3D lan78xx_write_reg(dev, WUCSR, buf); - if (ret < 0) - return ret; + buf &=3D ~PMT_CTL_RES_CLR_WKP_EN_; + buf |=3D PMT_CTL_RES_CLR_WKP_STS_; + buf &=3D ~PMT_CTL_SUS_MODE_MASK_; + buf |=3D PMT_CTL_SUS_MODE_3_; =20 - ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); - if (ret < 0) - return ret; + ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + goto out; =20 - buf &=3D ~PMT_CTL_RES_CLR_WKP_EN_; - buf |=3D PMT_CTL_RES_CLR_WKP_STS_; + ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); + if (ret < 0) + goto out; =20 - buf |=3D PMT_CTL_PHY_WAKE_EN_; - buf |=3D PMT_CTL_WOL_EN_; - buf &=3D ~PMT_CTL_SUS_MODE_MASK_; - buf |=3D PMT_CTL_SUS_MODE_3_; + buf |=3D PMT_CTL_WUPS_MASK_; =20 - ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); - if (ret < 0) - return ret; + ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); + if (ret < 0) + goto out; + } =20 - ret =3D lan78xx_read_reg(dev, PMT_CTL, &buf); - if (ret < 0) - return ret; + ret =3D 0; +out: + mutex_unlock(&dev->dev_mutex); =20 - buf |=3D PMT_CTL_WUPS_MASK_; + return ret; +} =20 - ret =3D lan78xx_write_reg(dev, PMT_CTL, buf); - if (ret < 0) - return ret; +static bool lan78xx_submit_deferred_urbs(struct lan78xx_net *dev) +{ + bool pipe_halted =3D false; + struct urb *urb; =20 - ret =3D lan78xx_start_rx_path(dev); - if (ret < 0) - return ret; - } else { - struct lan78xx_priv *pdata; + while ((urb =3D usb_get_from_anchor(&dev->deferred))) { + struct sk_buff *skb =3D urb->context; + int ret; =20 - pdata =3D (struct lan78xx_priv *)(dev->data[0]); + if (!netif_device_present(dev->net) || + !netif_carrier_ok(dev->net) || + pipe_halted) { + usb_free_urb(urb); + dev_kfree_skb(skb); + continue; + } =20 - ret =3D lan78xx_set_suspend(dev, pdata->wol); - if (ret < 0) - return ret; + ret =3D usb_submit_urb(urb, GFP_ATOMIC); + + if (ret =3D=3D 0) { + netif_trans_update(dev->net); + lan78xx_queue_skb(&dev->txq, skb, tx_start); + } else { + usb_free_urb(urb); + dev_kfree_skb(skb); + + if (ret =3D=3D -EPIPE) { + netif_stop_queue(dev->net); + pipe_halted =3D true; + } else if (ret =3D=3D -ENODEV) { + netif_device_detach(dev->net); + } } } =20 - ret =3D 0; -out: - return ret; + return pipe_halted; } =20 static int lan78xx_resume(struct usb_interface *intf) { struct lan78xx_net *dev =3D usb_get_intfdata(intf); - struct sk_buff *skb; - struct urb *res; + bool dev_open; int ret; =20 - if (!timer_pending(&dev->stat_monitor)) { - dev->delta =3D 1; - mod_timer(&dev->stat_monitor, - jiffies + STAT_UPDATE_TIMER); - } + mutex_lock(&dev->dev_mutex); =20 - ret =3D lan78xx_flush_tx_fifo(dev); - if (ret < 0) - return ret; + netif_dbg(dev, ifup, dev->net, "resuming device"); =20 - if (!--dev->suspend_count) { - /* resume interrupt URBs */ - if (dev->urb_intr && test_bit(EVENT_DEV_OPEN, &dev->flags)) { - ret =3D usb_submit_urb(dev->urb_intr, GFP_NOIO); - if (ret < 0) - return ret; - } + dev_open =3D test_bit(EVENT_DEV_OPEN, &dev->flags); + + if (dev_open) { + bool pipe_halted =3D false; + + ret =3D lan78xx_flush_tx_fifo(dev); + if (ret < 0) + goto out; + + if (dev->urb_intr) { + int ret =3D usb_submit_urb(dev->urb_intr, GFP_KERNEL); =20 - spin_lock_irq(&dev->txq.lock); - while ((res =3D usb_get_from_anchor(&dev->deferred))) { - skb =3D (struct sk_buff *)res->context; - ret =3D usb_submit_urb(res, GFP_ATOMIC); if (ret < 0) { - dev_kfree_skb_any(skb); - usb_free_urb(res); - usb_autopm_put_interface_async(dev->intf); - } else { - netif_trans_update(dev->net); - lan78xx_queue_skb(&dev->txq, skb, tx_start); + if (ret =3D=3D -ENODEV) + netif_device_detach(dev->net); + + netdev_warn(dev->net, "Failed to submit intr URB"); } } =20 + spin_lock_irq(&dev->txq.lock); + + if (netif_device_present(dev->net)) { + pipe_halted =3D lan78xx_submit_deferred_urbs(dev); + + if (pipe_halted) + lan78xx_defer_kevent(dev, EVENT_TX_HALT); + } + clear_bit(EVENT_DEV_ASLEEP, &dev->flags); + spin_unlock_irq(&dev->txq.lock); =20 - if (test_bit(EVENT_DEV_OPEN, &dev->flags)) { - if (!(skb_queue_len(&dev->txq) >=3D dev->tx_qlen)) - netif_start_queue(dev->net); - tasklet_schedule(&dev->bh); + if (!pipe_halted && + netif_device_present(dev->net) && + (skb_queue_len(&dev->txq) < dev->tx_qlen)) + netif_start_queue(dev->net); + + ret =3D lan78xx_start_tx_path(dev); + if (ret < 0) + goto out; + + tasklet_schedule(&dev->bh); + + if (!timer_pending(&dev->stat_monitor)) { + dev->delta =3D 1; + mod_timer(&dev->stat_monitor, + jiffies + STAT_UPDATE_TIMER); } + + } else { + clear_bit(EVENT_DEV_ASLEEP, &dev->flags); } =20 ret =3D lan78xx_write_reg(dev, WUCSR2, 0); if (ret < 0) - return ret; + goto out; ret =3D lan78xx_write_reg(dev, WUCSR, 0); if (ret < 0) - return ret; + goto out; ret =3D lan78xx_write_reg(dev, WK_SRC, 0xFFF1FF1FUL); if (ret < 0) - return ret; + goto out; =20 ret =3D lan78xx_write_reg(dev, WUCSR2, WUCSR2_NS_RCD_ | WUCSR2_ARP_RCD_ | WUCSR2_IPV6_TCPSYN_RCD_ | WUCSR2_IPV4_TCPSYN_RCD_); if (ret < 0) - return ret; + goto out; =20 ret =3D lan78xx_write_reg(dev, WUCSR, WUCSR_EEE_TX_WAKE_ | WUCSR_EEE_RX_WAKE_ | @@ -4487,9 +4632,11 @@ static int lan78xx_resume(struct usb_interface *intf) WUCSR_MPR_ | WUCSR_BCST_FR_); if (ret < 0) - return ret; + goto out; =20 - ret =3D lan78xx_start_tx_path(dev); + ret =3D 0; +out: + mutex_unlock(&dev->dev_mutex); =20 return ret; } @@ -4499,6 +4646,8 @@ static int lan78xx_reset_resume(struct usb_interface = *intf) struct lan78xx_net *dev =3D usb_get_intfdata(intf); int ret; =20 + netif_dbg(dev, ifup, dev->net, "(reset) resuming device"); + ret =3D lan78xx_reset(dev); if (ret < 0) return ret; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3458576C6C; Wed, 13 Mar 2024 17:04:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349485; cv=none; b=BCsnLb/yAvivxlajdE+IXlQNK+jGXu0SsqfotZtmi1aUDEBvstMEhwwEK/PoRAnL+V37WfJrt+QXIDLGwVwc2IaKzoHwterZvzqyMT+n+P4SOd+I7et032DjRnHtHQsamSdD7fh8OHYrluJwIV7wN3xAvZG/0jFgM64byWEPDX4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349485; c=relaxed/simple; bh=HUQ+MXANH31cbahW+pHKvOFfXu4pCED0Yv4yOw25CTI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MFhIg0KQbGE5XxEoSSmWj+cT4yvlHWALQzxjFtKbXKFr897wiaUVd9ZiFEutJ0IosSiYtxSuf9G/OgMKcS7oBfrHDxYQHrzRke35aHbfd0o5eNw7G5xA9SEAdna1eAAChCme6c5lnkq80fzXpN+9wPp7IdzdabY3fOLru5Nx6VE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ITk4BccH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ITk4BccH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46B53C43390; Wed, 13 Mar 2024 17:04:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349485; bh=HUQ+MXANH31cbahW+pHKvOFfXu4pCED0Yv4yOw25CTI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ITk4BccHO8rucsDEqnF0erq0RsFF2wWh5JIiv99vDojjMkFf8mAaYCojwOpVC6eFe 0oyWZ+29QQ5In2VK4gQuhazDXno/ZRuC4ZRbf2UM8HvNY0wS/d15EZy1UOMdh8si7Y CBk3vfM4nx+Q1UnAV0TvHRkQoHMpsM9kTIBJq8yQgWXbpXu/m4zp03j+SoqLDSIRYr N6xBvK9IVaxPGI57ZBc0TcJUEcqyTpikvZ+4sLqFxLNMRezOF9vGnXT5cH4ZV4oPIQ yzrZvdZsWq8sQiJr+V/uxWpx0IpkgsK5bqIRbt7WUja0Ja8D1znrlwAp6l59DIOYww p+dbjP4R3aPUg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Oleksij Rempel , Jiri Pirko , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 06/41] net: lan78xx: fix runtime PM count underflow on link stop Date: Wed, 13 Mar 2024 13:04:00 -0400 Message-ID: <20240313170435.616724-7-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Oleksij Rempel [ Upstream commit 1eecc7ab82c42133b748e1895275942a054a7f67 ] Current driver has some asymmetry in the runtime PM calls. On lan78xx_open() it will call usb_autopm_get() and unconditionally usb_autopm_put(). And on lan78xx_stop() it will call only usb_autopm_put(). So far, it was working only because this driver do not activate autosuspend by default, so it was visible only by warning "Runtime PM usage count underflow!". Since, with current driver, we can't use runtime PM with active link, execute lan78xx_open()->usb_autopm_put() only in error case. Otherwise, keep ref counting high as long as interface is open. Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Eth= ernet device driver") Signed-off-by: Oleksij Rempel Reviewed-by: Jiri Pirko Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/usb/lan78xx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 52d1d922f6c5e..f56f45c924de0 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2940,7 +2940,8 @@ static int lan78xx_open(struct net_device *net) done: mutex_unlock(&dev->dev_mutex); =20 - usb_autopm_put_interface(dev->intf); + if (ret < 0) + usb_autopm_put_interface(dev->intf); =20 return ret; } --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4BBA819C3FD; Wed, 13 Mar 2024 17:04:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349486; cv=none; b=bkuROFDQT4xH6MVicuWR/SkK/fenzhn4ExhG6fJ2K5yYzRa56uh3U1m30rqQbAW+xxxUjUmKLoOa/V8fVaDruLbp2EX2zxAs9rqNBEauCaABHW8w2cWp6jBZU7wCxxLNSIxENJVVs6hum57gm+2tRC0XGvLnA3HZLf8rAmyvU4c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349486; c=relaxed/simple; bh=3kgDSuFyXAW8sJnXODkw0rGdaC6EWFrWZog2gTwQNlc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=udG8oKBdVoYV3blXdhaEe5iUqOpAKa6FVxhpeqDDiNXGC4ZsuVNAlg3rfFAjHW7YqDlFaFcNyGxHlwJ/J3kYEBNEyGJrRTKns2aw7UDrczze5S0+mfb57iy8z/pKkGqaForzUh4ScHPjIe0G3tMFLfJr23A7R/j3etBhzan6wwU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YLaKs0uR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YLaKs0uR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5EFDCC433F1; Wed, 13 Mar 2024 17:04:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349486; bh=3kgDSuFyXAW8sJnXODkw0rGdaC6EWFrWZog2gTwQNlc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YLaKs0uR6D4GIc87hEeLFfAsx4F/2ZeOeSucwIFFcOwZtb5r3E9frUCIm+evmamAx 85fLnKJeWa+X5v8J3UdWW7ExWCEuw+mJSx4CrCli3E/Cq0/jLEREnaEIhdhtZnU3J0 cKGWKna+4E1CahoZE/EpkcSVxMeYh/j1YZz0R95aqshc3PeVVRk1YP+3tcfCZ8IqbO k7isj4XjMvWTXD9ji0NA6RLC79X1iJtvcwTKaLhCoe7UyAfQ5NhiEuZ0iE1VuWB/nr Pepzi84Md0lxv4hjI2UW+tBVMxWqGCSzX/ozOpT4hZ1oHL93CJw7N9QAzyf9o9yZYT 7PMwSJxEChh+g== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Li RongQing , Zhang Yu , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 07/41] net: move definition of pcpu_lstats to header file Date: Wed, 13 Mar 2024 13:04:01 -0400 Message-ID: <20240313170435.616724-8-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Li RongQing [ Upstream commit 52bb6677d530d37055092d86b4eab69dce6c166a ] pcpu_lstats is defined in several files, so unify them as one and move to header file Signed-off-by: Zhang Yu Signed-off-by: Li RongQing Signed-off-by: David S. Miller Stable-dep-of: 1ca1ba465e55 ("geneve: make sure to pull inner header in gen= eve_rx()") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/loopback.c | 6 ------ drivers/net/nlmon.c | 6 ------ drivers/net/vsockmon.c | 14 ++++---------- include/linux/netdevice.h | 6 ++++++ 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c index 7863918592db9..954935a38f186 100644 --- a/drivers/net/loopback.c +++ b/drivers/net/loopback.c @@ -59,12 +59,6 @@ #include #include =20 -struct pcpu_lstats { - u64 packets; - u64 bytes; - struct u64_stats_sync syncp; -}; - /* The higher levels take care of making this non-reentrant (it's * called with bh's disabled). */ diff --git a/drivers/net/nlmon.c b/drivers/net/nlmon.c index 4b22955de1918..dd0db7534cb32 100644 --- a/drivers/net/nlmon.c +++ b/drivers/net/nlmon.c @@ -6,12 +6,6 @@ #include #include =20 -struct pcpu_lstats { - u64 packets; - u64 bytes; - struct u64_stats_sync syncp; -}; - static netdev_tx_t nlmon_xmit(struct sk_buff *skb, struct net_device *dev) { int len =3D skb->len; diff --git a/drivers/net/vsockmon.c b/drivers/net/vsockmon.c index c28bdce14fd5e..7bad5c95551fd 100644 --- a/drivers/net/vsockmon.c +++ b/drivers/net/vsockmon.c @@ -11,12 +11,6 @@ #define DEFAULT_MTU (VIRTIO_VSOCK_MAX_PKT_BUF_SIZE + \ sizeof(struct af_vsockmon_hdr)) =20 -struct pcpu_lstats { - u64 rx_packets; - u64 rx_bytes; - struct u64_stats_sync syncp; -}; - static int vsockmon_dev_init(struct net_device *dev) { dev->lstats =3D netdev_alloc_pcpu_stats(struct pcpu_lstats); @@ -56,8 +50,8 @@ static netdev_tx_t vsockmon_xmit(struct sk_buff *skb, str= uct net_device *dev) struct pcpu_lstats *stats =3D this_cpu_ptr(dev->lstats); =20 u64_stats_update_begin(&stats->syncp); - stats->rx_bytes +=3D len; - stats->rx_packets++; + stats->bytes +=3D len; + stats->packets++; u64_stats_update_end(&stats->syncp); =20 dev_kfree_skb(skb); @@ -80,8 +74,8 @@ vsockmon_get_stats64(struct net_device *dev, struct rtnl_= link_stats64 *stats) =20 do { start =3D u64_stats_fetch_begin_irq(&vstats->syncp); - tbytes =3D vstats->rx_bytes; - tpackets =3D vstats->rx_packets; + tbytes =3D vstats->bytes; + tpackets =3D vstats->packets; } while (u64_stats_fetch_retry_irq(&vstats->syncp, start)); =20 packets +=3D tpackets; diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ac87fcc4d44b4..89155d171b567 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -2383,6 +2383,12 @@ struct pcpu_sw_netstats { struct u64_stats_sync syncp; }; =20 +struct pcpu_lstats { + u64 packets; + u64 bytes; + struct u64_stats_sync syncp; +}; + #define __netdev_alloc_pcpu_stats(type, gfp) \ ({ \ typeof(type) __percpu *pcpu_stats =3D alloc_percpu_gfp(type, gfp);\ --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 934FA82D49; Wed, 13 Mar 2024 17:04:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349487; cv=none; b=qVpdebhLfDFltJeo4PtqP6gjHxmzFdVN6kqherTZ/P8ovRnQnz8JK1AWUkg+rZgAFs/D2kn7gvyQ0r9hw2yr+yQl9bF4is5NkV24UfxNFs6pwPtUr9jGF4zXgVk/23mJrX2iv6wxFChiYnC9G8QX7rkDRx8c90cg+Yj0A1HGdEc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349487; c=relaxed/simple; bh=OsRF5eg9/D/yYCfXERF2k5eeJhQ96fC4uTBg7ASB14Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UOn4X2RTvAzXZv4O2Rx1ZoDF3+Gz7DaLbW5ff+O7VAn3Jibd2WgZlx5J5lx6sipOzY5tmufS0s6EXPnpxAM33yfqn+LJdmcpWf9CL0IcgBcmQmarkRU/KvC3Z6TkbVQjMX5jrfm7P/Y9CPYMCmmERa+4fVQDd4UQofOHQ82kQOo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=vJf9WDr3; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="vJf9WDr3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 837D2C433C7; Wed, 13 Mar 2024 17:04:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349487; bh=OsRF5eg9/D/yYCfXERF2k5eeJhQ96fC4uTBg7ASB14Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vJf9WDr3Gd/dXcNE1nk6OWQMiNLKPgp/1+FTV5Gro24UYsEsRem0tmk+sCvcI/H+H Iu0aQaknbLZEr7dMoLZz8ptXmJAImZkOxQQu9TvScv2ijQH4BG7siwxRCTH3IhEuTj OsGcMV4wFU8pKnvnVWuGjdFZ15PNfzOm7BeFQf2VTAXmlk/kdawKJmSoASL5t3C5Xk Cagox6y13KqSwQRUL9i/yeRlbbhklmCI3vSM+LLoRKwundn5XhApC2lV5sIW2y+FUR sLBDjUv8Y4uhcB1xk8gaVZayM0lTbS7yOWY9xanDNqLT2WVy5GJgRsI6R0GzUMNgZB FMrjAHnE+Uxww== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Eric Dumazet , syzbot+6a1423ff3f97159aae64@syzkaller.appspotmail.com, Jiri Pirko , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 08/41] geneve: make sure to pull inner header in geneve_rx() Date: Wed, 13 Mar 2024 13:04:02 -0400 Message-ID: <20240313170435.616724-9-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Eric Dumazet [ Upstream commit 1ca1ba465e55b9460e4e75dec9fff31e708fec74 ] syzbot triggered a bug in geneve_rx() [1] Issue is similar to the one I fixed in commit 8d975c15c0cd ("ip6_tunnel: make sure to pull inner header in __ip6_tnl_rcv()") We have to save skb->network_header in a temporary variable in order to be able to recompute the network_header pointer after a pskb_inet_may_pull() call. pskb_inet_may_pull() makes sure the needed headers are in skb->head. [1] BUG: KMSAN: uninit-value in IP_ECN_decapsulate include/net/inet_ecn.h:302 [= inline] BUG: KMSAN: uninit-value in geneve_rx drivers/net/geneve.c:279 [inline] BUG: KMSAN: uninit-value in geneve_udp_encap_recv+0x36f9/0x3c10 drivers/ne= t/geneve.c:391 IP_ECN_decapsulate include/net/inet_ecn.h:302 [inline] geneve_rx drivers/net/geneve.c:279 [inline] geneve_udp_encap_recv+0x36f9/0x3c10 drivers/net/geneve.c:391 udp_queue_rcv_one_skb+0x1d39/0x1f20 net/ipv4/udp.c:2108 udp_queue_rcv_skb+0x6ae/0x6e0 net/ipv4/udp.c:2186 udp_unicast_rcv_skb+0x184/0x4b0 net/ipv4/udp.c:2346 __udp4_lib_rcv+0x1c6b/0x3010 net/ipv4/udp.c:2422 udp_rcv+0x7d/0xa0 net/ipv4/udp.c:2604 ip_protocol_deliver_rcu+0x264/0x1300 net/ipv4/ip_input.c:205 ip_local_deliver_finish+0x2b8/0x440 net/ipv4/ip_input.c:233 NF_HOOK include/linux/netfilter.h:314 [inline] ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254 dst_input include/net/dst.h:461 [inline] ip_rcv_finish net/ipv4/ip_input.c:449 [inline] NF_HOOK include/linux/netfilter.h:314 [inline] ip_rcv+0x46f/0x760 net/ipv4/ip_input.c:569 __netif_receive_skb_one_core net/core/dev.c:5534 [inline] __netif_receive_skb+0x1a6/0x5a0 net/core/dev.c:5648 process_backlog+0x480/0x8b0 net/core/dev.c:5976 __napi_poll+0xe3/0x980 net/core/dev.c:6576 napi_poll net/core/dev.c:6645 [inline] net_rx_action+0x8b8/0x1870 net/core/dev.c:6778 __do_softirq+0x1b7/0x7c5 kernel/softirq.c:553 do_softirq+0x9a/0xf0 kernel/softirq.c:454 __local_bh_enable_ip+0x9b/0xa0 kernel/softirq.c:381 local_bh_enable include/linux/bottom_half.h:33 [inline] rcu_read_unlock_bh include/linux/rcupdate.h:820 [inline] __dev_queue_xmit+0x2768/0x51c0 net/core/dev.c:4378 dev_queue_xmit include/linux/netdevice.h:3171 [inline] packet_xmit+0x9c/0x6b0 net/packet/af_packet.c:276 packet_snd net/packet/af_packet.c:3081 [inline] packet_sendmsg+0x8aef/0x9f10 net/packet/af_packet.c:3113 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg net/socket.c:745 [inline] __sys_sendto+0x735/0xa10 net/socket.c:2191 __do_sys_sendto net/socket.c:2203 [inline] __se_sys_sendto net/socket.c:2199 [inline] __x64_sys_sendto+0x125/0x1c0 net/socket.c:2199 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x63/0x6b Uninit was created at: slab_post_alloc_hook mm/slub.c:3819 [inline] slab_alloc_node mm/slub.c:3860 [inline] kmem_cache_alloc_node+0x5cb/0xbc0 mm/slub.c:3903 kmalloc_reserve+0x13d/0x4a0 net/core/skbuff.c:560 __alloc_skb+0x352/0x790 net/core/skbuff.c:651 alloc_skb include/linux/skbuff.h:1296 [inline] alloc_skb_with_frags+0xc8/0xbd0 net/core/skbuff.c:6394 sock_alloc_send_pskb+0xa80/0xbf0 net/core/sock.c:2783 packet_alloc_skb net/packet/af_packet.c:2930 [inline] packet_snd net/packet/af_packet.c:3024 [inline] packet_sendmsg+0x70c2/0x9f10 net/packet/af_packet.c:3113 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg net/socket.c:745 [inline] __sys_sendto+0x735/0xa10 net/socket.c:2191 __do_sys_sendto net/socket.c:2203 [inline] __se_sys_sendto net/socket.c:2199 [inline] __x64_sys_sendto+0x125/0x1c0 net/socket.c:2199 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x63/0x6b Fixes: 2d07dc79fe04 ("geneve: add initial netdev driver for GENEVE tunnels") Reported-and-tested-by: syzbot+6a1423ff3f97159aae64@syzkaller.appspotmail.c= om Signed-off-by: Eric Dumazet Reviewed-by: Jiri Pirko Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/geneve.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index a19e04f8bcc8f..8aa04b37c5fe0 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -217,7 +217,7 @@ static void geneve_rx(struct geneve_dev *geneve, struct= geneve_sock *gs, struct metadata_dst *tun_dst =3D NULL; struct pcpu_sw_netstats *stats; unsigned int len; - int err =3D 0; + int nh, err =3D 0; void *oiph; =20 if (ip_tunnel_collect_metadata() || gs->collect_md) { @@ -261,9 +261,23 @@ static void geneve_rx(struct geneve_dev *geneve, struc= t geneve_sock *gs, goto drop; } =20 - oiph =3D skb_network_header(skb); + /* Save offset of outer header relative to skb->head, + * because we are going to reset the network header to the inner header + * and might change skb->head. + */ + nh =3D skb_network_header(skb) - skb->head; + skb_reset_network_header(skb); =20 + if (!pskb_inet_may_pull(skb)) { + DEV_STATS_INC(geneve->dev, rx_length_errors); + DEV_STATS_INC(geneve->dev, rx_errors); + goto drop; + } + + /* Get the outer header. */ + oiph =3D skb->head + nh; + if (geneve_get_sk_family(gs) =3D=3D AF_INET) err =3D IP_ECN_decapsulate(oiph, skb); #if IS_ENABLED(CONFIG_IPV6) --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D04BB60EDB; Wed, 13 Mar 2024 17:04:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349488; cv=none; b=hqa6CKvAzGFM84a9yO5bGTvxs+IV9UZwQ822gLAOumoi5kNsMR2fA+BM5589/zWf/NejOuFaud/8YcwZpPP7Ski07n6rG2RZFv+ybuq+q2fOFYs7rVN0rUTaJ+ev9ZR2JzcN1BB5pVMLc+PMoe6/Zc4QIGjrdVunGR9D+d7NSnA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349488; c=relaxed/simple; bh=+11ew/xhydcSMp0idrATwrTrCc6oG/fJPmdoTky8UPM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SnO9/TG6iEieoDBjoGVCY15FOYc/0N4OPSqET/NcQhHV6sABuKMTMsfI3isWca5wbPEw8qa6/aRqGL0nPqRnNLDVobq9MBAV9vB1XWoxPPoIpyuLvZO3Zh8ASHqN0ypdiVjFiEQuj1pgZ2SuW79Za6XVVmknuxSSNM4OLSfy2LQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=i8wxvAyC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="i8wxvAyC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF18DC43399; Wed, 13 Mar 2024 17:04:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349488; bh=+11ew/xhydcSMp0idrATwrTrCc6oG/fJPmdoTky8UPM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=i8wxvAyCRpZIHs8N5c8NrZzs0nOtbdxsqY2nEWRMyMEviycSV+RlBukSsW+bNFR7j wuorJsvbxh5iR6OYV/0mVXASqtBuqSS5yyMsOVfnZe++aiIOY9EPTJLqf+6DHqlfsN LNfejafDExmKBnmWzYhrtmDGjrWSgOz3um3Cv9NsjLRdS17LamVpmW0qEYkNyTQg9s FuzYMMqGiOZ2dHKydeAcu+ZedIFdykaF+iwR3jx1U87Dl6uNX1ziC6B+DDwpzNZV3/ +QVjuQ/TPi9ZHiiI9fkPlk0puKg23skIPThekGjUqYfWRmoQzcN3i4vfpSB1jf67u8 qLuU+0gA5Iueg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Eric Dumazet , syzbot , David Ahern , Jakub Kicinski , Sasha Levin Subject: [PATCH 4.19 09/41] net/ipv6: avoid possible UAF in ip6_route_mpath_notify() Date: Wed, 13 Mar 2024 13:04:03 -0400 Message-ID: <20240313170435.616724-10-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Eric Dumazet [ Upstream commit 685f7d531264599b3f167f1e94bbd22f120e5fab ] syzbot found another use-after-free in ip6_route_mpath_notify() [1] Commit f7225172f25a ("net/ipv6: prevent use after free in ip6_route_mpath_notify") was not able to fix the root cause. We need to defer the fib6_info_release() calls after ip6_route_mpath_notify(), in the cleanup phase. [1] BUG: KASAN: slab-use-after-free in rt6_fill_node+0x1460/0x1ac0 Read of size 4 at addr ffff88809a07fc64 by task syz-executor.2/23037 CPU: 0 PID: 23037 Comm: syz-executor.2 Not tainted 6.8.0-rc4-syzkaller-0103= 5-gea7f3cfaa588 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Goo= gle 01/25/2024 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1e7/0x2e0 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:377 [inline] print_report+0x167/0x540 mm/kasan/report.c:488 kasan_report+0x142/0x180 mm/kasan/report.c:601 rt6_fill_node+0x1460/0x1ac0 inet6_rt_notify+0x13b/0x290 net/ipv6/route.c:6184 ip6_route_mpath_notify net/ipv6/route.c:5198 [inline] ip6_route_multipath_add net/ipv6/route.c:5404 [inline] inet6_rtm_newroute+0x1d0f/0x2300 net/ipv6/route.c:5517 rtnetlink_rcv_msg+0x885/0x1040 net/core/rtnetlink.c:6597 netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2543 netlink_unicast_kernel net/netlink/af_netlink.c:1341 [inline] netlink_unicast+0x7ea/0x980 net/netlink/af_netlink.c:1367 netlink_sendmsg+0xa3b/0xd70 net/netlink/af_netlink.c:1908 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:745 ____sys_sendmsg+0x525/0x7d0 net/socket.c:2584 ___sys_sendmsg net/socket.c:2638 [inline] __sys_sendmsg+0x2b0/0x3a0 net/socket.c:2667 do_syscall_64+0xf9/0x240 entry_SYSCALL_64_after_hwframe+0x6f/0x77 RIP: 0033:0x7f73dd87dda9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 20 00 00 90 48 89 f8 48 89 f7 = 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff f= f 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f73de6550c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007f73dd9ac050 RCX: 00007f73dd87dda9 RDX: 0000000000000000 RSI: 0000000020000140 RDI: 0000000000000005 RBP: 00007f73dd8ca47a R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 000000000000006e R14: 00007f73dd9ac050 R15: 00007ffdbdeb7858 Allocated by task 23037: kasan_save_stack mm/kasan/common.c:47 [inline] kasan_save_track+0x3f/0x80 mm/kasan/common.c:68 poison_kmalloc_redzone mm/kasan/common.c:372 [inline] __kasan_kmalloc+0x98/0xb0 mm/kasan/common.c:389 kasan_kmalloc include/linux/kasan.h:211 [inline] __do_kmalloc_node mm/slub.c:3981 [inline] __kmalloc+0x22e/0x490 mm/slub.c:3994 kmalloc include/linux/slab.h:594 [inline] kzalloc include/linux/slab.h:711 [inline] fib6_info_alloc+0x2e/0xf0 net/ipv6/ip6_fib.c:155 ip6_route_info_create+0x445/0x12b0 net/ipv6/route.c:3758 ip6_route_multipath_add net/ipv6/route.c:5298 [inline] inet6_rtm_newroute+0x744/0x2300 net/ipv6/route.c:5517 rtnetlink_rcv_msg+0x885/0x1040 net/core/rtnetlink.c:6597 netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2543 netlink_unicast_kernel net/netlink/af_netlink.c:1341 [inline] netlink_unicast+0x7ea/0x980 net/netlink/af_netlink.c:1367 netlink_sendmsg+0xa3b/0xd70 net/netlink/af_netlink.c:1908 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:745 ____sys_sendmsg+0x525/0x7d0 net/socket.c:2584 ___sys_sendmsg net/socket.c:2638 [inline] __sys_sendmsg+0x2b0/0x3a0 net/socket.c:2667 do_syscall_64+0xf9/0x240 entry_SYSCALL_64_after_hwframe+0x6f/0x77 Freed by task 16: kasan_save_stack mm/kasan/common.c:47 [inline] kasan_save_track+0x3f/0x80 mm/kasan/common.c:68 kasan_save_free_info+0x4e/0x60 mm/kasan/generic.c:640 poison_slab_object+0xa6/0xe0 mm/kasan/common.c:241 __kasan_slab_free+0x34/0x70 mm/kasan/common.c:257 kasan_slab_free include/linux/kasan.h:184 [inline] slab_free_hook mm/slub.c:2121 [inline] slab_free mm/slub.c:4299 [inline] kfree+0x14a/0x380 mm/slub.c:4409 rcu_do_batch kernel/rcu/tree.c:2190 [inline] rcu_core+0xd76/0x1810 kernel/rcu/tree.c:2465 __do_softirq+0x2bb/0x942 kernel/softirq.c:553 Last potentially related work creation: kasan_save_stack+0x3f/0x60 mm/kasan/common.c:47 __kasan_record_aux_stack+0xae/0x100 mm/kasan/generic.c:586 __call_rcu_common kernel/rcu/tree.c:2715 [inline] call_rcu+0x167/0xa80 kernel/rcu/tree.c:2829 fib6_info_release include/net/ip6_fib.h:341 [inline] ip6_route_multipath_add net/ipv6/route.c:5344 [inline] inet6_rtm_newroute+0x114d/0x2300 net/ipv6/route.c:5517 rtnetlink_rcv_msg+0x885/0x1040 net/core/rtnetlink.c:6597 netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2543 netlink_unicast_kernel net/netlink/af_netlink.c:1341 [inline] netlink_unicast+0x7ea/0x980 net/netlink/af_netlink.c:1367 netlink_sendmsg+0xa3b/0xd70 net/netlink/af_netlink.c:1908 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:745 ____sys_sendmsg+0x525/0x7d0 net/socket.c:2584 ___sys_sendmsg net/socket.c:2638 [inline] __sys_sendmsg+0x2b0/0x3a0 net/socket.c:2667 do_syscall_64+0xf9/0x240 entry_SYSCALL_64_after_hwframe+0x6f/0x77 The buggy address belongs to the object at ffff88809a07fc00 which belongs to the cache kmalloc-512 of size 512 The buggy address is located 100 bytes inside of freed 512-byte region [ffff88809a07fc00, ffff88809a07fe00) The buggy address belongs to the physical page: page:ffffea0002681f00 refcount:1 mapcount:0 mapping:0000000000000000 index:= 0x0 pfn:0x9a07c head:ffffea0002681f00 order:2 entire_mapcount:0 nr_pages_mapped:0 pincount:0 flags: 0xfff00000000840(slab|head|node=3D0|zone=3D1|lastcpupid=3D0x7ff) page_type: 0xffffffff() raw: 00fff00000000840 ffff888014c41c80 dead000000000122 0000000000000000 raw: 0000000000000000 0000000080100010 00000001ffffffff 0000000000000000 page dumped because: kasan: bad access detected page_owner tracks the page as allocated page last allocated via order 2, migratetype Unmovable, gfp_mask 0x1d20c0(_= _GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC|__G= FP_HARDWALL), pid 23028, tgid 23027 (syz-executor.4), ts 2340253595219, fre= e_ts 2339107097036 set_page_owner include/linux/page_owner.h:31 [inline] post_alloc_hook+0x1ea/0x210 mm/page_alloc.c:1533 prep_new_page mm/page_alloc.c:1540 [inline] get_page_from_freelist+0x33ea/0x3580 mm/page_alloc.c:3311 __alloc_pages+0x255/0x680 mm/page_alloc.c:4567 __alloc_pages_node include/linux/gfp.h:238 [inline] alloc_pages_node include/linux/gfp.h:261 [inline] alloc_slab_page+0x5f/0x160 mm/slub.c:2190 allocate_slab mm/slub.c:2354 [inline] new_slab+0x84/0x2f0 mm/slub.c:2407 ___slab_alloc+0xd17/0x13e0 mm/slub.c:3540 __slab_alloc mm/slub.c:3625 [inline] __slab_alloc_node mm/slub.c:3678 [inline] slab_alloc_node mm/slub.c:3850 [inline] __do_kmalloc_node mm/slub.c:3980 [inline] __kmalloc+0x2e0/0x490 mm/slub.c:3994 kmalloc include/linux/slab.h:594 [inline] kzalloc include/linux/slab.h:711 [inline] new_dir fs/proc/proc_sysctl.c:956 [inline] get_subdir fs/proc/proc_sysctl.c:1000 [inline] sysctl_mkdir_p fs/proc/proc_sysctl.c:1295 [inline] __register_sysctl_table+0xb30/0x1440 fs/proc/proc_sysctl.c:1376 neigh_sysctl_register+0x416/0x500 net/core/neighbour.c:3859 devinet_sysctl_register+0xaf/0x1f0 net/ipv4/devinet.c:2644 inetdev_init+0x296/0x4d0 net/ipv4/devinet.c:286 inetdev_event+0x338/0x15c0 net/ipv4/devinet.c:1555 notifier_call_chain+0x18f/0x3b0 kernel/notifier.c:93 call_netdevice_notifiers_extack net/core/dev.c:1987 [inline] call_netdevice_notifiers net/core/dev.c:2001 [inline] register_netdevice+0x15b2/0x1a20 net/core/dev.c:10340 br_dev_newlink+0x27/0x100 net/bridge/br_netlink.c:1563 rtnl_newlink_create net/core/rtnetlink.c:3497 [inline] __rtnl_newlink net/core/rtnetlink.c:3717 [inline] rtnl_newlink+0x158f/0x20a0 net/core/rtnetlink.c:3730 page last free pid 11583 tgid 11583 stack trace: reset_page_owner include/linux/page_owner.h:24 [inline] free_pages_prepare mm/page_alloc.c:1140 [inline] free_unref_page_prepare+0x968/0xa90 mm/page_alloc.c:2346 free_unref_page+0x37/0x3f0 mm/page_alloc.c:2486 kasan_depopulate_vmalloc_pte+0x74/0x90 mm/kasan/shadow.c:415 apply_to_pte_range mm/memory.c:2619 [inline] apply_to_pmd_range mm/memory.c:2663 [inline] apply_to_pud_range mm/memory.c:2699 [inline] apply_to_p4d_range mm/memory.c:2735 [inline] __apply_to_page_range+0x8ec/0xe40 mm/memory.c:2769 kasan_release_vmalloc+0x9a/0xb0 mm/kasan/shadow.c:532 __purge_vmap_area_lazy+0x163f/0x1a10 mm/vmalloc.c:1770 drain_vmap_area_work+0x40/0xd0 mm/vmalloc.c:1804 process_one_work kernel/workqueue.c:2633 [inline] process_scheduled_works+0x913/0x1420 kernel/workqueue.c:2706 worker_thread+0xa5f/0x1000 kernel/workqueue.c:2787 kthread+0x2ef/0x390 kernel/kthread.c:388 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1b/0x30 arch/x86/entry/entry_64.S:242 Memory state around the buggy address: ffff88809a07fb00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff88809a07fb80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >ffff88809a07fc00: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff88809a07fc80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff88809a07fd00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb Fixes: 3b1137fe7482 ("net: ipv6: Change notifications for multipath add to = RTA_MULTIPATH") Reported-by: syzbot Signed-off-by: Eric Dumazet Reviewed-by: David Ahern Link: https://lore.kernel.org/r/20240303144801.702646-1-edumazet@google.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/ipv6/route.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 9dbc9c0cbc5a3..b4d9acb1bc101 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -4516,25 +4516,19 @@ static int ip6_route_multipath_add(struct fib6_conf= ig *cfg, err_nh =3D NULL; list_for_each_entry(nh, &rt6_nh_list, next) { err =3D __ip6_ins_rt(nh->fib6_info, info, extack); - fib6_info_release(nh->fib6_info); - - if (!err) { - /* save reference to last route successfully inserted */ - rt_last =3D nh->fib6_info; - - /* save reference to first route for notification */ - if (!rt_notif) - rt_notif =3D nh->fib6_info; - } =20 - /* nh->fib6_info is used or freed at this point, reset to NULL*/ - nh->fib6_info =3D NULL; if (err) { if (replace && nhn) ip6_print_replace_route_err(&rt6_nh_list); err_nh =3D nh; goto add_errout; } + /* save reference to last route successfully inserted */ + rt_last =3D nh->fib6_info; + + /* save reference to first route for notification */ + if (!rt_notif) + rt_notif =3D nh->fib6_info; =20 /* Because each route is added like a single route we remove * these flags after the first nexthop: if there is a collision, @@ -4572,8 +4566,7 @@ static int ip6_route_multipath_add(struct fib6_config= *cfg, =20 cleanup: list_for_each_entry_safe(nh, nh_safe, &rt6_nh_list, next) { - if (nh->fib6_info) - fib6_info_release(nh->fib6_info); + fib6_info_release(nh->fib6_info); list_del(&nh->next); kfree(nh); } --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC32419D9C3; Wed, 13 Mar 2024 17:04:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349490; cv=none; b=GoVCxovfJd0QbVJn1tt11zTD5PQuRrPvjpvDgx1VLY3IPbWJW9sYWWBoHzNQKyD1+AUP+5Sb+mZKZZJ8214H8I3p7DysasgCR3UKdzOHtduSzXgT/aMs9NM6IkkhMQoOSfIfFr04Ym2vMr6KYuPPDX2h1UF787lpfucoU471qG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349490; c=relaxed/simple; bh=9KqGsTxtPM2C2qcbJWlCOteDNqiv2gMmn1TTx8K/PY4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EWhbilsi0OthmfvsOoEF2KalOYKR/SvZHD+/3xFba55872C9Wl4OiCAssLFzxzsea0DlXjXMeWnVKcGRc5+fnEE44ln1HOkWNWvvSG17DMS1vqKJlovDfS5lY7VhUQySTvlsVpnYI06YOoD5lek41HU258dn9gqOWL/qdFllzRw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=o25G4pr1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="o25G4pr1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0882DC433B1; Wed, 13 Mar 2024 17:04:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349489; bh=9KqGsTxtPM2C2qcbJWlCOteDNqiv2gMmn1TTx8K/PY4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o25G4pr1IEM5b1I5NYj5kwYJ9L6xwnB1HtPuJLromBH7cvUhH9k9M0O+jrX80UnGM O30uTzEd6Dd5hbGyNcMSnoMBooS7NlXjGHkZPhr6CE8Pa94g6SH6FLiV4twIxrd2Ow GbRzHlXpGOD5dS+jwylphINF/MckGXsrBU1reeUdj0ErQfajN/Llo4vNwGN3jNBsUZ wtJ70dJrEadyea96HCeuFqa9sRoGNfn9RBF4VvOdD8Wmtoj7HCXzD0kLBJG8qRx9y5 ztUFgLcVTbOV62EcBuAfnGhZB/eVPwwVcGBzoZsyWnHEUmi968kZRxCI3qSm1efdFB PH99b0kgh6orQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Edward Adam Davis , syzbot+d4faee732755bba9838e@syzkaller.appspotmail.com, "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 10/41] net/rds: fix WARNING in rds_conn_connect_if_down Date: Wed, 13 Mar 2024 13:04:04 -0400 Message-ID: <20240313170435.616724-11-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Edward Adam Davis [ Upstream commit c055fc00c07be1f0df7375ab0036cebd1106ed38 ] If connection isn't established yet, get_mr() will fail, trigger connection= after get_mr(). Fixes: 584a8279a44a ("RDS: RDMA: return appropriate error on rdma map failu= res") Reported-and-tested-by: syzbot+d4faee732755bba9838e@syzkaller.appspotmail.c= om Signed-off-by: Edward Adam Davis Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/rds/rdma.c | 3 +++ net/rds/send.c | 6 +----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/net/rds/rdma.c b/net/rds/rdma.c index 9882cebfcad60..2632f3f3aa284 100644 --- a/net/rds/rdma.c +++ b/net/rds/rdma.c @@ -278,6 +278,9 @@ static int __rds_rdma_map(struct rds_sock *rs, struct r= ds_get_mr_args *args, put_page(sg_page(&sg[i])); kfree(sg); ret =3D PTR_ERR(trans_private); + /* Trigger connection so that its ready for the next retry */ + if (ret =3D=3D -ENODEV) + rds_conn_connect_if_down(cp->cp_conn); goto out; } =20 diff --git a/net/rds/send.c b/net/rds/send.c index 26e2c2305f7aa..c856e6c963af9 100644 --- a/net/rds/send.c +++ b/net/rds/send.c @@ -1300,12 +1300,8 @@ int rds_sendmsg(struct socket *sock, struct msghdr *= msg, size_t payload_len) =20 /* Parse any control messages the user may have included. */ ret =3D rds_cmsg_send(rs, rm, msg, &allocated_mr, &vct); - if (ret) { - /* Trigger connection so that its ready for the next retry */ - if (ret =3D=3D -EAGAIN) - rds_conn_connect_if_down(conn); + if (ret) goto out; - } =20 if (rm->rdma.op_active && !conn->c_trans->xmit_rdma) { printk_ratelimited(KERN_NOTICE "rdma_op %p conn xmit_rdma %p\n", --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E94BE19D9DE; Wed, 13 Mar 2024 17:04:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349491; cv=none; b=UOn+ByRM21hEZyXZABmjVJrr/2o6Yk9cFaN0f+uXtZ+RoB0JpVZByC1FDN9t+yuJZlVP46xw2qIk2KkyGuWazLzAhbSp4odgq5cFz5ent3rS4XTu7q5mIVTgz2nWIG+gQ+pAFRZ7OGh3ZTcuWgR7bK7IiEW/YKTzddYqtMnEVhY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349491; c=relaxed/simple; bh=i0GI5Yyj/+4SXUqciw/0zrOzu/dUyyzv7oxm8eamf0A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sAoO9qiIDTBY+0roKYkjCJhACFxmSbC1n4bbgoPs9kuTA3joZilHjmcHoskAVK/y4pYyOQimMI/BUz07hKQfwvLS4HjnndpWb7tQOi/MpjnHcPYRVfAS+e0UyEwO2YIwQ3urqRHTKO67sVTqWmdVPjR72O3/lNnwJdRLnrvGe60= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ot70AY7z; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ot70AY7z" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 25A74C433C7; Wed, 13 Mar 2024 17:04:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349490; bh=i0GI5Yyj/+4SXUqciw/0zrOzu/dUyyzv7oxm8eamf0A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ot70AY7zVf0Y9vxxd/I90ny/g6jT+e5pZ01vf78cBJ+fifL7xbKcM+C1EE8SE4Aqh Q0b7erbht0snrh3WHLb35KbrIZBJfKgfsvRyGI1ellxTVMW8jzGCtcCNmnRs96QUuT qO2rfeawdf+2Juswctt+o+gHeWDxiqzCU5tppLBCO5uv4jhqX80Iw+qynULjlxf54+ QNNxHwNZNclT1BVwls2AcYHZZn/C+8tnoPE2mNWjz8f3c4LgbPrvqS42ooLA4mhnam QXZhUh7Q2dRE/jjoWX9uLQPq6Ojelhj3LyyCyAOFRMPTvXQGocHYUYqJSZn5s44jGI ZfrnU7uMhOTxg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Lena Wang , Pablo Neira Ayuso , Sasha Levin Subject: [PATCH 4.19 11/41] netfilter: nf_conntrack_h323: Add protection for bmp length out of range Date: Wed, 13 Mar 2024 13:04:05 -0400 Message-ID: <20240313170435.616724-12-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Lena Wang [ Upstream commit 767146637efc528b5e3d31297df115e85a2fd362 ] UBSAN load reports an exception of BRK#5515 SHIFT_ISSUE:Bitwise shifts that are out of bounds for their data type. vmlinux get_bitmap(b=3D75) + 712 vmlinux decode_seq(bs=3D0xFFFFFFD008037000, f=3D0xFFFFFFD008037018, level= =3D134443100) + 1956 vmlinux decode_choice(base=3D0xFFFFFFD0080370F0, level=3D23843636) + 1216 vmlinux decode_seq(f=3D0xFFFFFFD0080371A8, level=3D134443500) + 812 vmlinux decode_choice(base=3D0xFFFFFFD008037280, level=3D0) + 1216 vmlinux DecodeRasMessage() + 304 vmlinux ras_help() + 684 vmlinux nf_confirm() + 188 Due to abnormal data in skb->data, the extension bitmap length exceeds 32 when decoding ras message then uses the length to make a shift operation. It will change into negative after several loop. UBSAN load could detect a negative shift as an undefined behaviour and reports exception. So we add the protection to avoid the length exceeding 32. Or else it will return out of range error and stop decoding. Fixes: 5e35941d9901 ("[NETFILTER]: Add H.323 conntrack/NAT helper") Signed-off-by: Lena Wang Signed-off-by: Pablo Neira Ayuso Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netfilter/nf_conntrack_h323_asn1.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/netfilter/nf_conntrack_h323_asn1.c b/net/netfilter/nf_conn= track_h323_asn1.c index 4c2ef42e189cb..82dae553a5fc7 100644 --- a/net/netfilter/nf_conntrack_h323_asn1.c +++ b/net/netfilter/nf_conntrack_h323_asn1.c @@ -536,6 +536,8 @@ static int decode_seq(struct bitstr *bs, const struct f= ield_t *f, /* Get fields bitmap */ if (nf_h323_error_boundary(bs, 0, f->sz)) return H323_ERROR_BOUND; + if (f->sz > 32) + return H323_ERROR_RANGE; bmp =3D get_bitmap(bs, f->sz); if (base) *(unsigned int *)base =3D bmp; @@ -592,6 +594,8 @@ static int decode_seq(struct bitstr *bs, const struct f= ield_t *f, bmp2_len =3D get_bits(bs, 7) + 1; if (nf_h323_error_boundary(bs, 0, bmp2_len)) return H323_ERROR_BOUND; + if (bmp2_len > 32) + return H323_ERROR_RANGE; bmp2 =3D get_bitmap(bs, bmp2_len); bmp |=3D bmp2 >> f->sz; if (base) --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 005D976C7D; Wed, 13 Mar 2024 17:04:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349492; cv=none; b=mXkhZllv8W9RTpyufCbkOXimKiRdApGmoYd5e3CAtc1zAMkW7xUWtBKnsRju9HPGhEGYgVHij9wXfEUac30c/BsaJLACT3Vjg7hzaXA1rGUfOhAqWg/mKaXTtLKL8v9cLboaBPTkCOoJ2UmDxiGcItKgxNbkLkeB9QKuUJG0H3M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349492; c=relaxed/simple; bh=pg3AI6ksEZdlcORWBo2CvZB6jVB+HNks4B6EK0JR8Lo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AiGGvL5w7zZZO52w96qjjwIDLmRuooHOcw/Pw1L0I064jQztkrR4/pzaeT5Kcyln+8RnvhsEbZQ455fpHbk0JIpyPlnSHZsKQwwt5DXywpQ+em0Ycvij9EvWE/dlD8AEo6/ufwsYg5O4/0nBIbOHg7JgHsLGcdVgAQLdQkYp4Gs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YLfKYPjo; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YLfKYPjo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21D9CC433F1; Wed, 13 Mar 2024 17:04:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349491; bh=pg3AI6ksEZdlcORWBo2CvZB6jVB+HNks4B6EK0JR8Lo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YLfKYPjoylqHXoNDT2uqX/Zm/gO9Uy0dmo6Xk5wvz0gMZO0kH7vUxDGMMhpAibzON OdPSrt0XAX0Ayg+Lx+roilDjpIzK/Vt07VBYeSyxP5Hgc8DGVspPu9X0CJ/CGmtC+n Oj398xxUMeXE4YwRX791vwpeBZlMS8ZXN5rgMnmn72ZOtaEw5kBau5gpg/BYuTFpvm ENitXmavjQjVG/WcN8/70RXsKEd/iN57bBe8OeuSFsF0K3hw3jCgQ5thZ6MgyJVKhm Mt4/oGiwAErNnTSDUsvWvAo5a42CRswInTok2MXg2H5XwCEPz/TZbSWCH/40igxz4x bl7C0HKMcocsA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 12/41] netrom: Fix a data-race around sysctl_netrom_default_path_quality Date: Wed, 13 Mar 2024 13:04:06 -0400 Message-ID: <20240313170435.616724-13-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit 958d6145a6d9ba9e075c921aead8753fb91c9101 ] We need to protect the reader reading sysctl_netrom_default_path_quality because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/nr_route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index 53ced34a1fdd2..e3ce3531608c4 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c @@ -156,7 +156,7 @@ static int __must_check nr_add_node(ax25_address *nr, c= onst char *mnemonic, nr_neigh->digipeat =3D NULL; nr_neigh->ax25 =3D NULL; nr_neigh->dev =3D dev; - nr_neigh->quality =3D sysctl_netrom_default_path_quality; + nr_neigh->quality =3D READ_ONCE(sysctl_netrom_default_path_quality); nr_neigh->locked =3D 0; nr_neigh->count =3D 0; nr_neigh->number =3D nr_neigh_no++; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 095D41509DC; Wed, 13 Mar 2024 17:04:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349493; cv=none; b=ZJI0BWZqU4KaQnBpnS7M2bvbJIoErShNyaBE7cmqnSgJoFN/4BwfnGTfGZFK0NcgfJziN0XlWBptBXqls9muOCGdjXBKo9IDNnWp6dOOHn8iXkqO7zvw6QiJnFptvBFIn8ZGmCweii08cD/q+Vc1p9dyZiMCfzhtcOkyIot/zI8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349493; c=relaxed/simple; bh=KEoXA3QZ1u93FxZu44O9SkHaOFwzRsDovRJ+kK13oCw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LVoy3Oxy41HHWxyYncbRP/ztbfBmgZw3i1AXFVqE89UiVMOXaAmXbXBdU1KxOYrdLOlzqmXx2yqLnRgXo0ZcCklMj7oRzDotN+S5473uK4/dEV2H7nGGqy77eFB7bhObLk5k2ClIzdtHguqHFBMk2EMl9PFs+15F77QYh3xiVE4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MM2r9NZK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MM2r9NZK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 310E4C43390; Wed, 13 Mar 2024 17:04:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349492; bh=KEoXA3QZ1u93FxZu44O9SkHaOFwzRsDovRJ+kK13oCw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MM2r9NZKHlpQiix1PUIYv2Afk5QTy6BFL25lH6NKpfVIPhJCZD7Ll0UBEsYr3t9ou VdsLicFb4XZQHOL4mvEvjKb/I52HXQoppSXPoirRsAeizaonItgHdmHTPS1UqcqYp+ p9m2+cyi6XixFG/JXJOpbYCKPx6s+N6PStlRG7AIjgmlbhRhEzLNEsDSAG3laoECdH km2Rl1WnJcBSIQzEbS1LIvfMqHMJEKV14kj4hW2oRffa8tsN6ggAGWpjaBXVB+yf6k LYkrH0nffV2nMFIhSV2us77qy3ktNtQ3bdn1GVn7xfDDx96prTqgw/El5AxiMyRLH+ JiIjB1bTbCnvg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 13/41] netrom: Fix a data-race around sysctl_netrom_obsolescence_count_initialiser Date: Wed, 13 Mar 2024 13:04:07 -0400 Message-ID: <20240313170435.616724-14-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit cfd9f4a740f772298308b2e6070d2c744fb5cf79 ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/nr_route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index e3ce3531608c4..929446e246b36 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c @@ -766,7 +766,7 @@ int nr_route_frame(struct sk_buff *skb, ax25_cb *ax25) if (ax25 !=3D NULL) { ret =3D nr_add_node(nr_src, "", &ax25->dest_addr, ax25->digipeat, ax25->ax25_dev->dev, 0, - sysctl_netrom_obsolescence_count_initialiser); + READ_ONCE(sysctl_netrom_obsolescence_count_initialiser)); if (ret) return ret; } --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73E6019E7C7; Wed, 13 Mar 2024 17:04:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349494; cv=none; b=nwyGz7NIJ0XluIGzU9BferNpkH4AiFs0JH98G981eTm70HGuwst+Y+MHtNvdXUgbw2fuG28kFo0a46MASSN4rGZsoUvVbGmT3e1czgrR2sLPxolHByTdKc5LkVHZ5QYfcuiXhTzR4DzpO/S7bXrD6baM/CttIaOqFBO5lxczLyE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349494; c=relaxed/simple; bh=JEZJQknV6mzm+2QPtcxWEj1uDj/pFPSSD4AzOWtkYW8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XnP5hq1sW3kQ0ZjDOahzXvDQE37Si6O4DAhcvz/jO5qbesnPJodfwQYA+f1ZTmdwSn9ERKZzfuoSI2TKnVbVDty+N1MvmNu6VoexBrYoj70rsURrAMwfcOMihBKOImtLlCOEevqPcjLXUbTHF86hOFgjBjHOc38/2kBRMC1U6D4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JBwpyGpE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JBwpyGpE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3521AC43394; Wed, 13 Mar 2024 17:04:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349493; bh=JEZJQknV6mzm+2QPtcxWEj1uDj/pFPSSD4AzOWtkYW8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JBwpyGpEMO8dFsK0MtQPZc3UnbdSUdY/0krAVPoGf9hpWRFUTyuZGwiyIhqNfgIiP jIxBE2WhT46tdsprN5zcsJeidSYx0Ed+6BTOSQm9zfqdHpdzhxV7sPFXs4F5WU/5Af xJHk4jUakEvEDj50LtneZvo8WHcBy46M1ExwPZMjRXLVIyDyvGDQy61YBYiiPcLSVe V1jHnzc2/3P5bjwAj25vty9z+M49+TL5lHE5A+Nq2y9gaK2Ip5Nr30rs2/HVmyY9/u cZR4pzFDGW+WfE2ywPbgeCWTiiCHpQv3pEaSHOOrVIEjlzGPMZGx8o+bihHTRtCg+x axCuwocVPp8zA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 14/41] netrom: Fix data-races around sysctl_netrom_network_ttl_initialiser Date: Wed, 13 Mar 2024 13:04:08 -0400 Message-ID: <20240313170435.616724-15-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit 119cae5ea3f9e35cdada8e572cc067f072fa825a ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/nr_dev.c | 2 +- net/netrom/nr_out.c | 2 +- net/netrom/nr_subr.c | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/net/netrom/nr_dev.c b/net/netrom/nr_dev.c index 988f542481a83..fa845edad7bf6 100644 --- a/net/netrom/nr_dev.c +++ b/net/netrom/nr_dev.c @@ -84,7 +84,7 @@ static int nr_header(struct sk_buff *skb, struct net_devi= ce *dev, buff[6] |=3D AX25_SSSID_SPARE; buff +=3D AX25_ADDR_LEN; =20 - *buff++ =3D sysctl_netrom_network_ttl_initialiser; + *buff++ =3D READ_ONCE(sysctl_netrom_network_ttl_initialiser); =20 *buff++ =3D NR_PROTO_IP; *buff++ =3D NR_PROTO_IP; diff --git a/net/netrom/nr_out.c b/net/netrom/nr_out.c index 00fbf1419ec6b..213bddab6e74f 100644 --- a/net/netrom/nr_out.c +++ b/net/netrom/nr_out.c @@ -207,7 +207,7 @@ void nr_transmit_buffer(struct sock *sk, struct sk_buff= *skb) dptr[6] |=3D AX25_SSSID_SPARE; dptr +=3D AX25_ADDR_LEN; =20 - *dptr++ =3D sysctl_netrom_network_ttl_initialiser; + *dptr++ =3D READ_ONCE(sysctl_netrom_network_ttl_initialiser); =20 if (!nr_route_frame(skb, NULL)) { kfree_skb(skb); diff --git a/net/netrom/nr_subr.c b/net/netrom/nr_subr.c index a7d3a265befb9..b5cee72b8c985 100644 --- a/net/netrom/nr_subr.c +++ b/net/netrom/nr_subr.c @@ -185,7 +185,8 @@ void nr_write_internal(struct sock *sk, int frametype) *dptr++ =3D nr->my_id; *dptr++ =3D frametype; *dptr++ =3D nr->window; - if (nr->bpqext) *dptr++ =3D sysctl_netrom_network_ttl_initialiser; + if (nr->bpqext) + *dptr++ =3D READ_ONCE(sysctl_netrom_network_ttl_initialiser); break; =20 case NR_DISCREQ: @@ -239,7 +240,7 @@ void __nr_transmit_reply(struct sk_buff *skb, int mine,= unsigned char cmdflags) dptr[6] |=3D AX25_SSSID_SPARE; dptr +=3D AX25_ADDR_LEN; =20 - *dptr++ =3D sysctl_netrom_network_ttl_initialiser; + *dptr++ =3D READ_ONCE(sysctl_netrom_network_ttl_initialiser); =20 if (mine) { *dptr++ =3D 0; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D66A19E7DC; Wed, 13 Mar 2024 17:04:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349495; cv=none; b=ix8mGcxRYJ+fEMTC6XwYiix6V4ZwKZhBN80JyxlfZK970JRzKDez9+UtyYmsTKzlrAmriNpviwiAnEnFq861KlLDLjH6YvKKNrblu1VKjrVXzAYEZgbU1nAmP7vNa+aXsuJDbVw/LWRhyv3m3Zw32mVOkdIJNQ4OyayMwdc6a0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349495; c=relaxed/simple; bh=6PUReT8BQ56I212FUQn4EKtgHLCtKs7HkT6w7g8qx3Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sh/BMrpuOCvcw/5czaNlxCjiTvylprYQxFVp6Ist3n/JN/3hw+gl8YG6GPl4ySVHi0moAsAGkGCS0yXAhHbcsR71LU5/hS5cN/L2PWySBsDWzbV8+qHaOIeBsE426X+c0j/pQC/ZgSM7/DLBwSoG8XLAGofjL6OxJMohRNtcnSw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SFUG+VQy; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SFUG+VQy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 36266C43399; Wed, 13 Mar 2024 17:04:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349494; bh=6PUReT8BQ56I212FUQn4EKtgHLCtKs7HkT6w7g8qx3Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SFUG+VQyDsizzwDfVXooXYX3i32px+K2Fk9jxFGe099WXa62PJfRebbw+1XZAE78e phneLVMhZzIzVbiSi9wbyZ6TcN6jQOoVxPjx9pzR3LmU1o6RnweP81ZktHzbuUh8mM WV01hvSQqdGfmz+BJSLEDDiPjHD7K6paRvld9p4C95TDNQZyNxBNkeQABnTCsxKKBG LOFEkG1sIPtyB+oGHJZadjAUMwf5qDJqgegRrLGTDYAE6yIANdzHa929PCaEYQeghG sqp8aSwg5RWdzo49pXAvoC3nF8TbFI/wYVnS/qNxcHQxsk2su61gycnxvNbR/W2fGx 65Uut6CyiNmzA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 15/41] netrom: Fix a data-race around sysctl_netrom_transport_timeout Date: Wed, 13 Mar 2024 13:04:09 -0400 Message-ID: <20240313170435.616724-16-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit 60a7a152abd494ed4f69098cf0f322e6bb140612 ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/af_netrom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 146550ce0ac6f..a07652c91f2da 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -456,7 +456,7 @@ static int nr_create(struct net *net, struct socket *so= ck, int protocol, nr_init_timers(sk); =20 nr->t1 =3D - msecs_to_jiffies(sysctl_netrom_transport_timeout); + msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_timeout)); nr->t2 =3D msecs_to_jiffies(sysctl_netrom_transport_acknowledge_delay); nr->n2 =3D --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0AE0F19E7FF; Wed, 13 Mar 2024 17:04:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349496; cv=none; b=L6CSkHmDO+fj58zy3FMLUZ1wClhWYjc338NGuIoHX2ZG5PoW8s30Y4SH24gb4ihBW5vIyaWTcXcLWaYWkozBT9vNTXmA3k8hEQ3xFVhpIOHxMhk3RINTdrjbpqrghaeMNcuM0ohbhwiIwoX/Mm2wKlRa7j8N9LndYi99dbefuQc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349496; c=relaxed/simple; bh=GLENV1XyGzq0SLE0KB8Rh8C/c8aPBufzNibAFr1299E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Kr5J4iT2yOih1cekt+oDM9nOsJBIXlJZUH52VX/p4vov3n0J/g6cDPVf9FsoGJgxJ+hYKeWiWQFirDKXvnrPf697L/dro06FRNyMi31uDEuWMbg8bIPcquB/Rk4xRrMy9hWohzVM/DfQ8LUJ++xTJgyp5Q2ZWtNGix0Q5RUXNCU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uRGIn3lr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uRGIn3lr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 39417C433B2; Wed, 13 Mar 2024 17:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349495; bh=GLENV1XyGzq0SLE0KB8Rh8C/c8aPBufzNibAFr1299E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uRGIn3lrI5hy7BKqbjlHiCbS0t1v4lu4KpwSqUw1ChAfmE1PguYJVh4g0WVKm86OB UCQw7QBCPqF5fzf34zB1rSt/PCwUn4m6qifQbILmwANqp+uv3WEmV3MwoHUTH7vrXM DMiQYJzbulXzwJ61FNiq7wIhjtsTC0imo8VdCdgIfAfe4sYY0FQI/A/i3Tco5y6kkU CBNAqytLajxwgxMrBt9bC2Erao/3x2+vah2ppR4GyZoD1HoALX4JHw8c/hfaIjoHBh D+AxUNLgThmjJmV70qrUAypXtw9rxPMcRXUIHrqlS61SZZfuz4TA+VBknetYEVB2i/ Vynn1AL8NsOOg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 16/41] netrom: Fix a data-race around sysctl_netrom_transport_maximum_tries Date: Wed, 13 Mar 2024 13:04:10 -0400 Message-ID: <20240313170435.616724-17-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit e799299aafed417cc1f32adccb2a0e5268b3f6d5 ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/af_netrom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index a07652c91f2da..9d4a1d56badc8 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -460,7 +460,7 @@ static int nr_create(struct net *net, struct socket *so= ck, int protocol, nr->t2 =3D msecs_to_jiffies(sysctl_netrom_transport_acknowledge_delay); nr->n2 =3D - msecs_to_jiffies(sysctl_netrom_transport_maximum_tries); + msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_maximum_tries)); nr->t4 =3D msecs_to_jiffies(sysctl_netrom_transport_busy_delay); nr->idle =3D --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23EE683B9F; Wed, 13 Mar 2024 17:04:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349497; cv=none; b=eqEQsMjl7/gBZ15FadMW1tGXeL0F+yOaZdyy0Gzr5bOEABIRtu6Fgq98iMs4QbuY3CL2/IK09rpNXuArD9prJV8d7Depacf70A2WBLrdIK0Uh3p25hl3tUOyrch5dOSbF0AJ/dbMEPadDpWo/I4eqhtnuSkXp5Su1ugKFRFCJrk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349497; c=relaxed/simple; bh=OFt2AK4sm0UN+QKcUjhK2BKulkrdelyvyPllg+vS3PU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gJEzcuzADjJ+xHzakl71Hi02LOa/QkPu5ToHuUfiy0mBy8fCYDP6StzTTiGp62izQ3Wke+/Gb28MOEws/m4VDs95RCHc262LKrmZjZTmYd2d/il8/csqG7Fqbnjt9jOrKDX5K6HbcoxZdgP+YJ9M42MgTP99a9DwMN/YrDzXPbE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FTiwGdNg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FTiwGdNg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A4B3C433C7; Wed, 13 Mar 2024 17:04:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349497; bh=OFt2AK4sm0UN+QKcUjhK2BKulkrdelyvyPllg+vS3PU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FTiwGdNg6jRb0H5laaj8TObyfpWNK100P7XWetZ458aFB8JyALnY/Uye6h2LTx9Fe iGpTrzmDMaWYkxSFPb2zdJvlN6T+1SJ6qb1Oh3KqJned39TKSUJ91iRWz17u1MorRc Ri9VKXeEgFjmIQoHizNpnwRBSNvAApJ+8ushqwXcxrNAAgDpG49WqivrX+DfrazRuU jA2J9tPMiT/6oR0rtN221gppy7sxJ7JTKo9kRF9zdSBxbfJSRJ0VXPtUI9ZRHFD1cS 5qEfxg3+pGvB3coxyqWsa0qJNj9cGfql1hIYtTG8vmT10Xu14sin+24Uq72KstqzrL q6VBLqMBJIAag== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 17/41] netrom: Fix a data-race around sysctl_netrom_transport_acknowledge_delay Date: Wed, 13 Mar 2024 13:04:11 -0400 Message-ID: <20240313170435.616724-18-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit 806f462ba9029d41aadf8ec93f2f99c5305deada ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/af_netrom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 9d4a1d56badc8..05235768566a3 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -458,7 +458,7 @@ static int nr_create(struct net *net, struct socket *so= ck, int protocol, nr->t1 =3D msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_timeout)); nr->t2 =3D - msecs_to_jiffies(sysctl_netrom_transport_acknowledge_delay); + msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_acknowledge_delay)); nr->n2 =3D msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_maximum_tries)); nr->t4 =3D --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23CEA1509DC; Wed, 13 Mar 2024 17:04:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349498; cv=none; b=ZnL27t1ippFCUSa9+Q0b95PJWYjDRwmunFBG0tI1yC9gchUXyf6HWa+yWCAlEZLx+Fqt7MoxOgvyV17EN50MuR4cnKdX5faLDcIGh0Bu87gIG4ffkZBzr79m3nOIA/p6Yk/+za5Ewe/vgynkywXLapCn2+DG3nRq/653AuaorSE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349498; c=relaxed/simple; bh=hEAE0UN2GfWd1ilwLQhthHYCVqVdXAg860B5DXqMi/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y6HjHdSvvlNKl47embyNJ2JPZzobM1mMGuuY8GwOWe4QK2kv1CFl8hGyYMIR0Qi3Ez2jqzRK9nJ3ede+42hIRIa4AyVSeuFntWQtciFf5wFn+krsT48mbRR/mu4HUquhgoDaejw73rrHMpvhGkp8HTiD53NugjlPH/rQkpyFve4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YqIGAStA; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YqIGAStA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C501C43390; Wed, 13 Mar 2024 17:04:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349498; bh=hEAE0UN2GfWd1ilwLQhthHYCVqVdXAg860B5DXqMi/Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YqIGAStAHvldlwsJzFG5QynPwIKzlgVohnmP4T1F0gVlnYTTnodbyWyYv9c5lM6Qj xzANUDHcL90zFV6Bl3u3S/Id1kH1qPhvSmjZ+RvmIUzWOkFp7Jix2yY7E+2m8agwSM j7eHmImIJ4d34eIsgfqrEIXE41HTjKbAKkJBvrxbc/q6NIjlf6f8DuVrxkLhImHkHr gYPePnPvTmCX7aK7ZuxKO1rtzuZNpY5ZQ+LIQxw5pwe5/Vb/q2jZHQ59kyro2x4kNh kJrBoUx80cVP7HxT9tfVF7qEk3nfuTEuE9p705jtCwmbine4oOPSiQjnDBYCpghf9M ilEiEBFWQDixA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 18/41] netrom: Fix a data-race around sysctl_netrom_transport_busy_delay Date: Wed, 13 Mar 2024 13:04:12 -0400 Message-ID: <20240313170435.616724-19-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit 43547d8699439a67b78d6bb39015113f7aa360fd ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/af_netrom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 05235768566a3..5769fe9c111ed 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -462,7 +462,7 @@ static int nr_create(struct net *net, struct socket *so= ck, int protocol, nr->n2 =3D msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_maximum_tries)); nr->t4 =3D - msecs_to_jiffies(sysctl_netrom_transport_busy_delay); + msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_busy_delay)); nr->idle =3D msecs_to_jiffies(sysctl_netrom_transport_no_activity_timeout); nr->window =3D sysctl_netrom_transport_requested_window_size; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2362D19F343; Wed, 13 Mar 2024 17:04:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349499; cv=none; b=EznuNwcm4fxC4gcQsTqrouXec6OwboMpEUqZZ9F3VtYYms2K/hF/ji4pBJuA9FhFAzNEVTsFtTurqKsP0NubpraUqWqdZ+xvYcYz0nhNNOwss1lyX0BP26YcpgAtEbQBEarbAaCQEhJ1T/4GBueX1c2UQEOG7fcfU/yG3UbBDX8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349499; c=relaxed/simple; bh=VZRHEwnL/WzaJVkTZ8hBltol3g1MonXyJluGvB+l+Uo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lJDAbx5FNW8R0O9us9KOkFo1LiN//dcpIVhyKJbFDw8H5Ab1IRxQ3J+g1076UiRmEM4xSYARwuvIyftcn6h+ci5GU9PTbeJPKrr0AeLS3es2vyRHtb35GFNfnar4deQZbjSHb8ULQWoG7PcU09M6NHHHLzOZULWPACTGc7k/VwE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hcdtVgDX; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hcdtVgDX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 51827C433F1; Wed, 13 Mar 2024 17:04:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349499; bh=VZRHEwnL/WzaJVkTZ8hBltol3g1MonXyJluGvB+l+Uo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hcdtVgDX/MduDDPor2XXYzDwcOKZcAk/xkkZShcXTnUW7s8iYMEINXmzjs4AF15OG kCddxyXEJpnpJah9oTWFImBIqxpfNaxmmyHzBHBIdWBHDroSIOgM0cwJU9nny/2PKm b0cD3rEfhtiC+OJgRINDMlzML1f8cSnLYiRPm+l0DgyM4y8iBHDj/w99PrYbS+j8W4 ICIha9kdnqehzeaVyqxqLmLbvZdxJD5yBqIhYS+/HcX78VPjc1tpiA+RKja8acC/n/ r9iUf1VjomnMdqsdGFnO39QOjniGym4z7I5XI6Kcds7oZ/mvk/H3c73VBnC39QAKml 8nyda2wKc8NjQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 19/41] netrom: Fix a data-race around sysctl_netrom_transport_requested_window_size Date: Wed, 13 Mar 2024 13:04:13 -0400 Message-ID: <20240313170435.616724-20-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit a2e706841488f474c06e9b33f71afc947fb3bf56 ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/af_netrom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 5769fe9c111ed..1d4b4d228ca0b 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -465,7 +465,7 @@ static int nr_create(struct net *net, struct socket *so= ck, int protocol, msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_busy_delay)); nr->idle =3D msecs_to_jiffies(sysctl_netrom_transport_no_activity_timeout); - nr->window =3D sysctl_netrom_transport_requested_window_size; + nr->window =3D READ_ONCE(sysctl_netrom_transport_requested_window_size); =20 nr->bpqext =3D 1; nr->state =3D NR_STATE_0; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F33619FAA0; Wed, 13 Mar 2024 17:05:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349500; cv=none; b=QnH49DAHStdLksVZrIY4h9O/d27N5nA8Mjk0/NBgoLxWnwjtoDRkmVYKo/NPpzKTZzvwBbxLHfTAdbLVJq3q24ynnFc07elSas6bwy8YDjGfulqIXsbotZT5NKKoVH4OqQFUaT2FiEUCUi1aU0Xgsfmk7JrxKRpWuOFH9gqceoA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349500; c=relaxed/simple; bh=9ItLBwNbhRo+RLBjjnuxZ0wIvw10SZI1a5hzPSILupI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=doaM/Ob3iCDv1biG9Nv+R+Egng2m4yiYt101VH0y8CHyJG2AkTwJjUzucBw8DfvaieT8rQi4y8Tmy/eqLjS3XZq/g/8GYjf3gQP9uMrXesQcvkRtV5E+wyVPrhSjX2TnRf6TR5eVKvBgPCYmwcIYo9wbg7fAFHAgnqw09NlcBps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UudUB1WP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UudUB1WP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F6EDC433F1; Wed, 13 Mar 2024 17:04:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349500; bh=9ItLBwNbhRo+RLBjjnuxZ0wIvw10SZI1a5hzPSILupI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UudUB1WPGoDOUPuM6ZEm+ZoN8kgPEKJ3RFvLy0gSwqpD8YJXsgGD7t442RB+WHDTT sCsxzDkDRv7xsg5RuDWGAWtSQ3dCEKH+4WkG5+XTU1V2TbF6rmMXqIaWvfLu9APQcT 2+gTYkFhb0+9wP+AVdCLZxlGnaIv9qz9E7TRpDfk6VOh8sSxcZqRg0KnTLyKgrotNo 7t9XDdPnlxrpq2itDSc7ZyTdvEhOfhwDyJSJYip25+AbariymKbTusveh5+y/d5NrR bbabpsZ6o0Ce+Rffb81xdJzI8Xt0VhRWnXJIfkjjfFUxBw3PCE8GJ2VDPsYXznOzLT 6DUfE4p4RUzjQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 20/41] netrom: Fix a data-race around sysctl_netrom_transport_no_activity_timeout Date: Wed, 13 Mar 2024 13:04:14 -0400 Message-ID: <20240313170435.616724-21-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit f99b494b40431f0ca416859f2345746199398e2b ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/af_netrom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 1d4b4d228ca0b..3277f9a7ed02b 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -464,7 +464,7 @@ static int nr_create(struct net *net, struct socket *so= ck, int protocol, nr->t4 =3D msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_busy_delay)); nr->idle =3D - msecs_to_jiffies(sysctl_netrom_transport_no_activity_timeout); + msecs_to_jiffies(READ_ONCE(sysctl_netrom_transport_no_activity_timeout)); nr->window =3D READ_ONCE(sysctl_netrom_transport_requested_window_size); =20 nr->bpqext =3D 1; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48A1219FAC6; Wed, 13 Mar 2024 17:05:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349501; cv=none; b=qby90MGGSbzERBbK5M0wcPVrM+Aw3SQaX/gkkon/CGoKZmWpMdBRR5cHOWEWUNhJ43+9cpbtQ7eyr5B/C0vg47rIkuKmzQ4JtiSRmlOPx709Z4MxueyKvP1YCyryJJnnrETH02K04sFav6w3hoCSZxP/jCl05eaPeiM11BGl2ww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349501; c=relaxed/simple; bh=XRHm3al7qxwNCzfSlmH6P8xZAQ3EMpC7VgF92P19yzs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YBp/hiFtPCwg/hiMYdfBsXLmB9O3XTXCRc+3+9lAJ4afAkdK4MaDg3CE/ML8BVY+zV/9Oe5JngXS8gYc1FqkHC1OqAgufpZHQPtUbzOK7ama4GckPr2A5e7P9l3TELJlPJMgG4ea56oX2a/l+qdytxvgZjImXKpDoNB4QJJX/LQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VZereSVR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VZereSVR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C626C43394; Wed, 13 Mar 2024 17:05:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349501; bh=XRHm3al7qxwNCzfSlmH6P8xZAQ3EMpC7VgF92P19yzs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VZereSVRtT3PCWC0NgXv/CJVgBXd8g3nD84U6Yvazbtwkz7BsWtluwrYZ6XGfQolG X+f3z9SfaiW7+Q6n7A4XdRi2pyitHtsv4AlMQ1X9Ni/w/jTN12TjBr80b7YE285fIp I5OChofm+8pV3+OOxFbICQVZplAzUtbhV3atGmTRSKRBOZUO6IRZXHDi35bfE14scB 6Rmz5lZSc0zcFpRwFbbJHMmKG7cau9zXRd1WqZ8mfWvUnzaPDB91enaLK3jw3QapgS D68FDbgHLmsfZ3yHI3iSjy23NXKkALQyZSBsSHXQbcb9jkrG4A0g9Q8fQk3/eqjOKe rHpQeW61ynfJQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 21/41] netrom: Fix a data-race around sysctl_netrom_routing_control Date: Wed, 13 Mar 2024 13:04:15 -0400 Message-ID: <20240313170435.616724-22-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit b5dffcb8f71bdd02a4e5799985b51b12f4eeaf76 ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/nr_route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index 929446e246b36..eb285b12977b7 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c @@ -780,7 +780,7 @@ int nr_route_frame(struct sk_buff *skb, ax25_cb *ax25) return ret; } =20 - if (!sysctl_netrom_routing_control && ax25 !=3D NULL) + if (!READ_ONCE(sysctl_netrom_routing_control) && ax25 !=3D NULL) return 0; =20 /* Its Time-To-Live has expired */ --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C7E81A00D6; Wed, 13 Mar 2024 17:05:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349503; cv=none; b=X5pX97WZq6OUp9EFILmZ1yOduEfPK6lf3ICIl9PdlYFLCvosSJ6wbpLRl5o6RV6dfwbmq32IIkwLoYC1HTG6n8Hv7cH+zyA8oQKrYFe3NhCTISJa6T4gHGuIalCpZ/y5/AF6EWPgLjrwfyvuRk4ANjouGezUwt9tj77p+aB17fc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349503; c=relaxed/simple; bh=X6w2Pz8ARSb0A9skWuMw16BLD+2NNQB0U/SaQuVm0WM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UcUmz7+RMO19gXeF3DC7H701UtPzLD9VOy8J8ivMxOiTgb6tWfeMmfZjxxH6m1xf9H7ngYTZYf4GQj4Tc5uOmWhleA7TKMdU7rQEPNsSNat694BAv12ktSHZvHSVrhdtlT9tq6GYyaevAwvBiJ5yiFXxl4moRO28XKBEcE1cU9U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EgAAF/HO; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EgAAF/HO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 74814C433F1; Wed, 13 Mar 2024 17:05:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349502; bh=X6w2Pz8ARSb0A9skWuMw16BLD+2NNQB0U/SaQuVm0WM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EgAAF/HO+S5eNTOdDCaOu74CPTZymurPK4ln1HC6xvsR13/It1yFDwQMxs4gCicjn ZbpRFZ5dWSerQ+E9u3rWAh46MsQKOifK42Do2tQiwNjDboKpOmCYjcKaDSj0Uf+qJM pdnuZFcsb6ENxPLysOOtjtjX6qepYwqscMYxjHouqFzgwb6YkVJ+QUfD2Oi00H4Xgt vWkjYyZaAKbM/hPnZXktiN2YYa4ZnKcv3tuDmZP15W1CI+NINgrlfEu1pvrWYAocih 8wyaIiLDqY//rtMb+DG0fsvi8wodLrpXQ6ZUB6rIHCqgZQd9Kpz/f9LRLxkKKaNrqo begJt+6+jsrKw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 22/41] netrom: Fix a data-race around sysctl_netrom_link_fails_count Date: Wed, 13 Mar 2024 13:04:16 -0400 Message-ID: <20240313170435.616724-23-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit bc76645ebdd01be9b9994dac39685a3d0f6f7985 ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/nr_route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index eb285b12977b7..744c19a7a469c 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c @@ -728,7 +728,7 @@ void nr_link_failed(ax25_cb *ax25, int reason) nr_neigh->ax25 =3D NULL; ax25_cb_put(ax25); =20 - if (++nr_neigh->failed < sysctl_netrom_link_fails_count) { + if (++nr_neigh->failed < READ_ONCE(sysctl_netrom_link_fails_count)) { nr_neigh_put(nr_neigh); return; } --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A00701A00D8; Wed, 13 Mar 2024 17:05:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349503; cv=none; b=Umzqa9BWftXrktNIm+4gMHkLAyrI00CIlBZQHqwDAXrxLF/7+arwMYIg9JzHunGraSh2ssOxPEnhaD8sSgM7euuYq1ODTL1mWu3AvrTi0o+jwuef8zzK6QEkuKVTw16ze0gwv86LCUB4/6moAxUFYMiMR8fEkOVI8YBS7Eca30M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349503; c=relaxed/simple; bh=N9eFFLNvBeCJR5OOr+1sJq7SrsL/bh8fC3C8N+Sjc4c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sBMsdUtvMDkFS9JDR3TDVxwqDd6ij130RCCtJAaj4hSQIrPWIjsJqxL3P5s/ZDVt/ydRM/35v3NtEMjuUzW7QtDJ3bGldyVog4NtfccAMsZ4r//euiUWVCEpViEZgpsGr3q2NM/KC5sPom7bJiMKR4uT5fgRkqkds4p5ewzqBSw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=M06D9tGR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="M06D9tGR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 783BBC43390; Wed, 13 Mar 2024 17:05:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349503; bh=N9eFFLNvBeCJR5OOr+1sJq7SrsL/bh8fC3C8N+Sjc4c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=M06D9tGRzwYrHiiKpwtqKbvOODdTeLLSxLVM4LJFL/2/xWPEaxsOXSTTCoy/+X1dm 1Poupz92A4L361Cu11g61Su3XMDXXIXahD7ztTDULT7ELiwgogWRC153FSw0bvR1JJ yyxUiql+q1bmsIkSTPk6F0fpy6JFA3WG0rtcHT6dcbVDfeEdIdzDOP8EipVYaRcE/d VvWbMZo2LuVz4Kvg9DVgWFBk6mIDZd3Kmy6FC/jnK8du5LfrRgBoFhU2s7dQptPwt+ CvnkEbIp4bGOVPpn+Fza84Ex4s7tAi7hWymEb43kEWSWkSqHzpAjjbBS/ayA8aY/9/ jHjXnXQlz7srw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jason Xing , Paolo Abeni , Sasha Levin Subject: [PATCH 4.19 23/41] netrom: Fix data-races around sysctl_net_busy_read Date: Wed, 13 Mar 2024 13:04:17 -0400 Message-ID: <20240313170435.616724-24-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing [ Upstream commit d380ce70058a4ccddc3e5f5c2063165dc07672c6 ] We need to protect the reader reading the sysctl value because the value can be changed concurrently. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Jason Xing Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- net/netrom/af_netrom.c | 2 +- net/netrom/nr_in.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 3277f9a7ed02b..9e48ce56f085c 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -957,7 +957,7 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device = *dev) * G8PZT's Xrouter which is sending packets with command type 7 * as an extension of the protocol. */ - if (sysctl_netrom_reset_circuit && + if (READ_ONCE(sysctl_netrom_reset_circuit) && (frametype !=3D NR_RESET || flags !=3D 0)) nr_transmit_reset(skb, 1); =20 diff --git a/net/netrom/nr_in.c b/net/netrom/nr_in.c index fbfdae452ff9a..01ccd00d1c005 100644 --- a/net/netrom/nr_in.c +++ b/net/netrom/nr_in.c @@ -100,7 +100,7 @@ static int nr_state1_machine(struct sock *sk, struct sk= _buff *skb, break; =20 case NR_RESET: - if (sysctl_netrom_reset_circuit) + if (READ_ONCE(sysctl_netrom_reset_circuit)) nr_disconnect(sk, ECONNRESET); break; =20 @@ -131,7 +131,7 @@ static int nr_state2_machine(struct sock *sk, struct sk= _buff *skb, break; =20 case NR_RESET: - if (sysctl_netrom_reset_circuit) + if (READ_ONCE(sysctl_netrom_reset_circuit)) nr_disconnect(sk, ECONNRESET); break; =20 @@ -266,7 +266,7 @@ static int nr_state3_machine(struct sock *sk, struct sk= _buff *skb, int frametype break; =20 case NR_RESET: - if (sysctl_netrom_reset_circuit) + if (READ_ONCE(sysctl_netrom_reset_circuit)) nr_disconnect(sk, ECONNRESET); break; =20 --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9EAC1A00F5; Wed, 13 Mar 2024 17:05:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349504; cv=none; b=SkhSk/7ioxKOwzrkz6AhVnx1rm8au+Umhpk9RPmRBAqnuPSaI1GMb8Dj5KH+RfgTQ29OzrTjc3120JfMHr5qlGlpgEec2onE9h/vuBHGNyEgEZsVD+3dMDlFBPkD+PS1NZbnwXy5+Kql1WTRWUvMOaQ2Ws5n3/5vsTf5WwVcf2Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349504; c=relaxed/simple; bh=TZDlJEb/8+80m/ePRWKRLEtSLba8a1vTL697utev7B4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nes8QThh0l71GMQeEJsuSzEXWqE0WZLVj4ZrqlTalT6rLTDLN00h06d19mfxniVpz0dSRic95BmfvaQw6xY5x7uTVd8dFUrgxQECFADJ3MK6sY497lt8uZk0lv1wXCLaVSZLNgVKp5RLrJb6qTeqhGytns6hO1MgOmftvIb6MAU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kQPhDP7N; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kQPhDP7N" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 783F4C43394; Wed, 13 Mar 2024 17:05:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349504; bh=TZDlJEb/8+80m/ePRWKRLEtSLba8a1vTL697utev7B4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kQPhDP7Nuj9Qgji/SwHrCnhTTDwj1839OF2tSRZwoP7mO6vc9G9QTMef70cvJlFgF ER/LhNa6w9IOpQ1BUZ+cXnszmihibVokzoZnJbVrn6+yBS/qaTefkzcWMGrvjd4WiC IoGKTpwY5lrzscElK/PM4Ll7Fu6r2jf/QvOzPMgA8HR9K0u1j0kMANPegdqUoNNg6t GG+4J/9bWlgwyrL8cpkRiAX2rOGTj1nDuYCL2MAEYCWpJduLnL3lPomzcO/4xMOpsy 1Zx2MCaGPZlyOI9s8t1dvHsYCKfctggAAJ/uS8mwSHNiV0d8eLzaYdW0+axupetr4M brbmh184SaP8w== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Fedor Pchelkin , syzbot+be14ed7728594dc8bd42@syzkaller.appspotmail.com, syzbot+c563a3c79927971f950f@syzkaller.appspotmail.com, Anand Jain , David Sterba , Sasha Levin Subject: [PATCH 4.19 24/41] btrfs: ref-verify: free ref cache before clearing mount opt Date: Wed, 13 Mar 2024 13:04:18 -0400 Message-ID: <20240313170435.616724-25-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Fedor Pchelkin [ Upstream commit f03e274a8b29d1d1c1bbd7f764766cb5ca537ab7 ] As clearing REF_VERIFY mount option indicates there were some errors in a ref-verify process, a ref cache is not relevant anymore and should be freed. btrfs_free_ref_cache() requires REF_VERIFY option being set so call it just before clearing the mount option. Found by Linux Verification Center (linuxtesting.org) with Syzkaller. Reported-by: syzbot+be14ed7728594dc8bd42@syzkaller.appspotmail.com Fixes: fd708b81d972 ("Btrfs: add a extent ref verify tool") CC: stable@vger.kernel.org # 5.4+ Closes: https://lore.kernel.org/lkml/000000000000e5a65c05ee832054@google.co= m/ Reported-by: syzbot+c563a3c79927971f950f@syzkaller.appspotmail.com Closes: https://lore.kernel.org/lkml/0000000000007fe09705fdc6086c@google.co= m/ Reviewed-by: Anand Jain Signed-off-by: Fedor Pchelkin Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- fs/btrfs/ref-verify.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/ref-verify.c b/fs/btrfs/ref-verify.c index b26739d0e991b..7bb816a6d1e19 100644 --- a/fs/btrfs/ref-verify.c +++ b/fs/btrfs/ref-verify.c @@ -891,8 +891,10 @@ int btrfs_ref_tree_mod(struct btrfs_root *root, u64 by= tenr, u64 num_bytes, out_unlock: spin_unlock(&root->fs_info->ref_verify_lock); out: - if (ret) + if (ret) { + btrfs_free_ref_cache(fs_info); btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); + } return ret; } =20 @@ -1021,8 +1023,8 @@ int btrfs_build_ref_tree(struct btrfs_fs_info *fs_inf= o) } } if (ret) { - btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); btrfs_free_ref_cache(fs_info); + btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); } btrfs_free_path(path); return ret; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA931150CDC; Wed, 13 Mar 2024 17:05:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349505; cv=none; b=XgYCMGFOP4t2WsuPOQ8SWHoi6byg5zlYQodTb/emKYS2wQByb5X9EvsSSbfEAxaB/Z6sV+A7nN9IRgPhOAWIpvE5P7LVHkPREOovrpODVd9QsqgpQHQQ7IWu5MAMWN79HUxLPj2dBtTVeLJL3MUfZzYyu+OY+1bcIbHCZBYlpXc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349505; c=relaxed/simple; bh=Ptq0cuJxKNvmwtHshe5chi0JrXuel14aDzjpEGVBeKw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OLGkwD81JUTFuC/7bG+2br7VroTNjt2W/MkpGjgTA6NtJkZuos1ilsWZa3WIGt0roT+CFoMS8xOonY/q2CRE0M/e5ZhtTW20I7lvMP3Bj227VKuLxLu80LzUnRqq1dj9o+vFSaLRNg4p5GzoHPGXb++upQrkLiUPmW0qV0d1i70= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MG4Wy8Ou; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MG4Wy8Ou" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCD08C43390; Wed, 13 Mar 2024 17:05:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349505; bh=Ptq0cuJxKNvmwtHshe5chi0JrXuel14aDzjpEGVBeKw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MG4Wy8Ou3R5YuwqFllfNwx5Cd/hwZnRn5raZB4OwxK63aQ8n9zwERPos2KGW3JW6D KCcFnVNTqkYVvsBWUUoexA7npm/8wbhnUMX698I+nfSUyfhCzwde3Mb5zrGqxqxWPl AwjRU/7nOP0BSpsZ132IiqKEkHV/1Eou8yWrDtij3KzFAI/jKPkoww89oOarAlGnYR 0I4jtbTHWTOyrGsdR4lxeUUU5J1M7AE5IfbGRnnitFu9CK0G5bM/t1qRUA6BUyVXns XsWyRkFMgFRZJUn35qLhYxOyWs+pI9L18uDMIRYc0KUTyP13RBG3/IMlMm6C0t4+Ea ZojvxydgCKlSg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Christophe Leroy , Michael Ellerman , Sasha Levin Subject: [PATCH 4.19 25/41] tools/selftest/vm: allow choosing mem size and page size in map_hugetlb Date: Wed, 13 Mar 2024 13:04:19 -0400 Message-ID: <20240313170435.616724-26-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Christophe Leroy [ Upstream commit fa7b9a805c797b729022029aaa3a2b7c35fff4c6 ] map_hugetlb maps 256Mbytes of memory with default hugepage size. This patch allows the user to pass the size and page shift as an argument in order to use different size and page size. Signed-off-by: Christophe Leroy Signed-off-by: Michael Ellerman Stable-dep-of: 91b80cc5b39f ("selftests: mm: fix map_hugetlb failure on 64K= page size systems") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- tools/testing/selftests/vm/map_hugetlb.c | 29 ++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/vm/map_hugetlb.c b/tools/testing/selft= ests/vm/map_hugetlb.c index 9b777fa95f090..5a2d7b8efc407 100644 --- a/tools/testing/selftests/vm/map_hugetlb.c +++ b/tools/testing/selftests/vm/map_hugetlb.c @@ -23,6 +23,14 @@ #define MAP_HUGETLB 0x40000 /* arch specific */ #endif =20 +#ifndef MAP_HUGE_SHIFT +#define MAP_HUGE_SHIFT 26 +#endif + +#ifndef MAP_HUGE_MASK +#define MAP_HUGE_MASK 0x3f +#endif + /* Only ia64 requires this */ #ifdef __ia64__ #define ADDR (void *)(0x8000000000000000UL) @@ -58,12 +66,29 @@ static int read_bytes(char *addr) return 0; } =20 -int main(void) +int main(int argc, char **argv) { void *addr; int ret; + size_t length =3D LENGTH; + int flags =3D FLAGS; + int shift =3D 0; + + if (argc > 1) + length =3D atol(argv[1]) << 20; + if (argc > 2) { + shift =3D atoi(argv[2]); + if (shift) + flags |=3D (shift & MAP_HUGE_MASK) << MAP_HUGE_SHIFT; + } + + if (shift) + printf("%u kB hugepages\n", 1 << shift); + else + printf("Default size hugepages\n"); + printf("Mapping %lu Mbytes\n", (unsigned long)length >> 20); =20 - addr =3D mmap(ADDR, LENGTH, PROTECTION, FLAGS, -1, 0); + addr =3D mmap(ADDR, length, PROTECTION, flags, -1, 0); if (addr =3D=3D MAP_FAILED) { perror("mmap"); exit(1); --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7854D1A0A12; Wed, 13 Mar 2024 17:05:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349507; cv=none; b=byYPqKLrP8Q/Hbl/tVlUwpOz0hLfBw5G0TLiu6wq3dGrN+eK+l8bj7eHyFhOoH+7coyHucRJWtUED6URjw/9jezYDoGF9z3MM2tEzbN8DFeF801JMTiZbfD70157SsyO5pDH0eSOOLwrHpslxDxEse2599WFmEO+HYgi4qIQgDU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349507; c=relaxed/simple; bh=8pkugNJXCAGQDIXWP8dF/TDqhdMUENJaJJI8RkjeAeM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uj4FzWcTsGmShT7eGxivjQr/crEGSX/9D5r102VQ8KOAhNbOlNPMt5r5mcq2txviw3mFI2XorZWVB4uiK5E8c1G1G5rWxixoE5sUpwD1bAHA8C/EVAHVUn1bPcbDXXzDQSl7vHLE0H1JTs0OllrP6FAEjC+I6vqj7VRuNRjZjEo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=r5k/dVVE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="r5k/dVVE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DDD1FC43399; Wed, 13 Mar 2024 17:05:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349507; bh=8pkugNJXCAGQDIXWP8dF/TDqhdMUENJaJJI8RkjeAeM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=r5k/dVVE2QTUYOvLjD+aFYttX9L5YuqWSt2GPCtT+vtwknRgfRDE08OXYFRtNIlqi Ys1cUywb/fTi6jr1uHO3KqXCw5rUMX+L7W8v5rXoJdCI61MEH1s3AsKu6SOVUF71Gt iyAaRO9/8OQ4T8+HxPRgkLCuSNUBRylzOxy90EuY3aB4Rmr/S5Ul6oH4LyjRd4Jr2g yvt+4jPTm1WrYDqEt/1o22lpwl/QZGn+F87J3iPHdNwC/qDthuzdqNi3kTlnfp/P6k xOViUokphK+loLgA8BNl/yJ/8olFakLuR/dMIGoLK0hljZzTPX4p9KdKmqPrYJxLBY ZHbaeycszrtzQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Nico Pache , Donet Tom , Shuah Khan , Christophe Leroy , Michael Ellerman , Andrew Morton , Sasha Levin Subject: [PATCH 4.19 26/41] selftests: mm: fix map_hugetlb failure on 64K page size systems Date: Wed, 13 Mar 2024 13:04:20 -0400 Message-ID: <20240313170435.616724-27-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nico Pache [ Upstream commit 91b80cc5b39f00399e8e2d17527cad2c7fa535e2 ] On systems with 64k page size and 512M huge page sizes, the allocation and test succeeds but errors out at the munmap. As the comment states, munmap will failure if its not HUGEPAGE aligned. This is due to the length of the mapping being 1/2 the size of the hugepage causing the munmap to not be hugepage aligned. Fix this by making the mapping length the full hugepage if the hugepage is larger than the length of the mapping. Link: https://lkml.kernel.org/r/20240119131429.172448-1-npache@redhat.com Signed-off-by: Nico Pache Cc: Donet Tom Cc: Shuah Khan Cc: Christophe Leroy Cc: Michael Ellerman Cc: Signed-off-by: Andrew Morton Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- tools/testing/selftests/vm/map_hugetlb.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/testing/selftests/vm/map_hugetlb.c b/tools/testing/selft= ests/vm/map_hugetlb.c index 5a2d7b8efc407..ab349c6db00d4 100644 --- a/tools/testing/selftests/vm/map_hugetlb.c +++ b/tools/testing/selftests/vm/map_hugetlb.c @@ -15,6 +15,7 @@ #include #include #include +#include "vm_util.h" =20 #define LENGTH (256UL*1024*1024) #define PROTECTION (PROT_READ | PROT_WRITE) @@ -70,10 +71,16 @@ int main(int argc, char **argv) { void *addr; int ret; + size_t hugepage_size; size_t length =3D LENGTH; int flags =3D FLAGS; int shift =3D 0; =20 + hugepage_size =3D default_huge_page_size(); + /* munmap with fail if the length is not page aligned */ + if (hugepage_size > length) + length =3D hugepage_size; + if (argc > 1) length =3D atol(argv[1]) << 20; if (argc > 2) { --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 217DE1A0A28; Wed, 13 Mar 2024 17:05:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349508; cv=none; b=F2A1RXkxxZjRHZY5+nppyJUw1xIVZclobau/N071AcMaljdMrl2zY38+aCkyaEaAHSl3AhI8oYBcgP8KFZjjXDLCTok9uP2cNsHPCyBY5yctRLGuIdQW8/1OdI7ugAGscvduxk1dw9voojm+4eHsy1tPU0tBJyvFU8e9KY9CPVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349508; c=relaxed/simple; bh=maJUSkQfGx/uo6I5Mw8R4UoWYlWWMiuJ3i3H5XFNFVM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=loZDneE/Y6UfiHMb0VlzbwlDdN9oy+RvMsOUfPG+hS+ijeHtfu3IMMUMi0CH2wwWAVPi4FAFlvFMKjfDPNd14YGewJtcXNJmqoA8dPacoj1/phOIroLEAppWfF4NHm7x1ImkGkXiw2PXGN4svn8s+jyk3oGEu86AnXeAagahHrk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qAmQA30D; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qAmQA30D" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C900C433F1; Wed, 13 Mar 2024 17:05:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349508; bh=maJUSkQfGx/uo6I5Mw8R4UoWYlWWMiuJ3i3H5XFNFVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qAmQA30DPXEcCdWFpTNtG8NjpjZY71m7LgYhNvRxlp5qAuMxpXrOr2f3OSKQ7mcBu 8GbfOynqyxw9OO1SiDY7NV1FUOhEPPidxM6ailhu9GiYtQPUKZrIsuHqwtC/oF0BJv oCiZtDSV4fpBghGXoWEdYlAhxTfkhyFtZeiFPrPM5KGCtECmF4+DSku46N8ljxija2 P3sx4p6DzXMjpzta34E5iooH/CLygWzIyby5pFCsuXb1TwLZwKbZnSJq3+abgXDHyZ 1h2NC76prlkdzdwIye5w3WEESW/btO+wqBZPgy47b7Q84GxTKent5tzb7/xa2wifQ3 GuCYhML5ZB+rg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Johannes Berg , Richard Weinberger , Sasha Levin Subject: [PATCH 4.19 27/41] um: allow not setting extra rpaths in the linux binary Date: Wed, 13 Mar 2024 13:04:21 -0400 Message-ID: <20240313170435.616724-28-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Johannes Berg [ Upstream commit 386093c68ba3e8bcfe7f46deba901e0e80713c29 ] There doesn't seem to be any reason for the rpath being set in the binaries, at on systems that I tested on. On the other hand, setting rpath is actually harming binaries in some cases, e.g. if using nix-based compilation environments where /lib & /lib64 are not part of the actual environment. Add a new Kconfig option (under EXPERT, for less user confusion) that allows disabling the rpath additions. Signed-off-by: Johannes Berg Signed-off-by: Richard Weinberger Stable-dep-of: 846cfbeed09b ("um: Fix adding '-no-pie' for clang") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- arch/um/Kconfig | 13 +++++++++++++ arch/um/Makefile | 3 ++- arch/x86/Makefile.um | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 8f0cb28099392..251c77474e7b8 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -88,6 +88,19 @@ config LD_SCRIPT_DYN depends on !LD_SCRIPT_STATIC select MODULE_REL_CRCS if MODVERSIONS =20 +config LD_SCRIPT_DYN_RPATH + bool "set rpath in the binary" if EXPERT + default y + depends on LD_SCRIPT_DYN + help + Add /lib (and /lib64 for 64-bit) to the linux binary's rpath + explicitly. + + You may need to turn this off if compiling for nix systems + that have their libraries in random /nix directories and + might otherwise unexpected use libraries from /lib or /lib64 + instead of the desired ones. + config HOSTFS tristate "Host filesystem" help diff --git a/arch/um/Makefile b/arch/um/Makefile index ab1066c38944e..439edee0b2878 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile @@ -119,7 +119,8 @@ archheaders: archprepare: include/generated/user_constants.h =20 LINK-$(CONFIG_LD_SCRIPT_STATIC) +=3D -static -LINK-$(CONFIG_LD_SCRIPT_DYN) +=3D -Wl,-rpath,/lib $(call cc-option, -no-pi= e) +LINK-$(CONFIG_LD_SCRIPT_DYN) +=3D $(call cc-option, -no-pie) +LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) +=3D -Wl,-rpath,/lib =20 CFLAGS_NO_HARDENING :=3D $(call cc-option, -fno-PIC,) $(call cc-option, -f= no-pic,) \ $(call cc-option, -fno-stack-protector,) \ diff --git a/arch/x86/Makefile.um b/arch/x86/Makefile.um index 91085a08de6cb..8bc3d493d429a 100644 --- a/arch/x86/Makefile.um +++ b/arch/x86/Makefile.um @@ -51,7 +51,7 @@ ELF_FORMAT :=3D elf64-x86-64 =20 # Not on all 64-bit distros /lib is a symlink to /lib64. PLD is an example. =20 -LINK-$(CONFIG_LD_SCRIPT_DYN) +=3D -Wl,-rpath,/lib64 +LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) +=3D -Wl,-rpath,/lib64 LINK-y +=3D -m64 =20 # Do unit-at-a-time unconditionally on x86_64, following the host --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D80976C9F; Wed, 13 Mar 2024 17:05:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349509; cv=none; b=aCRtLMCD4JUYslO0l/JbwkT4xz0IdJwpw+A8d7YQG0ScE3Zgbc3pSiF2SOGmKy2VDNXi9LOnghrN3xYaVve8KRtZHCv8EurURken7KlcoIXLrtlLPaah3wg3fUY103rlrG5RIEFrhjbXGObCSSFhZL33wQEIzZmTxGl0bHAM8as= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349509; c=relaxed/simple; bh=WmEHShAVioLu0qe229qhXUrIhwgvEz/ImnTxaOfpfGk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B3M5nO67m47t3WrJFFcJnMGNzO8ueM8516CbcnK8IYNbuv16Jg+q/KkVGJc1BLl5UDp4ExmQFgzId6xuN5g3KVLq+O+HdEdG7VLFZgx9Z96hLq2zts3j5Vg+5qfAP+TSPMAHwI1GUrnj1U5TEcdtMMNZ345ZJ9RJEvqObUgToMg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gC9komB+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gC9komB+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4D153C43394; Wed, 13 Mar 2024 17:05:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349509; bh=WmEHShAVioLu0qe229qhXUrIhwgvEz/ImnTxaOfpfGk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gC9komB+FoEwdKH+AtKfoI4kv4CDxFl14b1/Yl/ch5csQ4Hj+RhOV3f/jOSUUxKrk cDtqdqNI6Mh3JLbmQBotCA0cm/VAm+kbiQKUvOrfIBIacZKibFs1BsfwHVmkZMKO90 1Yz4odrn5w513bapU+z/4gMDTfem2UQov4Qx4Y6JWWFWoKh4/Z41YMqh0h7iUDOfzm sxLcF7AyYI04PMGdFvkOuCfSv2v+7iYonTGsMq+45J0obPx7PD6Cx7AyRIawt88AqJ n4k7ux07siV8bri3xFBTmvMSAAqCPsa1CazJXi5gQAR3C2035FKMJ412Cx3763HbXA EYSSvOBoUSqJg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Werner Sembach , Dmitry Torokhov , Sasha Levin Subject: [PATCH 4.19 28/41] Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU Date: Wed, 13 Mar 2024 13:04:22 -0400 Message-ID: <20240313170435.616724-29-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Werner Sembach [ Upstream commit a60e6c3918d20848906ffcdfcf72ca6a8cfbcf2e ] When closing the laptop lid with an external screen connected, the mouse pointer has a constant movement to the lower right corner. Opening the lid again stops this movement, but after that the touchpad does no longer register clicks. The touchpad is connected both via i2c-hid and PS/2, the predecessor of this device (NS70MU) has the same layout in this regard and also strange behaviour caused by the psmouse and the i2c-hid driver fighting over touchpad control. This fix is reusing the same workaround by just disabling the PS/2 aux port, that is only used by the touchpad, to give the i2c-hid driver the lone control over the touchpad. v2: Rebased on current master Signed-off-by: Werner Sembach Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20231205163602.16106-1-wse@tuxedocomputers.= com Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/input/serio/i8042-x86ia64io.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8= 042-x86ia64io.h index 06d99931519bd..ce9209f336957 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h @@ -1183,6 +1183,12 @@ static const struct dmi_system_id i8042_dmi_quirk_ta= ble[] __initconst =3D { SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) }, + { + .matches =3D { + DMI_MATCH(DMI_BOARD_NAME, "NS5x_7xPU"), + }, + .driver_data =3D (void *)(SERIO_QUIRK_NOAUX) + }, { .matches =3D { DMI_MATCH(DMI_BOARD_NAME, "NJ50_70CU"), --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 753E91A1040; Wed, 13 Mar 2024 17:05:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349510; cv=none; b=gEi8QByEvULHt+izJPCa4u6CIEwO2RCZxG/bL0wEvgALPEQq3ALTS4K1JgszG2G9Z60t+Gm6iucg+vmS/tijUWvYgA75sm5oVkC/x5UjZM8qT2Rl4rc0xyLLK4SbsB14eesQRYUVWV8zsFNCmXb5omgFHVbAcsWUfzk0pOl+67s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349510; c=relaxed/simple; bh=fmIVIIiO9vaCsapouNjn2huS07HhKqTleCE92uaJSbI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rYi3BFQTJSfsHpQojgck1me68ZhRBSYvVzObzGfy3I2l+73OL3mRRUiev/XHKodyNPnQE7hxHohKuF9Bj9kX5vX/gwBC/wkB8oH48BdbIn72hWBKw1pp90rBH6J0nvsBC9feKDbczVYw7VTi/RsC5vVkwovrfN6O9ZOA4Rf7Y8Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=U6hg19du; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="U6hg19du" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4AD46C433C7; Wed, 13 Mar 2024 17:05:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349510; bh=fmIVIIiO9vaCsapouNjn2huS07HhKqTleCE92uaJSbI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=U6hg19duGsZ8BcVpNmzdoRXCq/JCxeGxcVUDn4wVtenFTRRrPTQX04jw86LYBmvRH rKxLvJhFRGwn7iICingQQ4C0W9HqEuOT/Pxmw1HVmPU/mZIQcWDRcvqaB3+cjzEIfH VbUOw0CEDY9Ejk04ENMcCMCZzoY69knswoU4d/Cf69mN94sYLChnFhVT5+X3Y33UdO rwpq/ck+PM+7XnT7JICXfHMcyc3M5a54AAkY2cwobxSYfuDlypz93o3/0RHjp5nUuK JCciHZ+1ICokE/zX9Xhhx9leFMfj2GFwXeTMaOBUvzrkD7Hf35ZJBGeApnOcRNxGvW 91FM5ZFvlOLNA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Dexuan Cui , Haiyang Zhang , Shachar Raindel , Stephen Hemminger , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 29/41] hv_netvsc: Make netvsc/VF binding check both MAC and serial number Date: Wed, 13 Mar 2024 13:04:23 -0400 Message-ID: <20240313170435.616724-30-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dexuan Cui [ Upstream commit 64ff412ad41fe3a5bf759ff4844dc1382176485c ] Currently the netvsc/VF binding logic only checks the PCI serial number. The Microsoft Azure Network Adapter (MANA) supports multiple net_device interfaces (each such interface is called a "vPort", and has its unique MAC address) which are backed by the same VF PCI device, so the binding logic should check both the MAC address and the PCI serial number. The change should not break any other existing VF drivers, because Hyper-V NIC SR-IOV implementation requires the netvsc network interface and the VF network interface have the same MAC address. Co-developed-by: Haiyang Zhang Signed-off-by: Haiyang Zhang Co-developed-by: Shachar Raindel Signed-off-by: Shachar Raindel Acked-by: Stephen Hemminger Signed-off-by: Dexuan Cui Signed-off-by: David S. Miller Stable-dep-of: 9cae43da9867 ("hv_netvsc: Register VF in netvsc_probe if NET= _DEVICE_REGISTER missed") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/hyperv/netvsc_drv.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_dr= v.c index ce17917b6f76f..fcf89ee5080f1 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -2141,8 +2141,17 @@ static struct net_device *get_netvsc_byslot(const st= ruct net_device *vf_netdev) if (!ndev_ctx->vf_alloc) continue; =20 - if (ndev_ctx->vf_serial =3D=3D serial) - return hv_get_drvdata(ndev_ctx->device_ctx); + if (ndev_ctx->vf_serial !=3D serial) + continue; + + ndev =3D hv_get_drvdata(ndev_ctx->device_ctx); + if (ndev->addr_len !=3D vf_netdev->addr_len || + memcmp(ndev->perm_addr, vf_netdev->perm_addr, + ndev->addr_len) !=3D 0) + continue; + + return ndev; + } =20 /* Fallback path to check synthetic vf with help of mac addr. --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FCF676C72; Wed, 13 Mar 2024 17:05:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349511; cv=none; b=LOgHkTUYeLkXzRYSVXjEPMp/6dY8v5eZ0VpKtCY8Jnl3sws661lPEH2Y5lSjR71gme8MrccS7JHajHB1jw0v+UvPi8LdkgzGvmnuNLgXI2A7JJVJCnY9mTowJt5tCUyGNLvOvjnsYWHR7EMyXTNZhhPUCItTWZFfC1P9ENaIRl0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349511; c=relaxed/simple; bh=ZOqp/fXGfohcv3G3cxDdBtf9efWk2VsY/682ju0ztfU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PTOdcZuaBGtuYG/xFZ5NE7e/3QZpgw+0M2KWNT0xVMcwIrB3cWkXNglU8IGFoIYRFL99PIJexpWeHkP99qTnYcM3cVBZgRZB2u6NGTuH4CChk2mY16yap6OfwalapLmU+MQM9+sOmcthFZgNy7u8nArm71gA2OJQQhgz+GQ5C4M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=j4FlB73F; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="j4FlB73F" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9AB3DC433B2; Wed, 13 Mar 2024 17:05:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349511; bh=ZOqp/fXGfohcv3G3cxDdBtf9efWk2VsY/682ju0ztfU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=j4FlB73FAcX18ghz/6tC7MKcLL/egMSEk9j/3ZxI3SxRlw1F+/ktzPrebws3s65AO bMjVTYQ+rQYmyzvioRck/IIlF6gRiobL+UVs1J+ZgBncSKWeGZLf4ec2p0fBvWgDdh ZJ09BE9UWTtEHR03+HwUZEg/emLBFmlg1Cjl1ufRTF4/81q4pINzf5BGSCR4lK3Zcj P2ZyXTtqojq0mY8ePhvdcODJRXGPvaEuokCiYhfYL7RznOXp89BAhI37CJY3Uy4O7E UtOePTcNfoUuOtMIYwwhRIBC7rDkv9WWHfvF84pac55i4c5e1KTW9yLtMV8B5p45Bn SDGqgwxCa619w== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Juhee Kang , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 30/41] hv_netvsc: use netif_is_bond_master() instead of open code Date: Wed, 13 Mar 2024 13:04:24 -0400 Message-ID: <20240313170435.616724-31-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Juhee Kang [ Upstream commit c60882a4566a0a62dc3a40c85131103aad83dcb3 ] Use netif_is_bond_master() function instead of open code, which is ((event_dev->priv_flags & IFF_BONDING) && (event_dev->flags & IFF_MASTER)). This patch doesn't change logic. Signed-off-by: Juhee Kang Signed-off-by: David S. Miller Stable-dep-of: 9cae43da9867 ("hv_netvsc: Register VF in netvsc_probe if NET= _DEVICE_REGISTER missed") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/hyperv/netvsc_drv.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_dr= v.c index fcf89ee5080f1..2d1c6f10d4e19 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -2497,8 +2497,7 @@ static int netvsc_netdev_event(struct notifier_block = *this, return NOTIFY_DONE; =20 /* Avoid Bonding master dev with same MAC registering as VF */ - if ((event_dev->priv_flags & IFF_BONDING) && - (event_dev->flags & IFF_MASTER)) + if (netif_is_bond_master(event_dev)) return NOTIFY_DONE; =20 switch (event) { --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7D541A16F9; Wed, 13 Mar 2024 17:05:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349512; cv=none; b=bE9txqNcQrBS8rO71SSeogqTfq9UuTOcPRTBlzcJfJ9knjGQt2FRan7lUPWdRQQ328GngnkkJ0W4pha+NJMuB0VT6AlxGQQBN7c//eJ2N8TavP5YFn23dXK8vj3vLulkL9RkRj6bRJDNKwKM+lcAPCBRrkAlagj6vo2+/z4tFXQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349512; c=relaxed/simple; bh=BH+MxCUCdycXo7ftN770mnp7dSqNEGwhqb5BXmthRYs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KZ11p1Q+xJgR/2prXrdiCmv4/aNn97WIQmthuDmf3gaGxFF0wFKwlIiZPwOFXkjAU54uZSHvYfLffPymJKoVK4DO2+TZWsgcxjiDMVeZELrk29cJEowk2sIZXsM4I+pa6eeUnYDLV6X8OFlPgG0YWsz4KX11GHjCxllP8/bntUE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bhEsDyLf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bhEsDyLf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9CC42C43390; Wed, 13 Mar 2024 17:05:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349512; bh=BH+MxCUCdycXo7ftN770mnp7dSqNEGwhqb5BXmthRYs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bhEsDyLfS5Kv07v8KiqtRkQeAQkW9fv1KU1Pp9rpjyotAVgrN3rPwsl6is35K1f6z 2cZFLIDDbLL91czV4Ow+TKvXcuceclVgjgXD4RkJ9DFBq93rPmBViKMKI1ziOaKhgd Re7ZI8fe5uSu13wr/s5QmngXZfpF9Uc8lbKDX/VwFz7TMF3TeeOOitjVhwBEufdvdP dqX7D2lsxTHDdYhvwWrz/5GYhE6aWUP5UebcdHyijwWI85sBHD8J5MnsdJIr4dz3Ko ZoP70Znl30Z0r4SqU+L2FH3X8g171dU43XhbUJPgUUFdAkL8mkHDCbiRqM8P6YCz6u zhf8qsa6rixHg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Shradha Gupta , Dexuan Cui , Haiyang Zhang , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 31/41] hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed Date: Wed, 13 Mar 2024 13:04:25 -0400 Message-ID: <20240313170435.616724-32-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shradha Gupta [ Upstream commit 9cae43da9867412f8bd09aee5c8a8dc5e8dc3dc2 ] If hv_netvsc driver is unloaded and reloaded, the NET_DEVICE_REGISTER handler cannot perform VF register successfully as the register call is received before netvsc_probe is finished. This is because we register register_netdevice_notifier() very early( even before vmbus_driver_register()). To fix this, we try to register each such matching VF( if it is visible as a netdevice) at the end of netvsc_probe. Cc: stable@vger.kernel.org Fixes: 85520856466e ("hv_netvsc: Fix race of register_netdevice_notifier an= d VF register") Suggested-by: Dexuan Cui Signed-off-by: Shradha Gupta Reviewed-by: Haiyang Zhang Reviewed-by: Dexuan Cui Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- drivers/net/hyperv/netvsc_drv.c | 82 +++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 20 deletions(-) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_dr= v.c index 2d1c6f10d4e19..e24513e34306c 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -54,6 +54,10 @@ #define LINKCHANGE_INT (2 * HZ) #define VF_TAKEOVER_INT (HZ / 10) =20 +/* Macros to define the context of vf registration */ +#define VF_REG_IN_PROBE 1 +#define VF_REG_IN_NOTIFIER 2 + static unsigned int ring_size __ro_after_init =3D 128; module_param(ring_size, uint, 0444); MODULE_PARM_DESC(ring_size, "Ring buffer size (# of pages)"); @@ -2025,7 +2029,7 @@ static rx_handler_result_t netvsc_vf_handle_frame(str= uct sk_buff **pskb) } =20 static int netvsc_vf_join(struct net_device *vf_netdev, - struct net_device *ndev) + struct net_device *ndev, int context) { struct net_device_context *ndev_ctx =3D netdev_priv(ndev); int ret; @@ -2048,7 +2052,11 @@ static int netvsc_vf_join(struct net_device *vf_netd= ev, goto upper_link_failed; } =20 - schedule_delayed_work(&ndev_ctx->vf_takeover, VF_TAKEOVER_INT); + /* If this registration is called from probe context vf_takeover + * is taken care of later in probe itself. + */ + if (context =3D=3D VF_REG_IN_NOTIFIER) + schedule_delayed_work(&ndev_ctx->vf_takeover, VF_TAKEOVER_INT); =20 call_netdevice_notifiers(NETDEV_JOIN, vf_netdev); =20 @@ -2186,7 +2194,7 @@ static int netvsc_prepare_bonding(struct net_device *= vf_netdev) return NOTIFY_DONE; } =20 -static int netvsc_register_vf(struct net_device *vf_netdev) +static int netvsc_register_vf(struct net_device *vf_netdev, int context) { struct net_device_context *net_device_ctx; struct netvsc_device *netvsc_dev; @@ -2225,7 +2233,7 @@ static int netvsc_register_vf(struct net_device *vf_n= etdev) =20 netdev_info(ndev, "VF registering: %s\n", vf_netdev->name); =20 - if (netvsc_vf_join(vf_netdev, ndev) !=3D 0) + if (netvsc_vf_join(vf_netdev, ndev, context) !=3D 0) return NOTIFY_DONE; =20 dev_hold(vf_netdev); @@ -2285,10 +2293,31 @@ static int netvsc_unregister_vf(struct net_device *= vf_netdev) return NOTIFY_OK; } =20 +static int check_dev_is_matching_vf(struct net_device *event_ndev) +{ + /* Skip NetVSC interfaces */ + if (event_ndev->netdev_ops =3D=3D &device_ops) + return -ENODEV; + + /* Avoid non-Ethernet type devices */ + if (event_ndev->type !=3D ARPHRD_ETHER) + return -ENODEV; + + /* Avoid Vlan dev with same MAC registering as VF */ + if (is_vlan_dev(event_ndev)) + return -ENODEV; + + /* Avoid Bonding master dev with same MAC registering as VF */ + if (netif_is_bond_master(event_ndev)) + return -ENODEV; + + return 0; +} + static int netvsc_probe(struct hv_device *dev, const struct hv_vmbus_device_id *dev_id) { - struct net_device *net =3D NULL; + struct net_device *net =3D NULL, *vf_netdev; struct net_device_context *net_device_ctx; struct netvsc_device_info *device_info =3D NULL; struct netvsc_device *nvdev; @@ -2391,6 +2420,30 @@ static int netvsc_probe(struct hv_device *dev, } =20 list_add(&net_device_ctx->list, &netvsc_dev_list); + + /* When the hv_netvsc driver is unloaded and reloaded, the + * NET_DEVICE_REGISTER for the vf device is replayed before probe + * is complete. This is because register_netdevice_notifier() gets + * registered before vmbus_driver_register() so that callback func + * is set before probe and we don't miss events like NETDEV_POST_INIT + * So, in this section we try to register the matching vf device that + * is present as a netdevice, knowing that its register call is not + * processed in the netvsc_netdev_notifier(as probing is progress and + * get_netvsc_byslot fails). + */ + for_each_netdev(dev_net(net), vf_netdev) { + ret =3D check_dev_is_matching_vf(vf_netdev); + if (ret !=3D 0) + continue; + + if (net !=3D get_netvsc_byslot(vf_netdev)) + continue; + + netvsc_prepare_bonding(vf_netdev); + netvsc_register_vf(vf_netdev, VF_REG_IN_PROBE); + __netvsc_vf_setup(net, vf_netdev); + break; + } rtnl_unlock(); =20 kfree(device_info); @@ -2483,28 +2536,17 @@ static int netvsc_netdev_event(struct notifier_bloc= k *this, unsigned long event, void *ptr) { struct net_device *event_dev =3D netdev_notifier_info_to_dev(ptr); + int ret =3D 0; =20 - /* Skip our own events */ - if (event_dev->netdev_ops =3D=3D &device_ops) - return NOTIFY_DONE; - - /* Avoid non-Ethernet type devices */ - if (event_dev->type !=3D ARPHRD_ETHER) - return NOTIFY_DONE; - - /* Avoid Vlan dev with same MAC registering as VF */ - if (is_vlan_dev(event_dev)) - return NOTIFY_DONE; - - /* Avoid Bonding master dev with same MAC registering as VF */ - if (netif_is_bond_master(event_dev)) + ret =3D check_dev_is_matching_vf(event_dev); + if (ret !=3D 0) return NOTIFY_DONE; =20 switch (event) { case NETDEV_POST_INIT: return netvsc_prepare_bonding(event_dev); case NETDEV_REGISTER: - return netvsc_register_vf(event_dev); + return netvsc_register_vf(event_dev, VF_REG_IN_NOTIFIER); case NETDEV_UNREGISTER: return netvsc_unregister_vf(event_dev); case NETDEV_UP: --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 093E01A171A; Wed, 13 Mar 2024 17:05:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349514; cv=none; b=AED6vtJgt82d2XR2xGxS/dwpXvhheW5ny+CnryPCrneXMf+n2fDCincMq1sQa8tOmh4yz6dtDOtz/WKYK+La7feFzInmt4u1Qd8oBRpHqzOdw+T4r7k5bFxqka8fF0WyOdSPtoJQOgmLkWoryUzpMmK54vcKwSWBIdHTEjqMobg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349514; c=relaxed/simple; bh=JWBIn3l0YqEIYzxEwEDABafvULXVISSaPabgK7EYmKQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=c1JjIzHqh9/2+NhKrYFg+hbzxM6L0oF3DbkO3y0z2L8wCgH0dcHJBAEVHwwCx+s9ooa732ifPQFQlNka4PIoFXKcO14t9SCEdHwBaZhbjqVKnn+Y460z+i8oTbcN0oO+9lSTfcLT1hJlZZ7klGqNHpBpHtoOHvjOlAt3BCQhA7s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qK/DRyG3; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qK/DRyG3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CE708C43390; Wed, 13 Mar 2024 17:05:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349513; bh=JWBIn3l0YqEIYzxEwEDABafvULXVISSaPabgK7EYmKQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qK/DRyG3eLOa1d7kLeIZizcLZ9xJOST4wjq3tLtTRyJy49T0CI1ykfiEAORxR9mzh l+k+DfcCGg1hFRsjyNFOkC4IzSjOhRG1gsfyTGmIBOT9qyyw3LKPf6tESvc+Rx4NQO XcBpPzd2UMQWtRsX5gXMpKJ1K/SIH/1PCTu/CpCE3KEOpKzH/8MjNuK1OmdpPcZVoz pV26nBLkYQCI/ZwY70sN30XdrcwEK75HqYtFDJEn/4A2np02EGYyncSAAtxNxm46sq 4ICuTgfcOlr8cZHFXle9n5klEmZf2zbw1zcrQ+EuWN2F5xckLBLwlnIlBJfVggwvSi 69xdGhE2n5M0w== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Arnd Bergmann , Cyrill Gorcunov , Sasha Levin Subject: [PATCH 4.19 32/41] y2038: rusage: use __kernel_old_timeval Date: Wed, 13 Mar 2024 13:04:26 -0400 Message-ID: <20240313170435.616724-33-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnd Bergmann [ Upstream commit bdd565f817a74b9e30edec108f7cb1dbc762b8a6 ] There are two 'struct timeval' fields in 'struct rusage'. Unfortunately the definition of timeval is now ambiguous when used in user space with a libc that has a 64-bit time_t, and this also changes the 'rusage' definition in user space in a way that is incompatible with the system call interface. While there is no good solution to avoid all ambiguity here, change the definition in the kernel headers to be compatible with the kernel ABI, using __kernel_old_timeval as an unambiguous base type. In previous discussions, there was also a plan to add a replacement for rusage based on 64-bit timestamps and nanosecond resolution, i.e. 'struct __kernel_timespec'. I have patches for that as well, if anyone thinks we should do that. Reviewed-by: Cyrill Gorcunov Signed-off-by: Arnd Bergmann Stable-dep-of: daa694e41375 ("getrusage: move thread_group_cputime_adjusted= () outside of lock_task_sighand()") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- arch/alpha/kernel/osf_sys.c | 2 +- include/uapi/linux/resource.h | 4 ++-- kernel/sys.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index cff52d8ffdb12..d5694f263dd61 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c @@ -964,7 +964,7 @@ put_tv32(struct timeval32 __user *o, struct timespec64 = *i) } =20 static inline long -put_tv_to_tv32(struct timeval32 __user *o, struct timeval *i) +put_tv_to_tv32(struct timeval32 __user *o, struct __kernel_old_timeval *i) { return copy_to_user(o, &(struct timeval32){ .tv_sec =3D i->tv_sec, diff --git a/include/uapi/linux/resource.h b/include/uapi/linux/resource.h index cc00fd0796317..74ef57b38f9f5 100644 --- a/include/uapi/linux/resource.h +++ b/include/uapi/linux/resource.h @@ -22,8 +22,8 @@ #define RUSAGE_THREAD 1 /* only the calling thread */ =20 struct rusage { - struct timeval ru_utime; /* user time used */ - struct timeval ru_stime; /* system time used */ + struct __kernel_old_timeval ru_utime; /* user time used */ + struct __kernel_old_timeval ru_stime; /* system time used */ __kernel_long_t ru_maxrss; /* maximum resident set size */ __kernel_long_t ru_ixrss; /* integral shared memory size */ __kernel_long_t ru_idrss; /* integral unshared data size */ diff --git a/kernel/sys.c b/kernel/sys.c index 3548467f6459b..e18bef5a8f9f5 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1772,8 +1772,8 @@ void getrusage(struct task_struct *p, int who, struct= rusage *r) unlock_task_sighand(p, &flags); =20 out: - r->ru_utime =3D ns_to_timeval(utime); - r->ru_stime =3D ns_to_timeval(stime); + r->ru_utime =3D ns_to_kernel_old_timeval(utime); + r->ru_stime =3D ns_to_kernel_old_timeval(stime); =20 if (who !=3D RUSAGE_CHILDREN) { struct mm_struct *mm =3D get_task_mm(p); --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE2FD1A1E07; Wed, 13 Mar 2024 17:05:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349514; cv=none; b=NpiTPc/Ay3TssordR2GE4fs/kqokEBqYhJVM2YMIYr2UFZ99HMPLRPJ95HkXjTdIZAiVEJ77ZaLNPwLZGJENCh1cnHqrqbfy9zjHKwMhU2CC2GlPEBEg8qsloD88e7XNEgey7Gm1KyTTABNStw5euU0B4WPWVa5DbqdByC/bLXw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349514; c=relaxed/simple; bh=p1EZa2ZgHDmiucXAq91UYoVHVTEcoPAIJ0eMj0t95P8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZWdboLNCygqMkDk1unJFQPIJVb1GBXDtLuvCdgNXScjNzA9azHMBKKu7CVOY60j+Zc9sDrGQX4/koy0CDQY4RKDGi97I7FKmWZY6II1lRl/jupdQytXnuaLBZJ76bfRGfV6gLoK0hmQo+9tI2c1tc0VyNG3u+qZhXJWhzRVLyeM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tihd3/Wd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tihd3/Wd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CDB6CC433C7; Wed, 13 Mar 2024 17:05:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349514; bh=p1EZa2ZgHDmiucXAq91UYoVHVTEcoPAIJ0eMj0t95P8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tihd3/Wd5w3HEQ/5+u51K906yqOF7/LZFZFCTU9m7rQ+AZo1ufcIW0s+RP10FEe5l C7vOPYVBDwGRzaKEAKeQmhLMqE0nqLO1IOBzfLNN7hX/p276jJdKuf4tXFs5zmkwb1 Ts9PKjKEuaMRjzgzQFWV55GYZbxkkttkJZ1zUCkVxL4ogdMpi+yB8dPXPA6auONa6E HD3T+Ei5XslOJ3n1yVCR4pjvrjpCTZ+m0dlZ9ZUHl6T59/R9Tu1q2AxTIsA5LYi7QL XZxJDXhWPAvPV7xXaYg9XycHh/zHy9IE3w75Z9mhGT6OcAkl12WK/JyVlPRKqjTCMH UPFnwRWIhnA2g== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Oleg Nesterov , "Eric W . Biederman" , Andrew Morton , Sasha Levin Subject: [PATCH 4.19 33/41] getrusage: add the "signal_struct *sig" local variable Date: Wed, 13 Mar 2024 13:04:27 -0400 Message-ID: <20240313170435.616724-34-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Oleg Nesterov [ Upstream commit c7ac8231ace9b07306d0299969e42073b189c70a ] No functional changes, cleanup/preparation. Link: https://lkml.kernel.org/r/20230909172554.GA20441@redhat.com Signed-off-by: Oleg Nesterov Cc: Eric W. Biederman Signed-off-by: Andrew Morton Stable-dep-of: daa694e41375 ("getrusage: move thread_group_cputime_adjusted= () outside of lock_task_sighand()") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- kernel/sys.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/kernel/sys.c b/kernel/sys.c index e18bef5a8f9f5..d0d4f4c586518 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1718,6 +1718,7 @@ void getrusage(struct task_struct *p, int who, struct= rusage *r) unsigned long flags; u64 tgutime, tgstime, utime, stime; unsigned long maxrss =3D 0; + struct signal_struct *sig =3D p->signal; =20 memset((char *)r, 0, sizeof (*r)); utime =3D stime =3D 0; @@ -1725,7 +1726,7 @@ void getrusage(struct task_struct *p, int who, struct= rusage *r) if (who =3D=3D RUSAGE_THREAD) { task_cputime_adjusted(current, &utime, &stime); accumulate_thread_rusage(p, r); - maxrss =3D p->signal->maxrss; + maxrss =3D sig->maxrss; goto out; } =20 @@ -1735,15 +1736,15 @@ void getrusage(struct task_struct *p, int who, stru= ct rusage *r) switch (who) { case RUSAGE_BOTH: case RUSAGE_CHILDREN: - utime =3D p->signal->cutime; - stime =3D p->signal->cstime; - r->ru_nvcsw =3D p->signal->cnvcsw; - r->ru_nivcsw =3D p->signal->cnivcsw; - r->ru_minflt =3D p->signal->cmin_flt; - r->ru_majflt =3D p->signal->cmaj_flt; - r->ru_inblock =3D p->signal->cinblock; - r->ru_oublock =3D p->signal->coublock; - maxrss =3D p->signal->cmaxrss; + utime =3D sig->cutime; + stime =3D sig->cstime; + r->ru_nvcsw =3D sig->cnvcsw; + r->ru_nivcsw =3D sig->cnivcsw; + r->ru_minflt =3D sig->cmin_flt; + r->ru_majflt =3D sig->cmaj_flt; + r->ru_inblock =3D sig->cinblock; + r->ru_oublock =3D sig->coublock; + maxrss =3D sig->cmaxrss; =20 if (who =3D=3D RUSAGE_CHILDREN) break; @@ -1752,14 +1753,14 @@ void getrusage(struct task_struct *p, int who, stru= ct rusage *r) thread_group_cputime_adjusted(p, &tgutime, &tgstime); utime +=3D tgutime; stime +=3D tgstime; - r->ru_nvcsw +=3D p->signal->nvcsw; - r->ru_nivcsw +=3D p->signal->nivcsw; - r->ru_minflt +=3D p->signal->min_flt; - r->ru_majflt +=3D p->signal->maj_flt; - r->ru_inblock +=3D p->signal->inblock; - r->ru_oublock +=3D p->signal->oublock; - if (maxrss < p->signal->maxrss) - maxrss =3D p->signal->maxrss; + r->ru_nvcsw +=3D sig->nvcsw; + r->ru_nivcsw +=3D sig->nivcsw; + r->ru_minflt +=3D sig->min_flt; + r->ru_majflt +=3D sig->maj_flt; + r->ru_inblock +=3D sig->inblock; + r->ru_oublock +=3D sig->oublock; + if (maxrss < sig->maxrss) + maxrss =3D sig->maxrss; t =3D p; do { accumulate_thread_rusage(t, r); --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A5D61A1E34; Wed, 13 Mar 2024 17:05:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349516; cv=none; b=QDTC1A5ogcuUUhItIIzK3QXbR3UsAq9d796V3jCvpZ7PJ0h1Ke+DWuKNL5OtuIQwCd3QunG55bq5DRRcyLViGYHdnj3iwf8JUJpdmM+QOhWBhm3jSaVGNUusPVUWJafGQRmOddhGDSd5pTktmCdKgkMMhbWX0QP9gKCy4q5ytaU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349516; c=relaxed/simple; bh=D33qK3iC2lTGGcA6eSg3iDpe+4bzMfIi9a7UvNyKLuc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PEbIlclIgCttg27NjWYiiNFkYRDwDmkVJaobVSf7AAq9Lpgyhv6KaByFYwPqsFlX0TPFO+33C3Kh2Sr3mDse7xIMoL2vcYHoah7sxaTOw5FhVnH6rOflt30g61GxYmiM2znXa74uJdoAtuXaPHv/AUKiM8AfkSNSwYt6nHDXN0k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=abKAUvgv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="abKAUvgv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 222BCC433F1; Wed, 13 Mar 2024 17:05:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349516; bh=D33qK3iC2lTGGcA6eSg3iDpe+4bzMfIi9a7UvNyKLuc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=abKAUvgvtdShlzZigAsAdELg0pXot7S5WeWrQ8qJl9/pFc7USfatuq6Fv7DWF/gvF ZypzKBtkfIuS15qBg27+F15UjpTvAHvAchg1i5T8cyxAR3CcjZh+huIgsHtTRbLZei NIIg2c5WVjxPHmasVJ8uVR+SNAOosywlD53KOs4jdsuigMWFYso/oagiCmru4hQ/eR mdPRhp75CvEoKzl4+ez2bEJiL4AB3p4gz2l66ZZr413rrUHRdxPDTziK9+tOK5gQFQ 11nOhdYOfGwghUfFToDCK4UC2rMJmTd+06kdSEh2UvTi/dlUy/KdiE0i/uxTgJSEJV q+b8Wjadk6+Mg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Oleg Nesterov , Dylan Hatch , "Eric W . Biederman" , Andrew Morton , Sasha Levin Subject: [PATCH 4.19 34/41] getrusage: move thread_group_cputime_adjusted() outside of lock_task_sighand() Date: Wed, 13 Mar 2024 13:04:28 -0400 Message-ID: <20240313170435.616724-35-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Oleg Nesterov [ Upstream commit daa694e4137571b4ebec330f9a9b4d54aa8b8089 ] Patch series "getrusage: use sig->stats_lock", v2. This patch (of 2): thread_group_cputime() does its own locking, we can safely shift thread_group_cputime_adjusted() which does another for_each_thread loop outside of ->siglock protected section. This is also preparation for the next patch which changes getrusage() to use stats_lock instead of siglock, thread_group_cputime() takes the same lock. With the current implementation recursive read_seqbegin_or_lock() is fine, thread_group_cputime() can't enter the slow mode if the caller holds stats_lock, yet this looks more safe and better performance-wise. Link: https://lkml.kernel.org/r/20240122155023.GA26169@redhat.com Link: https://lkml.kernel.org/r/20240122155050.GA26205@redhat.com Signed-off-by: Oleg Nesterov Reported-by: Dylan Hatch Tested-by: Dylan Hatch Cc: Eric W. Biederman Cc: Signed-off-by: Andrew Morton Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- kernel/sys.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/kernel/sys.c b/kernel/sys.c index d0d4f4c586518..ab621d7837c97 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1717,17 +1717,19 @@ void getrusage(struct task_struct *p, int who, stru= ct rusage *r) struct task_struct *t; unsigned long flags; u64 tgutime, tgstime, utime, stime; - unsigned long maxrss =3D 0; + unsigned long maxrss; + struct mm_struct *mm; struct signal_struct *sig =3D p->signal; =20 - memset((char *)r, 0, sizeof (*r)); + memset(r, 0, sizeof(*r)); utime =3D stime =3D 0; + maxrss =3D 0; =20 if (who =3D=3D RUSAGE_THREAD) { task_cputime_adjusted(current, &utime, &stime); accumulate_thread_rusage(p, r); maxrss =3D sig->maxrss; - goto out; + goto out_thread; } =20 if (!lock_task_sighand(p, &flags)) @@ -1750,9 +1752,6 @@ void getrusage(struct task_struct *p, int who, struct= rusage *r) break; =20 case RUSAGE_SELF: - thread_group_cputime_adjusted(p, &tgutime, &tgstime); - utime +=3D tgutime; - stime +=3D tgstime; r->ru_nvcsw +=3D sig->nvcsw; r->ru_nivcsw +=3D sig->nivcsw; r->ru_minflt +=3D sig->min_flt; @@ -1772,19 +1771,24 @@ void getrusage(struct task_struct *p, int who, stru= ct rusage *r) } unlock_task_sighand(p, &flags); =20 -out: - r->ru_utime =3D ns_to_kernel_old_timeval(utime); - r->ru_stime =3D ns_to_kernel_old_timeval(stime); + if (who =3D=3D RUSAGE_CHILDREN) + goto out_children; =20 - if (who !=3D RUSAGE_CHILDREN) { - struct mm_struct *mm =3D get_task_mm(p); + thread_group_cputime_adjusted(p, &tgutime, &tgstime); + utime +=3D tgutime; + stime +=3D tgstime; =20 - if (mm) { - setmax_mm_hiwater_rss(&maxrss, mm); - mmput(mm); - } +out_thread: + mm =3D get_task_mm(p); + if (mm) { + setmax_mm_hiwater_rss(&maxrss, mm); + mmput(mm); } + +out_children: r->ru_maxrss =3D maxrss * (PAGE_SIZE / 1024); /* convert pages to KBs */ + r->ru_utime =3D ns_to_kernel_old_timeval(utime); + r->ru_stime =3D ns_to_kernel_old_timeval(stime); } =20 SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru) --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 67DF41A2641; Wed, 13 Mar 2024 17:05:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349517; cv=none; b=Shbwmy4VdLbVE4l80ohhVmprUM9MTqaG1BtiOLF3F5FQBsBSjRfPZ3ijMhdEKHHgolTeRI34WXwvP6P3yhwoPfuxrth/EWVdlUqiDU/PdHwXCX3PtkDr/iR4TQ+/5sWl4P4ubQhiYaBg8mzP4RjX6d5cC+3L4tynfV9dhtHwTi0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349517; c=relaxed/simple; bh=4ia6iyHXr7Jm1ii3HHdTY4Tjrad2F1s0YbgkJHaG3FU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sdF31zSwb503YRcF74SQx4R/LjU3PAG6R004zI9EPQfiO0neYc3Ez3kIq4wjKKL3ZV7CYG6i0HSCEilqrxd3qtGsJDUfEyaFo0cGJd/dx/K6VYjqCYnA9MRG/Sr7nXMVyZZtdtpn/7K8RwQUD9wuCwwxxFCvrIasBr3CVsClMDw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SW1xrXin; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SW1xrXin" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6D423C43390; Wed, 13 Mar 2024 17:05:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349517; bh=4ia6iyHXr7Jm1ii3HHdTY4Tjrad2F1s0YbgkJHaG3FU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SW1xrXinNnWqtFyQDc+Zrc1p3FvCAtQjdTdAyGlb6M2mUNB6PeR4ME9iGjJHE8fD1 z1mDPowaUOBqljnlpL1LCdvv5pMnKba1Qqwka4IJLam3uXJNy3ZqnDIzdOpUUJg1xg ZdeLWeun8rLi9C+Q+lK+9tnc9wHmUM7bsGFYxULZntLzl4wmD/Z0xkbufYW87sReQr 29Yo7xJz438k76X/4ZYH8bHeYEOWEHMET6OkTmxzUaJ+Hea6AT+9nNcGiYikhsCNrK PLwHJwTp+hGSFrY4+z48DIJfqHXBjDS9IDS/MzSLcstPAos08f3kNsHbrYHOO2/THY pCMx1v7bre9VQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Oleg Nesterov , "Eric W . Biederman" , Andrew Morton , Sasha Levin Subject: [PATCH 4.19 35/41] getrusage: use __for_each_thread() Date: Wed, 13 Mar 2024 13:04:29 -0400 Message-ID: <20240313170435.616724-36-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Oleg Nesterov [ Upstream commit 13b7bc60b5353371460a203df6c38ccd38ad7a3a ] do/while_each_thread should be avoided when possible. Plus this change allows to avoid lock_task_sighand(), we can use rcu and/or sig->stats_lock instead. Link: https://lkml.kernel.org/r/20230909172629.GA20454@redhat.com Signed-off-by: Oleg Nesterov Cc: Eric W. Biederman Signed-off-by: Andrew Morton Stable-dep-of: f7ec1cd5cc7e ("getrusage: use sig->stats_lock rather than lo= ck_task_sighand()") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- kernel/sys.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kernel/sys.c b/kernel/sys.c index ab621d7837c97..521a76d4adbbb 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1760,10 +1760,8 @@ void getrusage(struct task_struct *p, int who, struc= t rusage *r) r->ru_oublock +=3D sig->oublock; if (maxrss < sig->maxrss) maxrss =3D sig->maxrss; - t =3D p; - do { + __for_each_thread(sig, t) accumulate_thread_rusage(t, r); - } while_each_thread(p, t); break; =20 default: --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0867F1A2667; Wed, 13 Mar 2024 17:05:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349519; cv=none; b=AkkkjwAttQF+Ox6sZjAdZDM6AhDkzoGEFH0WmoAWB+XHTtZkyCLOC5jjfkcPitJhIuLPOWjqfjczCqdpOR+okcVtgkvcYX/UNW3BWCR9D6PJZNVaetV3Edm+TB82kSy9JAFuBlmCePqaigFlYdeAg/3ULDoh//e5aQ5rRz+d74w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349519; c=relaxed/simple; bh=yPQslfck8/cofb31CISTU7r+fINQ3n1ouTOFT02VNpo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lA7BtpOpNO1cZi8AKrf+f+5qAnjfHlcqZnBQ5rK8pjMgUgX06dagFK86w6k6T/5kSnwBGRLc/YOUIGxUGn+epNW7knffpMPLULFjfBlSgThqYqvMAQekogbAaQPJjSu0iF2ZzAxdSPBnhM1ARZFKMu6wqaali5mHpYGdSZ2Dd3U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jQw9Ac1b; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jQw9Ac1b" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92398C433C7; Wed, 13 Mar 2024 17:05:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349518; bh=yPQslfck8/cofb31CISTU7r+fINQ3n1ouTOFT02VNpo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jQw9Ac1bqUuGIXeqaChNYYkQp3vgYXDhiRGI2UCHbwlhiPFK91jWiEzu//EcseQOi D7beuOKEZMgsdj+DAQhPoup/1OqG3tQ5/5vCVvuOkxjSqMmFAvn0gqdru3d9YcHiht hny4q6Ls9I3iNBwjjnSMZ9k/jiouj1pnduwMiFo3kZGZdMUda0Udfs41Ik9Bz2wc2q 4Kw6JjMjjIzDpkO/1VL5MNx6lXdvRaESrHTbtZcpaV8BC9GikqoRrIalejrmpKewbN pfdlOdUCHYtCD9O3+Xp4tkYygQO0Gel3GLw9dyWdt7wL+mis/gDhxEAB1mcbD/6f/b bmozImM0eFE+A== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Oleg Nesterov , Dylan Hatch , "Eric W . Biederman" , Andrew Morton , Sasha Levin Subject: [PATCH 4.19 36/41] getrusage: use sig->stats_lock rather than lock_task_sighand() Date: Wed, 13 Mar 2024 13:04:30 -0400 Message-ID: <20240313170435.616724-37-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Oleg Nesterov [ Upstream commit f7ec1cd5cc7ef3ad964b677ba82b8b77f1c93009 ] lock_task_sighand() can trigger a hard lockup. If NR_CPUS threads call getrusage() at the same time and the process has NR_THREADS, spin_lock_irq will spin with irqs disabled O(NR_CPUS * NR_THREADS) time. Change getrusage() to use sig->stats_lock, it was specifically designed for this type of use. This way it runs lockless in the likely case. TODO: - Change do_task_stat() to use sig->stats_lock too, then we can remove spin_lock_irq(siglock) in wait_task_zombie(). - Turn sig->stats_lock into seqcount_rwlock_t, this way the readers in the slow mode won't exclude each other. See https://lore.kernel.org/all/20230913154907.GA26210@redhat.com/ - stats_lock has to disable irqs because ->siglock can be taken in irq context, it would be very nice to change __exit_signal() to avoid the siglock->stats_lock dependency. Link: https://lkml.kernel.org/r/20240122155053.GA26214@redhat.com Signed-off-by: Oleg Nesterov Reported-by: Dylan Hatch Tested-by: Dylan Hatch Cc: Eric W. Biederman Cc: Signed-off-by: Andrew Morton Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- kernel/sys.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/kernel/sys.c b/kernel/sys.c index 521a76d4adbbb..62930aac0bad7 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1720,7 +1720,9 @@ void getrusage(struct task_struct *p, int who, struct= rusage *r) unsigned long maxrss; struct mm_struct *mm; struct signal_struct *sig =3D p->signal; + unsigned int seq =3D 0; =20 +retry: memset(r, 0, sizeof(*r)); utime =3D stime =3D 0; maxrss =3D 0; @@ -1732,8 +1734,7 @@ void getrusage(struct task_struct *p, int who, struct= rusage *r) goto out_thread; } =20 - if (!lock_task_sighand(p, &flags)) - return; + flags =3D read_seqbegin_or_lock_irqsave(&sig->stats_lock, &seq); =20 switch (who) { case RUSAGE_BOTH: @@ -1760,14 +1761,23 @@ void getrusage(struct task_struct *p, int who, stru= ct rusage *r) r->ru_oublock +=3D sig->oublock; if (maxrss < sig->maxrss) maxrss =3D sig->maxrss; + + rcu_read_lock(); __for_each_thread(sig, t) accumulate_thread_rusage(t, r); + rcu_read_unlock(); + break; =20 default: BUG(); } - unlock_task_sighand(p, &flags); + + if (need_seqretry(&sig->stats_lock, seq)) { + seq =3D 1; + goto retry; + } + done_seqretry_irqrestore(&sig->stats_lock, seq, flags); =20 if (who =3D=3D RUSAGE_CHILDREN) goto out_children; --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E034576413; Wed, 13 Mar 2024 17:05:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349520; cv=none; b=aLmBd/dDQzpCNJAnqZyDcQX32f5Qd6qOgA+/7Fj+MKdAResM+AtbiOn/+jYAhu6cSgqD19VjkOFbnzyCu8xX3ggE1MxtLFKor46dlaN5HtsF+mibc7Eb4rDwpcp+15Qs0EI62AdbEHUgiIsa8ecvvvkeh+KCQc+Sgf7ZLBNLLjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349520; c=relaxed/simple; bh=MzPy+VdatdXcnhKk7Rsr3P/T59svO5TVS9foousrR8k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZaFLyWB5VCUfamot6jvYUR9C8aPOnBzJ/hvHtn2mBabIO6oxvy0WQGedWP4lVy3uUhClP+cQqN+aZj2LyCzrk6QtHUjLU0knvN5KphcQcr90q8H1Vz6V9Xi7N5j/KVW6kCw3lJLO7Fgvc5z92Q28hKg5bIH0RKLTL5Qu89zQgoI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uR+y8a5B; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uR+y8a5B" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0BEDC43394; Wed, 13 Mar 2024 17:05:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349519; bh=MzPy+VdatdXcnhKk7Rsr3P/T59svO5TVS9foousrR8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uR+y8a5BcMqC1mehR0AfVesB7iiNCCtWqZpHjYD2HvZWfyc2Tr33D94UX5E4eawMd hKgOu/SAVdofJJVrFaA1AQBwrGtY+B0Kxmuq2l8J5GQcOa78lzpJb6YsS0suy6aaaU J3NgeY+Owv87sWZrJhtVCXZROEyY1ypMR+j+WEeIwLPpTgMDXAyt6qqhD+wZaPj7eT 3+eNskGqzBCzpo+DjWnz2ga3IFKPTsxuTdHopA4lBhiqh+A9G8mj1YZc4KPppDlbpi 7r5MAHMzot3ZfMHNKCD9VhZq8xQ66LGm7Nudks0KchHZXri8cWLp+wBf2LjMDUvXG/ PTdfeV2DranAw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Ingo Molnar , Sasha Levin Subject: [PATCH 4.19 37/41] exit: Fix typo in comment: s/sub-theads/sub-threads Date: Wed, 13 Mar 2024 13:04:31 -0400 Message-ID: <20240313170435.616724-38-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ingo Molnar [ Upstream commit dcca34754a3f5290406403b8066e3b15dda9f4bf ] Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar Stable-dep-of: c1be35a16b2f ("exit: wait_task_zombie: kill the no longer ne= cessary spin_lock_irq(siglock)") Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- kernel/exit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/exit.c b/kernel/exit.c index 0d1cca15e66fe..24e6953f606d2 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -1164,7 +1164,7 @@ static int wait_task_zombie(struct wait_opts *wo, str= uct task_struct *p) * p->signal fields because the whole thread group is dead * and nobody can change them. * - * psig->stats_lock also protects us from our sub-theads + * psig->stats_lock also protects us from our sub-threads * which can reap other children at the same time. Until * we change k_getrusage()-like users to rely on this lock * we have to take ->siglock as well. --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF52A1A2B73; Wed, 13 Mar 2024 17:05:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349521; cv=none; b=cnXYXNfoIfIajoBrbbh01iLESqi2/y4j2lR0Li0Ddnt2qxW4fJNroXTKOWIXdWHu+jwbx8TgBcQXkiH5VRD/ZH5Y7hlVCINK435TcY95blyu55pw1qhqFD0VsKm/wLI/T972xsjwwyF73dwIkbG3DQA4XNmiy8ZKQ1fJSi/ZRFk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349521; c=relaxed/simple; bh=1zLnwlgPmLm0i0ZHzo4gXdSqmPLFoDumpBXT7L9pi+Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hFZZRH5Omaa6kH1mG96IKSzTQ4yttmB2YlS5rfs6Mr7+QGrkFlpOiEHd0R+/Y70b4SqKF3xLfQgsdGOC2mJcWPGeNFVxaycZJbS66XTy6YrB6dPkhY5WYArc1asuoIGXvmAbZV0+UIBTQBBZ8EV09rbsOGcrSvQ8srTVogkPsxw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TqP2YT0T; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TqP2YT0T" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5661C433C7; Wed, 13 Mar 2024 17:05:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349520; bh=1zLnwlgPmLm0i0ZHzo4gXdSqmPLFoDumpBXT7L9pi+Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TqP2YT0TTxy3NgjWZg3cwy7kXWMLBONbAK3Zr9ZBhcN26YfV6spPrUyMybmbsR78D aMAjnAjey4C9y/CLbD1VppgClZOy2LmdleXG6KPPvP4E01ToRuIHB9mJJ5mly5KGKe 7pxjp0Tifd+KJ7dFalM7lXJKzoXUbdfbzTAR6tvBIDNEE86TPhBFNZOLm/BnE8lnB3 iKF0AwcX9zWNDmQ2FsoBy8VqKAm+MMT2Kfh6V82gOZfY2mTlnWc/9R9N/wGFiziSzL +J4D1zYMoyIj+WH5N578SKd83eySowpRcEQ1MlqhgKPdTxW9BOk2YBsC164KQEAVkx Uan1FK6m8S7mg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Oleg Nesterov , Dylan Hatch , "Eric W . Biederman" , Andrew Morton , Sasha Levin Subject: [PATCH 4.19 38/41] exit: wait_task_zombie: kill the no longer necessary spin_lock_irq(siglock) Date: Wed, 13 Mar 2024 13:04:32 -0400 Message-ID: <20240313170435.616724-39-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Oleg Nesterov [ Upstream commit c1be35a16b2f1fe21f4f26f9de030ad6eaaf6a25 ] After the recent changes nobody use siglock to read the values protected by stats_lock, we can kill spin_lock_irq(¤t->sighand->siglock) and update the comment. With this patch only __exit_signal() and thread_group_start_cputime() take stats_lock under siglock. Link: https://lkml.kernel.org/r/20240123153359.GA21866@redhat.com Signed-off-by: Oleg Nesterov Signed-off-by: Dylan Hatch Cc: Eric W. Biederman Cc: Signed-off-by: Andrew Morton Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- kernel/exit.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/kernel/exit.c b/kernel/exit.c index 24e6953f606d2..a948ce8927975 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -1165,17 +1165,14 @@ static int wait_task_zombie(struct wait_opts *wo, s= truct task_struct *p) * and nobody can change them. * * psig->stats_lock also protects us from our sub-threads - * which can reap other children at the same time. Until - * we change k_getrusage()-like users to rely on this lock - * we have to take ->siglock as well. + * which can reap other children at the same time. * * We use thread_group_cputime_adjusted() to get times for * the thread group, which consolidates times for all threads * in the group including the group leader. */ thread_group_cputime_adjusted(p, &tgutime, &tgstime); - spin_lock_irq(¤t->sighand->siglock); - write_seqlock(&psig->stats_lock); + write_seqlock_irq(&psig->stats_lock); psig->cutime +=3D tgutime + sig->cutime; psig->cstime +=3D tgstime + sig->cstime; psig->cgtime +=3D task_gtime(p) + sig->gtime + sig->cgtime; @@ -1198,8 +1195,7 @@ static int wait_task_zombie(struct wait_opts *wo, str= uct task_struct *p) psig->cmaxrss =3D maxrss; task_io_accounting_add(&psig->ioac, &p->ioac); task_io_accounting_add(&psig->ioac, &sig->ioac); - write_sequnlock(&psig->stats_lock); - spin_unlock_irq(¤t->sighand->siglock); + write_sequnlock_irq(&psig->stats_lock); } =20 if (wo->wo_rusage) --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F9771A2B9A; Wed, 13 Mar 2024 17:05:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349522; cv=none; b=qQhosPAe4zIKbtvHME3pShtCK/rpIGr2v63u96QpQEteuO+Fug6aRG7l3a3os7KOhKIm7edvwwSb3By9A8O5CXCgPNApr65O1PYmEd9LUylxec9GCjmO0kz3UU9Jy7xIl3VNbkaOdYXjX0aa0jm2EMx4GXyK8pju7dKK35hMHSQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349522; c=relaxed/simple; bh=KVPCZ3dESDnwLDlBd1+N2FxfdsqEgtThOJFch8a0b0M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H7rwaO24qqB3fuwKv8ZoFmWxGsAzRBgF4PBaSY3X9Dpt6SJR/NermMHCl26wiTzFLvd3MKPoqL9zGFolC9s6MqcU03gTVpkxxQvj27Wy60dU+XB1e29G1L3IFKhiQ/XwxPRinVYJaIuAXfePKMczSxk07O514znAN2+FOeoDQjY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LMOkcatR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LMOkcatR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 111E9C433C7; Wed, 13 Mar 2024 17:05:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349521; bh=KVPCZ3dESDnwLDlBd1+N2FxfdsqEgtThOJFch8a0b0M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LMOkcatRsmwhYdOK2xW2zkznH76fz6BA0ROVgOhKZ9ffarrGqbFLsxooZn8IpIPdI DzfzKkNRNS0FMEKCWlMmYZf7cacrony3+eRUVT7gYMZIDELEn6k7wFma6m0/f3V/L6 TTN0IOGqYg2LXeS/UHv/9cpovM+c/cDf1UjaZJ+fH7fEZoyhmQbTYedVKW/4Ka18dC o3ZfJfGMlHv0iRlmDL+blmnyZk0hrKrSFz+wRbQgWWS99pmwt7c2RGIcC3g/4ITiTp JJBok1bM5QAdN6E2+/lzdOzII25cnV6iTCdcUkObjAzUToD4InOLlmzg+x/KoDH5QO eXSn+ea1AtgyQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Christophe Leroy , Andrew Morton , Linus Torvalds , Sasha Levin Subject: [PATCH 4.19 39/41] selftests/vm: fix display of page size in map_hugetlb Date: Wed, 13 Mar 2024 13:04:33 -0400 Message-ID: <20240313170435.616724-40-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Christophe Leroy [ Upstream commit 1ec882fc81e3177faf055877310dbdb0c68eb7db ] The displayed size is in bytes while the text says it is in kB. Shift it by 10 to really display kBytes. Fixes: fa7b9a805c79 ("tools/selftest/vm: allow choosing mem size and page s= ize in map_hugetlb") Signed-off-by: Christophe Leroy Signed-off-by: Andrew Morton Cc: Link: https://lkml.kernel.org/r/e27481224564a93d14106e750de31189deaa8bc8.15= 98861977.git.christophe.leroy@csgroup.eu Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- tools/testing/selftests/vm/map_hugetlb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/vm/map_hugetlb.c b/tools/testing/selft= ests/vm/map_hugetlb.c index ab349c6db00d4..7b41cc6ecb0bf 100644 --- a/tools/testing/selftests/vm/map_hugetlb.c +++ b/tools/testing/selftests/vm/map_hugetlb.c @@ -90,7 +90,7 @@ int main(int argc, char **argv) } =20 if (shift) - printf("%u kB hugepages\n", 1 << shift); + printf("%u kB hugepages\n", 1 << (shift - 10)); else printf("Default size hugepages\n"); printf("Mapping %lu Mbytes\n", (unsigned long)length >> 20); --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F2689151126; Wed, 13 Mar 2024 17:05:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349525; cv=none; b=RSqofSm/z/ZuTUKogO7UDydHmBuiujDv/2XaD0+L74J+pNhCIdNCAmQxlG4EQO7Y4r1j7rFdb0ND9ITDvN6pvoAfsjfctjUchZWTHYsXOlq77B3oBhKJy7r9Bc6Hf1XoApuYp+yFGN83Zk2/FEX8Sn3vNURldnjDmGsKPaSHLlg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349525; c=relaxed/simple; bh=C0l9zfBD03qqUENYkRjOgyyKCuXIjG2HyK6nNyqrk+o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=k3kvhaMuY0TCsJ+6kclGbMz7CtQvyOxzUXkKajT3Y1ZZ1NURyxWaAWMU65saU+YjixgrB75xbUxfl83YAjRi6e5DFWA1tNESHfFAO6XapyKw5NX9mnKoJjTUTtk6dj7E8rO/V6Bv+3LIFveqvqjnikyimAHVaIvCL6eksoik7R4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BhiMiup8; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BhiMiup8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2C457C43394; Wed, 13 Mar 2024 17:05:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349523; bh=C0l9zfBD03qqUENYkRjOgyyKCuXIjG2HyK6nNyqrk+o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BhiMiup8Gp0lS0/qWP4DaP8GTdjLpfULgsp89gABClOVMpjOmbSNx4Ika169xX6q1 jbuELS1ckdH9mkVlYrxT/HY4+mDFC3pqfD6YR8qvUlvov+pnL8ux/CF+jc0+3chiWO gKxheJnpBS+jqQjtw3UG+EV9rstF2Q5KCRlPfLh2kjG7S01qeH2Rod+PYa6fWjLrVQ vY21UWQpRpYZv/iWeYUl55nRfd0g0TOem/eMVgJybmWNfxjj1LMuyBm9S46i3i5gbn I/aAHkvf3Y0NQvXOsZRWBxRFxdNs3FdyRT0jUvTFKXh8CEVsWoMr2asPblK9/F2ezf NMBQcURzNEfMg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Christophe Leroy , Andrew Morton , Leonardo Bras , Michael Ellerman , Shuah Khan , Linus Torvalds , Sasha Levin Subject: [PATCH 4.19 40/41] selftests/vm: fix map_hugetlb length used for testing read and write Date: Wed, 13 Mar 2024 13:04:34 -0400 Message-ID: <20240313170435.616724-41-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Christophe Leroy [ Upstream commit cabc30da10e677c67ab9a136b1478175734715c5 ] Commit fa7b9a805c79 ("tools/selftest/vm: allow choosing mem size and page size in map_hugetlb") added the possibility to change the size of memory mapped for the test, but left the read and write test using the default value. This is unnoticed when mapping a length greater than the default one, but segfaults otherwise. Fix read_bytes() and write_bytes() by giving them the real length. Also fix the call to munmap(). Fixes: fa7b9a805c79 ("tools/selftest/vm: allow choosing mem size and page s= ize in map_hugetlb") Signed-off-by: Christophe Leroy Signed-off-by: Andrew Morton Reviewed-by: Leonardo Bras Cc: Michael Ellerman Cc: Shuah Khan Cc: Link: http://lkml.kernel.org/r/9a404a13c871c4bd0ba9ede68f69a1225180dd7e.158= 0978385.git.christophe.leroy@c-s.fr Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- tools/testing/selftests/vm/map_hugetlb.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/vm/map_hugetlb.c b/tools/testing/selft= ests/vm/map_hugetlb.c index 7b41cc6ecb0bf..c65c55b7a789f 100644 --- a/tools/testing/selftests/vm/map_hugetlb.c +++ b/tools/testing/selftests/vm/map_hugetlb.c @@ -46,20 +46,20 @@ static void check_bytes(char *addr) printf("First hex is %x\n", *((unsigned int *)addr)); } =20 -static void write_bytes(char *addr) +static void write_bytes(char *addr, size_t length) { unsigned long i; =20 - for (i =3D 0; i < LENGTH; i++) + for (i =3D 0; i < length; i++) *(addr + i) =3D (char)i; } =20 -static int read_bytes(char *addr) +static int read_bytes(char *addr, size_t length) { unsigned long i; =20 check_bytes(addr); - for (i =3D 0; i < LENGTH; i++) + for (i =3D 0; i < length; i++) if (*(addr + i) !=3D (char)i) { printf("Mismatch at %lu\n", i); return 1; @@ -103,11 +103,11 @@ int main(int argc, char **argv) =20 printf("Returned address is %p\n", addr); check_bytes(addr); - write_bytes(addr); - ret =3D read_bytes(addr); + write_bytes(addr, length); + ret =3D read_bytes(addr, length); =20 /* munmap() length of MAP_HUGETLB memory must be hugepage aligned */ - if (munmap(addr, LENGTH)) { + if (munmap(addr, length)) { perror("munmap"); exit(1); } --=20 2.43.0 From nobody Fri Dec 19 02:50:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A73A76F01; Wed, 13 Mar 2024 17:05:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349524; cv=none; b=qBIYrGCOurb20n09tNmH6AuYx0EjbqhFIm2XCjlKo5mEKDs30Hlt778mw8yPRUavByiOEq+SjIxXpRFhEYfFemjqekJUdmWXc1hNFQ0xk3Vqptb0lnmOmgW3emc3qYp0Ww0lb6e9bX/DgIfd7rxyLjrZtQH4KiZqGqlD8UuooHY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349524; c=relaxed/simple; bh=8pPanzqmda9HQRheRwuL+iwvrL5EGjFgJRManGKVxic=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=onvYeGZwZBGV6FXHLno5/GqXcl9gXnC3Q7uakTJwtUhilsaMVwFvtXR//5iDJ5JHxLbmrtkUYS9hDNWZ1RdGYCUsxFHl1bb/hoHhDIKlBlkIw58VavE2ATTgBteH/tCfZsuC7LWCPWRD2YzEl/c+YMpoWebthjP77TlcBppjwkc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bZ2TFM26; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bZ2TFM26" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C60C6C433C7; Wed, 13 Mar 2024 17:05:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349524; bh=8pPanzqmda9HQRheRwuL+iwvrL5EGjFgJRManGKVxic=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bZ2TFM26jcdkz1k+lDAKfnmk9brZ4Lpfyq+Dz1YQzK0epOsSHT8wShOAu8L37tJE4 o5BVZbE3dFCltQBlmq1yhHuO64V7+4hAYBuqVwFSA3f2Riyp/rJgui/MJ4jYGIGNFo gm1kqvI0QtBWkDh1tGTPOe9HVKYUSHnmaRAi20+daEnmoe+yf/rmt+DmjPGzFqcIXa dc17s4qlMJiSFPsGUkX+1Hggqb3SuvKPGt5HUFMHoGXAGieOISPqtKZx3+Ktla0WEU Z0R3pCAcz2Q8Tomf1KvEoeC82eVEduDzXaPn6sguupNW07ToQeyLLk69+EwkxFb7z8 Sf1L5Zb8IVqkw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin Subject: [PATCH 4.19 41/41] Linux 4.19.310-rc1 Date: Wed, 13 Mar 2024 13:04:35 -0400 Message-ID: <20240313170435.616724-42-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170435.616724-1-sashal@kernel.org> References: <20240313170435.616724-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.310-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.310-rc1 X-KernelTest-Deadline: 2024-03-15T17:04+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sasha Levin Tested-by: Linux Kernel Functional Testing Tested-by: Pavel Machek (CIP) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 9648c95ee3201..2e45148cd10b2 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ # SPDX-License-Identifier: GPL-2.0 VERSION =3D 4 PATCHLEVEL =3D 19 -SUBLEVEL =3D 309 -EXTRAVERSION =3D +SUBLEVEL =3D 310 +EXTRAVERSION =3D -rc1 NAME =3D "People's Front" =20 # *DOCUMENTATION* --=20 2.43.0