Re: [PATCH] mfd/mc13xxx: don't open code kasprintf

Samuel Ortiz
2010-10-19T10:50:54Z

Hi Uwe,

On Sun, Oct 10, 2010 at 09:39:46PM +0200, Uwe Kleine-König wrote:
> This fixes an off by one error noticed by Vasiliy Kulikov en passant.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> drivers/mfd/mc13xxx-core.c | 7 +------
> 1 files changed, 1 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c
> index 93258ad..b763b8c 100644
> --- a/drivers/mfd/mc13xxx-core.c
> +++ b/drivers/mfd/mc13xxx-core.c
> @@ -687,7 +687,6 @@ EXPORT_SYMBOL_GPL(mc13783_adc_do_conversion);
> static int mc13xxx_add_subdevice_pdata(struct mc13xxx *mc13xxx,
> const char *format, void *pdata, size_t pdata_size)
> {
> - char buf[30];
> const char *name = mc13xxx_get_chipname(mc13xxx);
>
> struct mfd_cell cell = {
> @@ -695,11 +694,7 @@ static int mc13xxx_add_subdevice_pdata(struct mc13xxx *mc13xxx,
> .data_size = pdata_size,
> };
>
> - /* there is no asnprintf in the kernel :-( */
> - if (snprintf(buf, sizeof(buf), format, name) > sizeof(buf))
> - return -E2BIG;
> -
> - cell.name = kmemdup(buf, strlen(buf) + 1, GFP_KERNEL);
> + cell.name = kasprintf(GFP_KERNEL, format, name);
I don't think you need to allocate a name pointer here.
cell.name = mc13xxx_get_chipname(mc13xxx); should be enough as
platform_device_alloc() will memcpy it into an allocated buffer.

Cheers,
Samuel.

> if (!cell.name)
> return -ENOMEM;
>
> --
> 1.7.2.3
>

--
Intel Open Source Technology Centre