* [bug report] {net, IB}/mlx5: Manage port association for multiport RoCE [not found] <20210518082855.GB32682@kadam> @ 2021-05-19 14:18 ` Dan Carpenter 2021-05-20 8:09 ` Leon Romanovsky 0 siblings, 1 reply; 2+ messages in thread From: Dan Carpenter @ 2021-05-19 14:18 UTC (permalink / raw) To: danielj; +Cc: linux-rdma Hello Daniel Jurgens, The patch 32f69e4be269: "{net, IB}/mlx5: Manage port association for multiport RoCE" from Jan 4, 2018, leads to the following static checker warning: drivers/infiniband/hw/mlx5/main.c:3285 mlx5_ib_init_multiport_master() warn: iterator 'mpi->list.next' changed during iteration drivers/infiniband/hw/mlx5/main.c 3285 list_for_each_entry(mpi, &mlx5_ib_unaffiliated_port_list, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ We're iterating through the unafiliated list. 3286 list) { 3287 if (dev->sys_image_guid == mpi->sys_image_guid && 3288 (mlx5_core_native_port_num(mpi->mdev) - 1) == i) { 3289 bound = mlx5_ib_bind_slave_port(dev, mpi); The mlx5_ib_bind_slave_port() function returns true on success and false on failure. On the failure path it calls: mlx5_ib_unbind_slave_port(ibdev, mpi); Which adds our "mpi" as the last item on the unaffiliated list. I don't think anything good can come from adding a list item to a list twice. 3290 } 3291 3292 if (bound) { 3293 dev_dbg(mpi->mdev->device, 3294 "removing port from unaffiliated list.\n"); 3295 mlx5_ib_dbg(dev, "port %d bound\n", i + 1); 3296 list_del(&mpi->list); 3297 break; 3298 } 3299 } 3300 if (!bound) 3301 mlx5_ib_dbg(dev, "no free port found for port %d\n", 3302 i + 1); regards, dan carpenter ^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [bug report] {net, IB}/mlx5: Manage port association for multiport RoCE 2021-05-19 14:18 ` [bug report] {net, IB}/mlx5: Manage port association for multiport RoCE Dan Carpenter @ 2021-05-20 8:09 ` Leon Romanovsky 0 siblings, 0 replies; 2+ messages in thread From: Leon Romanovsky @ 2021-05-20 8:09 UTC (permalink / raw) To: Dan Carpenter; +Cc: danielj, linux-rdma On Wed, May 19, 2021 at 05:18:33PM +0300, Dan Carpenter wrote: > Hello Daniel Jurgens, > > The patch 32f69e4be269: "{net, IB}/mlx5: Manage port association for > multiport RoCE" from Jan 4, 2018, leads to the following static > checker warning: > > drivers/infiniband/hw/mlx5/main.c:3285 mlx5_ib_init_multiport_master() > warn: iterator 'mpi->list.next' changed during iteration Thanks Dan for the report, I'll prepare the fix. > > drivers/infiniband/hw/mlx5/main.c > 3285 list_for_each_entry(mpi, &mlx5_ib_unaffiliated_port_list, > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > We're iterating through the unafiliated list. > > 3286 list) { > 3287 if (dev->sys_image_guid == mpi->sys_image_guid && > 3288 (mlx5_core_native_port_num(mpi->mdev) - 1) == i) { > 3289 bound = mlx5_ib_bind_slave_port(dev, mpi); > > The mlx5_ib_bind_slave_port() function returns true on success and > false on failure. On the failure path it calls: > > mlx5_ib_unbind_slave_port(ibdev, mpi); > > Which adds our "mpi" as the last item on the unaffiliated list. I don't > think anything good can come from adding a list item to a list twice. > > 3290 } > 3291 > 3292 if (bound) { > 3293 dev_dbg(mpi->mdev->device, > 3294 "removing port from unaffiliated list.\n"); > 3295 mlx5_ib_dbg(dev, "port %d bound\n", i + 1); > 3296 list_del(&mpi->list); > 3297 break; > 3298 } > 3299 } > 3300 if (!bound) > 3301 mlx5_ib_dbg(dev, "no free port found for port %d\n", > 3302 i + 1); > > regards, > dan carpenter ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-05-20 8:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20210518082855.GB32682@kadam>
2021-05-19 14:18 ` [bug report] {net, IB}/mlx5: Manage port association for multiport RoCE Dan Carpenter
2021-05-20 8:09 ` Leon Romanovsky
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox