Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: jornada680_kbd - switch top using managed resources

Let's switch the driver to use managed resources, this will simplify
error handling and driver unbinding logic.

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Himangi Saraogi and committed by
Dmitry Torokhov
50525cb3 ec62c7a8

+10 -26
+10 -26
drivers/input/keyboard/jornada680_kbd.c
··· 16 16 * published by the Free Software Foundation. 17 17 */ 18 18 19 + #include <linux/device.h> 19 20 #include <linux/input.h> 20 21 #include <linux/input-polldev.h> 21 22 #include <linux/interrupt.h> ··· 186 185 struct input_dev *input_dev; 187 186 int i, error; 188 187 189 - jornadakbd = kzalloc(sizeof(struct jornadakbd), GFP_KERNEL); 188 + jornadakbd = devm_kzalloc(&pdev->dev, sizeof(struct jornadakbd), 189 + GFP_KERNEL); 190 190 if (!jornadakbd) 191 191 return -ENOMEM; 192 192 193 - poll_dev = input_allocate_polled_device(); 193 + poll_dev = devm_input_allocate_polled_device(&pdev->dev); 194 194 if (!poll_dev) { 195 - error = -ENOMEM; 196 - goto failed; 195 + dev_err(&pdev->dev, "failed to allocate polled input device\n"); 196 + return -ENOMEM; 197 197 } 198 198 199 199 platform_set_drvdata(pdev, jornadakbd); ··· 226 224 input_set_capability(input_dev, EV_MSC, MSC_SCAN); 227 225 228 226 error = input_register_polled_device(jornadakbd->poll_dev); 229 - if (error) 230 - goto failed; 231 - 232 - return 0; 233 - 234 - failed: 235 - printk(KERN_ERR "Jornadakbd: failed to register driver, error: %d\n", 236 - error); 237 - input_free_polled_device(poll_dev); 238 - kfree(jornadakbd); 239 - return error; 240 - 241 - } 242 - 243 - static int jornada680kbd_remove(struct platform_device *pdev) 244 - { 245 - struct jornadakbd *jornadakbd = platform_get_drvdata(pdev); 246 - 247 - input_unregister_polled_device(jornadakbd->poll_dev); 248 - input_free_polled_device(jornadakbd->poll_dev); 249 - kfree(jornadakbd); 227 + if (error) { 228 + dev_err(&pdev->dev, "failed to register polled input device\n"); 229 + return error; 230 + } 250 231 251 232 return 0; 252 233 } ··· 240 255 .owner = THIS_MODULE, 241 256 }, 242 257 .probe = jornada680kbd_probe, 243 - .remove = jornada680kbd_remove, 244 258 }; 245 259 module_platform_driver(jornada680kbd_driver); 246 260