On Thu, Sep 10, 2020 at 9:59 AM Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote: > On Thu, 10 Sep 2020 at 08:52, Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > > On Thursday, September 10, 2020, Peter Rosin <peda@xxxxxxxxxx> wrote: > >> On 2020-09-09 21:57, Krzysztof Kozlowski wrote: > >> > On Wed, 9 Sep 2020 at 20:36, Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > >> >> On Sat, 29 Aug 2020 08:47:16 +0200 > >> >> Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote: ... > >> >>> @@ -596,12 +594,9 @@ static int stm32_adc_core_switches_probe(struct device *dev, > >> >>> priv->booster = devm_regulator_get_optional(dev, "booster"); > >> >>> if (IS_ERR(priv->booster)) { > >> >>> ret = PTR_ERR(priv->booster); > >> >>> - if (ret != -ENODEV) { > >> >>> - if (ret != -EPROBE_DEFER) > >> >>> - dev_err(dev, "can't get booster %d\n", > >> >>> - ret); > >> >>> - return ret; > >> >>> - } > >> >>> + if (ret != -ENODEV) > >> >>> + dev_err_probe(dev, ret, "can't get booster\n"); > >> >> > >> >> This tripped a warning and got the patch dropped because we no longer > >> >> return on error. > >> > >> As Jonathan already said, we no longer return in this hunk. I.e., you have > >> clobbered the error path. > > > > > > Exactly my point why I proposed _must_check in the first place. > > That was not exactly that point as you did not mention possible errors > but only "miss the opportunity to optimize". Optimization is different > things than a mistake. Yes, and that's what happened here. You missed optimization which led to an error. And this is a good showcase to see how dev_err_probe() may be misused because of overlooking subtle details. Perhaps we can do static inline __must_check dev_err_probe_ret(...) { return dev_err_probe(...); } (or other way around, introduce dev_err_probe_noret(), yes, name sucks) -- With Best Regards, Andy Shevchenko