From 0db88567b916dc0dbfb0dfe2ed8a47f8d50fb317 Mon Sep 17 00:00:00 2001 From: Raghavendra Bhat Date: Sat, 1 Oct 2011 19:20:28 +0530 Subject: libglusterfs/syncop: do not rely on synctask set in makecontext Across glibc implementations, interpretation of argc/argv passed to makecontext() is different. This patch does away with dependence on such arguments passed to makecontext(). Instead,synctask reference is retrieved from pthread_getspecific(). Change-Id: Ie01feaa0b7d430f8782c2f6805ccdf8026e401f4 BUG: 3636 Reviewed-on: http://review.gluster.com/547 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi Reviewed-by: Vijay Bellur --- libglusterfs/src/syncop.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libglusterfs/src/syncop.c') diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index bbcf5201..1380d15f 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -97,10 +97,15 @@ synctask_wake (struct synctask *task) void -synctask_wrap (struct synctask *task) +synctask_wrap (struct synctask *old_task) { int ret; + struct synctask *task = NULL; + + /* Do not trust the pointer received. It may be + wrong and can lead to crashes. */ + task = synctask_get (); ret = task->syncfn (task->opaque); task->synccbk (ret, task->frame, task->opaque); -- cgit