compat: revert 3da0495c compat_flush_scheduled_work "fix"
authorLuis R. Rodriguez <mcgrof@frijolero.org>
Tue, 7 Aug 2012 06:23:31 +0000 (23:23 -0700)
committerLuis R. Rodriguez <mcgrof@frijolero.org>
Tue, 7 Aug 2012 06:23:31 +0000 (23:23 -0700)
This revert:

commit 3da0495cf863288b6798e121ccf93c4453c6c768
Author: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Date:   Fri Jul 13 10:38:34 2012 +0200

    compat: fix system crash on 2.6.35 when flushing work

    Ubuntu 10.10 stock kernel (2.6.35-22-generic) crashes in
    compat_flush_scheduled_work(), that is called e.g. when
    mac80211 module is unloaded.

    The problem was introduced with 80bf8a83
    compat: backport system work queues system_wq and system_long_wq

    The crash happens in compat_flush_scheduled_work() where both
    flush_workqueue() and flush_scheduled_work() are called successively.
    Removing one of them resolves the issue.

    All compat-wireless tarballs after 2012-03-18 are affected.

Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org>
Turns out the real issue was the recursive call to
compat_flush_scheduled_work().

Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org>
compat/compat-2.6.36.c

index 51486b0c0a0cbf63db06b2f0a2fc297220eb5c92..72ada4a4c57d618b64bdb031ea30955961d78cc5 100644 (file)
@@ -141,6 +141,7 @@ void compat_flush_scheduled_work(void)
         * go with the old kernel's one first for now (keventd_wq) and
         * if think its reasonable later we can flip this around.
         */
+       flush_workqueue(system_wq);
        flush_scheduled_work();
 }
 EXPORT_SYMBOL_GPL(compat_flush_scheduled_work);