Skip to content

Commit b7e08a5

Browse files
Yang Yingliangrleon
authored andcommitted
RDMA/usnic: use iommu_map_atomic() under spin_lock()
usnic_uiom_map_sorted_intervals() is called under spin_lock(), iommu_map() might sleep, use iommu_map_atomic() to avoid potential sleep in atomic context. Fixes: e3cf00d ("IB/usnic: Add Cisco VIC low-level hardware driver") Signed-off-by: Yang Yingliang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Leon Romanovsky <[email protected]>
1 parent 5d9745c commit b7e08a5

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

drivers/infiniband/hw/usnic/usnic_uiom.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ static int usnic_uiom_map_sorted_intervals(struct list_head *intervals,
276276
size = pa_end - pa_start + PAGE_SIZE;
277277
usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x",
278278
va_start, &pa_start, size, flags);
279-
err = iommu_map(pd->domain, va_start, pa_start,
280-
size, flags);
279+
err = iommu_map_atomic(pd->domain, va_start,
280+
pa_start, size, flags);
281281
if (err) {
282282
usnic_err("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n",
283283
va_start, &pa_start, size, err);
@@ -293,8 +293,8 @@ static int usnic_uiom_map_sorted_intervals(struct list_head *intervals,
293293
size = pa - pa_start + PAGE_SIZE;
294294
usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x\n",
295295
va_start, &pa_start, size, flags);
296-
err = iommu_map(pd->domain, va_start, pa_start,
297-
size, flags);
296+
err = iommu_map_atomic(pd->domain, va_start,
297+
pa_start, size, flags);
298298
if (err) {
299299
usnic_err("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n",
300300
va_start, &pa_start, size, err);

0 commit comments

Comments
 (0)