From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (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 1190B41D134 for ; Wed, 22 Jul 2026 15:51:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784735514; cv=none; b=hxo0XubbrLaNzJYhy3VrGShq86i4YGnUx0rLVoxUh/xqHdIXvmOrwcbWn9aWEQUUl3etakJN8404qoeQdXPjBtAlrPOsM4p8mHUHoYt0P1zo/QSMvlmbDjxPOdVZjtxIw1aK379kz4Xr114djpfpCshci4rNFmHR0acOu0mYvrw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784735514; c=relaxed/simple; bh=cTQoP0lWlAxfFS21VMcXcV5AqjPUsdSmGaP2HtEb0nM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=s22cIFsXPW3KAiX5ug87MdPoE73zibOfYtURDr0zIEgvuAJObs60njGjn4wugVsMwSmd9m1WcRqn4NsUKWmo7Z/RRDK4y+2v4VcN8VqJVf800Kg+xlxhRlh+zLv0fJik2Pv5jfZQZq/5Ftf6GH4pTjKbk23RXSjqCNh3sRCTYj0= 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=g8Z1RWkF; arc=none smtp.client-ip=209.85.214.178 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="g8Z1RWkF" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2ca64c3ce5fso144971595ad.3 for ; Wed, 22 Jul 2026 08:51:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784735511; x=1785340311; 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=g8Z1RWkFOiht2zK58jdP0GYPqXNst5miiQeltDBRxLzvareVhEVri7K8RRJpIw3vx1 EwZ5awsB6HFh4ixUNjK2cRQtduiuGDaI2FLMu1HJljawjEaZSc27djqsmuOdhyyg065y aREuMStiBGPdoE0TWyzcqISdUXxLUOg26OIATYS41l2CM6otaI7gX9VqBXy/wNOpmpXE MDioWLz3uh3U8+N2Zz5V8p3L9jf5wBoj9aQWrYsOQe8PhHrOFfwOz3yat2sgNsJikN/4 3UVVZgYuujconBfVvoYwzDoUlXQ3xbbGFpeDzVmSP0HM7UD/UxHEyr47fmJcltPDvbEZ 9zbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784735511; x=1785340311; 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=C3VxXLGnIQ/BB/0SHtJ57Wc3J+XsnnAR7DlbPvUGrRMzhqVC4/lihloq3hryZQXq2U Tjz/0uMLz41yhTMHNuQpvALvy6fwCbyG9ici0Q9ONo2p6Qsg64K/hoca0A0KeuquTBLq Ww2Y6XVmTNf68tHRFsEooRqL8Fcbgl1Wf9AnzU2wRUILas3LXrY2+c7GC6FWK10F8kg3 TnQAofq43NXvErYUUdwwkRF9qo9mMfB0YLG4SNSSjDH/H2gbygNYaVUxWCfioyTWVsW4 e+ORXhO5s4Nh0nkRZ2606JQiC23S8ICQvIppETMt9DnsU5KA3agnlj1ihuZj/Sur1N14 Mv2g== X-Forwarded-Encrypted: i=1; AHgh+Rqr0tN2NHhW9TRFC6jTKK0cU3m18L0obBLwBF73k9sMDUKOE4+p1UqofCYLV+T5yzfeiWR1sr0y0z/sBB8=@vger.kernel.org X-Gm-Message-State: AOJu0Yz17rQlYgYxlNneSZ0m3vSDKsTW6W0sCcKnUMCzjxF6pD6IiVPl i+KZR0QjMuc5BllQ4/lr2MbJNuZGXNAnV0TULUBxLI5sUwNsQ62V4VVh X-Gm-Gg: AR+sD13I83RQSuwfWNsIeCA3/T+IqORpc5qAj586FsVqr2vp0STZctb/Mihj/03D59V IzQ9NLfuPHArcgp6h9KSWL8fyiaxvwhPHGjSjNqB5os7MfeSZCqtBKjsjIlWSAVUDcFsrVIRw1m mjzuontTzXdue0AVcizmMe+grM5UqvcAa0dVpdWhSUeI+70HdomAnLTdlShElcwCwy58rXCJewk rS3wFkO2SXfI7ZFQjWQRo2ZwQQU5HVoDCV0pX+FWeFLjQL20kI7d3kRoP12UP0wtL5x8NNmQeqN Lzddb4p6ntgC3J6rSdCU2pCZVpQlOLdBZ9sd8mJt2CYN8IrasctRMwaNIm+7VBERykk35+xvjLo ddqi1cz1fQZIJTIdV7gGku9stt2wXe+ROPJUBw2pyNLmh6ipsxH1i1SSEz1l+j5na/5UdzJTNJ2 vZctWSSyyoODp7gLPcOQTx3lVZN00= X-Received: by 2002:a17:903:13c6:b0:2ce:b096:e517 with SMTP id d9443c01a7336-2cf3489548bmr257323065ad.5.1784735511158; Wed, 22 Jul 2026 08:51:51 -0700 (PDT) Received: from csl-conti-dell7858.ntu.edu.sg ([155.69.195.57]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147df097e0sm11123125eec.17.2026.07.22.08.51.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 08:51:50 -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 , Simon Horman , Guangshuo Li , David Carlier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v6 3/4] octeon_ep_vf: Fix RX page leak on napi_build_skb() failure Date: Wed, 22 Jul 2026 23:51:30 +0800 Message-Id: <20260722155131.2017597-4-maoyixie.tju@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260722155131.2017597-1-maoyixie.tju@gmail.com> References: <20260722155131.2017597-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