Skip to content

Commit

Permalink
Fix memory leak in posix_clock_open()
Browse files Browse the repository at this point in the history
commit 5b4cdd9 upstream.

If the clk ops.open() function returns an error, we don't release the
pccontext we allocated for this clock.

Re-organize the code slightly to make it all more obvious.

Reported-by: Rohit Keshri <rkeshri@redhat.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Fixes: 60c6946 ("posix-clock: introduce posix_clock_context concept")
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: David S. Miller <davem@davemloft.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
torvalds authored and gregkh committed Apr 3, 2024
1 parent 3e52444 commit 0200dd7
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions kernel/time/posix-clock.c
Expand Up @@ -129,15 +129,17 @@ static int posix_clock_open(struct inode *inode, struct file *fp)
goto out;
}
pccontext->clk = clk;
fp->private_data = pccontext;
if (clk->ops.open)
if (clk->ops.open) {
err = clk->ops.open(pccontext, fp->f_mode);
else
err = 0;

if (!err) {
get_device(clk->dev);
if (err) {
kfree(pccontext);
goto out;
}
}

fp->private_data = pccontext;
get_device(clk->dev);
err = 0;
out:
up_read(&clk->rwsem);
return err;
Expand Down

0 comments on commit 0200dd7

Please sign in to comment.