On Thu, May 31, 2018 at 1:34 AM, Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 2018-05-31 at 00:27 +0300, Andy Shevchenko wrote: >> On Wed, May 30, 2018 at 6:47 PM, Eddie James <eajames@xxxxxxxxxxxxxxxxxx> wrote: >> > On 05/29/2018 06:19 PM, Andy Shevchenko wrote: >> > > On Wed, May 30, 2018 at 1:24 AM, Eddie James <eajames@xxxxxxxxxxxxxxxxxx> >> > > wrote: >> > > Isn't below somehow repeats of_i2c_register_devices() ? >> > > Why not to use it? >> > Because I need to assign all these port structure fields. Also looks like >> > of_i2c_register_devices creates new devices; I just want an adapter for each >> > port. >> >> Hmm... Wolfram, what is your opinion on this design? > > Andy, I don't understand your issue. > > of_i2c_register_devices() is about discovering the i2c devices below a > given bus. This is not what is happening here. > > This is a driver for a master that supports multiple busses, so it the > above loop creates all the busses. My issue here, that it feels like a lot of duplication with existing approaches. Though, it might be a right thing to do at the end. So, let's just assume maintainer will give their point of view. >> > > > + devm_kfree(dev, port); >> > > >> > > This hurts my eyes. Why?! >> > What would you suggest instead? >> >> You even didn't wait for answer, why to ask then? > > Please stop being so rude. OK. >> Moreover, you didn't answer to my question. Why are you doing that >> call implicitly? > > "implicitly" ? What's implicit here ? This is just pretty standard > cleanup after failure, you are being very cryptic here. > > Please state precisely what it is you dislike with that code instead of > expecting us to guess and being nasty about it. Eddie was a genuine > question, he doesn't see what you think is "hurtful to the eyes" in the > code you quoted. In 99% cases when someone calls devm_kfree() it means wrong choice of devm_k*alloc() in the first place. So, with explanation given why it's done in this way I would rather suggest to switch to plain k*alloc() / kfree(). Or do we really care about few hundreds of bytes wasted? -- With Best Regards, Andy Shevchenko