X-Git-Url: https://git.stricted.de/?a=blobdiff_plain;f=drivers%2Fmd%2Fbcache%2Fclosure.c;h=9aba2017f0d1685ac5858ccf716c1f829681c853;hb=c0d8f455600820eb05208b57c50d4e90a58c4d96;hp=bd05a9a8c7cf933e028be5eefbd1cd178681e495;hpb=223828d8a6ef53f7671351fe5d08f18dca714830;p=GitHub%2Fmt8127%2Fandroid_kernel_alcatel_ttab.git diff --git a/drivers/md/bcache/closure.c b/drivers/md/bcache/closure.c index bd05a9a8c7cf..9aba2017f0d1 100644 --- a/drivers/md/bcache/closure.c +++ b/drivers/md/bcache/closure.c @@ -66,16 +66,18 @@ static inline void closure_put_after_sub(struct closure *cl, int flags) } else { struct closure *parent = cl->parent; struct closure_waitlist *wait = closure_waitlist(cl); + closure_fn *destructor = cl->fn; closure_debug_destroy(cl); + smp_mb(); atomic_set(&cl->remaining, -1); if (wait) closure_wake_up(wait); - if (cl->fn) - cl->fn(cl); + if (destructor) + destructor(cl); if (parent) closure_put(parent);