Skip to content

Commit fb4b137

Browse files
gerd-rauschkuba-moo
authored andcommitted
net/rds: dma_map_sg is entitled to merge entries
Function "dma_map_sg" is entitled to merge adjacent entries and return a value smaller than what was passed as "nents". Subsequently "ib_map_mr_sg" needs to work with this value ("sg_dma_len") rather than the original "nents" parameter ("sg_len"). This old RDS bug was exposed and reliably causes kernel panics (using RDMA operations "rds-stress -D") on x86_64 starting with: commit c588072 ("iommu/vt-d: Convert intel iommu driver to the iommu ops") Simply put: Linux 5.11 and later. Signed-off-by: Gerd Rausch <[email protected]> Acked-by: Santosh Shilimkar <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent c193014 commit fb4b137

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

net/rds/ib_frmr.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ static int rds_ib_post_reg_frmr(struct rds_ib_mr *ibmr)
131131
cpu_relax();
132132
}
133133

134-
ret = ib_map_mr_sg_zbva(frmr->mr, ibmr->sg, ibmr->sg_len,
134+
ret = ib_map_mr_sg_zbva(frmr->mr, ibmr->sg, ibmr->sg_dma_len,
135135
&off, PAGE_SIZE);
136-
if (unlikely(ret != ibmr->sg_len))
136+
if (unlikely(ret != ibmr->sg_dma_len))
137137
return ret < 0 ? ret : -EINVAL;
138138

139139
if (cmpxchg(&frmr->fr_state,

0 commit comments

Comments
 (0)