linux-hyperv.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next, 0/2] Update coding style and check alloc_frag
@ 2023-04-21 17:06 Haiyang Zhang
  2023-04-21 17:06 ` [PATCH net-next, 1/2] net: mana: Rename mana_refill_rxoob and remove some empty lines Haiyang Zhang
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Haiyang Zhang @ 2023-04-21 17:06 UTC (permalink / raw)
  To: linux-hyperv, netdev
  Cc: haiyangz, decui, kys, paulros, olaf, vkuznets, davem, wei.liu,
	edumazet, kuba, pabeni, leon, longli, ssengar, linux-rdma, daniel,
	john.fastabend, bpf, ast, sharmaajay, hawk, linux-kernel

Follow up patches for the jumbo frame support.

As suggested by Jakub Kicinski, update coding style, and check napi_alloc_frag
for possible fallback to single pages.

Haiyang Zhang (2):
  net: mana: Rename mana_refill_rxoob and remove some empty lines
  net: mana: Check if netdev/napi_alloc_frag returns single page

 drivers/net/ethernet/microsoft/mana/mana_en.c | 24 ++++++++++++++-----
 1 file changed, 18 insertions(+), 6 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net-next, 1/2] net: mana: Rename mana_refill_rxoob and remove some empty lines
  2023-04-21 17:06 [PATCH net-next, 0/2] Update coding style and check alloc_frag Haiyang Zhang
@ 2023-04-21 17:06 ` Haiyang Zhang
  2023-04-21 17:06 ` [PATCH net-next, 2/2] net: mana: Check if netdev/napi_alloc_frag returns single page Haiyang Zhang
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Haiyang Zhang @ 2023-04-21 17:06 UTC (permalink / raw)
  To: linux-hyperv, netdev
  Cc: haiyangz, decui, kys, paulros, olaf, vkuznets, davem, wei.liu,
	edumazet, kuba, pabeni, leon, longli, ssengar, linux-rdma, daniel,
	john.fastabend, bpf, ast, sharmaajay, hawk, linux-kernel

Rename mana_refill_rxoob for naming consistency.
And remove some empty lines between function call and error
checking.

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
---
 drivers/net/ethernet/microsoft/mana/mana_en.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c
index cabecbfa1102..db2887e25714 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
@@ -563,7 +563,6 @@ static int mana_pre_alloc_rxbufs(struct mana_port_context *mpc, int new_mtu)
 
 		da = dma_map_single(dev, va + mpc->rxbpre_headroom,
 				    mpc->rxbpre_datasize, DMA_FROM_DEVICE);
-
 		if (dma_mapping_error(dev, da)) {
 			put_page(virt_to_head_page(va));
 			goto error;
@@ -1515,7 +1514,6 @@ static void *mana_get_rxfrag(struct mana_rxq *rxq, struct device *dev,
 
 	*da = dma_map_single(dev, va + rxq->headroom, rxq->datasize,
 			     DMA_FROM_DEVICE);
-
 	if (dma_mapping_error(dev, *da)) {
 		put_page(virt_to_head_page(va));
 		return NULL;
@@ -1525,14 +1523,13 @@ static void *mana_get_rxfrag(struct mana_rxq *rxq, struct device *dev,
 }
 
 /* Allocate frag for rx buffer, and save the old buf */
-static void mana_refill_rxoob(struct device *dev, struct mana_rxq *rxq,
-			      struct mana_recv_buf_oob *rxoob, void **old_buf)
+static void mana_refill_rx_oob(struct device *dev, struct mana_rxq *rxq,
+			       struct mana_recv_buf_oob *rxoob, void **old_buf)
 {
 	dma_addr_t da;
 	void *va;
 
 	va = mana_get_rxfrag(rxq, dev, &da, true);
-
 	if (!va)
 		return;
 
@@ -1597,7 +1594,7 @@ static void mana_process_rx_cqe(struct mana_rxq *rxq, struct mana_cq *cq,
 	rxbuf_oob = &rxq->rx_oobs[curr];
 	WARN_ON_ONCE(rxbuf_oob->wqe_inf.wqe_size_in_bu != 1);
 
-	mana_refill_rxoob(dev, rxq, rxbuf_oob, &old_buf);
+	mana_refill_rx_oob(dev, rxq, rxbuf_oob, &old_buf);
 
 	/* Unsuccessful refill will have old_buf == NULL.
 	 * In this case, mana_rx_skb() will drop the packet.
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next, 2/2] net: mana: Check if netdev/napi_alloc_frag returns single page
  2023-04-21 17:06 [PATCH net-next, 0/2] Update coding style and check alloc_frag Haiyang Zhang
  2023-04-21 17:06 ` [PATCH net-next, 1/2] net: mana: Rename mana_refill_rxoob and remove some empty lines Haiyang Zhang
@ 2023-04-21 17:06 ` Haiyang Zhang
  2023-04-25  1:08 ` [PATCH net-next, 0/2] Update coding style and check alloc_frag Jakub Kicinski
  2023-04-25  1:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Haiyang Zhang @ 2023-04-21 17:06 UTC (permalink / raw)
  To: linux-hyperv, netdev
  Cc: haiyangz, decui, kys, paulros, olaf, vkuznets, davem, wei.liu,
	edumazet, kuba, pabeni, leon, longli, ssengar, linux-rdma, daniel,
	john.fastabend, bpf, ast, sharmaajay, hawk, linux-kernel

netdev/napi_alloc_frag() may fall back to single page which is smaller
than the requested size.
Add error checking to avoid memory overwritten.

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
---
 drivers/net/ethernet/microsoft/mana/mana_en.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c
index db2887e25714..06d6292e09b3 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
@@ -553,6 +553,14 @@ static int mana_pre_alloc_rxbufs(struct mana_port_context *mpc, int new_mtu)
 			va = netdev_alloc_frag(mpc->rxbpre_alloc_size);
 			if (!va)
 				goto error;
+
+			page = virt_to_head_page(va);
+			/* Check if the frag falls back to single page */
+			if (compound_order(page) <
+			    get_order(mpc->rxbpre_alloc_size)) {
+				put_page(page);
+				goto error;
+			}
 		} else {
 			page = dev_alloc_page();
 			if (!page)
@@ -1504,6 +1512,13 @@ static void *mana_get_rxfrag(struct mana_rxq *rxq, struct device *dev,
 
 		if (!va)
 			return NULL;
+
+		page = virt_to_head_page(va);
+		/* Check if the frag falls back to single page */
+		if (compound_order(page) < get_order(rxq->alloc_size)) {
+			put_page(page);
+			return NULL;
+		}
 	} else {
 		page = dev_alloc_page();
 		if (!page)
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next, 0/2] Update coding style and check alloc_frag
  2023-04-21 17:06 [PATCH net-next, 0/2] Update coding style and check alloc_frag Haiyang Zhang
  2023-04-21 17:06 ` [PATCH net-next, 1/2] net: mana: Rename mana_refill_rxoob and remove some empty lines Haiyang Zhang
  2023-04-21 17:06 ` [PATCH net-next, 2/2] net: mana: Check if netdev/napi_alloc_frag returns single page Haiyang Zhang
@ 2023-04-25  1:08 ` Jakub Kicinski
  2023-04-25  1:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2023-04-25  1:08 UTC (permalink / raw)
  To: Haiyang Zhang
  Cc: linux-hyperv, netdev, decui, kys, paulros, olaf, vkuznets, davem,
	wei.liu, edumazet, pabeni, leon, longli, ssengar, linux-rdma,
	daniel, john.fastabend, bpf, ast, sharmaajay, hawk, linux-kernel

On Fri, 21 Apr 2023 10:06:56 -0700 Haiyang Zhang wrote:
> Follow up patches for the jumbo frame support.
> 
> As suggested by Jakub Kicinski, update coding style, and check napi_alloc_frag
> for possible fallback to single pages.

Thanks for following up!

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next, 0/2] Update coding style and check alloc_frag
  2023-04-21 17:06 [PATCH net-next, 0/2] Update coding style and check alloc_frag Haiyang Zhang
                   ` (2 preceding siblings ...)
  2023-04-25  1:08 ` [PATCH net-next, 0/2] Update coding style and check alloc_frag Jakub Kicinski
@ 2023-04-25  1:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-04-25  1:10 UTC (permalink / raw)
  To: Haiyang Zhang
  Cc: linux-hyperv, netdev, decui, kys, paulros, olaf, vkuznets, davem,
	wei.liu, edumazet, kuba, pabeni, leon, longli, ssengar,
	linux-rdma, daniel, john.fastabend, bpf, ast, sharmaajay, hawk,
	linux-kernel

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Fri, 21 Apr 2023 10:06:56 -0700 you wrote:
> Follow up patches for the jumbo frame support.
> 
> As suggested by Jakub Kicinski, update coding style, and check napi_alloc_frag
> for possible fallback to single pages.
> 
> Haiyang Zhang (2):
>   net: mana: Rename mana_refill_rxoob and remove some empty lines
>   net: mana: Check if netdev/napi_alloc_frag returns single page
> 
> [...]

Here is the summary with links:
  - [net-next,1/2] net: mana: Rename mana_refill_rxoob and remove some empty lines
    https://git.kernel.org/netdev/net-next/c/5c74064f43c2
  - [net-next,2/2] net: mana: Check if netdev/napi_alloc_frag returns single page
    https://git.kernel.org/netdev/net-next/c/df18f2da302f

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-04-25  1:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-21 17:06 [PATCH net-next, 0/2] Update coding style and check alloc_frag Haiyang Zhang
2023-04-21 17:06 ` [PATCH net-next, 1/2] net: mana: Rename mana_refill_rxoob and remove some empty lines Haiyang Zhang
2023-04-21 17:06 ` [PATCH net-next, 2/2] net: mana: Check if netdev/napi_alloc_frag returns single page Haiyang Zhang
2023-04-25  1:08 ` [PATCH net-next, 0/2] Update coding style and check alloc_frag Jakub Kicinski
2023-04-25  1:10 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).