diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-09-12 09:07:00 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-09-18 07:41:24 +0200 |
commit | 494bb4f70f59715fd7c0577eb733f038b8f74e02 (patch) | |
tree | ac45d112d15d33329508658c2be62174f4e6573a | |
parent | 45a280f0b6cb32936c943f0904738ed13066ceca (diff) | |
download | barebox-494bb4f70f59715fd7c0577eb733f038b8f74e02.tar.gz barebox-494bb4f70f59715fd7c0577eb733f038b8f74e02.tar.xz |
fs: devfs: fix r/w permissions
The real r/w flags were lost in the switch to dentry cache
implementation. Restore them.
Fixes: 9137c41915 ("fs: devfs: Switch to dentry cache implementation")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | fs/devfs.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/devfs.c b/fs/devfs.c index 84c619f1ed..d2b801036e 100644 --- a/fs/devfs.c +++ b/fs/devfs.c @@ -251,10 +251,15 @@ static struct dentry *devfs_lookup(struct inode *dir, struct dentry *dentry, if (!cdev) return ERR_PTR(-ENOENT); - inode = devfs_get_inode(dir->i_sb, dir, S_IFCHR | S_IRWXUGO); + inode = devfs_get_inode(dir->i_sb, dir, S_IFCHR); if (!inode) return ERR_PTR(-ENOMEM); + if (cdev->ops->write) + inode->i_mode |= S_IWUSR; + if (cdev->ops->read) + inode->i_mode |= S_IRUSR; + dinode = container_of(inode, struct devfs_inode, inode); inode->i_size = cdev->size; |