* [bug report] ppdev: fix memory leak
@ 2016-12-15 21:08 Dan Carpenter
2016-12-15 21:13 ` Sudip Mukherjee
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2016-12-15 21:08 UTC (permalink / raw)
To: kernel-janitors
Hello Sudip Mukherjee,
The patch 2bd362d5f45c: "ppdev: fix memory leak" from Nov 10, 2016,
leads to the following static checker warning:
drivers/char/ppdev.c:314 register_device()
warn: passing freed memory 'name'
drivers/char/ppdev.c
287 static int register_device(int minor, struct pp_struct *pp)
288 {
289 struct parport *port;
290 struct pardevice *pdev = NULL;
291 char *name;
292 struct pardev_cb ppdev_cb;
293
294 name = kasprintf(GFP_KERNEL, CHRDEV "%x", minor);
295 if (name = NULL)
296 return -ENOMEM;
297
298 port = parport_find_number(minor);
299 if (!port) {
300 pr_warn("%s: no associated port!\n", name);
301 kfree(name);
302 return -ENXIO;
303 }
304
305 memset(&ppdev_cb, 0, sizeof(ppdev_cb));
306 ppdev_cb.irq_func = pp_irq;
307 ppdev_cb.flags = (pp->flags & PP_EXCL) ? PARPORT_FLAG_EXCL : 0;
308 ppdev_cb.private = pp;
309 pdev = parport_register_dev_model(port, name, &ppdev_cb, minor);
310 parport_put_port(port);
311 kfree(name);
^^^^
Free.
312
313 if (!pdev) {
314 pr_warn("%s: failed to register device!\n", name);
^^^^
Use after free.
315 return -ENXIO;
316 }
317
318 pp->pdev = pdev;
319 dev_dbg(&pdev->dev, "registered pardevice\n");
320 return 0;
321 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-12-15 21:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-15 21:08 [bug report] ppdev: fix memory leak Dan Carpenter
2016-12-15 21:13 ` Sudip Mukherjee
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.