If device_add() returns error, the name allocated by dev_set_name() need be freed. As comment of device_add() says, it should use put_device() to release the reference in the error path. So fix this by calling put_device, then the name can be freed in kobject_cleanp(). Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Zhu Wang <wangzhu9@xxxxxxxxxx> --- drivers/input/serio/serio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c index 767fc9efb4a8..d3bb6ec91326 100644 --- a/drivers/input/serio/serio.c +++ b/drivers/input/serio/serio.c @@ -537,10 +537,12 @@ static void serio_add_port(struct serio *serio) serio->start(serio); error = device_add(&serio->dev); - if (error) + if (error) { + put_device(&serio->dev); dev_err(&serio->dev, "device_add() failed for %s (%s), error: %d\n", serio->phys, serio->name, error); + } } /* -- 2.17.1