From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755305AbbCELq7 (ORCPT ); Thu, 5 Mar 2015 06:46:59 -0500 Received: from mail-qg0-f51.google.com ([209.85.192.51]:35791 "EHLO mail-qg0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752379AbbCELq5 (ORCPT ); Thu, 5 Mar 2015 06:46:57 -0500 Date: Thu, 5 Mar 2015 06:46:53 -0500 From: Tejun Heo To: Tomeu Vizoso Cc: Jesper Nilsson , Rabin Vincent , Jesper Nilsson , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH wq/for-4.0-fixes v2] workqueue: fix hang involving racing cancel[_delayed]_work_sync()'s for PREEMPT_NONE Message-ID: <20150305114653.GB23912@htj.duckdns.org> References: <20150206171156.GA8942@axis.com> <20150209161527.GH3220@htj.duckdns.org> <20150302122615.GE11399@axis.com> <20150302162144.GF17694@htj.duckdns.org> <20150303132115.GB3122@htj.duckdns.org> <20150303134548.GC3122@htj.duckdns.org> <20150305093638.GA23912@htj.duckdns.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150305093638.GA23912@htj.duckdns.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 05, 2015 at 04:36:38AM -0500, Tejun Heo wrote: > On Thu, Mar 05, 2015 at 10:24:50AM +0100, Tomeu Vizoso wrote: > ... > > [ 317.251001] PC is at bit_waitqueue+0x38/0x6c > ... > > [ 317.420658] [] (bit_waitqueue) from [] > > (__cancel_work_timer+0x28/0x1b0) > > [ 317.430598] [] (__cancel_work_timer) from [] > > (cancel_work_sync+0x1c/0x20) > > [ 317.440672] [] (cancel_work_sync) from [] > > (regulatory_exit+0x24/0x17c [cfg80211]) > > [ 317.451396] [] (regulatory_exit [cfg80211]) from > > [] (cfg80211_exit+0x38/0x4c [cfg80211]) > > [ 317.462726] [] (cfg80211_exit [cfg80211]) from > > [] (SyS_delete_module+0x1b4/0x1f8) > > [ 317.473411] [] (SyS_delete_module) from [] > > (ret_fast_syscall+0x0/0x34) > > Ah, I think that's from feeding static address to virt_to_page. :( > Reverted the patch from the branch. Will think more about what to do. So, it's from feeding a static address of a module which is allocated on the vmalloc space to bit_waitqueue() which then tries to find out the backing page struct which vmalloc area obviously doesn't have. Currently testing an alternative patch which uses a single waitqueue w/ a custom wakeup function which can filter the target work item. Will soon post the new version. Thanks. -- tejun