Re: [PATCH] sysfs: Reference sysfs_dirent from sysfs inodes.

From: Andrew Morton
Date: Tue Jan 27 2009 - 18:45:21 EST


On Fri, 23 Jan 2009 15:33:48 +0900
Tejun Heo <tj@xxxxxxxxxx> wrote:

> Eric W. Biederman wrote:
> > The sysfs_dirent serves as both an inode and a directory entry
> > for sysfs. To prevent the sysfs inode numbers from being freed
> > prematurely hold a reference to sysfs_dirent from the sysfs inode.
> >
> > Signed-off-by: Eric W. Biederman <ebiederm@xxxxxxxxxxxxxxxxxx>
>
> Thanks for working on this. Can you please add a comment explaining
> it on top of sysfs_delete_inode()?

Like this?

--- a/fs/sysfs/inode.c~sysfs-reference-sysfs_dirent-from-sysfs-inodes-fix
+++ a/fs/sysfs/inode.c
@@ -215,6 +215,13 @@ struct inode * sysfs_get_inode(struct sy
return inode;
}

+/*
+ * The sysfs_dirent serves as both an inode and a directory entry for sysfs.
+ * To prevent the sysfs inode numbers from being freed prematurely we take a
+ * reference to sysfs_dirent from the sysfs inode. A
+ * super_operations.delete_inode() implementation is needed to drop that
+ * reference upon inode destruction.
+ */
void sysfs_delete_inode(struct inode *inode)
{
struct sysfs_dirent *sd = inode->i_private;
_

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/