lkml.org 
[lkml]   [2020]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 1/4] kernfs: switch kernfs to use an rwsem
From
Date
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

\
 
 \ /
  Last update: 2020-06-07 10:40    [W:0.180 / U:0.128 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site