linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v7 0/2] Fix late DMA unmap crash for page pool
@ 2025-04-04 10:18 Toke Høiland-Jørgensen
  2025-04-04 10:18 ` [PATCH net-next v7 1/2] page_pool: Move pp_magic check into helper functions Toke Høiland-Jørgensen
  2025-04-04 10:18 ` [PATCH net-next v7 2/2] page_pool: Track DMA-mapped pages and unmap them when destroying the pool Toke Høiland-Jørgensen
  0 siblings, 2 replies; 19+ messages in thread
From: Toke Høiland-Jørgensen @ 2025-04-04 10:18 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski, Jesper Dangaard Brouer,
	Saeed Mahameed, Leon Romanovsky, Tariq Toukan, Andrew Lunn,
	Eric Dumazet, Paolo Abeni, Ilias Apalodimas, Simon Horman,
	Andrew Morton, Mina Almasry, Yonglong Liu, Yunsheng Lin,
	Pavel Begunkov, Matthew Wilcox
  Cc: netdev, bpf, linux-rdma, linux-mm,
	Toke Høiland-Jørgensen, Qiuling Ren, Yuying Ma

This series fixes the late dma_unmap crash for page pool first reported
by Yonglong Liu in [0]. It is an alternative approach to the one
submitted by Yunsheng Lin, most recently in [1]. The first commit just
wraps some tests in a helper function, in preparation of the main change
in patch 2. See the commit message of patch 2 for the details.

-Toke

[0] https://lore.kernel.org/lkml/8067f204-1380-4d37-8ffd-007fc6f26738@kernel.org/T/
[1] https://lore.kernel.org/r/20250307092356.638242-1-linyunsheng@huawei.com

Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
---
Changes in v7:
- Change WARN_ON logic if xarray alloc fails
- Don't leak xarray ID if page_pool_set_dma_addr_netmem() fails
- Unconditionally init xarray in page_pool_init()
- Rebase on current net-next
- Link to v6: https://lore.kernel.org/r/20250401-page-pool-track-dma-v6-0-8b83474870d4@redhat.com

Changes in v6:
- Add READ_ONCE() around both reads of pp->dma_sync
- Link to v5: https://lore.kernel.org/r/20250328-page-pool-track-dma-v5-0-55002af683ad@redhat.com

Changes in v5:
- Dereferencing pp->p.dev if pp->pma_sync is unset could lead to a
  crash, so make sure we don't do that.
- With the change above, patch 2 was just changing a single field, so
  squash it into patch 3
- Link to v4: https://lore.kernel.org/r/20250327-page-pool-track-dma-v4-0-b380dc6706d0@redhat.com

Changes in v4:
- Rebase on net-next
- Collect tags
- Link to v3: https://lore.kernel.org/r/20250326-page-pool-track-dma-v3-0-8e464016e0ac@redhat.com

Changes in v3:
- Use a full-width bool for pp->dma_sync instead of a full unsigned
  long (in patch 2), and leave pp->dma_sync_cpu alone.

- Link to v2: https://lore.kernel.org/r/20250325-page-pool-track-dma-v2-0-113ebc1946f3@redhat.com

Changes in v2:
- Always leave two bits at the top of pp_magic as zero, instead of one

- Add an rcu_read_lock() around __page_pool_dma_sync_for_device()

- Add a comment in poison.h with a reference to the bitmask definition

- Add a longer description of the logic of the bitmask definitions to
  the comment in types.h, and a summary of the security implications of
  using the pp_magic field to the commit message of patch 3

- Collect Mina's Reviewed-by and Yonglong's Tested-by tags

- Link to v1: https://lore.kernel.org/r/20250314-page-pool-track-dma-v1-0-c212e57a74c2@redhat.com

---
Toke Høiland-Jørgensen (2):
      page_pool: Move pp_magic check into helper functions
      page_pool: Track DMA-mapped pages and unmap them when destroying the pool

 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c |  4 +-
 include/linux/poison.h                           |  4 ++
 include/net/page_pool/types.h                    | 63 +++++++++++++++++-
 mm/page_alloc.c                                  |  9 +--
 net/core/netmem_priv.h                           | 33 +++++++++-
 net/core/page_pool.c                             | 81 ++++++++++++++++++++----
 net/core/skbuff.c                                | 16 +----
 net/core/xdp.c                                   |  4 +-
 8 files changed, 175 insertions(+), 39 deletions(-)
---
base-commit: acc4d5ff0b61eb1715c498b6536c38c1feb7f3c1
change-id: 20250310-page-pool-track-dma-0332343a460e



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

end of thread, other threads:[~2025-04-07 16:06 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-04 10:18 [PATCH net-next v7 0/2] Fix late DMA unmap crash for page pool Toke Høiland-Jørgensen
2025-04-04 10:18 ` [PATCH net-next v7 1/2] page_pool: Move pp_magic check into helper functions Toke Høiland-Jørgensen
2025-04-06 18:56   ` Zi Yan
2025-04-07  8:53     ` Toke Høiland-Jørgensen
2025-04-07 11:53       ` Zi Yan
2025-04-07 12:24       ` Zi Yan
2025-04-07 13:14         ` Toke Høiland-Jørgensen
2025-04-07 13:36           ` Zi Yan
2025-04-07 14:15             ` Zi Yan
2025-04-07 14:43               ` Jesper Dangaard Brouer
2025-04-07 15:50                 ` Zi Yan
2025-04-07 16:05                   ` Toke Høiland-Jørgensen
2025-04-07 16:06                     ` Zi Yan
2025-04-04 10:18 ` [PATCH net-next v7 2/2] page_pool: Track DMA-mapped pages and unmap them when destroying the pool Toke Høiland-Jørgensen
2025-04-04 15:55   ` Alexander Lobakin
2025-04-04 16:14     ` Alexander Lobakin
2025-04-05 12:50       ` Toke Høiland-Jørgensen
2025-04-07 11:26         ` Yunsheng Lin
2025-04-07 11:49           ` Toke Høiland-Jørgensen

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).