diff options
| -rw-r--r-- | drivers/char/ppdev.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c index 02819e0703c8..87885d146dbb 100644 --- a/drivers/char/ppdev.c +++ b/drivers/char/ppdev.c | |||
| @@ -290,6 +290,7 @@ static int register_device(int minor, struct pp_struct *pp) | |||
| 290 | struct pardevice *pdev = NULL; | 290 | struct pardevice *pdev = NULL; |
| 291 | char *name; | 291 | char *name; |
| 292 | struct pardev_cb ppdev_cb; | 292 | struct pardev_cb ppdev_cb; |
| 293 | int rc = 0; | ||
| 293 | 294 | ||
| 294 | name = kasprintf(GFP_KERNEL, CHRDEV "%x", minor); | 295 | name = kasprintf(GFP_KERNEL, CHRDEV "%x", minor); |
| 295 | if (name == NULL) | 296 | if (name == NULL) |
| @@ -298,8 +299,8 @@ static int register_device(int minor, struct pp_struct *pp) | |||
| 298 | port = parport_find_number(minor); | 299 | port = parport_find_number(minor); |
| 299 | if (!port) { | 300 | if (!port) { |
| 300 | pr_warn("%s: no associated port!\n", name); | 301 | pr_warn("%s: no associated port!\n", name); |
| 301 | kfree(name); | 302 | rc = -ENXIO; |
| 302 | return -ENXIO; | 303 | goto err; |
| 303 | } | 304 | } |
| 304 | 305 | ||
| 305 | memset(&ppdev_cb, 0, sizeof(ppdev_cb)); | 306 | memset(&ppdev_cb, 0, sizeof(ppdev_cb)); |
| @@ -308,16 +309,18 @@ static int register_device(int minor, struct pp_struct *pp) | |||
| 308 | ppdev_cb.private = pp; | 309 | ppdev_cb.private = pp; |
| 309 | pdev = parport_register_dev_model(port, name, &ppdev_cb, minor); | 310 | pdev = parport_register_dev_model(port, name, &ppdev_cb, minor); |
| 310 | parport_put_port(port); | 311 | parport_put_port(port); |
| 311 | kfree(name); | ||
| 312 | 312 | ||
| 313 | if (!pdev) { | 313 | if (!pdev) { |
| 314 | pr_warn("%s: failed to register device!\n", name); | 314 | pr_warn("%s: failed to register device!\n", name); |
| 315 | return -ENXIO; | 315 | rc = -ENXIO; |
| 316 | goto err; | ||
| 316 | } | 317 | } |
| 317 | 318 | ||
| 318 | pp->pdev = pdev; | 319 | pp->pdev = pdev; |
| 319 | dev_dbg(&pdev->dev, "registered pardevice\n"); | 320 | dev_dbg(&pdev->dev, "registered pardevice\n"); |
| 320 | return 0; | 321 | err: |
| 322 | kfree(name); | ||
| 323 | return rc; | ||
| 321 | } | 324 | } |
| 322 | 325 | ||
| 323 | static enum ieee1284_phase init_phase(int mode) | 326 | static enum ieee1284_phase init_phase(int mode) |
