Re: [PATCH v1 01/12] IB/core: pass client data to remove() callbacks

Jason Gunthorpe
2015-07-08T20:29:10Z

On Mon, Jun 22, 2015 at 03:42:30PM +0300, Haggai Eran wrote:
> An ib_client callback that is called with the lists_rwsem locked only for
> read is protected from changes to the IB client lists, but not from
> ib_unregister_device() freeing its client data. This is because
> ib_unregister_device() will remove the device from the device list with
> lists_rwsem locked for write, but perform the rest of the cleanup,
> including the call to remove() without that lock.

I was going to look at this, but, uh.. it seems mangled, doesn't
apply, doesn't seem fixable from here.

It isn't on top of any of Doug's trees that I can find and it has
this:

> @@ -348,21 +348,22 @@ void ib_unregister_device(struct ib_device *device)
>
> down_write(&lists_rwsem);
> list_del(&device->core_list);

.. lists_rwsem is what this patch is supposed to be adding, so I
don't know what went wrong here....

Jason