Skip to content

Commit 5854809

Browse files
jenswi-linarostorulf
authored andcommitted
rpmb: fix error path in rpmb_dev_register()
Until this patch was rpmb_dev_register() always freeing rdev in the error path. However, past device_register() it must not do that since the memory is now managed by the device even if it failed to register properly. So fix this by doing a put_device() before returning the error code. Fixes the smatch warning: drivers/misc/rpmb-core.c:204 rpmb_dev_register() warn: freeing device managed memory (leak): 'rdev' Fixes: 1e9046e ("rpmb: add Replay Protected Memory Block (RPMB) subsystem") Reported-by: Dan Carpenter <[email protected]> Signed-off-by: Jens Wiklander <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Ulf Hansson <[email protected]>
1 parent edd3183 commit 5854809

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

drivers/misc/rpmb-core.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -187,17 +187,15 @@ struct rpmb_dev *rpmb_dev_register(struct device *dev,
187187
rdev->dev.parent = dev;
188188

189189
ret = device_register(&rdev->dev);
190-
if (ret)
191-
goto err_id_remove;
190+
if (ret) {
191+
put_device(&rdev->dev);
192+
return ERR_PTR(ret);
193+
}
192194

193195
dev_dbg(&rdev->dev, "registered device\n");
194196

195197
return rdev;
196198

197-
err_id_remove:
198-
mutex_lock(&rpmb_mutex);
199-
ida_simple_remove(&rpmb_ida, rdev->id);
200-
mutex_unlock(&rpmb_mutex);
201199
err_free_dev_id:
202200
kfree(rdev->descr.dev_id);
203201
err_free_rdev:

0 commit comments

Comments
 (0)