* [bug report] RDMA/rxe: Add error messages
@ 2023-03-29 6:30 Dan Carpenter
2023-03-29 18:19 ` Leon Romanovsky
2023-03-29 19:38 ` Bob Pearson
0 siblings, 2 replies; 3+ messages in thread
From: Dan Carpenter @ 2023-03-29 6:30 UTC (permalink / raw)
To: rpearsonhpe; +Cc: linux-rdma
Hello Bob Pearson,
The patch 5bf944f24129: "RDMA/rxe: Add error messages" from Mar 3,
2023, leads to the following Smatch static checker warning:
drivers/infiniband/sw/rxe/rxe_verbs.c:1294 rxe_alloc_mr()
error: potential null dereference 'mr'. (kzalloc returns null)
drivers/infiniband/sw/rxe/rxe_verbs.c
1276 static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
1277 u32 max_num_sg)
1278 {
1279 struct rxe_dev *rxe = to_rdev(ibpd->device);
1280 struct rxe_pd *pd = to_rpd(ibpd);
1281 struct rxe_mr *mr;
1282 int err, cleanup_err;
1283
1284 if (mr_type != IB_MR_TYPE_MEM_REG) {
1285 err = -EINVAL;
1286 rxe_dbg_pd(pd, "mr type %d not supported, err = %d",
1287 mr_type, err);
1288 goto err_out;
1289 }
1290
1291 mr = kzalloc(sizeof(*mr), GFP_KERNEL);
1292 if (!mr) {
1293 err = -ENOMEM;
--> 1294 rxe_dbg_mr(mr, "no memory for mr");
^^
NULL dereference.
1295 goto err_out;
1296 }
1297
1298 err = rxe_add_to_pool(&rxe->mr_pool, mr);
1299 if (err) {
1300 rxe_dbg_mr(mr, "unable to create mr, err = %d", err);
^^
mr->ibmr.device is not set yet so this doesn't work.
1301 goto err_free;
1302 }
1303
1304 rxe_get(pd);
1305 mr->ibmr.pd = ibpd;
1306 mr->ibmr.device = ibpd->device;
^^^^^^^^^^^^^^^
1307
1308 err = rxe_mr_init_fast(max_num_sg, mr);
1309 if (err) {
1310 rxe_dbg_mr(mr, "alloc_mr failed, err = %d", err);
1311 goto err_cleanup;
1312 }
1313
1314 rxe_finalize(mr);
1315 return &mr->ibmr;
1316
1317 err_cleanup:
1318 cleanup_err = rxe_cleanup(mr);
1319 if (cleanup_err)
1320 rxe_err_mr(mr, "cleanup failed, err = %d", err);
1321 err_free:
1322 kfree(mr);
1323 err_out:
1324 rxe_err_pd(pd, "returned err = %d", err);
1325 return ERR_PTR(err);
1326 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [bug report] RDMA/rxe: Add error messages
2023-03-29 6:30 [bug report] RDMA/rxe: Add error messages Dan Carpenter
@ 2023-03-29 18:19 ` Leon Romanovsky
2023-03-29 19:38 ` Bob Pearson
1 sibling, 0 replies; 3+ messages in thread
From: Leon Romanovsky @ 2023-03-29 18:19 UTC (permalink / raw)
To: Dan Carpenter; +Cc: rpearsonhpe, linux-rdma
On Wed, Mar 29, 2023 at 09:30:33AM +0300, Dan Carpenter wrote:
> Hello Bob Pearson,
>
> The patch 5bf944f24129: "RDMA/rxe: Add error messages" from Mar 3,
> 2023, leads to the following Smatch static checker warning:
>
> drivers/infiniband/sw/rxe/rxe_verbs.c:1294 rxe_alloc_mr()
> error: potential null dereference 'mr'. (kzalloc returns null)
I posted the fix:
https://lore.kernel.org/all/d3cedf723b84e73e8062a67b7489d33802bafba2.1680113597.git.leon@kernel.org
Thanks
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [bug report] RDMA/rxe: Add error messages
2023-03-29 6:30 [bug report] RDMA/rxe: Add error messages Dan Carpenter
2023-03-29 18:19 ` Leon Romanovsky
@ 2023-03-29 19:38 ` Bob Pearson
1 sibling, 0 replies; 3+ messages in thread
From: Bob Pearson @ 2023-03-29 19:38 UTC (permalink / raw)
To: Dan Carpenter; +Cc: linux-rdma
On 3/29/23 01:30, Dan Carpenter wrote:
> Hello Bob Pearson,
>
> The patch 5bf944f24129: "RDMA/rxe: Add error messages" from Mar 3,
> 2023, leads to the following Smatch static checker warning:
>
> drivers/infiniband/sw/rxe/rxe_verbs.c:1294 rxe_alloc_mr()
> error: potential null dereference 'mr'. (kzalloc returns null)
>
> drivers/infiniband/sw/rxe/rxe_verbs.c
> 1276 static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
> 1277 u32 max_num_sg)
> 1278 {
> 1279 struct rxe_dev *rxe = to_rdev(ibpd->device);
> 1280 struct rxe_pd *pd = to_rpd(ibpd);
> 1281 struct rxe_mr *mr;
> 1282 int err, cleanup_err;
> 1283
> 1284 if (mr_type != IB_MR_TYPE_MEM_REG) {
> 1285 err = -EINVAL;
> 1286 rxe_dbg_pd(pd, "mr type %d not supported, err = %d",
> 1287 mr_type, err);
> 1288 goto err_out;
> 1289 }
> 1290
> 1291 mr = kzalloc(sizeof(*mr), GFP_KERNEL);
> 1292 if (!mr) {
> 1293 err = -ENOMEM;
> --> 1294 rxe_dbg_mr(mr, "no memory for mr");
> ^^
> NULL dereference.
>
> 1295 goto err_out;
> 1296 }
> 1297
> 1298 err = rxe_add_to_pool(&rxe->mr_pool, mr);
> 1299 if (err) {
> 1300 rxe_dbg_mr(mr, "unable to create mr, err = %d", err);
> ^^
> mr->ibmr.device is not set yet so this doesn't work.
>
> 1301 goto err_free;
> 1302 }
> 1303
> 1304 rxe_get(pd);
> 1305 mr->ibmr.pd = ibpd;
> 1306 mr->ibmr.device = ibpd->device;
> ^^^^^^^^^^^^^^^
>
> 1307
> 1308 err = rxe_mr_init_fast(max_num_sg, mr);
> 1309 if (err) {
> 1310 rxe_dbg_mr(mr, "alloc_mr failed, err = %d", err);
> 1311 goto err_cleanup;
> 1312 }
> 1313
> 1314 rxe_finalize(mr);
> 1315 return &mr->ibmr;
> 1316
> 1317 err_cleanup:
> 1318 cleanup_err = rxe_cleanup(mr);
> 1319 if (cleanup_err)
> 1320 rxe_err_mr(mr, "cleanup failed, err = %d", err);
> 1321 err_free:
> 1322 kfree(mr);
> 1323 err_out:
> 1324 rxe_err_pd(pd, "returned err = %d", err);
> 1325 return ERR_PTR(err);
> 1326 }
>
> regards,
> dan carpenter
Thanks Dan, good call. -- Bob
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-03-29 19:38 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-29 6:30 [bug report] RDMA/rxe: Add error messages Dan Carpenter
2023-03-29 18:19 ` Leon Romanovsky
2023-03-29 19:38 ` Bob Pearson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox