All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benny Halevy <bhalevy@panasas.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: WARN_ON out of range error in ERR_PTR?
Date: Thu, 27 Nov 2008 08:27:51 +0200	[thread overview]
Message-ID: <492E3DE7.9040107@panasas.com> (raw)
In-Reply-To: <20081126161503.6211f140.akpm@linux-foundation.org>

On Nov. 27, 2008, 2:15 +0200, Andrew Morton <akpm@linux-foundation.org> wrote:
> On Wed, 26 Nov 2008 17:48:08 +0200
> Benny Halevy <bhalevy@panasas.com> wrote:
> 
>> Andrew,
>>
>> After hitting a bug where an nfs error -10021 wasn't handled
>> correctly since IS_ERR returned false on its ERR_PTR value
> 
> That sounds like an error in NFS.  Did it get fixed?

Right, it is an error I made when developing new code for nfs41
and I caught and fixed it in my branch before releasing the code.
I just thought that this WARN_ON could be beneficial for everybody...

Benny

> 
>> I realized that adding a BUG_ON to make sure the mapped error
>> is in the valid range would have caught this.
>>
>> Since ERR_PTR is not called on the critical path
>> (unlike IS_ERR) but rather on the error handling path I believe
>> we can tolerate the extra cost.
>>
>> The reason this is just a WARN_ON and not BUG_ON is to make
>> fixing it easier, although I do consider calling ERR_PTR on an
>> out of range error a pretty dangerous bug as the error might go
>> unnoticed.
>>
>> How about committing the following patch to -mm?
>>
>> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
>> ---
>>  include/linux/err.h |    3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/include/linux/err.h b/include/linux/err.h
>> index ec87f31..81df84f 100644
>> --- a/include/linux/err.h
>> +++ b/include/linux/err.h
>> @@ -2,7 +2,7 @@
>>  #define _LINUX_ERR_H
>>  
>>  #include <linux/compiler.h>
>> -
>> +#include <asm/bug.h>
>>  #include <asm/errno.h>
>>  
>>  /*
>> @@ -21,6 +21,7 @@
>>  
>>  static inline void *ERR_PTR(long error)
>>  {
>> +	WARN_ON(error && !IS_ERR_VALUE(error));
>>  	return (void *) error;
>>  }
> 
> We have over 2000 ERR_PTR callsites, and WARN_ON() is a big fat porky
> thing, so this change would add quite a lot of kernel text&data.
> 
> If this problem does occur again, I expect that the kernel will
> reliably dereference a small negative address and we'll get an oops,
> which will give us the same information as that WARN_ON would have
> done, no?
> 
> 
> 

      reply	other threads:[~2008-11-27  6:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-26 15:48 WARN_ON out of range error in ERR_PTR? Benny Halevy
2008-11-27  0:15 ` Andrew Morton
2008-11-27  6:27   ` Benny Halevy [this message]

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=492E3DE7.9040107@panasas.com \
    --to=bhalevy@panasas.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.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.