Re: [PATCH v3 10/23] clk: Add clock driver for the RISC-V RPMI clock service group

Andy Shevchenko
2025-05-23T16:35:15Z

On Thu, May 22, 2025 at 06:44:09PM +0530, Rahul Pathak wrote:
> On Mon, May 12, 2025 at 12:38 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> > On Sun, May 11, 2025 at 07:09:26PM +0530, Anup Patel wrote:

First of all, remove all unneeded context with which you are agree.
I should not crawl through dozens of lines of the email to see what
you wanted to discuss. Take it as everyday practice, please.

...

> > > + /* Validate RPMI specification version */
> > > + rpmi_mbox_init_get_attribute(&msg, RPMI_MBOX_ATTR_SPEC_VERSION);
> > > + ret = rpmi_mbox_send_message(context->chan, &msg);
> > > + if (ret) {
> > > + dev_err_probe(dev, ret, "Failed to get spec version\n");
> > > + goto fail_free_channel;
> >
> > This is simply wrong. You should not do goto before any devm_*() calls.
> > The error path and ->remove(), if present) is broken. Fix it accordingly.
> >
> > Here should be
> >
> > return dev_err_probe(...);
> >
> > it's your homework to understand how to achieve that. Plenty of the examples in
> > the kernel.
>
> So far I could only find drivers with "goto used before devm_*" pattern used.

Of course, because they are wrong and most of them need fixing.
(Yes, there are some exceptional cases, but I don't believe it's many)

> Can you please point me to the example which does not use goto before
> devm_* apis.

Tons of them, any which starts with devm_*() call in the probe, most of the
drivers/iio/, for instance. Just a random pick here: drivers/iio/accel/bma400*.

(and FWIW it was indeed the very first driver I was looking into while writing
this email)

> Also, I couldn't understand the problem which may happen because of
> this. Can you please explain?

devm_*() defers the resource deallocation to the end of ->remove() and error
path in ->probe(). This breaks the symmetry of the allocating / deallocating
resources. At worst case it will be an Oops on ->remove() or when error happens
during the ->probe().

...

My gosh, the original text was quoted twice! Next time I won't even look into
the email reply which won't have a reduced context.

--
With Best Regards,
Andy Shevchenko