mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: Krzysztof Karas <krzysztof.karas@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	"David S. Miller"	 <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski	 <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>, Simon Horman	 <horms@kernel.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	 Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>,
	 Simona Vetter <simona@ffwll.ch>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Joonas Lahtinen	 <joonas.lahtinen@linux.intel.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	 Tvrtko Ursulin <tursulin@ursulin.net>,
	Kuniyuki Iwashima <kuniyu@amazon.com>,
	Qasim Ijaz <qasdev00@gmail.com>,
	 Nathan Chancellor	 <nathan@kernel.org>,
	Andrew Lunn <andrew@lunn.ch>,
	linux-kernel@vger.kernel.org, 	netdev@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
		intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v12 01/10] i915: only initialize struct ref_tracker_dir once
Date: Fri, 30 May 2025 07:39:36 -0400	[thread overview]
Message-ID: <0ae02bf15487f3e5703ce1f5d3107b6dc00477f1.camel@kernel.org> (raw)
In-Reply-To: <bcc3aaschdk64nieucfllygsqjvtvpffgxf7mjamabkeofangr@tmbkssauvg2d>

On Fri, 2025-05-30 at 11:01 +0000, Krzysztof Karas wrote:
> Hi Jeff,
> 
> > I got some warnings from the i915 CI with the ref_tracker debugfs
> > patches applied, that indicated that these ref_tracker_dir_init() calls
> > were being called more than once. If references were held on these
> > objects between the initializations, then that could lead to leaked ref
> > tracking objects.
> > 
> > Since these objects are zalloc'ed, ensure that they are only initialized
> > once by testing whether the first byte of the name field is 0.
> 
> Are you referring to these warnings?
> <3> [314.043410] debugfs: File 'intel_wakeref@ffff88815111a308' in directory 'ref_tracker' already present!
> <4> [314.043427] ref_tracker: ref_tracker: unable to create debugfs file for intel_wakeref@ffff88815111a308: -EEXIST
> 
> I think those might be caused by introduction of:
> "ref_tracker: automatically register a file in debugfs for a ref_tracker_dir".
> 
> Current version of "ref_tracker: add a static classname string
> to each ref_tracker_dir" further in this series should prevent
> multiple calls to "ref_tracker_dir_init()", so this patch could
> be dropped I think.
> If my reasoning is wrong however, then please add a note to the
> commit message which explains why this is needed in more detail
> or/and move this patch right before it is necessary. Otherwise
> it looks like a vague workaround.
> 

I'm fine with dropping this patch.

Those are the messages that demonstrate the problem, but the problem is
potentially bigger than those messages. ref_tracker_dir_init() is being
called (at least) twice:

struct ref_tracker_dir {                                              
#ifdef CONFIG_REF_TRACKER                                             
        spinlock_t              lock;                                 
        unsigned int            quarantine_avail;                     
        refcount_t              untracked;                            
        refcount_t              no_tracker;                           
        bool                    dead;                                 
        struct list_head        list; /* List of active trackers */   
        struct list_head        quarantine; /* List of dead trackers */
        const char              *class; /* object classname */        
#ifdef CONFIG_DEBUG_FS                                                
        struct dentry           *dentry;                              
        struct dentry           *symlink;                             
#endif                                                                
#endif                                                                
}; 

This structure contains two list_heads that can contain ref_tracker
objects. If that list was populated when ref_tracker_dir_init() is
called the second time, then those objects will now be sitting on a
corrupt list. At best they'll just leak, but with them sitting on a
now-corrupt list, they could cause a panic too.

It may be that there can be no objects on that list when it's called
the second time. But with this patchset initializing it twice will
cause dentry leaks at least.
-- 
Jeff Layton <jlayton@kernel.org>

  reply	other threads:[~2025-05-30 11:39 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-29 15:20 [PATCH v12 00/10] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
2025-05-29 15:20 ` [PATCH v12 01/10] i915: only initialize struct ref_tracker_dir once Jeff Layton
2025-05-30 11:01   ` Krzysztof Karas
2025-05-30 11:39     ` Jeff Layton [this message]
2025-05-29 15:20 ` [PATCH v12 02/10] ref_tracker: don't use %pK in pr_ostream() output Jeff Layton
2025-05-30 11:03   ` Krzysztof Karas
2025-05-29 15:20 ` [PATCH v12 03/10] ref_tracker: add a top level debugfs directory for ref_tracker Jeff Layton
2025-05-30 11:05   ` Krzysztof Karas
2025-06-04  9:12   ` Jani Nikula
2025-06-09 18:10     ` Jeff Layton
2025-05-29 15:20 ` [PATCH v12 04/10] ref_tracker: have callers pass output function to pr_ostream() Jeff Layton
2025-05-30 11:13   ` Krzysztof Karas
2025-05-30 11:47     ` Jeff Layton
2025-05-29 15:20 ` [PATCH v12 05/10] ref_tracker: add a static classname string to each ref_tracker_dir Jeff Layton
2025-05-29 15:20 ` [PATCH v12 06/10] ref_tracker: allow pr_ostream() to print directly to a seq_file Jeff Layton
2025-05-29 15:20 ` [PATCH v12 07/10] ref_tracker: automatically register a file in debugfs for a ref_tracker_dir Jeff Layton
2025-05-29 15:20 ` [PATCH v12 08/10] ref_tracker: add a way to create a symlink to the ref_tracker_dir debugfs file Jeff Layton
2025-05-29 15:20 ` [PATCH v12 09/10] net: add symlinks to ref_tracker_dir for netns Jeff Layton
2025-05-29 15:20 ` [PATCH v12 10/10] ref_tracker: eliminate the ref_tracker_dir name field Jeff Layton
2025-05-29 23:24 ` [PATCH v12 00/10] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0ae02bf15487f3e5703ce1f5d3107b6dc00477f1.camel@kernel.org \
    --to=jlayton@kernel.org \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=krzysztof.karas@intel.com \
    --cc=kuba@kernel.org \
    --cc=kuniyu@amazon.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=nathan@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=qasdev00@gmail.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=simona@ffwll.ch \
    --cc=tursulin@ursulin.net \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®