On Fri, Jan 19, 2018 at 4:55 AM, Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > So really we should be casting 'b' and 'a' to uintptr_t to be fully > compliant with the spec. That's an unnecessary technicality. Any compiler that doesn't get pointer inequality testing right is not worth even worrying about. We wouldn't want to use such a compiler, because it's intentionally generating garbage just to f*ck with us. Why would you go along with that? So the only real issue is that pointer subtraction case. I actually asked (long long ago) for an optinal compiler warning for "pointer subtraction with non-power-of-2 sizes". Not because of it being undefined, but simply because it's expensive. The divide->multiply thing doesn't always work, and a real divide is really quite expensive on many architectures. We *should* be careful about it. I guess sparse could be made to warn, but I'm afraid that we have so many of these things that a warning isn't reasonable. And most of the time, a pointer difference really is inside the same array. The operation doesn't tend to make sense otherwise. Linus -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>