Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp7126219pxb; Thu, 18 Feb 2021 02:01:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJxwwtyBTTCpDUTydYLmJlnSHwMaHfp4EDuDz40ht5mi+hSJQifsRFBtmash3CitbLBlbVwP X-Received: by 2002:a17:906:4b4c:: with SMTP id j12mr3176014ejv.339.1613642518223; Thu, 18 Feb 2021 02:01:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613642518; cv=none; d=google.com; s=arc-20160816; b=vfvDe6oGGIkHjZZ8p636Sv/L81xjJ1UdQR/83AqVhz7reM5tGOC3NJ+08qby5ds1nM GdVj1i1GGN7BCaiA3j7I3srNa/O1izs6PUfFkTM+CN7tG8QQESyAU5hNE73Spy+r1QnZ S5FsmvXJyDliWft80jYjoeLxVwTA5TE1+FT0haXV8ELSzEV7H3/92u4IiYZb/Wgg3xwA Nw6RP0TQxncv+daW0DI8Fur3gCvVF/hmu5GlvjWlldV9LkpzPh6MQKtDCAQzKgGzZAvE p1yIlEkL/vmTIYh7JElczK8JzF5dw5dfaJ1/7q+sDYrOVtrHqmxi3ykgdNVqOVhbNCj+ 1XTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=tk7QHmndqWcoGyYO0maIQqOQ8AgbKdchHpRy2uR21As=; b=0ztOjbTsP4o/fdcWtfvPAAcDPcFTo32Sv5CDXOUToF9XCQd30f1BC3o6m7rPLDzVCo MGLVqIbOgjzQpgHn4c6rQXU6yUiqFjjnOM3fgnAdkMlJGWDPc0lON5+B2u2iQ/jsYA7c ZET0/IqJhcOeIxDx6oj/EfPeWTTpDBPztsdSRNgPp2+oheogo/w09cqwHjIy0fH+Bfl+ j4awLe+bKHWemS79cS19DmCupzXNGEpCXI0sT4Ou72mKrZqAS5nTiPF0lrtNQJ8zVKqf OfycGO9/A/ORJlEkwZJ42fRF1WsIkGXbZQcynW2fld2Wwm8fR6kSR2eXJ2SuWujgZEWh H//A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=RbZgxnEB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n13si3092115edy.457.2021.02.18.02.01.34; Thu, 18 Feb 2021 02:01:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=RbZgxnEB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232295AbhBRJ6m (ORCPT + 99 others); Thu, 18 Feb 2021 04:58:42 -0500 Received: from mail.kernel.org ([198.145.29.99]:46932 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230423AbhBRIzE (ORCPT ); Thu, 18 Feb 2021 03:55:04 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 0B04364E79; Thu, 18 Feb 2021 08:54:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1613638443; bh=kxs2KMLR9HvojpvWo9ncMWe2dfU56ncBrp1ZW46YT64=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=RbZgxnEBqXHfHusy2mO3E1d9ev2iMj5GeM7XZ+7tUFykRYUWnU9e2X52u8hlxbK8n HLLUQaIx7MdZavxbkqebASVRDL6VyBNhV9L3XpWcuVSYrqyez9e11GN86RM6nL1oip e8p1vBJIbaIY8jHdEK7J1YJoOfcnXiTWbn+PR5fo= Date: Thu, 18 Feb 2021 09:54:00 +0100 From: Greg KH To: Marc Zyngier Cc: Michael Walle , linux-kernel@vger.kernel.org, tglx@linutronix.de Subject: Re: [PATCH] irqdomain: remove debugfs_file from struct irq_domain Message-ID: References: <20210217195717.13727-1-michael@walle.cc> <4e4d0479b935e60a53f75ef534086476@kernel.org> <5c527bfb6f3dfe31b5c25f29418306c6@walle.cc> <87czwys6s1.wl-maz@kernel.org> <8b4de9eae773a43b38f42c8ab6d9d23c@walle.cc> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 18, 2021 at 08:47:15AM +0000, Marc Zyngier wrote: > On 2021-02-18 08:38, Greg KH wrote: > > On Thu, Feb 18, 2021 at 09:27:09AM +0100, Michael Walle wrote: > > > Am 2021-02-18 08:31, schrieb Greg KH: > > > > On Wed, Feb 17, 2021 at 09:50:38PM +0000, Marc Zyngier wrote: > > > > > On Wed, 17 Feb 2021 20:10:50 +0000, > > > > > Michael Walle wrote: > > > > > > > > > > > > Am 2021-02-17 21:02, schrieb Marc Zyngier: > > > > > > > On 2021-02-17 19:57, Michael Walle wrote: > > > > > > >> Hi Greg, > > > > > > >> > > > > > > >>> There's no need to keep around a dentry pointer to a simple file that > > > > > > >>> debugfs itself can look up when we need to remove it from the system. > > > > > > >>> So simplify the code by deleting the variable and cleaning up the > > > > > > >>> logic > > > > > > >>> around the debugfs file. > > > > > > >> > > > > > > >> This will generate the following oops on my board (arm64, > > > > > > >> freescale/fsl-ls1028a-kontron-sl28-var3-ads2.dts). In debugfs_lookup() > > > > > > >> debugfs_mount is NULL. > > > > > > > > > > > > > > That's odd. I gave it a go yesterday, and nothing blew up. > > > > > > > Which makes me wonder whether I had the debug stuff enabled > > > > > > > the first place... > > > > > > > > > > > > > > I've dropped the patch from -next for now until I figure it out > > > > > > > (probably tomorrow). > > > > > > > > > > > > Mh, maybe its my .config, I've attached it. I also noticed that > > > > > > the board boots just fine in our kernel-ci [1]. > > > > > > > > > > I reproduced here. I had disabled GENERIC_IRQ_DEBUGFS for obscure > > > > > reasons, and it caught fire as I re-enabled it. > > > > > > > > > > Adding this fixes it for me: > > > > > > > > > > diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c > > > > > index 367ff1c35f75..d8a14cf1a7b6 100644 > > > > > --- a/kernel/irq/irqdomain.c > > > > > +++ b/kernel/irq/irqdomain.c > > > > > @@ -1904,7 +1904,8 @@ static void debugfs_add_domain_dir(struct > > > > > irq_domain *d) > > > > > > > > > > static void debugfs_remove_domain_dir(struct irq_domain *d) > > > > > { > > > > > - debugfs_remove(debugfs_lookup(d->name, domain_dir)); > > > > > + if (domain_dir) > > > > > + debugfs_remove(debugfs_lookup(d->name, domain_dir)); > > > > > } > > > > > > > > > > void __init irq_domain_debugfs_init(struct dentry *root) > > > > > > > > > > > > > > > Could you please check whether it works for you? > > > > > > > > Can you try this debugfs core change instead? Callers to debugfs should > > > > not have to do the above type of checking as debugfs should be much more > > > > robust than that. > > > > > > > > thanks, > > > > > > > > greg k-h > > > > > > > > > > > > diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c > > > > index 2fcf66473436..5aa798f52b6e 100644 > > > > --- a/fs/debugfs/inode.c > > > > +++ b/fs/debugfs/inode.c > > > > @@ -297,7 +297,7 @@ struct dentry *debugfs_lookup(const char *name, > > > > struct dentry *parent) > > > > { > > > > struct dentry *dentry; > > > > > > > > - if (IS_ERR(parent)) > > > > + if (IS_ERR_OR_NULL(name) || IS_ERR(parent)) > > > > return NULL; > > > > > > > > if (!parent) > > > > > > This doesn't work. name is not NULL when it is called. > > > > Ok, but it is a good check we need to make anyway, I'll add it to a > > patch series :) > > > > > What has to happen before debugfs_lookup() can be called? Looks like > > > someone has to initialize the static debugfs_mount, first. > > > > Wow, wait, you are removing a debugfs file _before_ debugfs is even > > initialized? Didn't expect that, ok, let me go try this again... > > Yeah, that's a poor man's rename (file being deleted and re-created). True, but that's not happening here, right? Some driver is being initialized and creates a debugfs file, and then decides to unload so it removes the debugfs file? Why was it trying to create the file in the first place if it didn't properly bind to the hardware? odd... greg k-h