In livepatch_init(), if klp_enable_patch() fails, the previously created kobject and sysfs file are never cleaned up, causing a resource leak. Capture the return value and add proper cleanup on the error path.
Signed-off-by: Rui Qi <[email protected]> --- Changes in v2: - Remove sysfs_remove_file() from the error path as suggested by Miroslav Benes. kobject_put() alone is sufficient because it eventually calls kobject_cleanup() -> __kobject_del() -> sysfs_remove_dir(), which removes the entire directory including all files created under it. .../selftests/livepatch/test_modules/test_klp_syscall.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/livepatch/test_modules/test_klp_syscall.c b/tools/testing/selftests/livepatch/test_modules/test_klp_syscall.c index 0630ffd9d9a1..08aacc0e14de 100644 --- a/tools/testing/selftests/livepatch/test_modules/test_klp_syscall.c +++ b/tools/testing/selftests/livepatch/test_modules/test_klp_syscall.c @@ -109,7 +109,11 @@ static int livepatch_init(void) */ npids = npids_pending; - return klp_enable_patch(&patch); + ret = klp_enable_patch(&patch); + if (ret) + kobject_put(klp_kobj); + + return ret; } static void livepatch_exit(void) -- 2.20.1

