From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out4-smtp.messagingengine.com ([66.111.4.28]:33139 "EHLO out4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932141AbcKNGzH (ORCPT ); Mon, 14 Nov 2016 01:55:07 -0500 Date: Mon, 14 Nov 2016 07:55:19 +0100 From: Greg KH To: Nicolai Stange Cc: Mike Marshall , Al Viro , linux-fsdevel , Linus Torvalds , Martin Brandenburg Subject: Re: debugfs question... Message-ID: <20161114065519.GA29810@kroah.com> References: <20161031193823.GA11187@kroah.com> <87wpgoff0o.fsf@gmail.com> <877f876wo9.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <877f876wo9.fsf@gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Sun, Nov 13, 2016 at 07:51:02PM +0100, Nicolai Stange wrote: > Hi again, > > bad news: my previous analysis was completely wrong, c.f. below. > Good news (from my point of view): debugfs is correct, no fix needed for > it. > > Apologies for the confusion... > > > Nicolai Stange writes: > > > Greg KH writes: > > > >> On Mon, Oct 31, 2016 at 02:32:56PM -0400, Mike Marshall wrote: > >> > >>> But... really bad things happen if someone unloads the Orangefs > >>> module after my test program does the open and before the read > >>> starts. So I picked another debugfs-using-filesystem (f2fs) and > >>> pointed my tester-program at /sys/kernel/debug/f2fs/status, and > >>> the same bad thing happens there. > > > > [...] > > > >>> [ 1240.144316] Call Trace: > >>> [ 1240.144450] [] __fput+0xdf/0x1d0 > >>> [ 1240.144704] [] ____fput+0xe/0x10 > >>> [ 1240.144962] [] task_work_run+0x8e/0xc0 > >>> [ 1240.145243] [] do_exit+0x2ae/0xae0 > > > > > > Thank you very much for this detailed report! > > > > At least for the .../f2fs/status file, your splat at fput() can be > > readily explained with the full proxy's releaser not being protected > > against file removals in any way. > > > > Partly this is on purpose, c.f. the comment in full_proxy_release(). > > > > However, I should have at least tried to acquire a reference to the > > owning module before accessing some static struct file_operations or > > even calling some ->release() within it. Meh. > > This is what I got wrong: debugfs does acquire the needed references > correctly (details below). For the case of f2fs' "status" file, the > file_operations ->owner is simply not set as it should have been, > i.e. to THIS_MODULE. Ah, good, care to make a f2fs patch to resolve the issue there? thanks, greg k-h