public inbox for linux-iio@vger.kernel.org help / color / mirror / Atom feed
* [PATCH] iio: Use an early return in iio_device_alloc to simplify code. @ 2020-04-19 15:13 jic23 2020-04-20 6:17 ` Ardelean, Alexandru 0 siblings, 1 reply; 4+ messages in thread From: jic23 @ 2020-04-19 15:13 UTC (permalink / raw) To: linux-iio; +Cc: Jonathan Cameron, Alexandru Ardelean From: Jonathan Cameron <Jonathan.Cameron@huawei.com> Noticed whilst reviewing Alexandru's patch to the same function. If we simply flip the logic and return NULL immediately after memory allocation failure we reduce the indent of the following block and end up with more 'idiomatic' kernel code. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Cc: Alexandru Ardelean <alexandru.ardelean@analog.com> --- drivers/iio/industrialio-core.c | 38 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index f4daf19f2a3b..96f6dacb206d 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -1504,27 +1504,27 @@ struct iio_dev *iio_device_alloc(int sizeof_priv) alloc_size += IIO_ALIGN - 1; dev = kzalloc(alloc_size, GFP_KERNEL); + if (!dev) + return NULL; - if (dev) { - dev->dev.groups = dev->groups; - dev->dev.type = &iio_device_type; - dev->dev.bus = &iio_bus_type; - device_initialize(&dev->dev); - dev_set_drvdata(&dev->dev, (void *)dev); - mutex_init(&dev->mlock); - mutex_init(&dev->info_exist_lock); - INIT_LIST_HEAD(&dev->channel_attr_list); - - dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); - if (dev->id < 0) { - /* cannot use a dev_err as the name isn't available */ - pr_err("failed to get device id\n"); - kfree(dev); - return NULL; - } - dev_set_name(&dev->dev, "iio:device%d", dev->id); - INIT_LIST_HEAD(&dev->buffer_list); + dev->dev.groups = dev->groups; + dev->dev.type = &iio_device_type; + dev->dev.bus = &iio_bus_type; + device_initialize(&dev->dev); + dev_set_drvdata(&dev->dev, (void *)dev); + mutex_init(&dev->mlock); + mutex_init(&dev->info_exist_lock); + INIT_LIST_HEAD(&dev->channel_attr_list); + + dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); + if (dev->id < 0) { + /* cannot use a dev_err as the name isn't available */ + pr_err("failed to get device id\n"); + kfree(dev); + return NULL; } + dev_set_name(&dev->dev, "iio:device%d", dev->id); + INIT_LIST_HEAD(&dev->buffer_list); return dev; } -- 2.26.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] iio: Use an early return in iio_device_alloc to simplify code. 2020-04-19 15:13 [PATCH] iio: Use an early return in iio_device_alloc to simplify code jic23 @ 2020-04-20 6:17 ` Ardelean, Alexandru 2020-04-25 15:47 ` Jonathan Cameron 0 siblings, 1 reply; 4+ messages in thread From: Ardelean, Alexandru @ 2020-04-20 6:17 UTC (permalink / raw) To: jic23@kernel.org, linux-iio@vger.kernel.org; +Cc: Jonathan.Cameron@huawei.com On Sun, 2020-04-19 at 16:13 +0100, jic23@kernel.org wrote: > [External] > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > Noticed whilst reviewing Alexandru's patch to the same function. > If we simply flip the logic and return NULL immediately after memory > allocation failure we reduce the indent of the following block and > end up with more 'idiomatic' kernel code. > I also was tempted to do it, but was tempted [a bit more] by the initial change that I goofed. A few thoughts on this [can be ignored]. But, since doing this change, should 'dev' be renamed to 'indio_dev'? It shouldn't be a lot more code than the current change [I hope]. When looking through IIO core, I got a minor/slight confusion on this alloc code about the name 'dev' [which is of type 'struct iio_dev' vs 'struct device', as is more customary]. If 'dev' was chosen to fit within any 80 col-width limit, that limit should be less likely to hit now. 1 more inline. Well, even with/without these changes. Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > Cc: Alexandru Ardelean <alexandru.ardelean@analog.com> > --- > drivers/iio/industrialio-core.c | 38 ++++++++++++++++----------------- > 1 file changed, 19 insertions(+), 19 deletions(-) > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index f4daf19f2a3b..96f6dacb206d 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -1504,27 +1504,27 @@ struct iio_dev *iio_device_alloc(int sizeof_priv) > alloc_size += IIO_ALIGN - 1; > > dev = kzalloc(alloc_size, GFP_KERNEL); > + if (!dev) > + return NULL; > > - if (dev) { > - dev->dev.groups = dev->groups; > - dev->dev.type = &iio_device_type; > - dev->dev.bus = &iio_bus_type; > - device_initialize(&dev->dev); > - dev_set_drvdata(&dev->dev, (void *)dev); > - mutex_init(&dev->mlock); > - mutex_init(&dev->info_exist_lock); > - INIT_LIST_HEAD(&dev->channel_attr_list); > - > - dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); > - if (dev->id < 0) { > - /* cannot use a dev_err as the name isn't available */ > - pr_err("failed to get device id\n"); > - kfree(dev); > - return NULL; > - } > - dev_set_name(&dev->dev, "iio:device%d", dev->id); > - INIT_LIST_HEAD(&dev->buffer_list); > + dev->dev.groups = dev->groups; > + dev->dev.type = &iio_device_type; > + dev->dev.bus = &iio_bus_type; > + device_initialize(&dev->dev); > + dev_set_drvdata(&dev->dev, (void *)dev); > + mutex_init(&dev->mlock); > + mutex_init(&dev->info_exist_lock); > + INIT_LIST_HEAD(&dev->channel_attr_list); > + > + dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); > + if (dev->id < 0) { > + /* cannot use a dev_err as the name isn't available */ > + pr_err("failed to get device id\n"); > + kfree(dev); > + return NULL; would it be too much for this patch to move this right after the kzalloc()? no strong opinion from my side to do it or not; but it does save some init cycles, and compresses this init block a bit; > } > + dev_set_name(&dev->dev, "iio:device%d", dev->id); > + INIT_LIST_HEAD(&dev->buffer_list); > > return dev; > } ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] iio: Use an early return in iio_device_alloc to simplify code. 2020-04-20 6:17 ` Ardelean, Alexandru @ 2020-04-25 15:47 ` Jonathan Cameron 2020-04-26 7:25 ` Ardelean, Alexandru 0 siblings, 1 reply; 4+ messages in thread From: Jonathan Cameron @ 2020-04-25 15:47 UTC (permalink / raw) To: Ardelean, Alexandru Cc: linux-iio@vger.kernel.org, Jonathan.Cameron@huawei.com On Mon, 20 Apr 2020 06:17:32 +0000 "Ardelean, Alexandru" <alexandru.Ardelean@analog.com> wrote: > On Sun, 2020-04-19 at 16:13 +0100, jic23@kernel.org wrote: > > [External] > > > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > Noticed whilst reviewing Alexandru's patch to the same function. > > If we simply flip the logic and return NULL immediately after memory > > allocation failure we reduce the indent of the following block and > > end up with more 'idiomatic' kernel code. > > > > I also was tempted to do it, but was tempted [a bit more] by the initial change > that I goofed. > > A few thoughts on this [can be ignored]. > But, since doing this change, should 'dev' be renamed to 'indio_dev'? > It shouldn't be a lot more code than the current change [I hope]. > When looking through IIO core, I got a minor/slight confusion on this alloc code > about the name 'dev' [which is of type 'struct iio_dev' vs 'struct device', as > is more customary]. > > If 'dev' was chosen to fit within any 80 col-width limit, that limit should be > less likely to hit now. A different type of cleanup, so I think worth a separate patch (even though it's messing with the same block of code.) Got to keep to the rules I pester everyone else into following :) So I'll apply this as is and might get the dev->indio_dev one out after I've caught up with rest of email queue. Thanks, Jonathan > > 1 more inline. > > Well, even with/without these changes. > > Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > Cc: Alexandru Ardelean <alexandru.ardelean@analog.com> > > --- > > drivers/iio/industrialio-core.c | 38 ++++++++++++++++----------------- > > 1 file changed, 19 insertions(+), 19 deletions(-) > > > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > > index f4daf19f2a3b..96f6dacb206d 100644 > > --- a/drivers/iio/industrialio-core.c > > +++ b/drivers/iio/industrialio-core.c > > @@ -1504,27 +1504,27 @@ struct iio_dev *iio_device_alloc(int sizeof_priv) > > alloc_size += IIO_ALIGN - 1; > > > > dev = kzalloc(alloc_size, GFP_KERNEL); > > + if (!dev) > > + return NULL; > > > > - if (dev) { > > - dev->dev.groups = dev->groups; > > - dev->dev.type = &iio_device_type; > > - dev->dev.bus = &iio_bus_type; > > - device_initialize(&dev->dev); > > - dev_set_drvdata(&dev->dev, (void *)dev); > > - mutex_init(&dev->mlock); > > - mutex_init(&dev->info_exist_lock); > > - INIT_LIST_HEAD(&dev->channel_attr_list); > > - > > - dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); > > - if (dev->id < 0) { > > - /* cannot use a dev_err as the name isn't available */ > > - pr_err("failed to get device id\n"); > > - kfree(dev); > > - return NULL; > > - } > > - dev_set_name(&dev->dev, "iio:device%d", dev->id); > > - INIT_LIST_HEAD(&dev->buffer_list); > > + dev->dev.groups = dev->groups; > > + dev->dev.type = &iio_device_type; > > + dev->dev.bus = &iio_bus_type; > > + device_initialize(&dev->dev); > > + dev_set_drvdata(&dev->dev, (void *)dev); > > + mutex_init(&dev->mlock); > > + mutex_init(&dev->info_exist_lock); > > + INIT_LIST_HEAD(&dev->channel_attr_list); > > + > > + dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); > > + if (dev->id < 0) { > > + /* cannot use a dev_err as the name isn't available */ > > + pr_err("failed to get device id\n"); > > + kfree(dev); > > + return NULL; > > would it be too much for this patch to move this right after the kzalloc()? > no strong opinion from my side to do it or not; > but it does save some init cycles, and compresses this init block a bit; It doesn't really save any cycles because the chance of failure of ID allocation is negligible... Now I'd agree with you if writing from scratch, but as a tidy up patch, it's good to keep things really simple. > > > } > > + dev_set_name(&dev->dev, "iio:device%d", dev->id); > > + INIT_LIST_HEAD(&dev->buffer_list); > > > > return dev; > > } ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] iio: Use an early return in iio_device_alloc to simplify code. 2020-04-25 15:47 ` Jonathan Cameron @ 2020-04-26 7:25 ` Ardelean, Alexandru 0 siblings, 0 replies; 4+ messages in thread From: Ardelean, Alexandru @ 2020-04-26 7:25 UTC (permalink / raw) To: jic23@kernel.org; +Cc: Jonathan.Cameron@huawei.com, linux-iio@vger.kernel.org On Sat, 2020-04-25 at 16:47 +0100, Jonathan Cameron wrote: > On Mon, 20 Apr 2020 06:17:32 +0000 > "Ardelean, Alexandru" <alexandru.Ardelean@analog.com> wrote: > > > On Sun, 2020-04-19 at 16:13 +0100, jic23@kernel.org wrote: > > > [External] > > > > > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > > > Noticed whilst reviewing Alexandru's patch to the same function. > > > If we simply flip the logic and return NULL immediately after memory > > > allocation failure we reduce the indent of the following block and > > > end up with more 'idiomatic' kernel code. > > > > > > > I also was tempted to do it, but was tempted [a bit more] by the initial > > change > > that I goofed. > > > > A few thoughts on this [can be ignored]. > > But, since doing this change, should 'dev' be renamed to 'indio_dev'? > > It shouldn't be a lot more code than the current change [I hope]. > > When looking through IIO core, I got a minor/slight confusion on this alloc > > code > > about the name 'dev' [which is of type 'struct iio_dev' vs 'struct device', > > as > > is more customary]. > > > > If 'dev' was chosen to fit within any 80 col-width limit, that limit should > > be > > less likely to hit now. > > A different type of cleanup, so I think worth a separate patch > (even though it's messing with the same block of code.) > > Got to keep to the rules I pester everyone else into following :) Fair enough. I was assuming there would be a preference to keep the patch semantic as simple as possible. I thought I'd point them out, since I also looked over this bit a while back. > > So I'll apply this as is and might get the dev->indio_dev one out > after I've caught up with rest of email queue. > > Thanks, > > Jonathan > > > 1 more inline. > > > > Well, even with/without these changes. > > > > Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > Cc: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > --- > > > drivers/iio/industrialio-core.c | 38 ++++++++++++++++----------------- > > > 1 file changed, 19 insertions(+), 19 deletions(-) > > > > > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio- > > > core.c > > > index f4daf19f2a3b..96f6dacb206d 100644 > > > --- a/drivers/iio/industrialio-core.c > > > +++ b/drivers/iio/industrialio-core.c > > > @@ -1504,27 +1504,27 @@ struct iio_dev *iio_device_alloc(int sizeof_priv) > > > alloc_size += IIO_ALIGN - 1; > > > > > > dev = kzalloc(alloc_size, GFP_KERNEL); > > > + if (!dev) > > > + return NULL; > > > > > > - if (dev) { > > > - dev->dev.groups = dev->groups; > > > - dev->dev.type = &iio_device_type; > > > - dev->dev.bus = &iio_bus_type; > > > - device_initialize(&dev->dev); > > > - dev_set_drvdata(&dev->dev, (void *)dev); > > > - mutex_init(&dev->mlock); > > > - mutex_init(&dev->info_exist_lock); > > > - INIT_LIST_HEAD(&dev->channel_attr_list); > > > - > > > - dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); > > > - if (dev->id < 0) { > > > - /* cannot use a dev_err as the name isn't available */ > > > - pr_err("failed to get device id\n"); > > > - kfree(dev); > > > - return NULL; > > > - } > > > - dev_set_name(&dev->dev, "iio:device%d", dev->id); > > > - INIT_LIST_HEAD(&dev->buffer_list); > > > + dev->dev.groups = dev->groups; > > > + dev->dev.type = &iio_device_type; > > > + dev->dev.bus = &iio_bus_type; > > > + device_initialize(&dev->dev); > > > + dev_set_drvdata(&dev->dev, (void *)dev); > > > + mutex_init(&dev->mlock); > > > + mutex_init(&dev->info_exist_lock); > > > + INIT_LIST_HEAD(&dev->channel_attr_list); > > > + > > > + dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); > > > + if (dev->id < 0) { > > > + /* cannot use a dev_err as the name isn't available */ > > > + pr_err("failed to get device id\n"); > > > + kfree(dev); > > > + return NULL; > > > > would it be too much for this patch to move this right after the kzalloc()? > > no strong opinion from my side to do it or not; > > but it does save some init cycles, and compresses this init block a bit; > > It doesn't really save any cycles because the chance of failure of ID > allocation > is negligible... Now I'd agree with you if writing from scratch, but as a > tidy up patch, it's good to keep things really simple. > > > > > } > > > + dev_set_name(&dev->dev, "iio:device%d", dev->id); > > > + INIT_LIST_HEAD(&dev->buffer_list); > > > > > > return dev; > > > } ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-04-26 7:25 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-04-19 15:13 [PATCH] iio: Use an early return in iio_device_alloc to simplify code jic23 2020-04-20 6:17 ` Ardelean, Alexandru 2020-04-25 15:47 ` Jonathan Cameron 2020-04-26 7:25 ` Ardelean, Alexandru
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox