diff options
author | Brian Foster <bfoster@redhat.com> | 2013-07-29 11:18:49 -0400 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-08-01 21:03:17 -0700 |
commit | a1ece79c84c0306d38cb42cfa947dbc387af3ad0 (patch) | |
tree | b01b8b18f5e3207649b87921e0236fa6c8a2accd /xlators/performance/io-threads/src | |
parent | bc9cf5ba83dffbc2fb5a6821a6f40e6acff59897 (diff) |
performance/io-threads: fix potential use after free crash
do_iot_schedule() enqueues the stub and kicks the worker thread.
The stub is eventually destroyed after it has been resumed and thus
unsafe to access after being enqueued.
Though likely difficult to reproduce in a real deployment, a crash
is reproducible by running a smallfile benchmark on a replica 2
volume on a single vm. Reorder the debug log message prior to the
do_iot_schedule() call to avoid the crash.
BUG: 989579
Change-Id: Ifc6502c02ae455c959a90ff1ca62a690e31ceafb
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-on: http://review.gluster.org/5418
Reviewed-by: Santosh Pradhan <spradhan@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/performance/io-threads/src')
-rw-r--r-- | xlators/performance/io-threads/src/io-threads.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/xlators/performance/io-threads/src/io-threads.c b/xlators/performance/io-threads/src/io-threads.c index c6bdc375439..d9a21878053 100644 --- a/xlators/performance/io-threads/src/io-threads.c +++ b/xlators/performance/io-threads/src/io-threads.c @@ -323,9 +323,9 @@ iot_schedule (call_frame_t *frame, xlator_t *this, call_stub_t *stub) break; } out: - ret = do_iot_schedule (this->private, stub, pri); gf_log (this->name, GF_LOG_DEBUG, "%s scheduled as %s fop", gf_fop_list[stub->fop], iot_get_pri_meaning (pri)); + ret = do_iot_schedule (this->private, stub, pri); return ret; } |