Re: [PATCH V7 4/8] posix clocks: hook dynamic clocks into systemcalls

From: Richard Cochran
Date: Wed Dec 22 2010 - 03:21:53 EST


On Fri, Dec 17, 2010 at 11:03:46AM +0100, Thomas Gleixner wrote:
> So you could do the following:
...
> static int get_posix_clock(const clockid_t id, struct posix_clock_descr *cd)
> {
> struct file *fp = fget(CLOCKID_TO_FD(id));
> int ret;
>
> if (!fp || fp->f_op->open != posix_clock_open || !fp->private_data)
> return -ENODEV;
> ret = get_fd_clk(cd, fp);
> if (ret)
> fput(fp);
> return ret;
> }

In order to avoid leaking a fp reference, shouldn't this go like:

static int get_posix_clock(const clockid_t id, struct posix_clock_desc *cd)
{
struct file *fp = fget(CLOCKID_TO_FD(id));
int ret = -EINVAL;

if (!fp)
return ret;
if (fp->f_op->open != posix_clock_open || !fp->private_data)
goto out;
ret = get_fd_clk(cd, fp);
out:
if (ret)
fput(fp);
return ret;
}

Thanks again for your help,
Richard


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/