From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f73.google.com (mail-dl1-f73.google.com [74.125.82.73]) (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 D106023B612 for ; Wed, 7 Jan 2026 01:05:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767747917; cv=none; b=FhWtCX8ULoTa+FwpQvRgfGi4Ve1L4cGMN0kqUXZr1G24HKWvUe78vA7aLkegvrkxt9IuppXJinOUQY3O/Ndz37viwYz4SUEN2qHKkQTHh8TtDl6QJf61rps6Czvs27/nIjJWxdZZV6axXE9oNSWrGgFqpdIQwG3BDZcY08hHjis= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767747917; c=relaxed/simple; bh=tkLJE6mxW9kD6LFeLnXQRH+Qpbe3qoEP5gnI/ETjkYU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=R4rk3v+mzp/xmqgtfHG/ydBaqgJkvr9Mhb185r064SKwdqqly7Pn48+zo8jsIIfLi86p/22L9Yac815aEbpFC8JKkMMrwt9QVKrSRJxtTm6cfwLYbCRSXruSKU8q8Nqkm7Iqsmu9+rNy5ahn4yPck6psbzJqDqPo4RXgYGYqAa0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--boolli.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ngMkZEva; arc=none smtp.client-ip=74.125.82.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--boolli.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ngMkZEva" Received: by mail-dl1-f73.google.com with SMTP id a92af1059eb24-119db038ee3so324520c88.1 for ; Tue, 06 Jan 2026 17:05:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1767747914; x=1768352714; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=DVMU6yQcsBfSJN4wWGFbhK9cF/Gmku+mF1OJ5kiuDgE=; b=ngMkZEvaoOJeqICN8hRXap/kBc1i4Bz/RtrQUWwJdzGQimL8qZkqbgldFklLrGbZOd RrOT4NvbDjbqvH6Rz5J3GBKddRa34QnwvyyGeZC2Q/Hk4rTnr5WmGaLQj6mqZkxUHbrB Bq6g1sCjixw0CP+5TgErbCF9HrC6bUoiYwa8xUTH27Dvywa8KBh+MXOeHRRcWxQZIEwD qkWTjcUoe8mVEJ5XOf9K1STmMNJiUQ8wTkA57XBT8FncoQSFi3hwnefeo2RYQyylOqNC SmLBb/HRW79dP25b27/yDUzCYpYGvb/ufceAc7N5z4v8rDLJL85nFq3w+x76+c1vL+Fw oXHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767747914; x=1768352714; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=DVMU6yQcsBfSJN4wWGFbhK9cF/Gmku+mF1OJ5kiuDgE=; b=G+wZjeyhXcgx4AorvAtgxTAu3254CdgdCVIDDHIvJ/sOhCWyEDpsH2V1tu+x7CG0i+ dV52+e1nVEMcmXyNmxcwqYw2MqC60bgYKsPDVRX1yWUkB64kZrqdqaasIYXRYNl7eojR 1MgxHmjei54bwrm5XS+zs2yrXMFQ2LTHGWa7eUKihSAsy7kx/HMWCdDmr0qlqeUfrdOx EJj14LwtXOjLv1ogZ8QOBRBqjeMjFWJbpaEIVHNgIuApoggMIkk/ZxoL4Sk3qcMW11Iv kUPwyVTh8WL0yHLOTkK1CC/cukwsyzMM0jBGZEZYTjZJSZnOe0WXp7WM731RXvF/cIql F5BQ== X-Forwarded-Encrypted: i=1; AJvYcCWJulZ43UJJwmvSOj/idP12qka22zcPuIoubRYNPqIv3GBE2znohRFa02B4YHy2IoURbwrd00kKCcPc0CE=@vger.kernel.org X-Gm-Message-State: AOJu0YyOnxW7uF83/lyR9nfyVkwEWOWgDT+rNivfqGljV13zvwlnN6Du YxG+JoA5dzdsOsuRLvYbskekBjR+w0nePxEw6YDkqyyVvdTKC2AfEbbMhbNpJUBRGi69kuw94ry wyd5rRg== X-Google-Smtp-Source: AGHT+IEimtIxB0kDVopi3uqHoc0Swa3Du9lb+RqD1lMp8iOBNaJDFMF2YObFUEkWmzhx8yWtOHWSy33uHcg= X-Received: from dlbcm23.prod.google.com ([2002:a05:7022:6897:b0:11b:1a9a:d2e8]) (user=boolli job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:249f:b0:11e:3e9:3e90 with SMTP id a92af1059eb24-121f866f776mr891858c88.25.1767747913845; Tue, 06 Jan 2026 17:05:13 -0800 (PST) Date: Wed, 7 Jan 2026 01:05:00 +0000 In-Reply-To: <20260107010503.2242163-1-boolli@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260107010503.2242163-1-boolli@google.com> X-Mailer: git-send-email 2.52.0.351.gbe84eed79e-goog Message-ID: <20260107010503.2242163-2-boolli@google.com> Subject: [PATCH 2/5] idpf: skip changing MTU if vport is NULL during HW reset From: Li Li To: Tony Nguyen , Przemek Kitszel , "David S. Miller" , Jakub Kicinski , Eric Dumazet , intel-wired-lan@lists.osuosl.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, David Decotigny , Anjali Singhai , Sridhar Samudrala , Brian Vazquez , Li Li , emil.s.tantilov@intel.com Content-Type: text/plain; charset="UTF-8" When an idpf HW reset is triggered, it clears the vport but does not clear the netdev held by vport: // In idpf_vport_dealloc() called by idpf_init_hard_reset(), // idpf_init_hard_reset() sets IDPF_HR_RESET_IN_PROG, so // idpf_decfg_netdev() doesn't get called. if (!test_bit(IDPF_HR_RESET_IN_PROG, adapter->flags)) idpf_decfg_netdev(vport); // idpf_decfg_netdev() would clear netdev but it isn't called: unregister_netdev(vport->netdev); free_netdev(vport->netdev); vport->netdev = NULL; // Later in idpf_init_hard_reset(), the vport is cleared: kfree(adapter->vports); adapter->vports = NULL; During an idpf HW reset, when userspace changes the MTU of the netdev, the vport associated with the netdev is NULL, and so a kernel panic would happen: [ 2081.955742] BUG: kernel NULL pointer dereference, address: 0000000000000068 ... [ 2082.002739] RIP: 0010:idpf_initiate_soft_reset+0x19/0x190 This can be reproduced reliably by injecting a TX timeout to cause an idpf HW reset, and injecting a virtchnl error to cause the HW reset to fail and retry, while changing the MTU of the netdev in userspace. With this patch applied, we see the following error but no kernel panics anymore: [ 304.291346] idpf 0000:05:00.0 eth1: mtu not changed due to no vport innetdev RTNETLINK answers: Bad address Signed-off-by: Li Li --- drivers/net/ethernet/intel/idpf/idpf_lib.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c index 57b8b3fd9124c..53b31989722a7 100644 --- a/drivers/net/ethernet/intel/idpf/idpf_lib.c +++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c @@ -2328,11 +2327,17 @@ static int idpf_change_mtu(struct net_device *netdev, int new_mtu) idpf_vport_ctrl_lock(netdev); vport = idpf_netdev_to_vport(netdev); + if (!vport) { + netdev_err(netdev, "mtu not changed due to no vport in netdev\n"); + err = -EFAULT; + goto unlock; + } WRITE_ONCE(netdev->mtu, new_mtu); err = idpf_initiate_soft_reset(vport, IDPF_SR_MTU_CHANGE); +unlock: idpf_vport_ctrl_unlock(netdev); return err; -- 2.52.0.351.gbe84eed79e-goog