diff --git a/drivers/input/keyboard/ipaq-micro-keys.c b/drivers/input/keyboard/ipaq-micro-keys.c index ca7ec054b1ce..695ef3c2081a 100644 --- a/drivers/input/keyboard/ipaq-micro-keys.c +++ b/drivers/input/keyboard/ipaq-micro-keys.c @@ -20,12 +20,6 @@ #include #include -struct ipaq_micro_keys { - struct ipaq_micro *micro; - struct input_dev *input; - u16 *codes; -}; - static const u16 micro_keycodes[] = { KEY_RECORD, /* 1: Record button */ KEY_CALENDAR, /* 2: Calendar */ @@ -38,6 +32,12 @@ static const u16 micro_keycodes[] = { KEY_DOWN, /* 9: Down */ }; +struct ipaq_micro_keys { + struct ipaq_micro *micro; + struct input_dev *input; + u16 codes[ARRAY_SIZE(micro_keycodes)]; +}; + static void micro_key_receive(void *data, int len, unsigned char *msg) { struct ipaq_micro_keys *keys = data; @@ -102,10 +102,7 @@ static int micro_key_probe(struct platform_device *pdev) keys->input->keycodesize = sizeof(micro_keycodes[0]); keys->input->keycodemax = ARRAY_SIZE(micro_keycodes); - keys->codes = devm_kmemdup_array(&pdev->dev, micro_keycodes, keys->input->keycodemax, - keys->input->keycodesize, GFP_KERNEL); - if (!keys->codes) - return -ENOMEM; + memcpy(keys->codes, micro_keycodes, sizeof(keys->codes)); keys->input->keycode = keys->codes;