diff options
Diffstat (limited to 'kernel/time/posix-clock.c')
| -rw-r--r-- | kernel/time/posix-clock.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/kernel/time/posix-clock.c b/kernel/time/posix-clock.c index 9de66bbbb3d1..4782edcbe7b9 100644 --- a/kernel/time/posix-clock.c +++ b/kernel/time/posix-clock.c @@ -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;  |