From: arul.jeniston@gmail.com To: viro@zeniv.linux.org.uk, tglx@linutronix.de Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, arul_mc@dell.com, ARUL JENISTON MC <arul.jeniston@gmail.com> Subject: [PATCH] FS: timerfd: Fix unexpected return value of timerfd_read function. 'hrtimer_forward_now()' returns zero due to bigger backward time drift. This causes timerfd_read to return 0. As per man page, read on timerfd is not expected to return 0. This patch fixes this problem. Signed-off-by: Arul Jeniston <arul.jeniston@gmail.com> Date: Fri, 16 Aug 2019 01:32:46 -0700 Message-ID: <20190816083246.169312-1-arul.jeniston@gmail.com> (raw) From: ARUL JENISTON MC <arul.jeniston@gmail.com> --- fs/timerfd.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fs/timerfd.c b/fs/timerfd.c index 6a6fc8aa1de7..f5094e070e9a 100644 --- a/fs/timerfd.c +++ b/fs/timerfd.c @@ -284,8 +284,16 @@ static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count, &ctx->t.alarm, ctx->tintv) - 1; alarm_restart(&ctx->t.alarm); } else { - ticks += hrtimer_forward_now(&ctx->t.tmr, - ctx->tintv) - 1; + u64 nooftimeo = hrtimer_forward_now(&ctx->t.tmr, + ctx->tintv); + /* + * ticks shouldn't become zero at this point. + * Ignore if hrtimer_forward_now returns 0 + * due to larger backward time drift. + */ + if (likely(nooftimeo)) { + ticks += nooftimeo - 1; + } hrtimer_restart(&ctx->t.tmr); } } -- 2.11.0
next reply index Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-16 8:32 arul.jeniston [this message] 2019-08-16 9:05 ` [PATCH] FS: timerfd: [Trimmed unreadable long subject line ] Thomas Gleixner 2019-08-16 10:22 ` [PATCH] FS: timerfd: Fix unexpected return value of timerfd_read function Arul Jeniston 2019-08-16 10:45 ` Thomas Gleixner 2019-08-16 16:55 ` Arul Jeniston 2019-08-16 17:00 ` Arul Jeniston 2019-08-16 21:17 ` Thomas Gleixner [not found] ` <CACAVd4hT6QYtgtDsBcgy7c_s9WVBAH+1m0r5geBe7BUWJWYhbA@mail.gmail.com> 2019-08-17 19:23 ` Thomas Gleixner 2019-08-19 6:07 ` Arul Jeniston 2019-08-19 8:04 ` Thomas Gleixner 2019-08-19 14:25 ` Arul Jeniston 2019-08-19 14:52 ` Thomas Gleixner 2019-08-19 15:26 ` Arul Jeniston 2019-08-19 15:59 ` Thomas Gleixner [not found] ` <CACAVd4iRN7=eq_B1+Yb-xcspU-Sg1dmMo_=VtLXXVPkjN1hY5Q@mail.gmail.com> 2019-08-19 18:29 ` Thomas Gleixner [not found] ` <CACAVd4jAJ5QcOH=q=Q9kAz20X4_nAc7=vVU_gPWTS1UuiGK-fg@mail.gmail.com> 2019-08-20 8:49 ` Thomas Gleixner 2019-08-20 9:42 ` Arul Jeniston 2019-09-05 8:48 ` Arul Jeniston 2019-09-05 15:34 ` Thomas Gleixner 2019-09-06 16:36 ` Arul Jeniston 2019-09-07 14:38 ` Thomas Gleixner 2019-11-05 5:01 ` Arul Jeniston 2019-11-05 10:01 ` Thomas Gleixner 2019-11-06 3:38 ` Arul Jeniston 2020-02-12 18:14 ` Arul Jeniston 2020-02-13 12:11 ` Thomas Gleixner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190816083246.169312-1-arul.jeniston@gmail.com \ --to=arul.jeniston@gmail.com \ --cc=arul_mc@dell.com \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=tglx@linutronix.de \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-Fsdevel Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-fsdevel/0 linux-fsdevel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-fsdevel linux-fsdevel/ https://lore.kernel.org/linux-fsdevel \ linux-fsdevel@vger.kernel.org public-inbox-index linux-fsdevel Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-fsdevel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git