|
@@ -59,12 +59,11 @@ kbd_alloc(void) {
|
|
|
goto out_kbd;
|
|
|
for (i = 0; i < ARRAY_SIZE(key_maps); i++) {
|
|
|
if (key_maps[i]) {
|
|
|
- kbd->key_maps[i] =
|
|
|
- kmalloc(sizeof(u_short)*NR_KEYS, GFP_KERNEL);
|
|
|
+ kbd->key_maps[i] = kmemdup(key_maps[i],
|
|
|
+ sizeof(u_short) * NR_KEYS,
|
|
|
+ GFP_KERNEL);
|
|
|
if (!kbd->key_maps[i])
|
|
|
goto out_maps;
|
|
|
- memcpy(kbd->key_maps[i], key_maps[i],
|
|
|
- sizeof(u_short)*NR_KEYS);
|
|
|
}
|
|
|
}
|
|
|
kbd->func_table = kzalloc(sizeof(func_table), GFP_KERNEL);
|
|
@@ -82,12 +81,11 @@ kbd_alloc(void) {
|
|
|
kzalloc(sizeof(fn_handler_fn *) * NR_FN_HANDLER, GFP_KERNEL);
|
|
|
if (!kbd->fn_handler)
|
|
|
goto out_func;
|
|
|
- kbd->accent_table =
|
|
|
- kmalloc(sizeof(struct kbdiacruc)*MAX_DIACR, GFP_KERNEL);
|
|
|
+ kbd->accent_table = kmemdup(accent_table,
|
|
|
+ sizeof(struct kbdiacruc) * MAX_DIACR,
|
|
|
+ GFP_KERNEL);
|
|
|
if (!kbd->accent_table)
|
|
|
goto out_fn_handler;
|
|
|
- memcpy(kbd->accent_table, accent_table,
|
|
|
- sizeof(struct kbdiacruc)*MAX_DIACR);
|
|
|
kbd->accent_table_size = accent_table_size;
|
|
|
return kbd;
|
|
|
|