lkml.org 
[lkml]   [2010]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectDriver-Core: devtmpfs - reset inode permissions before unlinking
    From
    Date
    From: Kay Sievers <kay.sievers@vrfy.org>
    Subject: Driver-Core: devtmpfs - reset inode permissions before unlinking

    Before unlinking the inode, reset the current permissions of possible
    references like hardlinks, so granted permissions can not be retained
    across the device lifetime by creating hardlinks, in the unusual case
    that there is a user-writable directory on the same filesystem.

    Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
    ---
    drivers/base/devtmpfs.c | 13 +++++++++++++
    1 file changed, 13 insertions(+)

    --- a/drivers/base/devtmpfs.c
    +++ b/drivers/base/devtmpfs.c
    @@ -301,6 +301,19 @@ int devtmpfs_delete_node(struct device *
    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)



    \
     
     \ /
      Last update: 2010-01-13 14:19    [W:4.533 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site