From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 62F3F376465 for ; Mon, 6 Jul 2026 15:02:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783350151; cv=none; b=nAysbDzTzykDOdmLBWHdT6nDPkzzgsQ8aw+5yKZVZA1oLvU8YaVbdV6iObc9BBe84qAS9O9Ox27grkpt6evakMf953iCEhSvfIxKa3q5MXtgHIJRYpwgKQFSwMWMlH3PRiEQHZk08L1HNcOoGtSiRz0zQIDxeltIUSRkB2ZNi+k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783350151; c=relaxed/simple; bh=cTQoP0lWlAxfFS21VMcXcV5AqjPUsdSmGaP2HtEb0nM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZW+PLpdjWK4lZw0OLCVnavtO6mGsXu1X8AlRrwWQCFqgrV/RANOSF32UF1jEv8v9xzbsHgVIB2tYxNEkt2HEnCUoKFVXcaFE/4c1SQosch++xmb7LTI1UaavfR/NtU+nkDSt1YhaBeJ1ZpvduaTTzP1B4TrnTaA+fF/9LkE2IVg= 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=mlRMMhFu; arc=none smtp.client-ip=209.85.214.173 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="mlRMMhFu" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2cc891373e0so12701615ad.2 for ; Mon, 06 Jul 2026 08:02:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783350150; x=1783954950; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SAC+WsEZ64mnrQj0pnVENutWORk+53oxQVLeMc2X3SA=; b=mlRMMhFuKfaeqOFkf0+zmm2W1xTuWYLksErrHvdS5W41hm4ITOBG3r198HwEnnfZxD arJJZuWmfBhmgz/OIc4phrZGRidcZl4lw2KH6VjeNRyE1YPxtHN5lxkYTGgCY0oYBFYk 1DYPFG+p612IadOlKuV9xh9gwfTG+QaEIamoSewzMgvUyacYizchcdfoo3gd6EVb8UmL vkskIs2xLula2Utcdue37oSnkUqBNt2MUHGA/M1LwVsB12438F72YiOJdCoiERU9drOB WJyrf3D1gVZ3oqJIAazZm4wPh+Kr7Ng3l/Y2CaICbiHSAdlPm4+srK/h3yh3XzUylL5r jqKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783350150; x=1783954950; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SAC+WsEZ64mnrQj0pnVENutWORk+53oxQVLeMc2X3SA=; b=d5jAVp3ohmDHRywYIH1+47sHKvjnltivfnwef1yFsUNe1Mmk2SgA19baVy68TNWsPg X/n9QjevGi3c12DCQbebCukfiyMA1dIaX0hq+YGGPXVk2s9Dc+0DHLZfKrxZEm6M/AcM /FmSo1dMXtLVDWJp9kASDGRxVgeMGMG4rv6zAF4iUrXwhmvphcmVNolZo+ZwCYTdgzNB MJDLYk69uNmBn2hZbCl1HGtGIa4L0F2DvSknUFaTKuf/Ar5Dqlq+qigE7ubEqjIjDjIL qOpGFlDDy/Hc2dodlUR/OU4KKfYsZanEV5V+HrVOvzkTUyfcgDrAV/CkzO0hFuMrJC1W H/dA== X-Forwarded-Encrypted: i=1; AHgh+RpSGmmmSfHQqqVVJ3kdYpof8tLbYQ+cftnLC54UJuocs14X4ESfPbtmu+6O9w11DNkjC/vhUhLgjFSUPAc=@vger.kernel.org X-Gm-Message-State: AOJu0Yzjm2yNnBKQhW3erN9x+/+eUqkMlEIuHPEAqeFbuj+V64w9nMXr W5aJ6HOQ0+Ce6uQnGv/X750eIswBlwXzSschbB3F2IpAU8vnzrf0qYfP X-Gm-Gg: AfdE7cl26pfz2vC+dqZCBpCbulJA7dQefYJmO77CIMAa9t2C9PBQG4nghY2J4QkbTDm XNPNwpHLRubqXoDK3S7gJF+LCfJVNWgaMPA9CoH65B/9RKOUVIWAgLdp0/Wvvotl3Aj/c6vYjqK k0SR62ZVHiE9zChGPf6TR+608bY8nYIZuVxQaRluLBb5vRxjtPnR9cg/qpVaGJNd+PGvEXrXSGs tvbzWyNwLVP6HjOkfmEvMR02pNCkSKYBLbydbaT+GwRk0c8W0Gl4cBi2wD4V2MSoFHIiPk9LXsf WoCRUDWVyKDDx1zVZW3GHN+JPSmXLppm5m5JIWgPGT8nP1LeAPUTyqe/O37srYmYTYNDJSBjX1n X2YxKiZNl3Z50XqYfq2e6jcfFkUuxFgrKIL7Eh5iSC9teU1dltGflqrH+cJtw/lD9FXos8TWVlx L0wrWYzD6AA2YW+waJd0NH00IaAzrpJOa2pfgHOQ== X-Received: by 2002:a17:903:4b46:b0:2ca:d818:61e5 with SMTP id d9443c01a7336-2ccbed27acamr13150385ad.26.1783350148537; Mon, 06 Jul 2026 08:02:28 -0700 (PDT) Received: from csl-conti-dell7858.ntu.edu.sg ([155.69.195.57]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cb3f5b7090sm41651765ad.26.2026.07.06.08.02.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 08:02:27 -0700 (PDT) From: Maoyi Xie To: Veerasenareddy Burru , Sathesh Edara , Satananda Burla , Shinas Rasheed Cc: Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Maciej Fijalkowski , Guangshuo Li , David Carlier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v4 2/3] octeon_ep_vf: Fix RX page leak on napi_build_skb() failure Date: Mon, 6 Jul 2026 23:02:07 +0800 Message-Id: <20260706150208.2944898-3-maoyixie.tju@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260706150208.2944898-1-maoyixie.tju@gmail.com> References: <20260706150208.2944898-1-maoyixie.tju@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Guangshuo Li __octep_vf_oq_process_rx() clears buff_info->page before building an skb from the RX page. On the success path the page is consumed by the skb, either as the skb head or as an RX fragment. If napi_build_skb() fails, however, the page is not consumed by an skb. The error path advances the descriptor and leaves the ring slot cleared, so the page is no longer tracked and is leaked. In the multi-fragment case, the remaining fragment pages are also unmapped and removed from their ring slots without being released. Release the head page when napi_build_skb() fails, and release each remaining fragment page before clearing its ring slot. Fixes: dd66b4285470 ("octeon_ep_vf: add NULL check for napi_build_skb()") Signed-off-by: Guangshuo Li --- drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c b/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c index d982474082..302559b16b 100644 --- a/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c +++ b/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c @@ -418,6 +418,7 @@ static int __octep_vf_oq_process_rx(struct octep_vf_device *oct, skb = napi_build_skb((void *)resp_hw, PAGE_SIZE); if (!skb) { oq->stats->alloc_failures++; + put_page(virt_to_page(resp_hw)); desc_used++; read_idx = octep_vf_oq_next_idx(oq, read_idx); continue; @@ -434,6 +435,7 @@ static int __octep_vf_oq_process_rx(struct octep_vf_device *oct, skb = napi_build_skb((void *)resp_hw, PAGE_SIZE); if (!skb) { oq->stats->alloc_failures++; + put_page(virt_to_page(resp_hw)); desc_used++; read_idx = octep_vf_oq_next_idx(oq, read_idx); data_len = buff_info->len - oq->max_single_buffer_size; @@ -442,6 +444,7 @@ static int __octep_vf_oq_process_rx(struct octep_vf_device *oct, PAGE_SIZE, DMA_FROM_DEVICE); buff_info = (struct octep_vf_rx_buffer *) &oq->buff_info[read_idx]; + put_page(buff_info->page); buff_info->page = NULL; if (data_len < oq->buffer_size) data_len = 0; -- 2.34.1