mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Bug#59464 Race condition in row_vers_build_for_semi_consistent_read
row_vers_build_for_semi_consistent_read(): Dereference version_trx before releasing kernel_mutex, but not thereafter.
This commit is contained in:
@@ -593,11 +593,15 @@ row_vers_build_for_semi_consistent_read(
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
version_trx = trx_get_on_id(version_trx_id);
|
||||
if (version_trx
|
||||
&& (version_trx->conc_state == TRX_COMMITTED_IN_MEMORY
|
||||
|| version_trx->conc_state == TRX_NOT_STARTED)) {
|
||||
|
||||
version_trx = NULL;
|
||||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
if (!version_trx
|
||||
|| version_trx->conc_state == TRX_NOT_STARTED
|
||||
|| version_trx->conc_state == TRX_COMMITTED_IN_MEMORY) {
|
||||
if (!version_trx) {
|
||||
|
||||
/* We found a version that belongs to a
|
||||
committed transaction: return it. */
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
2011-01-25 The InnoDB Team
|
||||
|
||||
* row/row0vers.c:
|
||||
Fix Bug#59464 Race condition in row_vers_build_for_semi_consistent_read
|
||||
|
||||
2011-01-25 The InnoDB Team
|
||||
|
||||
* btr/btr0btr.c, btr/btr0cur.c, btr/btr0sea.c,
|
||||
|
||||
@@ -669,11 +669,15 @@ row_vers_build_for_semi_consistent_read(
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
version_trx = trx_get_on_id(version_trx_id);
|
||||
if (version_trx
|
||||
&& (version_trx->conc_state == TRX_COMMITTED_IN_MEMORY
|
||||
|| version_trx->conc_state == TRX_NOT_STARTED)) {
|
||||
|
||||
version_trx = NULL;
|
||||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
if (!version_trx
|
||||
|| version_trx->conc_state == TRX_NOT_STARTED
|
||||
|| version_trx->conc_state == TRX_COMMITTED_IN_MEMORY) {
|
||||
if (!version_trx) {
|
||||
|
||||
/* We found a version that belongs to a
|
||||
committed transaction: return it. */
|
||||
|
||||
Reference in New Issue
Block a user