diff options
| author | Paul Mundt <lethal@linux-sh.org> | 2010-03-10 16:41:57 +0900 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2010-03-10 16:41:57 +0900 |
| commit | d28c145debb1bd53cde63ac8bccc192e3e00067e (patch) | |
| tree | 87fb1d66cab7689aa662ebd0337b39ff1bf6f433 /drivers/base/devtmpfs.c | |
| parent | 2e733b3f84fa9c2ae60513c5f7b56d599ed2ae02 (diff) | |
| parent | ec0ffe2ee0e0fb9da4409d86bfd72636450f32df (diff) | |
Merge branch 'sh/driver-core' into sh/clkfwk
Diffstat (limited to 'drivers/base/devtmpfs.c')
| -rw-r--r-- | drivers/base/devtmpfs.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c index 42ae452b36b0..dac478c6e460 100644 --- a/drivers/base/devtmpfs.c +++ b/drivers/base/devtmpfs.c @@ -301,6 +301,19 @@ int devtmpfs_delete_node(struct device *dev) if (dentry->d_inode) { err = vfs_getattr(nd.path.mnt, dentry, &stat); if (!err && dev_mynode(dev, dentry->d_inode, &stat)) { + struct iattr newattrs; + /* + * before unlinking this node, reset permissions + * of possible references like hardlinks + */ + newattrs.ia_uid = 0; + newattrs.ia_gid = 0; + newattrs.ia_mode = stat.mode & ~0777; + newattrs.ia_valid = + ATTR_UID|ATTR_GID|ATTR_MODE; + mutex_lock(&dentry->d_inode->i_mutex); + notify_change(dentry, &newattrs); + mutex_unlock(&dentry->d_inode->i_mutex); err = vfs_unlink(nd.path.dentry->d_inode, dentry); if (!err || err == -ENOENT) |
