Torsten Kaiser wrote: > On Nov 19, 2007 10:00 PM, Milan Broz <[EMAIL PROTECTED]> wrote: >> Torsten Kaiser wrote: >>> Anything I could try, apart from more boots with slub_debug=F? > > One time it triggered with slub_debug=F, but no additional output. > With slub_debug=FP I have not seen it again, so I can't say if that > would yield more info. > >> Please could you try which patch from the dm-crypt series cause this ? >> (agk-dm-dm-crypt* names.) >> >> I suspect agk-dm-dm-crypt-move-bio-submission-to-thread.patch because >> there is one work struct used subsequently in two threads... >> (io thread already started while crypt thread is processing lockdep_map >> after calling f(work)...) > > After reverting only > agk-dm-dm-crypt-move-bio-submission-to-thread.patch I also have not > seen the 'held lock freed' message again.
Ok, then I have question: Is the following pseudocode correct (and problem is in lock validation which checks something already initialized for another queue) or reusing work_struct is not permitted from inside called work function ? (Note comment in code "It is permissible to free the struct work_struct from inside the function that is called from it".) struct work_struct work; struct workqueue_struct *a, *b; do_b(*work) { /* do something else */ } do_a(*work) { /* do something */ INIT_WORK(&work, do_b); queue_work(b, &work); } INIT_WORK(&work, do_a); queue_work(a, &work); Milan -- [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/