Files
linux/drivers/infiniband/core
Jason Gunthorpe 9b470925a9 RDMA/core: Fix bogus WARN_ON during ib_unregister_device_queued()
[ Upstream commit 0cb42c0265 ]

ib_unregister_device_queued() can only be used by drivers using the new
dealloc_device callback flow, and it has a safety WARN_ON to ensure
drivers are using it properly.

However, if unregister and register are raced there is a special
destruction path that maintains the uniform error handling semantic of
'caller does ib_dealloc_device() on failure'. This requires disabling the
dealloc_device callback which triggers the WARN_ON.

Instead of using NULL to disable the callback use a special function
pointer so the WARN_ON does not trigger.

Fixes: d0899892ed ("RDMA/device: Provide APIs from the core code to help unregistration")
Link: https://lore.kernel.org/r/0-v1-a36d512e0a99+762-syz_dealloc_driver_jgg@nvidia.com
Reported-by: syzbot+4088ed905e4ae2b0e13b@syzkaller.appspotmail.com
Suggested-by: Hillf Danton <hdanton@sina.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-19 08:26:30 +02:00
..
2020-01-25 15:11:37 -04:00
2020-03-04 14:28:25 -04:00
2020-06-02 20:32:53 -03:00
2020-05-12 11:47:48 -03:00
2018-12-12 07:40:16 -07:00
2018-12-12 07:40:16 -07:00
2020-06-02 20:32:54 -03:00
2020-06-02 20:32:54 -03:00