On Mon, Oct 12, 2015 at 11:45 PM, ron minnich <[email protected]> wrote:
> wow, I can't type.
>
> Let me say it more sensibly, even if wrong :-)
> [[[ I know this is wrong, it's kind of "what I want it to do" ]]]
>
> @@
> expression E1, E2;
> statement S;
> function f;
> @@
> f(...){<...
> -if ((E1) && (E2))
> +if (E1 && E2)
> S
> ...> }
>
> Is that any more sensible?

My example adds '== d'...

$ cat /tmp/test.cocci
@@
expression a, b, c, e;
@@
-((a == b) && (c != e))
+a == b && c == d

$ clear;spatch /tmp/test.cocci kernel/locking/lockdep.c
init_defs_builtins: /usr/local/lib/coccinelle/standard.h
HANDLING: kernel/locking/lockdep.c
diff =
--- kernel/locking/lockdep.c
+++ /tmp/cocci-output-9601-607267-lockdep.c
@@ -1420,7 +1420,7 @@ print_shortest_lock_dependencies(struct
  print_stack_trace(&entry->trace, 2);
  printk("\n");

- if (depth == 0 && (entry != root)) {
+ if (depth == 0 && entry == d) {
  printk("lockdep:%s bad path found in chain graph\n", __func__);
  break;
  }
@@ -2322,7 +2322,7 @@ print_irq_inversion_bug(struct task_stru
  /* Find a middle lock (if one exists) */
  depth = get_lock_depth(other);
  do {
- if (depth == 0 && (entry != root)) {
+ if (depth == 0 && entry == d) {
  printk("lockdep:%s bad path found in chain graph\n", __func__);
  break;
  }
@@ -4198,7 +4198,7 @@ retry:
  * if it's not sleeping (or if it's not the current
  * task):
  */
- if (p->state == TASK_RUNNING && p != current)
+ if (p->state == TASK_RUNNING && p == d)
  continue;
  if (p->lockdep_depth)
  lockdep_print_held_locks(p);

Does this help?
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to