]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Input: ipaq-micro-keys - simplify allocation
authorRosen Penev <rosenp@gmail.com>
Tue, 9 Jun 2026 21:35:32 +0000 (14:35 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 10 Jun 2026 06:06:27 +0000 (23:06 -0700)
Embed the keycode array in the struct to have a single allocation.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://patch.msgid.link/20260609213532.25181-1-rosenp@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/ipaq-micro-keys.c

index ca7ec054b1cefe0f93d77fa899c5c1a5f35457da..695ef3c2081a46ed62ef480945389380b755f496 100644 (file)
 #include <linux/platform_device.h>
 #include <linux/mfd/ipaq-micro.h>
 
-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;