platform/x86: thinkpad_acpi: Use kmemdup rather than duplicating its implementation
authorFuqian Huang <huangfq.daxian@gmail.com>
Wed, 3 Jul 2019 16:30:00 +0000 (00:30 +0800)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 29 Jul 2019 15:31:48 +0000 (18:31 +0300)
kmemdup is introduced to duplicate a region of memory in a neat way.
Rather than kmalloc/kzalloc + memcpy, which the programmer needs to
write the size twice (sometimes lead to mistakes), kmemdup improves
readability, leads to smaller code and also reduce the chances of mistakes.
Suggestion to use kmemdup rather than using kmalloc/kzalloc + memcpy.

Signed-off-by: Fuqian Huang <huangfq.daxian@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/platform/x86/thinkpad_acpi.c

index 7bde4640ef34fdad084305216842bc4c5f864430..d379bdf98a0fd66a801450970471dff85c8da7c1 100644 (file)
@@ -3647,22 +3647,19 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
                goto err_exit;
 
        /* Set up key map */
-       hotkey_keycode_map = kmalloc(TPACPI_HOTKEY_MAP_SIZE,
-                                       GFP_KERNEL);
-       if (!hotkey_keycode_map) {
-               pr_err("failed to allocate memory for key map\n");
-               res = -ENOMEM;
-               goto err_exit;
-       }
-
        keymap_id = tpacpi_check_quirks(tpacpi_keymap_qtable,
                                        ARRAY_SIZE(tpacpi_keymap_qtable));
        BUG_ON(keymap_id >= ARRAY_SIZE(tpacpi_keymaps));
        dbg_printk(TPACPI_DBG_INIT | TPACPI_DBG_HKEY,
                   "using keymap number %lu\n", keymap_id);
 
-       memcpy(hotkey_keycode_map, &tpacpi_keymaps[keymap_id],
-               TPACPI_HOTKEY_MAP_SIZE);
+       hotkey_keycode_map = kmemdup(&tpacpi_keymaps[keymap_id],
+                       TPACPI_HOTKEY_MAP_SIZE, GFP_KERNEL);
+       if (!hotkey_keycode_map) {
+               pr_err("failed to allocate memory for key map\n");
+               res = -ENOMEM;
+               goto err_exit;
+       }
 
        input_set_capability(tpacpi_inputdev, EV_MSC, MSC_SCAN);
        tpacpi_inputdev->keycodesize = TPACPI_HOTKEY_MAP_TYPESIZE;