All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Max Asbock <masbock@linux.vnet.ibm.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	tglx <tglx@linutronix.de>,
	kay.sievers@vrfy.org, virtuoso@slind.org,
	johnstul <johnstul@linux.vnet.ibm.com>
Subject: Re: [PATCH] timerfd: really wake up processes when timer is cancelled on clock change
Date: Tue, 14 Jun 2011 15:24:08 -0700	[thread overview]
Message-ID: <20110614152408.0f4069b9.akpm@linux-foundation.org> (raw)
In-Reply-To: <1307134425.16492.104.camel@w-amax.beaverton.ibm.com>

On Fri, 03 Jun 2011 13:53:45 -0700 Max Asbock <masbock@linux.vnet.ibm.com> wrote:

> When the system time is set the clock_was_set() function calls
> timerfd_clock_was_set() to cancel and wake up processes waiting on
> potential cancelable timerfd timers. However the wake up currently has
> no effect because in the case of timerfd_read it is dependent on
> ctx->ticks not being 0. timerfd_poll also requires ctx->ticks being non
> zero. As a consequence processes waiting on cancelable timers only get
> woken up when the timers expire. This patch fixes this by incrementing
> ctx->ticks before calling wake_up.
> 
> Signed-off-by: Max Asbock <masbock@linux.vnet.ibm.com>
> ---
> 
> --- linux-3.0-rc1/fs/timerfd.c
> +++ linux-3.0-rc1.timerfd/fs/timerfd.c
> @@ -61,7 +61,9 @@ static enum hrtimer_restart timerfd_tmrp
>  
>  /*
>   * Called when the clock was set to cancel the timers in the cancel
> - * list.
> + * list. This will wake up processes waiting on these timers. The
> + * wake-up requires ctx->ticks to be non zero, therefore we increment
> + * it before calling wake_up_locked().
>   */
>  void timerfd_clock_was_set(void)
>  {
> @@ -76,6 +78,7 @@ void timerfd_clock_was_set(void)
>  		spin_lock_irqsave(&ctx->wqh.lock, flags);
>  		if (ctx->moffs.tv64 != moffs.tv64) {
>  			ctx->moffs.tv64 = KTIME_MAX;
> +			ctx->ticks++;
>  			wake_up_locked(&ctx->wqh);
>  		}
>  		spin_unlock_irqrestore(&ctx->wqh.lock, flags);

Do you think this fix should be backported into -stable kernels?  If so
(or if not), why?

It sounds like it _should_ be backported.  I wonder if that will break
any apps which depend on (or work around) the current behaviour.

  reply	other threads:[~2011-06-14 22:22 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-03 20:53 [PATCH] timerfd: really wake up processes when timer is cancelled on clock change Max Asbock
2011-06-14 22:24 ` Andrew Morton [this message]
2011-06-15 17:40   ` Max Asbock

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=20110614152408.0f4069b9.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=johnstul@linux.vnet.ibm.com \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masbock@linux.vnet.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=virtuoso@slind.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.