summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src
diff options
context:
space:
mode:
authorSusant Palai <spalai@redhat.com>2015-04-26 23:49:56 +0530
committerVijay Bellur <vbellur@redhat.com>2015-05-01 07:48:22 -0700
commit85a0fb6d304babb9d7f35e26a45677d8210da8eb (patch)
treef2c5ac1be3792047f1a192d93d7021303de407cd /xlators/cluster/afr/src
parent265fb714b0ef7ebfa9296ff0571502b7eb49eee5 (diff)
dht: tackle thread race in dht_getxattr_cbk
problem: 1. When two threads execute in parallel in dht_getxattr_cbk it may so happen that, both may find local->xattr to be NULL. As a result dht_aggregate_xattr may not get executed. 2. In dht_getxattr_cbk, thread1 thread2 T1 this_call_cnt = 2 -1 T2 this_call_cnt = 1 - 1 T3 fills local_xattr T4 DHT_STACK_UNWIND -> local_wipe T5 tries to dereference local which is already freed, leading to crash. Solution: for problem1: Execute critical section inside frame lock to resolve race. for problem2: Calculate this_call_count just before out section. BUG: 1217386 Change-Id: I14fdb0cb1825896721670d71f48c93053448be7b Signed-off-by: Susant Palai <spalai@redhat.com> Reviewed-on: http://review.gluster.org/10389 Reviewed-by: Anuradha Talur <atalur@redhat.com> Reviewed-by: N Balachandran <nbalacha@redhat.com> Reviewed-by: Kotresh HR <khiremat@redhat.com> Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com> Signed-off-by: Susant Palai <spalai@redhat.com> Reviewed-on: http://review.gluster.org/10467 Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'xlators/cluster/afr/src')
0 files changed, 0 insertions, 0 deletions