linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ryan Mallon <rmallon@gmail.com>
To: Cruz Julian Bishop <cruzjbishop@gmail.com>
Cc: greg@kroah.com, swetland@google.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/5] Fixes a potential bug in android/logger.c
Date: Thu, 02 Aug 2012 09:50:44 +1000	[thread overview]
Message-ID: <5019C0D4.5010403@gmail.com> (raw)
In-Reply-To: <1343796860-7025-6-git-send-email-cruzjbishop@gmail.com>

On 01/08/12 14:54, Cruz Julian Bishop wrote:
> Previously, when calling is_between(a, b, c), the calculation was wrong.
> It counted C as between A and B if C was equal to B, but not A.
> 
> Example of this are:
> 
> is_between(1, 10, 10) = 1 (Expected: 0)
> is_between(1, 10, 1) = 0 (Expected: 0)
> is_between(20, 10, 10) = 1 (Expected: 0)
> 
> And so on and so forth.
> 
> Obviously, ten is not a number between one and ten - only two to eight are, so I made this patch :)

Is nine not a number between one and ten? :-p.

The question with a patch like this is whether the function's
documentation, which says it returns 1 if a < c < b is wrong, or whether
the implementation, which does a < c <= b is wrong. If the documentation
is wrong, and something is relying on the current implementation, then
this patch might actually break things.

> Signed-off-by: Cruz Julian Bishop <cruzjbishop@gmail.com>
> ---
>  drivers/staging/android/logger.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/android/logger.c b/drivers/staging/android/logger.c
> index 226d8b5..925df5c 100644
> --- a/drivers/staging/android/logger.c
> +++ b/drivers/staging/android/logger.c
> @@ -298,11 +298,11 @@ static inline int is_between(size_t a, size_t b, size_t c)
>  {
>  	if (a < b) {
>  		/* is c between a and b? */
> -		if (a < c && c <= b)
> +		if (a < c && c < b)
>  			return 1;
>  	} else {
>  		/* is c outside of b through a? */
> -		if (c <= b || a < c)
> +		if (c < b || a < c)
>  			return 1;
>  	}

A couple of other improvements could be done here. The function should
really return bool, inline is unnecessary (the compiler is smart enough
to do that for us), and we can simplify the logic a bit too:

static bool is_between(size_t a, size_t b, size_t c)
{
	if (a < b)
		swap(a, b);

	return (a < c && c < b);
}

~Ryan





  reply	other threads:[~2012-08-01 23:51 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-01  4:54 [PATCH 0/5] Android: Small documentation changes and a bug fix Cruz Julian Bishop
2012-08-01  4:54 ` [PATCH 1/5] Fix comment/license formatting in android/ashmem.c Cruz Julian Bishop
2012-08-01  4:54 ` [PATCH 2/5] Complete documentation of logger_entry in android/logger.h Cruz Julian Bishop
2012-08-01  4:54 ` [PATCH 3/5] Finish documentation of two structs in android/logger.c Cruz Julian Bishop
2012-08-01  4:54 ` [PATCH 4/5] Redocument some functions " Cruz Julian Bishop
2012-08-14  2:00   ` Greg KH
2012-08-01  4:54 ` [PATCH 5/5] Fixes a potential bug " Cruz Julian Bishop
2012-08-01 23:50   ` Ryan Mallon [this message]
2012-08-14  2:01     ` Greg KH
2012-08-14  4:08       ` Cruz Julian Bishop
2012-08-01  5:18 ` [PATCH 0/5] Android: Small documentation changes and a bug fix Cruz Julian Bishop
2012-08-14  2:02 ` Greg KH

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=5019C0D4.5010403@gmail.com \
    --to=rmallon@gmail.com \
    --cc=cruzjbishop@gmail.com \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=swetland@google.com \
    /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 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).