Good day, I am very new to coccinelle, and therefore my question is rather basic, but unfortunately I wasn't able to find the info online. I have a very simple cocci rule:
------------------------------ @r exists@ identifier a; identifier x; position p1, p2; @@ atomic_dec_and_test(&a->x)@p1 ... kfree(a)@p2; @script:python@ p1 << r.p1; p2 << r.p2; @@ print "* file: %s atomic_dec_and_test %s before kfree %s" % (p1[0].file,p1[0].line,p2[0].line) -------------------------------- I just want to find all occurrences of atomic_dec_and_test(), which are somewhere later in the code flow (maybe called using some intermediate function, such as kfree_rcu() or others) followed by kfree() on the same pointer. When this rule is applied to Linux kernel tree, it results in 80 of such occurrences found. However, the output is a bit confusing. For example: ... Skipping:./linux-stable/kernel/rcu/srcu.c Skipping:./linux-stable/kernel/rcu/rcuperf.c Skipping:./linux-stable/kernel/rcu/waketorture.c HANDLING: ./linux-stable/kernel/rcu/rcutorture.c Skipping:./linux-stable/kernel/rcu/update.c Skipping:./linux-stable/kernel/rcu/tree.c Skipping:./linux-stable/kernel/panic.c Skipping:./linux-stable/kernel/utsname.c Skipping:./linux-stable/kernel/cgroup_freezer.c HANDLING: ./linux-stable/kernel/workqueue.c HANDLING: ./linux-stable/kernel/cgroup.c .... I understand that "Skipping" means that the pattern was not found in that .c file. But what does "HANDLING" actually mean? There are 330 of such "HANDLING" happen with above rule and when I manually check some of them, for example linux-stable/kernel/cgroup.c, it is actually the correct case that I want to be found, and it seems to be "HANDLED", but not reported. I am a bit confused on what is happening. Any help is greatly appreciated! Best Regards, Elena.
_______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
