From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752730AbbJBON2 (ORCPT ); Fri, 2 Oct 2015 10:13:28 -0400 Received: from mx2.suse.de ([195.135.220.15]:45559 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752188AbbJBON0 (ORCPT ); Fri, 2 Oct 2015 10:13:26 -0400 Date: Fri, 2 Oct 2015 16:13:24 +0200 From: Jan Kara To: Tejun Heo Cc: axboe@kernel.dk, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, tytso@mit.edu, dedekind1@gmail.com, decui@microsoft.com, kernel-team@fb.com Subject: Re: [PATCH 1/5] writeback: laptop_mode_timer_fn() needs rcu_read_lock() around bdi_writeback iteration Message-ID: <20151002141324.GC17746@quack.suse.cz> References: <1443545274-18787-1-git-send-email-tj@kernel.org> <1443545274-18787-2-git-send-email-tj@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1443545274-18787-2-git-send-email-tj@kernel.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue 29-09-15 12:47:50, Tejun Heo wrote: > laptop_mode_timer_fn() was using bdi_for_each_wb() without the > required RCU locking leading to the following warning. > > WARNING: CPU: 0 PID: 0 at include/linux/backing-dev.h:415 laptop_mode_timer_fn+0x106/0x170() > ... > Call Trace: > [] dump_stack+0x4e/0x82 > [] warn_slowpath_common+0x82/0xc0 > [] warn_slowpath_null+0x1a/0x20 > [] laptop_mode_timer_fn+0x106/0x170 > [] call_timer_fn+0xb3/0x2f0 > [] run_timer_softirq+0x205/0x370 > [] __do_softirq+0xd4/0x460 > [] irq_exit+0x89/0xa0 > [] smp_apic_timer_interrupt+0x42/0x50 > [] apic_timer_interrupt+0x84/0x90 > ... > > Fix it by adding rcu_read_lock() around the iteration. > > Signed-off-by: Tejun Heo > Fixes: a06fd6b10228 ("writeback: make laptop_mode_timer_fn() handle multiple bdi_writeback's") Looks good. You can add: Reviewed-by: Jan Kara Honza > --- > mm/page-writeback.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/page-writeback.c b/mm/page-writeback.c > index 0a931cd..902e5f2 100644 > --- a/mm/page-writeback.c > +++ b/mm/page-writeback.c > @@ -1965,10 +1965,12 @@ void laptop_mode_timer_fn(unsigned long data) > if (!bdi_has_dirty_io(&q->backing_dev_info)) > return; > > + rcu_read_lock(); > bdi_for_each_wb(wb, &q->backing_dev_info, &iter, 0) > if (wb_has_dirty_io(wb)) > wb_start_writeback(wb, nr_pages, true, > WB_REASON_LAPTOP_TIMER); > + rcu_read_unlock(); > } > > /* > -- > 2.4.3 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- Jan Kara SUSE Labs, CR