Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e080e436 authored by Tejun Heo's avatar Tejun Heo Committed by Greg Kroah-Hartman
Browse files

sysfs: fix sysfs root inode nlink accounting



While making sysfs indoes hashed, sysfs root inode was left out.  Now
that nlink accounting depends on the inode being on the hash, sysfs
root inode nlink isn't adjusted properly.

Put sysfs root inode on the inode hash by allocating it using
sysfs_get_inode() like other sysfs inodes.  While at it, massage
comments a bit.

Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Acked-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 2c19c49a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -43,19 +43,19 @@ static int sysfs_fill_super(struct super_block *sb, void *data, int silent)
	sb->s_time_gran = 1;
	sysfs_sb = sb;

	inode = new_inode(sysfs_sb);
	/* get root inode, initialize and unlock it */
	inode = sysfs_get_inode(&sysfs_root);
	if (!inode) {
		pr_debug("sysfs: could not get root inode\n");
		return -ENOMEM;
	}

	sysfs_init_inode(&sysfs_root, inode);

	inode->i_op = &sysfs_dir_inode_operations;
	inode->i_fop = &sysfs_dir_operations;
	/* directory inodes start off with i_nlink == 2 (for "." entry) */
	inc_nlink(inode);
	inc_nlink(inode); /* directory, account for "." */
	unlock_new_inode(inode);

	/* instantiate and link root dentry */
	root = d_alloc_root(inode);
	if (!root) {
		pr_debug("%s: could not get root dentry!\n",__FUNCTION__);