Messages in this thread | | | Date | Mon, 10 Jul 2023 17:05:40 +0200 | From | Greg Kroah-Hartman <> | Subject | Re: [PATCH 1/1] mcb: Do not add the mcb_bus_type to the mcb_bus itself |
| |
On Mon, Jul 10, 2023 at 04:57:52PM +0200, Johannes Thumshirn wrote: > From: Rodríguez Barbarin, José Javier <JoseJavier.Rodriguez@duagon.com>
This does not match your signed-off-by line.
> > When allocating a new mcb_bus the bus_type is added to the mcb_bus > itself, causing an issue when calling mcb_bus_add_devices(). > This function is not only called for each mcb_device under the > mcb_bus but for the bus itself. > > This causes a crash when freeing the ida resources as the bus numbering > gets corrupted due to a wrong cast of structs mcb_bus and mcb_device. > > Make the release of the mcb devices and their mcb bus explicit. > > Co-developed-by: Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com> > Signed-off-by: Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com> > Signed-off-by: Javier Rodriguez <josejavier.rodriguez@duagon.com> > Signed-off-by: Johannes Thumshirn <jth@kernel.org> > ---
What commit id does this fix?
> drivers/mcb/mcb-core.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/mcb/mcb-core.c b/drivers/mcb/mcb-core.c > index 978fdfc19a06..d4535b8aea1d 100644 > --- a/drivers/mcb/mcb-core.c > +++ b/drivers/mcb/mcb-core.c > @@ -251,6 +251,12 @@ int mcb_device_register(struct mcb_bus *bus, struct mcb_device *dev) > } > EXPORT_SYMBOL_NS_GPL(mcb_device_register, MCB); > > + > +static void mcb_bus_unregister(struct mcb_bus *bus) > +{ > + device_unregister(&bus->dev); > +} > + > static void mcb_free_bus(struct device *dev) > { > struct mcb_bus *bus = to_mcb_bus(dev); > @@ -286,7 +292,6 @@ struct mcb_bus *mcb_alloc_bus(struct device *carrier) > > device_initialize(&bus->dev); > bus->dev.parent = carrier; > - bus->dev.bus = &mcb_bus_type;
So what bus type does this device now belong to?
> bus->dev.type = &mcb_carrier_device_type; > bus->dev.release = &mcb_free_bus; > > @@ -322,6 +327,7 @@ static void mcb_devices_unregister(struct mcb_bus *bus) > void mcb_release_bus(struct mcb_bus *bus) > { > mcb_devices_unregister(bus); > + mcb_bus_unregister(bus);
thanks.
greg k-h
| |