Messages in this thread | | | Subject | Re: [PATCH v3 2/2] driver core: add helper for deferred probe reason setting | From | Ahmad Fatoum <> | Date | Mon, 5 Apr 2021 10:27:56 +0200 |
| |
Hello Greg,
On 23.03.21 16:37, Ahmad Fatoum wrote: > We now have three places within the same file doing the same operation > of freeing this pointer and setting it anew. A helper makes this > arguably easier to read, so add one. > > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> > Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> > Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
are there still objections to this patch? Patch 1 was applied, should I resend without?
Cheers, Ahmad
> --- > v2 -> v3: > - fixed typo in commit message (Andy) > - collected Andy's and Andrzej's Reviewed-by > v1 -> v2: > - no change > --- > drivers/base/dd.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/base/dd.c b/drivers/base/dd.c > index e2cf3b29123e..4201baa1cc13 100644 > --- a/drivers/base/dd.c > +++ b/drivers/base/dd.c > @@ -69,6 +69,12 @@ static char async_probe_drv_names[ASYNC_DRV_NAMES_MAX_LEN]; > */ > static bool defer_all_probes; > > +static void __device_set_deferred_probe_reason(const struct device *dev, char *reason) > +{ > + kfree(dev->p->deferred_probe_reason); > + dev->p->deferred_probe_reason = reason; > +} > + > /* > * deferred_probe_work_func() - Retry probing devices in the active list. > */ > @@ -97,8 +103,7 @@ static void deferred_probe_work_func(struct work_struct *work) > > get_device(dev); > > - kfree(dev->p->deferred_probe_reason); > - dev->p->deferred_probe_reason = NULL; > + __device_set_deferred_probe_reason(dev, NULL); > > /* > * Drop the mutex while probing each device; the probe path may > @@ -140,8 +145,7 @@ void driver_deferred_probe_del(struct device *dev) > if (!list_empty(&dev->p->deferred_probe)) { > dev_dbg(dev, "Removed from deferred list\n"); > list_del_init(&dev->p->deferred_probe); > - kfree(dev->p->deferred_probe_reason); > - dev->p->deferred_probe_reason = NULL; > + __device_set_deferred_probe_reason(dev, NULL); > } > mutex_unlock(&deferred_probe_mutex); > } > @@ -220,11 +224,12 @@ void device_unblock_probing(void) > void device_set_deferred_probe_reason(const struct device *dev, struct va_format *vaf) > { > const char *drv = dev_driver_string(dev); > + char *reason; > > mutex_lock(&deferred_probe_mutex); > > - kfree(dev->p->deferred_probe_reason); > - dev->p->deferred_probe_reason = kasprintf(GFP_KERNEL, "%s: %pV", drv, vaf); > + reason = kasprintf(GFP_KERNEL, "%s: %pV", drv, vaf); > + __device_set_deferred_probe_reason(dev, reason); > > mutex_unlock(&deferred_probe_mutex); > } >
-- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
| |