projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
45f5dcd
)
RDMA/core: Silence oversized kvmalloc() warning
author
Shay Drory
<shayd@nvidia.com>
Wed, 19 Mar 2025 12:42:21 +0000
(14:42 +0200)
committer
Leon Romanovsky
<leon@kernel.org>
Wed, 9 Apr 2025 18:32:27 +0000
(14:32 -0400)
syzkaller triggered an oversized kvmalloc() warning.
Silence it by adding __GFP_NOWARN.
syzkaller log:
WARNING: CPU: 7 PID: 518 at mm/util.c:665 __kvmalloc_node_noprof+0x175/0x180
CPU: 7 UID: 0 PID: 518 Comm: c_repro Not tainted 6.11.0-rc6+ #6
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
rel-1.13.0-0-gf21b5a4aeb02
-prebuilt.qemu.org 04/01/2014
RIP: 0010:__kvmalloc_node_noprof+0x175/0x180
RSP: 0018:
ffffc90001e67c10
EFLAGS:
00010246
RAX:
0000000000000100
RBX:
0000000000000400
RCX:
ffffffff8149d46b
RDX:
0000000000000000
RSI:
ffff8881030fae80
RDI:
0000000000000002
RBP:
000000712c800000
R08:
0000000000000100
R09:
0000000000000000
R10:
ffffc90001e67c10
R11:
0030ae0601000000
R12:
0000000000000000
R13:
0000000000000000
R14:
00000000ffffffff
R15:
0000000000000000
FS:
00007fde79159740
(0000) GS:
ffff88813bdc0000
(0000) knlGS:
0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
CR2:
0000000020000180
CR3:
0000000105eb4005
CR4:
00000000003706b0
DR0:
0000000000000000
DR1:
0000000000000000
DR2:
0000000000000000
DR3:
0000000000000000
DR6:
00000000fffe0ff0
DR7:
0000000000000400
Call Trace:
<TASK>
ib_umem_odp_get+0x1f6/0x390
mlx5_ib_reg_user_mr+0x1e8/0x450
ib_uverbs_reg_mr+0x28b/0x440
ib_uverbs_write+0x7d3/0xa30
vfs_write+0x1ac/0x6c0
ksys_write+0x134/0x170
? __sanitizer_cov_trace_pc+0x1c/0x50
do_syscall_64+0x50/0x110
entry_SYSCALL_64_after_hwframe+0x76/0x7e
Fixes:
37824952dc8f
("RDMA/odp: Use kvcalloc for the dma_list and page_list")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Link:
https://patch.msgid.link/c6cb92379de668be94894f49c2cfa40e73f94d56.1742388096.git.leonro@nvidia.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/core/umem_odp.c
patch
|
blob
|
blame
|
history
diff --git
a/drivers/infiniband/core/umem_odp.c
b/drivers/infiniband/core/umem_odp.c
index e9fa22d31c233204ccd8b7decc7353b3629bad3c..c48ef60830205561561faaa9b7791ea88ee479df 100644
(file)
--- a/
drivers/infiniband/core/umem_odp.c
+++ b/
drivers/infiniband/core/umem_odp.c
@@
-76,12
+76,14
@@
static inline int ib_init_umem_odp(struct ib_umem_odp *umem_odp,
npfns = (end - start) >> PAGE_SHIFT;
umem_odp->pfn_list = kvcalloc(
- npfns, sizeof(*umem_odp->pfn_list), GFP_KERNEL);
+ npfns, sizeof(*umem_odp->pfn_list),
+ GFP_KERNEL | __GFP_NOWARN);
if (!umem_odp->pfn_list)
return -ENOMEM;
umem_odp->dma_list = kvcalloc(
- ndmas, sizeof(*umem_odp->dma_list), GFP_KERNEL);
+ ndmas, sizeof(*umem_odp->dma_list),
+ GFP_KERNEL | __GFP_NOWARN);
if (!umem_odp->dma_list) {
ret = -ENOMEM;
goto out_pfn_list;