* [ SEMANAGE ] Acquire/release read lock in databases
@ 2005-10-17 22:17 Ivan Gyurdiev
0 siblings, 0 replies; only message in thread
From: Ivan Gyurdiev @ 2005-10-17 22:17 UTC (permalink / raw)
To: selinux; +Cc: Joshua Brindle, Stephen Smalley
[-- Attachment #1: Type: text/plain, Size: 347 bytes --]
The read lock needs to be fixed, which is why this code was commented
out in the first place. However, I think Joshua will submit a patch for
that, so..uncomment this code to provide locking for database read-only
functions. The locking is supposed to provide safety against
simultaneous commit. It also serializes readers as a side effect.
[-- Attachment #2: libsemanage.read_lock.diff --]
[-- Type: text/x-patch, Size: 1967 bytes --]
diff -Naurp --exclude CVS --exclude ChangeLog --exclude VERSION --exclude 'semanage_store*' --exclude 'module_record*' --exclude 'database_directory*' old/libsemanage/src/database_direct.c new/libsemanage/src/database_direct.c
--- old/libsemanage/src/database_direct.c 2005-10-13 13:08:35.000000000 -0400
+++ new/libsemanage/src/database_direct.c 2005-10-17 18:12:06.000000000 -0400
@@ -160,10 +160,10 @@ static int enter_ro(
return STATUS_ERR;
}
- //if (semanage_handle_get_read_lock(handle) < 0) {
- // /* FIXME: handle error */
- // return STATUS_ERR;
- //}
+ if (semanage_get_read_lock(handle) < 0) {
+ /* FIXME: handle error */
+ return STATUS_ERR;
+ }
if (dbase_direct_cache(handle, dbase) < 0) {
/* FIXME: handle error */
@@ -177,7 +177,7 @@ static inline void exit_ro(
semanage_handle_t* handle,
dbase_direct_t* dbase) {
- //semanage_release_read_lock(handle);
+ semanage_release_read_lock(handle);
dbase_direct_drop_cache(handle, dbase);
}
diff -Naurp --exclude CVS --exclude ChangeLog --exclude VERSION --exclude 'semanage_store*' --exclude 'module_record*' --exclude 'database_directory*' old/libsemanage/src/database_file.c new/libsemanage/src/database_file.c
--- old/libsemanage/src/database_file.c 2005-10-13 13:08:35.000000000 -0400
+++ new/libsemanage/src/database_file.c 2005-10-17 18:12:31.000000000 -0400
@@ -218,10 +218,10 @@ static int enter_ro(
semanage_handle_t* handle,
dbase_file_t* dbase) {
- //if (semanage_handle_get_read_lock(handle) < 0) {
- // /* FIXME: handle error */
- // return STATUS_ERR;
- //}
+ if (semanage_get_read_lock(handle) < 0) {
+ /* FIXME: handle error */
+ return STATUS_ERR;
+ }
if (dbase_file_cache(handle, dbase) < 0) {
/* FIXME: handle error */
@@ -235,7 +235,7 @@ static inline void exit_ro(
semanage_handle_t* handle,
dbase_file_t* dbase) {
- //semanage_release_read_lock(handle);
+ semanage_release_read_lock(handle);
dbase_file_drop_cache(handle, dbase);
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-10-17 22:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-17 22:17 [ SEMANAGE ] Acquire/release read lock in databases Ivan Gyurdiev
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.