Thread (4 messages) 4 messages, 3 authors, 2017-05-12

Re: [PATCH] omapfb: Use devm_kcalloc() in vrfb_probe()

flat view

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2017-05-12 07:07:22
Also in: kernel-janitors, linux-omap, lkml

On Thu, May 11, 2017 at 5:22 PM, Bartlomiej Zolnierkiewicz
[off-list ref] wrote:
On Thursday, May 11, 2017 04:27:19 PM Bartlomiej Zolnierkiewicz wrote:
quoted
quoted
@@ -358,11 +358,7 @@ static int __init vrfb_probe(struct platform_device *pdev)
            return PTR_ERR(vrfb_base);

    num_ctxs = pdev->num_resources - 1;
-
-   ctxs = devm_kzalloc(&pdev->dev,
-                   sizeof(struct vrfb_ctx) * num_ctxs,
-                   GFP_KERNEL);
-
+   ctxs = devm_kcalloc(&pdev->dev, num_ctxs, sizeof(*ctxs), GFP_KERNEL);
This change makes the resulting binary larger by 24 bytes (probably
because of the need to have an additional function argument) and
24 bytes seemed too much for just an additional function argument
so I've checked the source:

static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp)
{
        return devm_kmalloc(dev, size, gfp | __GFP_ZERO);
}
static inline void *devm_kmalloc_array(struct device *dev,
                                       size_t n, size_t size, gfp_t flags)
{
        if (size != 0 && n > SIZE_MAX / size)
                return NULL;
        return devm_kmalloc(dev, n * size, flags);
}
static inline void *devm_kcalloc(struct device *dev,
                                 size_t n, size_t size, gfp_t flags)
{
        return devm_kmalloc_array(dev, n, size, flags | __GFP_ZERO);
}

The extra kcalloc() checks are inlined currently into each instance.
And in this case the compiler cannot optimize them away as n is not
known at compile time.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help