On 26 October 2017 at 12:48, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > On Wed, Oct 25, 2017 at 09:25:15PM +0200, Rasmus Villemoes wrote: >> For some reason this spits out an enourmous amount of false positives, >> making this entirely useless. We hit a lot of "%lx", (long)(a - b), >> but I don't understand why the a-b expression (a pointer difference) >> passes is_ptr_type(). > > Well, it is a pointer type. If you do pointer math, you get pointer > results. You can't really treat subtract different from addition > because container_of() is a subtraction. Huh? When I subtract one pointer from another, I get an _integer_. The math done in container_of is subtracting an integer from a pointer which does give a pointer, of course, but that's not the issue here. The false positives I'm talking about are (at least those I checked) something like ptr = array; <misc logic, incrementing ptr along the way> if (uhoh) printk("trouble with array element %lx\n", (long)(ptr - array)); which is obviously ok. -- To unsubscribe from this list: send the line "unsubscribe smatch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html