Shay Drory
116a1b9f1c
IB/mad: Fix use after free when destroying MAD agent
...
Currently, when RMPP MADs are processed while the MAD agent is destroyed,
it could result in use after free of rmpp_recv, as decribed below:
cpu-0 cpu-1
----- -----
ib_mad_recv_done()
ib_mad_complete_recv()
ib_process_rmpp_recv_wc()
unregister_mad_agent()
ib_cancel_rmpp_recvs()
cancel_delayed_work()
process_rmpp_data()
start_rmpp()
queue_delayed_work(rmpp_recv->cleanup_work)
destroy_rmpp_recv()
free_rmpp_recv()
cleanup_work()[1]
spin_lock_irqsave(&rmpp_recv->agent->lock) <-- use after free
[1] cleanup_work() == recv_cleanup_handler
Fix it by waiting for the MAD agent reference count becoming zero before
calling to ib_cancel_rmpp_recvs().
Fixes: 9a41e38a46 ("IB/mad: Use IDR for agent IDs")
Link: https://lore.kernel.org/r/20200621104738.54850-2-leon@kernel.org
Signed-off-by: Shay Drory <shayd@mellanox.com >
Reviewed-by: Maor Gottlieb <maorg@mellanox.com >
Signed-off-by: Leon Romanovsky <leonro@mellanox.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2020-06-22 14:57:44 -03:00
..
2020-06-14 01:57:21 +09:00
2020-06-13 13:04:36 -07:00
2020-06-04 19:47:11 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-09 10:04:47 -07:00
2020-06-13 13:29:16 -07:00
2020-06-03 16:27:18 -07:00
2020-06-07 10:59:32 -07:00
2020-06-10 16:05:54 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-09 19:11:22 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-12 14:10:21 -07:00
2020-06-13 16:27:13 -07:00
2020-06-04 19:06:23 -07:00
2020-05-28 18:02:40 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-05-29 17:36:02 +09:00
2020-06-13 13:29:16 -07:00
2020-06-07 10:59:32 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-03 15:00:05 -07:00
2020-06-11 15:17:57 +02:00
2020-06-07 10:59:32 -07:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-22 14:57:44 -03:00
2020-06-14 01:57:21 +09:00
2020-06-10 14:04:39 -07:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-09 19:11:22 -07:00
2020-06-14 01:57:21 +09:00
2020-06-04 11:03:45 -07:00
2020-06-02 15:29:19 -07:00
2020-06-14 01:57:21 +09:00
2020-06-10 22:43:57 -05:00
2020-06-14 01:57:21 +09:00
2020-06-13 13:29:16 -07:00
2020-05-28 14:18:11 +02:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-10 13:24:40 -07:00
2020-06-13 16:27:13 -07:00
2020-06-14 01:57:21 +09:00
2020-06-05 20:02:09 -04:00
2020-06-13 13:04:36 -07:00
2020-06-13 13:29:16 -07:00
2020-05-27 11:09:26 +02:00
2020-06-07 10:53:36 -07:00
2020-06-14 01:57:21 +09:00
2020-06-09 09:39:14 -07:00
2020-06-14 01:57:21 +09:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-11 12:53:23 -07:00
2020-06-07 16:13:43 -07:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-10 11:28:35 -07:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-04 19:09:28 +02:00
2020-06-14 01:57:21 +09:00
2020-06-01 13:01:44 +01:00
2020-06-08 13:01:08 -07:00
2020-06-07 10:59:32 -07:00
2020-06-08 13:01:08 -07:00
2020-06-07 16:11:23 -07:00
2020-06-08 12:05:31 -07:00
2020-06-14 01:57:21 +09:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-07 10:59:32 -07:00
2020-06-13 13:29:16 -07:00
2020-06-13 13:29:16 -07:00
2020-06-09 09:39:14 -07:00
2020-06-12 14:10:21 -07:00
2020-06-07 09:42:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-13 13:29:16 -07:00
2020-06-06 16:26:47 -04:00
2020-06-10 19:14:18 -07:00
2020-06-13 13:29:16 -07:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-14 01:57:21 +09:00
2020-06-13 10:05:47 -07:00
2020-06-14 01:57:21 +09:00