Re: [PATCH] nvmem: core: fix the return value check when calling the notifier chain

From: Bartosz Golaszewski
Date: Fri Feb 15 2019 - 04:41:52 EST


pt., 15 lut 2019 o 10:28 Srinivas Kandagatla
<srinivas.kandagatla@xxxxxxxxxx> napisaÅ(a):
>
>
>
> On 14/02/2019 16:23, Bartosz Golaszewski wrote:
> > diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> > index f7301bb4ef3b..a3bed2d9aec7 100644
> > --- a/drivers/nvmem/core.c
> > +++ b/drivers/nvmem/core.c
> > @@ -687,7 +687,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
> > goto err_remove_cells;
> >
> > rval = blocking_notifier_call_chain(&nvmem_notifier, NVMEM_ADD, nvmem);
> > - if (rval)
> > + if (rval < 0)
> > goto err_remove_cells;
>
> rval will be masked with STOP MASK, so the above statement could be
> false even if we have error.
> So you should consider returning an errono which can be understood by user:
>
> may be something like this:
>
> if (rval & NOTIFY_STOP_MASK) {
> rval = notifier_to_errno(rval);
> goto err_remove_cells
> }
>

Actually I'm now thinking we can remove this check at all - most users
never check the return values of notifier chain calls. This function
cannot fail in itself. What do you think?

Bart