Re: IS_ERR Threshold Value

From: H. Peter Anvin
Date: Wed Jun 28 2006 - 18:38:47 EST


Randy.Dunlap wrote:
On Wed, 28 Jun 2006 14:57:07 -0600 Erik Frederiksen wrote:

from include/asm-mips/errno.h
#define EDQUOT 1133 /* Quota exceeded */

I noticed that the errno value for EDQUOT on MIPS is considerably larger
than all others. This can lead to a situation where functions using
ERR_PTR() to return error codes in pointers cannot return this error
code without IS_ERR() thinking that the pointer is valid. In my case,
it caused an alignment exception in the XFS open call when quota has
been exceeded in the linux-mips 2.6.14 kernel. I think that the XFS
code has changed enough that this bug isn't in newer versions, though I
haven't done a thorough investigation.

I've supplied a patch that addresses this situation by changing the
threshold used by IS_ERR if EMAXERRNO is defined and greater than 1000. Perhaps permanently raising the threshold value to something >1133 is
sufficient.

Looking forward to your feedback.

Erik Frederiksen
Firmware Design Engineer Co-op
PMC-Sierra Saskatoon

Hi,
Peter Anvin mentioned just a few days ago that this threshold value
should be 4095 for all arches. I think we need to get that patch
done & submitted to Andrew for -mm.


Indeed.

-hpa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/