diff --git a/[refs] b/[refs] index 9f25c498c46e..895db24d3121 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a9e7acfff0a279792918b7b0de74106e576e9988 +refs/heads/master: 6e6823d17b157f185be09f4c70181299f9273f0b diff --git a/trunk/kernel/time/posix-clock.c b/trunk/kernel/time/posix-clock.c index 04498cbf6002..25028dd4fa18 100644 --- a/trunk/kernel/time/posix-clock.c +++ b/trunk/kernel/time/posix-clock.c @@ -287,11 +287,16 @@ static int pc_clock_adjtime(clockid_t id, struct timex *tx) if (err) return err; + if ((cd.fp->f_mode & FMODE_WRITE) == 0) { + err = -EACCES; + goto out; + } + if (cd.clk->ops.clock_adjtime) err = cd.clk->ops.clock_adjtime(cd.clk, tx); else err = -EOPNOTSUPP; - +out: put_clock_desc(&cd); return err; @@ -344,11 +349,16 @@ static int pc_clock_settime(clockid_t id, const struct timespec *ts) if (err) return err; + if ((cd.fp->f_mode & FMODE_WRITE) == 0) { + err = -EACCES; + goto out; + } + if (cd.clk->ops.clock_settime) err = cd.clk->ops.clock_settime(cd.clk, ts); else err = -EOPNOTSUPP; - +out: put_clock_desc(&cd); return err;