On Tue, Apr 28, 2015 at 05:03:11PM +0300, Matan Barak wrote: > The cleanup of roce_gid_cache is done in a different context, so we > need to make sure the device is still alive while doing so. This explanation doesn't look right to me. I don't see anything like that under roce_gid_cache_cleanup_one ? Although, there must be a call to the driver's modify_gid to free context before freeing, and I don't see that obviously happening.. However, all the other async work launched doesn't look safe at all. So, did you mean that the device must still be alive while all the other work is running? And the point of this scheme is to guarentee all the work is flushed? (at least I hope it is, otherwise there are bigger problems here) It is just fundamentally wrong to return from ib_client.remove while async work is still outstanding, the client is expected to deal with this internally and synchronously. You don't need IB core help to do this. Or: This should have been fixed after Haggai brought it up... Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html