On Fri, Dec 12, 2014 at 02:43:27PM +0100, Rasmus Villemoes wrote: > On Fri, Dec 12 2014, Mark Brown <broo...@kernel.org> wrote:
> > If we're worrying about standards conformance type stuff here this is > > also buggy since it's out of spec to compare pointers that are not part > > of the same array like this. Casting to uintptr_t is a better fix here. > I'm not worrying about standards conformance. Casting pointers to and > from [unsigned] long is done everywhere in the kernel, and that's > fine. But subtracting ints or longs and using the sign of the result for > comparison is simply wrong. See acbbe6fbb2 (kcmp: fix standard > comparison bug) for the long story. In this case the narrowing (when > BITS_PER_LONG==64) of the result from long to int just makes it even > more wrong. *sigh* If that's what you meant you should've said so in your commit log since that's distinctly non-obvious. In any case, regardless of why you originally wanted to do this the fact remains that your new version is out of spec.
signature.asc
Description: Digital signature