Refactoring luo_session_retrieve_fd() to avoid mixing automated cleanup-style guards with goto-based resource release, which is not recommended under the Linux kernel coding style.
Signed-off-by: Pasha Tatashin <[email protected]> --- kernel/liveupdate/luo_session.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c index 146414933977..8d9201c25412 100644 --- a/kernel/liveupdate/luo_session.c +++ b/kernel/liveupdate/luo_session.c @@ -291,25 +291,24 @@ static int luo_session_retrieve_fd(struct luo_session *session, if (argp->fd < 0) return argp->fd; - guard(mutex)(&session->mutex); - err = luo_retrieve_file(&session->file_set, argp->token, &file); - if (err < 0) - goto err_put_fd; + scoped_guard(mutex, &session->mutex) { + err = luo_retrieve_file(&session->file_set, argp->token, &file); + if (err < 0) { + put_unused_fd(argp->fd); + return err; + } + } err = luo_ucmd_respond(ucmd, sizeof(*argp)); - if (err) - goto err_put_file; + if (err) { + fput(file); + put_unused_fd(argp->fd); + return err; + } fd_install(argp->fd, file); return 0; - -err_put_file: - fput(file); -err_put_fd: - put_unused_fd(argp->fd); - - return err; } static int luo_session_finish(struct luo_session *session, -- 2.53.0

