On Mon, Nov 21, 2016 at 03:11:03PM +0200, Heikki Krogerus wrote: > Hi Greg, > > On Mon, Nov 21, 2016 at 11:35:28AM +0100, Greg KH wrote: > > > +static void typec_partner_release(struct device *dev) > > > +{ > > > + struct typec_port *port = to_typec_port(dev->parent); > > > + > > > + typec_unregister_altmodes(dev); > > > + port->partner = NULL; > > > +} > > > > This doesn't feel right, why are you both exporting > > typec_unregister_altmodes() and also calling it from release callbacks? > > That implies there is two way to clean stuff up, so what is a driver > > writer to use? Please simplify and force it to be one way or the other. > > OK. > > > Also typec_unregister_altmodes() doesn't free memory, which release is > > supposed to be doing, which also implies that the reference counting > > logic is all wrong here. Please fix, like I asked you to previously. > > There is nothing wrong with the reference counting, and nothing has > been allocated so there is nothing to free. The device structure itself that this release call is for needs to be freed, right? If not, something is really wrong... > Please note that the partner device is meant to just represent the > partner in user space and not to be actually used for anything. And > please also note that there can only be one partner for a port at a > time. Ok, but these are still reference counted devices, you need to handle that properly. > We could allocate an extra structure for the partner when > typec_connect() is called, but we would do that just for the sake of > having something to free in the release hook. It would not be useful > for anything. It would not help us increase/decrease the reference > count of the device, and the port driver would still have to provide > details about the partner capabilities the moment it tells us the > partner was connected. Again, free the device for which this release function is being called for, that is why it is there. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html