diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c
index 6af1ce04b3dac9ab1fd2e20d52d1930e6798502b..f08f3ed98e013c5c7402d2cbe455cf4176589d07 100644
--- a/drivers/char/ppdev.c
+++ b/drivers/char/ppdev.c
@@ -305,10 +305,10 @@ static int register_device(int minor, struct pp_struct *pp)
 	ppdev_cb.private = pp;
 	pdev = parport_register_dev_model(port, name, &ppdev_cb, minor);
 	parport_put_port(port);
+	kfree(name);
 
 	if (!pdev) {
 		printk(KERN_WARNING "%s: failed to register device!\n", name);
-		kfree(name);
 		return -ENXIO;
 	}