Message ID | 20230801115105.76690-1-wangzhu9@huawei.com |
---|---|
State | New |
Headers | show |
Series | [-next] Input: serio - fix possible memory leak while device_add() fails | expand |
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); + } } /*
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@huawei.com> --- drivers/input/serio/serio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)