On Tue, 2018-01-02 at 20:08 +0100, Lukas Wunner wrote: > A significant portion of this driver lacks error handling. As a first > step, add error paths to bcm_gpio_set_power(), bcm_open(), > bcm_close(), > bcm_suspend_device(), bcm_resume_device(), bcm_resume(), bcm_probe() > and > bcm_serdev_probe(). (I've also scrutinized bcm_suspend() but think > it's > fine as is.) > > Those are all the functions accessing the device wake and shutdown > GPIO. > On Apple Macs the pins are accessed through ACPI methods, which may > fail > for various reasons, hence proper error handling is necessary. Non- > Macs > access the pins directly, which may fail as well but the GPIO core > does > not yet pass back errors to consumers. > > + int err = 0; Obviously redundant assignment. > + > + if (powered && !IS_ERR(dev->clk) && !dev->clk_enabled) { > + err = clk_prepare_enable(dev->clk); > + if (err) > + return err; > + } > > gpiod_set_value(dev->shutdown, powered); > + err = bcm_gpio_set_device_wakeup(dev, powered); > + if (err) > + goto err_revert_shutdown; > +#ifdef CONFIG_PM > + bcm->dev->hu = NULL; > +#endif Hmm... There is no field in !PM case? -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html