* [PATCH] net/mlx4_en: do batched put_page using atomic_sub
@ 2016-04-18 11:34 Konstantin Khlebnikov
2016-04-20 0:07 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Konstantin Khlebnikov @ 2016-04-18 11:34 UTC (permalink / raw)
To: netdev, Yishai Hadas, Eugenia Emantayev; +Cc: linux-kernel
This patch fixes couple error paths after allocation failures.
Atomic set of page reference counter is safe only if it is zero,
otherwise set can race with any speculative get_page_unless_zero.
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
---
drivers/net/ethernet/mellanox/mlx4/en_rx.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
index 56d070d9cf01..7d25bc9c1b22 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
@@ -126,7 +126,9 @@ out:
dma_unmap_page(priv->ddev, page_alloc[i].dma,
page_alloc[i].page_size, PCI_DMA_FROMDEVICE);
page = page_alloc[i].page;
- set_page_count(page, 1);
+ /* Revert changes done by mlx4_alloc_pages */
+ page_ref_sub(page, page_alloc[i].page_size /
+ priv->frag_info[i].frag_stride - 1);
put_page(page);
}
}
@@ -176,7 +178,9 @@ out:
dma_unmap_page(priv->ddev, page_alloc->dma,
page_alloc->page_size, PCI_DMA_FROMDEVICE);
page = page_alloc->page;
- set_page_count(page, 1);
+ /* Revert changes done by mlx4_alloc_pages */
+ page_ref_sub(page, page_alloc->page_size /
+ priv->frag_info[i].frag_stride - 1);
put_page(page);
page_alloc->page = NULL;
}
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] net/mlx4_en: do batched put_page using atomic_sub
2016-04-18 11:34 [PATCH] net/mlx4_en: do batched put_page using atomic_sub Konstantin Khlebnikov
@ 2016-04-20 0:07 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2016-04-20 0:07 UTC (permalink / raw)
To: khlebnikov; +Cc: netdev, yishaih, eugenia, linux-kernel
From: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date: Mon, 18 Apr 2016 14:34:05 +0300
> This patch fixes couple error paths after allocation failures.
> Atomic set of page reference counter is safe only if it is zero,
> otherwise set can race with any speculative get_page_unless_zero.
>
> Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Applied.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-04-20 0:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-18 11:34 [PATCH] net/mlx4_en: do batched put_page using atomic_sub Konstantin Khlebnikov
2016-04-20 0:07 ` David Miller
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).