Print this page
12257 resync smatch to 0.6.1-rc1-il-4


   7         int mylock = 1;
   8 
   9         if (!({frob(); frob(); _spin_trylock(mylock);})) 
  10                 return;
  11 
  12         frob();
  13         _spin_unlock(mylock);
  14 
  15         if (((_spin_trylock(mylock)?1:0)?1:0))
  16                 return;
  17         frob_somemore();
  18         _spin_unlock(mylock);
  19 
  20         return;
  21 }
  22 /*
  23  * check-name: Smatch locking #3
  24  * check-command: smatch --project=kernel sm_locking3.c
  25  *
  26  * check-output-start
  27 sm_locking3.c:18 func() error: double unlock 'spin_lock:mylock'
  28 sm_locking3.c:20 func() warn: inconsistent returns 'spin_lock:mylock'.
  29   Locked on:   line 16
  30   Unlocked on: line 10
  31                line 20
  32  * check-output-end
  33  */


   7         int mylock = 1;
   8 
   9         if (!({frob(); frob(); _spin_trylock(mylock);})) 
  10                 return;
  11 
  12         frob();
  13         _spin_unlock(mylock);
  14 
  15         if (((_spin_trylock(mylock)?1:0)?1:0))
  16                 return;
  17         frob_somemore();
  18         _spin_unlock(mylock);
  19 
  20         return;
  21 }
  22 /*
  23  * check-name: Smatch locking #3
  24  * check-command: smatch --project=kernel sm_locking3.c
  25  *
  26  * check-output-start
  27 sm_locking3.c:18 func() error: double unlocked 'mylock' (orig line 15)
  28 sm_locking3.c:20 func() warn: inconsistent returns 'mylock'.
  29   Locked on  : 16
  30   Unlocked on: 10,20

  31  * check-output-end
  32  */