LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: NeilBrown <neilb@suse.de>
Cc: Ingo Molnar <mingo@elte.hu>,
linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
"J. Bruce Fields" <bfields@fieldses.org>
Subject: Re: [PATCH] Change wait_for_completion_*_timeout to return a signed long
Date: Wed, 5 Jan 2011 14:57:25 -0800 [thread overview]
Message-ID: <20110105145725.3fa6d659.akpm@linux-foundation.org> (raw)
In-Reply-To: <20110105125016.64ccab0e@notabene.brown>
On Wed, 5 Jan 2011 12:50:16 +1100
NeilBrown <neilb@suse.de> wrote:
>
> wait_for_completion_*_timeout can return:
>
> 0 if the wait timed out
> -ve if the wait was interrupted
> +ve if the completion was completed.
>
> As they currently return an 'unsigned long', the last two cases are not
> easily distinguished which can easily result in buggy code, as is the
> case for the recently added wait_for_completion_interruptible_timeout
> call in net/sunrpc/cache.c
>
> So change them both to return 'long'. As MAX_SCHEDULE_TIMEOUT is
> LONG_MAX, a large +ve return value should never overflow.
>
> ...
>
> --- a/include/linux/completion.h
> +++ b/include/linux/completion.h
> @@ -80,11 +80,11 @@ extern void wait_for_completion(struct completion *);
> extern int wait_for_completion_interruptible(struct completion *x);
> extern int wait_for_completion_killable(struct completion *x);
> extern unsigned long wait_for_completion_timeout(struct completion *x,
> unsigned long timeout);
> -extern unsigned long wait_for_completion_interruptible_timeout(
> - struct completion *x, unsigned long timeout);
> -extern unsigned long wait_for_completion_killable_timeout(
> - struct completion *x, unsigned long timeout);
> +extern long wait_for_completion_interruptible_timeout(
> + struct completion *x, unsigned long timeout);
> +extern long wait_for_completion_killable_timeout(
> + struct completion *x, unsigned long timeout);
> extern bool try_wait_for_completion(struct completion *x);
> extern bool completion_done(struct completion *x);
>
That's a half-patch, isn't it? wait_for_completion_interruptible()
still incorrectly returns `int' and wait_for_completion_timeout() still
returns `unsigned long'.
next prev parent reply other threads:[~2011-01-06 0:03 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-05 1:50 NeilBrown
2011-01-05 14:07 ` [tip:sched/core] sched: Change wait_for_completion_*_timeout() " tip-bot for NeilBrown
2011-01-11 21:44 ` J. Bruce Fields
2011-01-11 22:07 ` NeilBrown
2011-02-15 16:20 ` [stable] " Greg KH
2011-01-05 22:57 ` Andrew Morton [this message]
2011-01-06 0:33 ` [PATCH] Change wait_for_completion_*_timeout " NeilBrown
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=20110105145725.3fa6d659.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=bfields@fieldses.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=neilb@suse.de \
--cc=tglx@linutronix.de \
--subject='Re: [PATCH] Change wait_for_completion_*_timeout to return a signed long' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).