From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 563B3345751 for ; Thu, 16 Jul 2026 06:34:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784183688; cv=none; b=ZxZs+VT1P42YIkM7GSwqa1iywu1DCTOZ5TCeZXqZkRtAV2MBfudUtyBnq0LvcCmwr23U0pjAefgE0GG3SrBv4lzyAWndv+CgPSk6X5O7uoWHhQLO1DTkwUzqOW4mQoGi29931XRnsAvuaf2FMoZk5zUFKL2o+Eal48GfB09v3Jc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784183688; c=relaxed/simple; bh=cTQoP0lWlAxfFS21VMcXcV5AqjPUsdSmGaP2HtEb0nM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=a9JunnIR6WwYvScOXK6YCMvXH2AeS+CG/psOw9Rd8MLquZO5IFUJB8cRr8Z981p4gdb6SsGwdlorqarggsuIVd7aEFuAJT1rVzhocxJpUQh9P6/xdgTzrWe2Oyb0iDCvXQNzeX6t91VatDdYk7l++93kQ8VWYijE+8x6jZZs8fU= 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=ec972UkW; arc=none smtp.client-ip=209.85.210.171 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="ec972UkW" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-8486ac3f347so215232b3a.1 for ; Wed, 15 Jul 2026 23:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784183687; x=1784788487; 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:content-type; bh=SAC+WsEZ64mnrQj0pnVENutWORk+53oxQVLeMc2X3SA=; b=ec972UkWOzctDho/p8NFJV00QvG+UYuw+HgQOFyD3+kG6ywBNDM7Uk0jN1aMZ3LgiQ dFd6kRMaudmlFAfHIte7TJB6y4aEyO+vVN2IbxeRQBOolYOykKGoneAjxCOV+1211fLf QX1Th/5teYVviEsLycxIa4gDQgXEv2BppPDf7GW8jcqFxnsLiWkm4+tDyg9bhEGpiVFQ 24jEEmlxVFkQfWQW5OCqPraC4Q1MVIyI69Xf+tBamonxTk3+3CYsmZtLkndACrcrktV4 FhJgKLjFkgfowbJ78+e2NrqOwrK15AYgjca1nN1mVvEufM625wlsYt2+Vg0g3DbnxQ9n D5jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784183687; x=1784788487; 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:content-type; bh=SAC+WsEZ64mnrQj0pnVENutWORk+53oxQVLeMc2X3SA=; b=aKpO1nWvl98fmOkDUuZgw2dUsFhjhsp5rJYxCD7ONrkqvwp1DTg8UTfMU01XFMrano E+sCRIOk5p5Rm4e6HewnpG86CFCiMn8V2SqtG1rFI5ZLuKuuet8YITVyM/xH0NxZrgDx 8wKok6Szl1KDMGPd8KbNhEOMeE3xXwfDw+zzkzNsYwoXKVy54dK6L2SJeICBkfNomzLP 2TkISyZinDNvYbb4sxhe06IsGRpauSwzzCnWhdj/HzpM7dGO+aUUgghmwWTdcEzCRDAX QlywLUfJis5HDFNGzG6y7QM62/bufq0e5PbC8wMqta29V+3sLbpnPhMvh1YjtLRE0aOK TwkQ== X-Forwarded-Encrypted: i=1; AHgh+RqhPzVLpduA9vshyRhUJ+eVCUPVj52UaOkUZTRMRsg3HLYG9UYHxFbhb8Y1mYmFDdv7HVtZE3SIqX3Eb0s=@vger.kernel.org X-Gm-Message-State: AOJu0YwDxjtVL49Gej+UnYTcv3S/6WvfNIpZIcX943cfpd7suUlcBZSK ZbcuIy/AbZyi1sF5vlxBY8rPz6mnTfFCDEkbl3O1WkSfaoqPfxjB99JR X-Gm-Gg: AfdE7cnLbJbbHHgOHKnI3fOideeyl/37MNnGKXNz+s6R9H/Fe4SEhpJ+i0Cq775hUM5 8cnhlKmlqOgN2ZPf8Fid0IawrD6h/h76EjUwPp+3J3DMWzIRzHxWKIyvaqAKM8dtmFQCXSUzFFn FA9N0hcsy9+wuS3eNWWwSazoQCocwSLqH8f14boFS3mkEg2RieAPJhLZ5O9rXuWSvWS67jItyVv u30D7wqacQJVR/DbLS8fts67JtDHWbVg2kaIeSpvXfY73a+1K2gvpm26SVC/htwUVVrAGzl6TWJ 9wx59oGakEASEoHyhdzIYT3rqLKwU4T3Z2B5qmrmb12WX/s88NhLZ+/AaZmZSgIh6I8T2RdaWN4 aLNi/fWMxSx2l5dAQLYaeSvyWR0U3um6ZCmwK5wkeM9ApTcJHzHuivFbS/K2ZytOCpOi7rI5M0g FKGFtlc8+4VOuLN4nK58q5p25FwFM= X-Received: by 2002:a05:6a00:1250:b0:84a:32ba:a262 with SMTP id d2e1a72fcca58-84beb05714cmr1199736b3a.7.1784183686611; Wed, 15 Jul 2026 23:34:46 -0700 (PDT) Received: from csl-conti-dell7858.ntu.edu.sg ([155.69.195.57]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a4f7dadcfsm4242172b3a.48.2026.07.15.23.34.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2026 23:34:46 -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 , Simon Horman , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v5 2/3] octeon_ep_vf: Fix RX page leak on napi_build_skb() failure Date: Thu, 16 Jul 2026 14:34:31 +0800 Message-Id: <20260716063432.2908100-3-maoyixie.tju@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260716063432.2908100-1-maoyixie.tju@gmail.com> References: <20260716063432.2908100-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