From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754543AbcFQFga (ORCPT ); Fri, 17 Jun 2016 01:36:30 -0400 Received: from mail-yw0-f195.google.com ([209.85.161.195]:33976 "EHLO mail-yw0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751114AbcFQFg2 (ORCPT ); Fri, 17 Jun 2016 01:36:28 -0400 Date: Fri, 17 Jun 2016 01:36:25 -0400 From: Tejun Heo To: Daniel Bristot de Oliveira Cc: linux-kernel@vger.kernel.org, Rik van Riel , "Luis Claudio R. Goncalves" , Li Zefan , Johannes Weiner , Juri Lelli , cgroups@vger.kernel.org, Steven Rostedt Subject: Re: [PATCH v2] cgroup: disable irqs while holding css_set_lock Message-ID: <20160617053625.GL31708@htj.duckdns.org> References: <1465325475-30593-1-git-send-email-bristot@redhat.com> <20160607193008.GA31708@htj.duckdns.org> <6f15f27f-3757-5413-4292-1386e95bc278@redhat.com> <38469b61-7cc5-5fec-4de3-0e9a616dfe95@redhat.com> <20160616220315.GH3262@mtj.duckdns.org> <20160616221434.GI3262@mtj.duckdns.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.6.1 (2016-04-27) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On Thu, Jun 16, 2016 at 09:12:32PM -0300, Daniel Bristot de Oliveira wrote: > The use of the irq spin_(un)lock_irq() assumes that the code is always > called with IRQs enabled. But that is not always true in this case, as > we call cgroup_free() in the hard IRQ context, and unconditionally > enable IRQ in this context is a problem. So we need to use irqsave/restore. > > Discussing with rostedt, we figured that this needs to be IRQ safe > (using irqsave/restore) in the PREEMPT RT too, so I need to code a v3 of > this patch using raw_spin_*() functions to avoid this problem in the -rt > kernel as well. > > Do you see any problems on this? Use of raw_spin is fine but I don't see how, say, rebind_subsystems() or cgroup_setup_root() can ever be called with irq disabled given that they assume sleepable context. Please use _irq and _irqsave appropriately depending on the circumstances. Thanks. -- tejun