From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757556AbYDBQO0 (ORCPT ); Wed, 2 Apr 2008 12:14:26 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755604AbYDBQOT (ORCPT ); Wed, 2 Apr 2008 12:14:19 -0400 Received: from e31.co.us.ibm.com ([32.97.110.149]:45043 "EHLO e31.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754781AbYDBQOT (ORCPT ); Wed, 2 Apr 2008 12:14:19 -0400 Date: Wed, 2 Apr 2008 09:14:16 -0700 From: "Paul E. McKenney" To: Jens Axboe , Peter Zijlstra , Ingo Molnar , Pekka J Enberg , Vegard Nossum , Linux Kernel Mailing List Subject: Re: kmemcheck caught read from freed memory (cfq_free_io_context) Message-ID: <20080402161416.GB9333@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20080402105539.GA5610@linux.vnet.ibm.com> <1207133961.8514.768.camel@twins> <20080402113327.GC41073@gandalf.sssup.it> <20080402114338.GA12774@kernel.dk> <20080402123620.GH12774@kernel.dk> <20080402123639.GI12774@kernel.dk> <20080402125530.GF41073@gandalf.sssup.it> <20080402125819.GO12774@kernel.dk> <20080402125857.GP12774@kernel.dk> <20080402131625.GI41073@gandalf.sssup.it> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080402131625.GI41073@gandalf.sssup.it> User-Agent: Mutt/1.5.13 (2006-08-11) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 02, 2008 at 03:16:25PM +0200, Fabio Checconi wrote: > > From: Jens Axboe > > Date: Wed, Apr 02, 2008 02:58:58PM +0200 > > > > On Wed, Apr 02 2008, Jens Axboe wrote: > > > On Wed, Apr 02 2008, Fabio Checconi wrote: > > > > > From: Jens Axboe > > > > > Date: Wed, Apr 02, 2008 02:36:39PM +0200 > > > > > > > > > > > Looks good and tests fine as well. I've applied it, on top of the > > > > > > hlist_for_each_entry_safe_rcu() fix. > > > > > > > > > > > > http://git.kernel.dk/?p=linux-2.6-block.git;a=commit;h=436151ad32b4a59e0d36165a7d6312545f126661 > > > > > > > > > > > > > > ok, thanks. anyway I don't think the hlist_for_each_entry_safe_rcu() > > > > is needed at this point, since the pos->next pointer is still valid > > > > (at least) until the next rcu_read_unlock(). am I wrong? > > > > > > it isn't, but it's still clearer. so either that or a nice comment, I > > > just stuck with what I had already committed. > > > > ok I agree on that. the only remaining concern I have is that when > I first looked at it it seemed to me that hlist_for_each_entry_safe_rcu() > was missing by purpose from the list interface, since hlist_del_rcu() > can be called anyway during the traversal from a concurrent context, > so the semantics of *_safe_* have to be carried out by other means > (i.e., call_rcu()). Exactly. ;-) Thanx, Paul