diff options
Diffstat (limited to 'drivers/input/keyboard/corgikbd.c')
-rw-r--r-- | drivers/input/keyboard/corgikbd.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/input/keyboard/corgikbd.c b/drivers/input/keyboard/corgikbd.c index befdd6006b5..1016c94e65d 100644 --- a/drivers/input/keyboard/corgikbd.c +++ b/drivers/input/keyboard/corgikbd.c | |||
@@ -291,15 +291,12 @@ static int __init corgikbd_probe(struct platform_device *pdev) | |||
291 | { | 291 | { |
292 | struct corgikbd *corgikbd; | 292 | struct corgikbd *corgikbd; |
293 | struct input_dev *input_dev; | 293 | struct input_dev *input_dev; |
294 | int i; | 294 | int i, err = -ENOMEM; |
295 | 295 | ||
296 | corgikbd = kzalloc(sizeof(struct corgikbd), GFP_KERNEL); | 296 | corgikbd = kzalloc(sizeof(struct corgikbd), GFP_KERNEL); |
297 | input_dev = input_allocate_device(); | 297 | input_dev = input_allocate_device(); |
298 | if (!corgikbd || !input_dev) { | 298 | if (!corgikbd || !input_dev) |
299 | kfree(corgikbd); | 299 | goto fail; |
300 | input_free_device(input_dev); | ||
301 | return -ENOMEM; | ||
302 | } | ||
303 | 300 | ||
304 | platform_set_drvdata(pdev, corgikbd); | 301 | platform_set_drvdata(pdev, corgikbd); |
305 | 302 | ||
@@ -341,7 +338,9 @@ static int __init corgikbd_probe(struct platform_device *pdev) | |||
341 | set_bit(SW_TABLET_MODE, input_dev->swbit); | 338 | set_bit(SW_TABLET_MODE, input_dev->swbit); |
342 | set_bit(SW_HEADPHONE_INSERT, input_dev->swbit); | 339 | set_bit(SW_HEADPHONE_INSERT, input_dev->swbit); |
343 | 340 | ||
344 | input_register_device(corgikbd->input); | 341 | err = input_register_device(corgikbd->input); |
342 | if (err) | ||
343 | goto fail; | ||
345 | 344 | ||
346 | mod_timer(&corgikbd->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL)); | 345 | mod_timer(&corgikbd->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL)); |
347 | 346 | ||
@@ -362,6 +361,10 @@ static int __init corgikbd_probe(struct platform_device *pdev) | |||
362 | pxa_gpio_mode(CORGI_GPIO_AK_INT | GPIO_IN); | 361 | pxa_gpio_mode(CORGI_GPIO_AK_INT | GPIO_IN); |
363 | 362 | ||
364 | return 0; | 363 | return 0; |
364 | |||
365 | fail: input_free_device(input_dev); | ||
366 | kfree(corgikbd); | ||
367 | return err; | ||
365 | } | 368 | } |
366 | 369 | ||
367 | static int corgikbd_remove(struct platform_device *pdev) | 370 | static int corgikbd_remove(struct platform_device *pdev) |