diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2009-07-21 16:23:35 +0930 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2009-07-21 10:21:53 +0200 |
commit | 760104188d0d2ed96ec4a70138e6d0bf86d797ed (patch) | |
tree | f45dc8d354f671364c9451cb4ce1a437cef540b3 | |
parent | 8e04c69e027260e7e1f0a4cf3e58e31ed4084d8b (diff) | |
download | samba-760104188d0d2ed96ec4a70138e6d0bf86d797ed.tar.gz samba-760104188d0d2ed96ec4a70138e6d0bf86d797ed.tar.bz2 samba-760104188d0d2ed96ec4a70138e6d0bf86d797ed.zip |
tdb: fix locking error
54a51839ea65aa788b18fce8de0ae4f9ba63e4e7 "Make tdb transaction lock
recursive (samba version)" was broken: I "cleaned it up" and prevented
it from ever unlocking.
To see the problem:
$ bin/tdbtorture -s 1248142523
tdb_brlock failed (fd=3) at offset 8 rw_type=1 lck_type=14 len=1
tdb_transaction_lock: failed to get transaction lock
tdb_transaction_start failed: Resource deadlock avoided
My testcase relied on the *count* being correct, which it was. Fixing that
now.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael Adam <obnox@samba.org>
-rw-r--r-- | lib/tdb/common/lock.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/tdb/common/lock.c b/lib/tdb/common/lock.c index d812fbfdc5..2c72ae1f0d 100644 --- a/lib/tdb/common/lock.c +++ b/lib/tdb/common/lock.c @@ -328,7 +328,7 @@ int tdb_transaction_unlock(struct tdb_context *tdb) if (tdb->global_lock.count) { return 0; } - if (tdb->transaction_lock_count > 0) { + if (tdb->transaction_lock_count > 1) { tdb->transaction_lock_count--; return 0; } |