diff options
author | Tony Lindgren <tony@atomide.com> | 2010-05-20 14:37:23 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2010-05-20 14:37:23 -0400 |
commit | f6304f5804f228b6c2fea9e3dfac25c5b2db9b38 (patch) | |
tree | 362b9b6a3bd32b868e5917a32d448ac75c5854df /drivers/s390/char/keyboard.c | |
parent | 4fa73a1bf89ebea4eba8a9982b5f64d266d8b5e9 (diff) | |
parent | 6daa642d9b8ec762b3c5641cd5e5fa855a5405bf (diff) |
Merge branch 'omap4-i2c-init' into omap-for-linus
Diffstat (limited to 'drivers/s390/char/keyboard.c')
-rw-r--r-- | drivers/s390/char/keyboard.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/s390/char/keyboard.c b/drivers/s390/char/keyboard.c index cb6bffe7141a..18d9a497863b 100644 --- a/drivers/s390/char/keyboard.c +++ b/drivers/s390/char/keyboard.c | |||
@@ -49,7 +49,7 @@ static unsigned char ret_diacr[NR_DEAD] = { | |||
49 | struct kbd_data * | 49 | struct kbd_data * |
50 | kbd_alloc(void) { | 50 | kbd_alloc(void) { |
51 | struct kbd_data *kbd; | 51 | struct kbd_data *kbd; |
52 | int i, len; | 52 | int i; |
53 | 53 | ||
54 | kbd = kzalloc(sizeof(struct kbd_data), GFP_KERNEL); | 54 | kbd = kzalloc(sizeof(struct kbd_data), GFP_KERNEL); |
55 | if (!kbd) | 55 | if (!kbd) |
@@ -59,12 +59,11 @@ kbd_alloc(void) { | |||
59 | goto out_kbd; | 59 | goto out_kbd; |
60 | for (i = 0; i < ARRAY_SIZE(key_maps); i++) { | 60 | for (i = 0; i < ARRAY_SIZE(key_maps); i++) { |
61 | if (key_maps[i]) { | 61 | if (key_maps[i]) { |
62 | kbd->key_maps[i] = | 62 | kbd->key_maps[i] = kmemdup(key_maps[i], |
63 | kmalloc(sizeof(u_short)*NR_KEYS, GFP_KERNEL); | 63 | sizeof(u_short) * NR_KEYS, |
64 | GFP_KERNEL); | ||
64 | if (!kbd->key_maps[i]) | 65 | if (!kbd->key_maps[i]) |
65 | goto out_maps; | 66 | goto out_maps; |
66 | memcpy(kbd->key_maps[i], key_maps[i], | ||
67 | sizeof(u_short)*NR_KEYS); | ||
68 | } | 67 | } |
69 | } | 68 | } |
70 | kbd->func_table = kzalloc(sizeof(func_table), GFP_KERNEL); | 69 | kbd->func_table = kzalloc(sizeof(func_table), GFP_KERNEL); |
@@ -72,23 +71,21 @@ kbd_alloc(void) { | |||
72 | goto out_maps; | 71 | goto out_maps; |
73 | for (i = 0; i < ARRAY_SIZE(func_table); i++) { | 72 | for (i = 0; i < ARRAY_SIZE(func_table); i++) { |
74 | if (func_table[i]) { | 73 | if (func_table[i]) { |
75 | len = strlen(func_table[i]) + 1; | 74 | kbd->func_table[i] = kstrdup(func_table[i], |
76 | kbd->func_table[i] = kmalloc(len, GFP_KERNEL); | 75 | GFP_KERNEL); |
77 | if (!kbd->func_table[i]) | 76 | if (!kbd->func_table[i]) |
78 | goto out_func; | 77 | goto out_func; |
79 | memcpy(kbd->func_table[i], func_table[i], len); | ||
80 | } | 78 | } |
81 | } | 79 | } |
82 | kbd->fn_handler = | 80 | kbd->fn_handler = |
83 | kzalloc(sizeof(fn_handler_fn *) * NR_FN_HANDLER, GFP_KERNEL); | 81 | kzalloc(sizeof(fn_handler_fn *) * NR_FN_HANDLER, GFP_KERNEL); |
84 | if (!kbd->fn_handler) | 82 | if (!kbd->fn_handler) |
85 | goto out_func; | 83 | goto out_func; |
86 | kbd->accent_table = | 84 | kbd->accent_table = kmemdup(accent_table, |
87 | kmalloc(sizeof(struct kbdiacruc)*MAX_DIACR, GFP_KERNEL); | 85 | sizeof(struct kbdiacruc) * MAX_DIACR, |
86 | GFP_KERNEL); | ||
88 | if (!kbd->accent_table) | 87 | if (!kbd->accent_table) |
89 | goto out_fn_handler; | 88 | goto out_fn_handler; |
90 | memcpy(kbd->accent_table, accent_table, | ||
91 | sizeof(struct kbdiacruc)*MAX_DIACR); | ||
92 | kbd->accent_table_size = accent_table_size; | 89 | kbd->accent_table_size = accent_table_size; |
93 | return kbd; | 90 | return kbd; |
94 | 91 | ||