[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <36e2d782d1aea1cfbe17f3bfee35f723f2f89c0d.camel@themaw.net>
Date: Sun, 07 Jun 2020 16:40:33 +0800
From: Ian Kent <raven@...maw.net>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
l Viro <viro@...IV.linux.org.uk>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Tejun Heo <tj@...nel.org>,
Rick Lindsley <ricklind@...ux.vnet.ibm.com>,
Stephen Rothwell <sfr@...b.auug.org.au>,
David Howells <dhowells@...hat.com>,
Miklos Szeredi <miklos@...redi.hu>,
linux-fsdevel <linux-fsdevel@...r.kernel.org>,
Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 1/4] kernfs: switch kernfs to use an rwsem
Hi Greg,
On Mon, 2020-05-25 at 13:47 +0800, Ian Kent wrote:
> @@ -189,9 +189,9 @@ int kernfs_iop_getattr(const struct path *path,
> struct kstat *stat,
> struct inode *inode = d_inode(path->dentry);
> struct kernfs_node *kn = inode->i_private;
>
> - mutex_lock(&kernfs_mutex);
> + down_read(&kernfs_rwsem);
> kernfs_refresh_inode(kn, inode);
> - mutex_unlock(&kernfs_mutex);
> + up_read(&kernfs_rwsem);
>
> generic_fillattr(inode, stat);
> return 0;
> @@ -281,9 +281,9 @@ int kernfs_iop_permission(struct inode *inode,
> int mask)
>
> kn = inode->i_private;
>
> - mutex_lock(&kernfs_mutex);
> + down_read(&kernfs_rwsem);
> kernfs_refresh_inode(kn, inode);
> - mutex_unlock(&kernfs_mutex);
> + up_read(&kernfs_rwsem);
>
> return generic_permission(inode, mask);
> }
I changed these from a write lock to a read lock late in the
development.
But kernfs_refresh_inode() modifies the inode so I think I should
have taken the inode lock as well as taking the read lock.
I'll look again but a second opinion (anyone) would be welcome.
Ian
Powered by blists - more mailing lists