From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ot1-f43.google.com (mail-ot1-f43.google.com [209.85.210.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E16E743DA53 for ; Wed, 17 Jun 2026 10:39:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781692793; cv=none; b=jpGCOJ8mD8u67Ma2h4c1HK4QNnOnIhuREdOSlYqqzECYJPDbWXAqSxqw4zuDmSpiTLb9Z4J8PyEManyyubZsQNjO3vqs/t188/MpIe7lb6q7qP4Vn9uIr/0iZ7Y1Rzikf6TKJwuGu3RH3FDzpP5HafjvvXFsttPO1eUclk7pWUg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781692793; c=relaxed/simple; bh=htOvcjZ4CsMmi1DdyvtItQNH5Qwzow/8A6rf+XMNKxE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=u3T9dkI9OFFuP3D5XF7ofqhuDszqYbkAafBG+dkyWBjCWTrZhPg3JIRaX0TQSKMpr+Kcus5/xFjT+iGqvPR+9fAqhjJI5HRgyYS/YH3m3fB71k6LdbmoEodW3Ij+5eaxS3gANEAKEry6EVlfo1OKk+XWNFym2vAhJixsWDPg1rE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TbOgSs1j; arc=none smtp.client-ip=209.85.210.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TbOgSs1j" Received: by mail-ot1-f43.google.com with SMTP id 46e09a7af769-7e6f8f26d66so500461a34.1 for ; Wed, 17 Jun 2026 03:39:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781692791; x=1782297591; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=8FUq+t1MD6e0BapUC7ZG/YO+GJ1PMmP2ipHDCZaaljU=; b=TbOgSs1jJHc34rWX+WntOrRqBVfK8VluOem6uoYtMu+kDgRYdE0rQuHhTfEzMKU+om i6mQkrl8gvNS2Yy87Yphcam5i1nh0pf0eOEy2A3cHfgKNhmr22611AAy2FxPnfRJkVEa /+c1aQYefoMdT/COpNuHXeaCQOPaMtD75Pq1UNlkPpqeIm7K5Xoo7EanlHwXXq3ENbGF sO1Ps78PdMHJ3q4NyJ5E981xYDg08fIFalFwEqSUbS9v3wdau7XpOqugTfGkJLVsHcQd uRa9VJaRtQW1kcH40IZefk4umCrc/dZcgmw6wF1lD55KufU66/J/RX/tUIXKkpEYT0K1 LhSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781692791; x=1782297591; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8FUq+t1MD6e0BapUC7ZG/YO+GJ1PMmP2ipHDCZaaljU=; b=KNNUvEzye7fbMMNVnxtE80orgwWiqN7CYoqFav/eSsQBeMhVLUS4ZfCXKYr38xBB+T 88esoV7pzkrQzP5VfPZjV7UXvhqiHuKflJ99Ou2R9OzOFJJrdnz4megQR2Y0Cl3Hfn0U gdzCnVu/h9i4jc3gWNheMo2xWPuMtHqmY7g0gq1wkt5SIKsoP0Axaf0b6q2dwuMvXqAN MnsA3muxFdjS6WQ5kuSfm2yedNSEWgRNHUwUzEgIrUJXu461BVfgfjq6h/VfT3Nhx4ro a53VYc52SacQ08rovGBgkI8eY2x7mp4KdMavoKf5yKTFK/iGVGLaPMgtNT3+ma/RDZUN Tr4w== X-Forwarded-Encrypted: i=1; AFNElJ+4DQrmlVUw3f4U/DkDSQvuCFEgQE1tniig9UNKz3Eq0xp9fQ4qtPlEW7zt0cFekxbH7xyF17XNzh/WBKo=@vger.kernel.org X-Gm-Message-State: AOJu0YwLrXaJRZwpph8AZCFsPl+ze6Uz5nlxc9No4Qf0DLeJ8LTJwLWb QXPdo9ZCyAEf04WgRvwWZ7GJRZ1OtcOX/qR5nbW6aoExynOARY3Fyqci X-Gm-Gg: Acq92OH15IvVZcKKTr/uW65AbnSnGWrZLzZBO6YdNSHbIdoxIow66ZlnCl1c2DLmjgI D8ca0zXhyPH3wY4+iXN1c6b2/BF0TIqiisZdLc6hjvhDEUs/qGjlsZtEx6U9I0J3i0y+NhUsnSI zJkp206u6ENQsNNqUObMMzqtW3Jk21NutJaBlFDJjomunWI2GdhdN3d54wiNCXVzEqIY4/28ipx lsjnh4DuqgWnfGHfUvuawheCk99HFkz2ULvFGX6tP92FJxuhYuR2U+TFPbYUtoRhnOF3V3NBIbT c3KD6VUhnH6StWpmiuUJ2C4ce9eY6k+rvYn5QoBFjv8xqZZUgjL9OQAq5lSfybcLyh+fTcOFn4s Fx/5n2ZCZldh01rbhy2DMVVYPg2MEbVfZII0CYe2Bw5t5sZER4Yc3FucUuGNpVuZeSJkwxDu1Ew OBXLCXVE9+4w== X-Received: by 2002:a05:6820:290d:b0:69e:88f3:14ac with SMTP id 006d021491bc7-6a0b7af38dfmr1503581eaf.18.1781692790790; Wed, 17 Jun 2026 03:39:50 -0700 (PDT) Received: from localhost ([2a03:2880:10ff:54::]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-443090386basm4047202fac.17.2026.06.17.03.39.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 03:39:49 -0700 (PDT) From: Daniel Zahka Date: Wed, 17 Jun 2026 03:39:49 -0700 Subject: [PATCH net] eth: fbnic: take netif_addr_lock_bh() around rx mode address programming 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" Content-Transfer-Encoding: 7bit Message-Id: <20260617-linux-fbnic-hwaddr-v1-1-3f9f5dee7f99@gmail.com> X-B4-Tracking: v=1; b=H4sIAHR5MmoC/x3MTQqEMAxA4atI1gZsC1XmKjILTVMNSEba8QfEu 1tcfov3LsichDN8qgsS75LlpwWmroDmQSdGCcVgG+sbbzwuotuJcVQhnI8hhISRO0dErSXjoIR r4ijnO+1B+Q/f+34A1Z+3CmkAAAA= To: Alexander Duyck , Jakub Kicinski , kernel-team@meta.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Sanman Pradhan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 When __fbnic_set_rx_mode() is called from contexts other than .ndo_set_rx_mode_async(), the uc and mc addr lists are accessed without the addr lock that __hw_addr_sync_dev() and __hw_addr_unsync_dev() require. Wrap these unprotected accesses with netif_addr_lock_bh(). fbnic_clear_rx_mode() has similar issues. Fixes: eb690ef8d1c2 ("eth: fbnic: Add L2 address programming") Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Daniel Zahka --- drivers/net/ethernet/meta/fbnic/fbnic_netdev.c | 7 ++++++- drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 4 ++++ drivers/net/ethernet/meta/fbnic/fbnic_rpc.c | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_netdev.c b/drivers/net/ethernet/meta/fbnic/fbnic_netdev.c index 4dea2bb58d2f..44c046b25312 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_netdev.c +++ b/drivers/net/ethernet/meta/fbnic/fbnic_netdev.c @@ -262,8 +262,11 @@ static int fbnic_set_mac(struct net_device *netdev, void *p) eth_hw_addr_set(netdev, addr->sa_data); - if (netif_running(netdev)) + if (netif_running(netdev)) { + netif_addr_lock_bh(netdev); __fbnic_set_rx_mode(fbn->fbd, &netdev->uc, &netdev->mc); + netif_addr_unlock_bh(netdev); + } return 0; } @@ -308,8 +311,10 @@ void fbnic_clear_rx_mode(struct fbnic_dev *fbd) /* Write updates to hardware */ fbnic_write_macda(fbd); + netif_addr_lock_bh(netdev); __dev_uc_unsync(netdev, NULL); __dev_mc_unsync(netdev, NULL); + netif_addr_unlock_bh(netdev); } static int fbnic_hwtstamp_get(struct net_device *netdev, diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_pci.c b/drivers/net/ethernet/meta/fbnic/fbnic_pci.c index 7e85b480203c..8b9bc9e8ea56 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_pci.c +++ b/drivers/net/ethernet/meta/fbnic/fbnic_pci.c @@ -135,7 +135,9 @@ void fbnic_up(struct fbnic_net *fbn) fbnic_rss_reinit_hw(fbn->fbd, fbn); + netif_addr_lock_bh(fbn->netdev); __fbnic_set_rx_mode(fbn->fbd, &fbn->netdev->uc, &fbn->netdev->mc); + netif_addr_unlock_bh(fbn->netdev); /* Enable Tx/Rx processing */ fbnic_napi_enable(fbn); @@ -180,7 +182,9 @@ static int fbnic_fw_config_after_crash(struct fbnic_dev *fbd) } fbnic_rpc_reset_valid_entries(fbd); + netif_addr_lock_bh(fbd->netdev); __fbnic_set_rx_mode(fbd, &fbd->netdev->uc, &fbd->netdev->mc); + netif_addr_unlock_bh(fbd->netdev); return 0; } diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_rpc.c b/drivers/net/ethernet/meta/fbnic/fbnic_rpc.c index fe95b6f69646..bc0f38b6a2b2 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_rpc.c +++ b/drivers/net/ethernet/meta/fbnic/fbnic_rpc.c @@ -244,7 +244,9 @@ void fbnic_bmc_rpc_check(struct fbnic_dev *fbd) if (fbd->fw_cap.need_bmc_tcam_reinit) { fbnic_bmc_rpc_init(fbd); + netif_addr_lock_bh(fbd->netdev); __fbnic_set_rx_mode(fbd, &fbd->netdev->uc, &fbd->netdev->mc); + netif_addr_unlock_bh(fbd->netdev); fbd->fw_cap.need_bmc_tcam_reinit = false; } --- base-commit: 406e8a651a7b854c41fecd5117bb282b3a6c2c6b change-id: 20260616-linux-fbnic-hwaddr-fe83ccc72c13 Best regards, -- Daniel Zahka