mctp: Add refcounts to mctp_dev
authorJeremy Kerr <jk@codeconstruct.com.au>
Wed, 29 Sep 2021 07:26:08 +0000 (15:26 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Sep 2021 10:00:11 +0000 (11:00 +0100)
commit43f55f23f70881e9c397557f15c8090b368d0af2
tree8fc42e6056ac109df1e6931763d31891d0f5e016
parent73c618456dc5cf2acb597256d633060cf75de8d6
mctp: Add refcounts to mctp_dev

Currently, we tie the struct mctp_dev lifetime to the underlying struct
net_device, and hold/put that device as a proxy for a separate mctp_dev
refcount. This works because we're not holding any references to the
mctp_dev that are different from the netdev lifetime.

In a future change we'll break that assumption though, as we'll need to
hold mctp_dev references in a workqueue, which might live past the
netdev unregister notification.

In order to support that, this change introduces a refcount on the
mctp_dev, currently taken by the net_device->mctp_ptr reference, and
released on netdev unregister events. We can then use this for future
references that might outlast the net device.

Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/mctpdevice.h
net/mctp/device.c
net/mctp/neigh.c
net/mctp/route.c