The semantic patch that makes this change is available in scripts/coccinelle/api/memdup.cocci. Signed-off-by: Thomas Meyer <thomas@xxxxxxxx> --- diff -u -p a/arch/mips/ath79/dev-gpio-buttons.c b/arch/mips/ath79/dev-gpio-buttons.c --- a/arch/mips/ath79/dev-gpio-buttons.c 2011-11-07 19:37:22.626233914 +0100 +++ b/arch/mips/ath79/dev-gpio-buttons.c 2011-11-08 11:02:34.088856260 +0100 @@ -25,12 +25,10 @@ void __init ath79_register_gpio_keys_pol struct gpio_keys_button *p; int err; - p = kmalloc(nbuttons * sizeof(*p), GFP_KERNEL); + p = kmemdup(buttons, nbuttons * sizeof(*p), GFP_KERNEL); if (!p) return; - memcpy(p, buttons, nbuttons * sizeof(*p)); - pdev = platform_device_alloc("gpio-keys-polled", id); if (!pdev) goto err_free_buttons; diff -u -p a/arch/mips/ath79/dev-leds-gpio.c b/arch/mips/ath79/dev-leds-gpio.c --- a/arch/mips/ath79/dev-leds-gpio.c 2011-11-07 19:37:22.626233914 +0100 +++ b/arch/mips/ath79/dev-leds-gpio.c 2011-11-08 11:02:33.992188296 +0100 @@ -24,12 +24,10 @@ void __init ath79_register_leds_gpio(int struct gpio_led *p; int err; - p = kmalloc(num_leds * sizeof(*p), GFP_KERNEL); + p = kmemdup(leds, num_leds * sizeof(*p), GFP_KERNEL); if (!p) return; - memcpy(p, leds, num_leds * sizeof(*p)); - pdev = platform_device_alloc("leds-gpio", id); if (!pdev) goto err_free_leds;