diff options
| author | Michael Guralnik <michaelgur@nvidia.com> | 2026-06-10 03:01:40 +0300 |
|---|---|---|
| committer | Jason Gunthorpe <jgg@nvidia.com> | 2026-06-11 21:36:08 +0300 |
| commit | c6936506ed556ce3ccad36ab999baf2764dd7d25 (patch) | |
| tree | 23abae95ddcdf4b70a63431d3c46b0bb7ee51b03 /include/linux/debugobjects.h | |
| parent | 3d7fd88aeff73f25ee740b3a65a3b4dd38ad7783 (diff) | |
| download | linux-c6936506ed556ce3ccad36ab999baf2764dd7d25.tar.xz | |
RDMA/core: Fix FRMR aging push to queue error flow
Aging pools with pinned handles requires moving handles from the
active queue to a non-empty inactive queue that might fail on new page
allocation, we are currently not handling the fault and leaking any mkey
that fails the push.
Fix by Introducing push_queue_to_queue_locked() that fills the
destination's partial tail page from the source and then splices the
remaining source pages onto the destination, performing no allocation.
Replace the per-handle move loop in age_pinned_pool() and the
open-coded splice in pool_aging_work() with calls to the helper.
As the helper cannot fail under memory pressure, removing a class of
GFP_ATOMIC allocations under the pool lock and simplifying the error
flow.
Fixes: 020d189d16a6 ("RDMA/core: Add pinned handles to FRMR pools")
Link: https://patch.msgid.link/r/20260610000145.820592-5-michaelgur@nvidia.com
Signed-off-by: Michael Guralnik <michaelgur@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to 'include/linux/debugobjects.h')
0 files changed, 0 insertions, 0 deletions
