On Fri, 25 Sep 2015, Thierry Reding <thierry.reding@xxxxxxxxx> wrote: > On Fri, Sep 25, 2015 at 01:27:28PM +0300, Jani Nikula wrote: >> On Thu, 24 Sep 2015, Thierry Reding <thierry.reding@xxxxxxxxx> wrote: > [...] >> > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > [...] >> > +/** >> > + * platform_register_drivers - register an array of platform drivers >> > + * @drivers: an array of drivers to register >> > + * @count: the number of drivers to register >> > + * >> > + * Registers platform drivers specified by an array. On failure to register a >> > + * driver, all previously registered drivers will be unregistered. Callers of >> > + * this API should use platform_unregister_drivers() to unregister drivers in >> > + * the reverse order. >> > + * >> > + * Returns: 0 on success or a negative error code on failure. >> > + */ >> > +int platform_register_drivers(struct platform_driver * const *drivers, >> > + unsigned int count) >> > +{ >> > + unsigned int i; >> > + int err; >> > + >> > + for (i = 0; i < count; i++) { >> > + pr_debug("registering platform driver %ps\n", drivers[i]); >> > + >> > + err = platform_driver_register(drivers[i]); >> > + if (err < 0) { >> > + pr_err("failed to register platform driver %ps: %d\n", >> > + drivers[i], err); >> > + goto error; >> > + } >> > + } >> > + >> > + return 0; >> > + >> > +error: >> > + while (i--) { >> > + pr_debug("unregistering platform driver %ps\n", drivers[i]); >> > + platform_driver_unregister(drivers[i]); >> > + } >> >> This will call platform_driver_unregister() on the driver that failed, >> but not the first driver. >> >> You should probably make i an int, and use while (--i >= 0). > > Actually it won't. I was especially careful and even tested this with > one driver by instrumenting platform_driver_register() to return failure > at various points in the sequence. > > This works fine. You are right, of course. What was I thinking. My kingdom for an excuse! BR, Jani. -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel