mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-24 13:24:56 +08:00
ITS#5332 someone else may free the entry as soon as we unlock it
This commit is contained in:
parent
f481ffef9c
commit
a3262ff239
@ -251,8 +251,9 @@ bdb_cache_return_entry_rw( struct bdb_info *bdb, Entry *e,
|
|||||||
EntryInfo *ei;
|
EntryInfo *ei;
|
||||||
int free = 0;
|
int free = 0;
|
||||||
|
|
||||||
bdb_cache_entry_db_unlock( bdb, lock );
|
|
||||||
ei = e->e_private;
|
ei = e->e_private;
|
||||||
|
bdb_cache_entry_db_unlock( bdb, lock );
|
||||||
|
if ( ei ) {
|
||||||
bdb_cache_entryinfo_lock( ei );
|
bdb_cache_entryinfo_lock( ei );
|
||||||
if ( ei->bei_state & CACHE_ENTRY_NOT_CACHED ) {
|
if ( ei->bei_state & CACHE_ENTRY_NOT_CACHED ) {
|
||||||
ei->bei_e = NULL;
|
ei->bei_e = NULL;
|
||||||
@ -260,6 +261,7 @@ bdb_cache_return_entry_rw( struct bdb_info *bdb, Entry *e,
|
|||||||
free = 1;
|
free = 1;
|
||||||
}
|
}
|
||||||
bdb_cache_entryinfo_unlock( ei );
|
bdb_cache_entryinfo_unlock( ei );
|
||||||
|
}
|
||||||
if ( free ) {
|
if ( free ) {
|
||||||
e->e_private = NULL;
|
e->e_private = NULL;
|
||||||
bdb_entry_return( e );
|
bdb_entry_return( e );
|
||||||
|
Loading…
Reference in New Issue
Block a user