lkml.org 
[lkml]   [2022]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v8 01/10] kernfs: Remove reference counting for kernfs_open_node.
On Sun, Apr 10, 2022 at 12:37:10PM +1000, Imran Khan wrote:
> @@ -768,15 +765,15 @@ void kernfs_drain_open_files(struct kernfs_node *kn)
> if (!(kn->flags & (KERNFS_HAS_MMAP | KERNFS_HAS_RELEASE)))
> return;
>
> - spin_lock_irq(&kernfs_open_node_lock);
> on = kn->attr.open;
> - if (on)
> - atomic_inc(&on->refcnt);
> - spin_unlock_irq(&kernfs_open_node_lock);
> if (!on)
> return;
>
> mutex_lock(&kernfs_open_file_mutex);
> + if (!kn->attr.open) {
> + mutex_unlock(&kernfs_open_file_mutex);
> + return;
> + }

What if @on got freed and new one got allocated between the lockless check
and the locked check? Is there a reason to keep the lockless check at all?

> list_for_each_entry(of, &on->files, list) {
> struct inode *inode = file_inode(of->file);

Thanks.

--
tejun

\
 
 \ /
  Last update: 2022-04-22 18:04    [W:0.157 / U:0.036 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site