linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: lizf@kernel.org
To: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>,
	Ben Hutchings <ben@decadent.org.uk>
Subject: [PATCH 3.4 135/176] move d_rcu from overlapping d_child to overlapping d_alias
Date: Thu,  9 Apr 2015 16:46:23 +0800	[thread overview]
Message-ID: <1428569224-23820-135-git-send-email-lizf@kernel.org> (raw)
In-Reply-To: <1428569028-23762-1-git-send-email-lizf@kernel.org>

From: Al Viro <viro@zeniv.linux.org.uk>

3.4.107-rc1 review patch.  If anyone has any objections, please let me know.

------------------


commit 946e51f2bf37f1656916eb75bd0742ba33983c28 upstream.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
[bwh: Backported to 3.2:
 - Apply name changes in all the different places we use d_alias and d_child
 - Move the WARN_ON() in __d_free() to d_free() as we don't have dentry_free()]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
[lizf: Backported to 3.4:
 - adjust context
 - need one more name change in debugfs]
---
 arch/powerpc/platforms/cell/spufs/inode.c |  4 +-
 drivers/usb/core/inode.c                  |  6 +--
 fs/9p/vfs_inode_dotl.c                    |  2 +-
 fs/affs/amigaffs.c                        |  2 +-
 fs/autofs4/expire.c                       | 10 ++--
 fs/autofs4/root.c                         |  2 +-
 fs/ceph/dir.c                             |  8 ++--
 fs/ceph/inode.c                           |  6 +--
 fs/cifs/inode.c                           |  2 +-
 fs/coda/cache.c                           |  2 +-
 fs/dcache.c                               | 80 +++++++++++++++----------------
 fs/debugfs/inode.c                        |  6 +--
 fs/exportfs/expfs.c                       |  2 +-
 fs/ext4/fsync.c                           |  2 +-
 fs/libfs.c                                | 12 ++---
 fs/ncpfs/dir.c                            |  2 +-
 fs/ncpfs/ncplib_kernel.h                  |  4 +-
 fs/nfs/getroot.c                          |  2 +-
 fs/notify/fsnotify.c                      |  4 +-
 fs/ocfs2/dcache.c                         |  2 +-
 include/linux/dcache.h                    |  8 ++--
 kernel/cgroup.c                           |  4 +-
 security/selinux/selinuxfs.c              |  6 +--
 23 files changed, 89 insertions(+), 89 deletions(-)

diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index ad697f8..7c85576 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -164,7 +164,7 @@ static void spufs_prune_dir(struct dentry *dir)
 	struct dentry *dentry, *tmp;
 
 	mutex_lock(&dir->d_inode->i_mutex);
-	list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) {
+	list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) {
 		spin_lock(&dentry->d_lock);
 		if (!(d_unhashed(dentry)) && dentry->d_inode) {
 			dget_dlock(dentry);
@@ -222,7 +222,7 @@ out:
 	 * - free child's inode if possible
 	 * - free child
 	 */
-	list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) {
+	list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) {
 		dput(dentry);
 	}
 
diff --git a/drivers/usb/core/inode.c b/drivers/usb/core/inode.c
index d2b9af5..b283a65 100644
--- a/drivers/usb/core/inode.c
+++ b/drivers/usb/core/inode.c
@@ -211,7 +211,7 @@ static void update_bus(struct dentry *bus)
 
 	mutex_lock(&bus->d_inode->i_mutex);
 
-	list_for_each_entry(dev, &bus->d_subdirs, d_u.d_child)
+	list_for_each_entry(dev, &bus->d_subdirs, d_child)
 		if (dev->d_inode)
 			update_dev(dev);
 
@@ -228,7 +228,7 @@ static void update_sb(struct super_block *sb)
 
 	mutex_lock_nested(&root->d_inode->i_mutex, I_MUTEX_PARENT);
 
-	list_for_each_entry(bus, &root->d_subdirs, d_u.d_child) {
+	list_for_each_entry(bus, &root->d_subdirs, d_child) {
 		if (bus->d_inode) {
 			switch (S_IFMT & bus->d_inode->i_mode) {
 			case S_IFDIR:
@@ -342,7 +342,7 @@ static int usbfs_empty (struct dentry *dentry)
 
 	spin_lock(&dentry->d_lock);
 	list_for_each(list, &dentry->d_subdirs) {
-		struct dentry *de = list_entry(list, struct dentry, d_u.d_child);
+		struct dentry *de = list_entry(list, struct dentry, d_child);
 
 		spin_lock_nested(&de->d_lock, DENTRY_D_LOCK_NESTED);
 		if (usbfs_positive(de)) {
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
index a1e6c99..a86a78d 100644
--- a/fs/9p/vfs_inode_dotl.c
+++ b/fs/9p/vfs_inode_dotl.c
@@ -81,7 +81,7 @@ static struct dentry *v9fs_dentry_from_dir_inode(struct inode *inode)
 	spin_lock(&inode->i_lock);
 	/* Directory should have only one entry. */
 	BUG_ON(S_ISDIR(inode->i_mode) && !list_is_singular(&inode->i_dentry));
-	dentry = list_entry(inode->i_dentry.next, struct dentry, d_alias);
+	dentry = list_entry(inode->i_dentry.next, struct dentry, d_u.d_alias);
 	spin_unlock(&inode->i_lock);
 	return dentry;
 }
diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
index 52a6407..43a8f37 100644
--- a/fs/affs/amigaffs.c
+++ b/fs/affs/amigaffs.c
@@ -132,7 +132,7 @@ affs_fix_dcache(struct dentry *dentry, u32 entry_ino)
 	head = &inode->i_dentry;
 	next = head->next;
 	while (next != head) {
-		dentry = list_entry(next, struct dentry, d_alias);
+		dentry = list_entry(next, struct dentry, d_u.d_alias);
 		if (entry_ino == (u32)(long)dentry->d_fsdata) {
 			dentry->d_fsdata = data;
 			break;
diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c
index b1cdb0a..54effed 100644
--- a/fs/autofs4/expire.c
+++ b/fs/autofs4/expire.c
@@ -100,7 +100,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev,
 	p = prev;
 	spin_lock(&p->d_lock);
 again:
-	next = p->d_u.d_child.next;
+	next = p->d_child.next;
 start:
 	if (next == &root->d_subdirs) {
 		spin_unlock(&p->d_lock);
@@ -109,7 +109,7 @@ start:
 		return NULL;
 	}
 
-	q = list_entry(next, struct dentry, d_u.d_child);
+	q = list_entry(next, struct dentry, d_child);
 
 	spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED);
 	/* Negative dentry - try next */
@@ -166,13 +166,13 @@ again:
 				goto relock;
 			}
 			spin_unlock(&p->d_lock);
-			next = p->d_u.d_child.next;
+			next = p->d_child.next;
 			p = parent;
 			if (next != &parent->d_subdirs)
 				break;
 		}
 	}
-	ret = list_entry(next, struct dentry, d_u.d_child);
+	ret = list_entry(next, struct dentry, d_child);
 
 	spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED);
 	/* Negative dentry - try next */
@@ -457,7 +457,7 @@ found:
 	spin_lock(&sbi->lookup_lock);
 	spin_lock(&expired->d_parent->d_lock);
 	spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED);
-	list_move(&expired->d_parent->d_subdirs, &expired->d_u.d_child);
+	list_move(&expired->d_parent->d_subdirs, &expired->d_child);
 	spin_unlock(&expired->d_lock);
 	spin_unlock(&expired->d_parent->d_lock);
 	spin_unlock(&sbi->lookup_lock);
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index 8c4292f..4117604 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -651,7 +651,7 @@ static void autofs_clear_leaf_automount_flags(struct dentry *dentry)
 	/* only consider parents below dentrys in the root */
 	if (IS_ROOT(parent->d_parent))
 		return;
-	d_child = &dentry->d_u.d_child;
+	d_child = &dentry->d_child;
 	/* Set parent managed if it's becoming empty */
 	if (d_child->next == &parent->d_subdirs &&
 	    d_child->prev == &parent->d_subdirs)
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 3e8094b..455b643 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -104,7 +104,7 @@ static unsigned fpos_off(loff_t p)
 /*
  * When possible, we try to satisfy a readdir by peeking at the
  * dcache.  We make this work by carefully ordering dentries on
- * d_u.d_child when we initially get results back from the MDS, and
+ * d_child when we initially get results back from the MDS, and
  * falling back to a "normal" sync readdir if any dentries in the dir
  * are dropped.
  *
@@ -140,11 +140,11 @@ static int __dcache_readdir(struct file *filp,
 		p = parent->d_subdirs.prev;
 		dout(" initial p %p/%p\n", p->prev, p->next);
 	} else {
-		p = last->d_u.d_child.prev;
+		p = last->d_child.prev;
 	}
 
 more:
-	dentry = list_entry(p, struct dentry, d_u.d_child);
+	dentry = list_entry(p, struct dentry, d_child);
 	di = ceph_dentry(dentry);
 	while (1) {
 		dout(" p %p/%p %s d_subdirs %p/%p\n", p->prev, p->next,
@@ -166,7 +166,7 @@ more:
 		     !dentry->d_inode ? " null" : "");
 		spin_unlock(&dentry->d_lock);
 		p = p->prev;
-		dentry = list_entry(p, struct dentry, d_u.d_child);
+		dentry = list_entry(p, struct dentry, d_child);
 		di = ceph_dentry(dentry);
 	}
 
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index 81613bc..1ea7720 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -869,9 +869,9 @@ static void ceph_set_dentry_offset(struct dentry *dn)
 
 	spin_lock(&dir->d_lock);
 	spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED);
-	list_move(&dn->d_u.d_child, &dir->d_subdirs);
+	list_move(&dn->d_child, &dir->d_subdirs);
 	dout("set_dentry_offset %p %lld (%p %p)\n", dn, di->offset,
-	     dn->d_u.d_child.prev, dn->d_u.d_child.next);
+	     dn->d_child.prev, dn->d_child.next);
 	spin_unlock(&dn->d_lock);
 	spin_unlock(&dir->d_lock);
 }
@@ -1262,7 +1262,7 @@ retry_lookup:
 			/* reorder parent's d_subdirs */
 			spin_lock(&parent->d_lock);
 			spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED);
-			list_move(&dn->d_u.d_child, &parent->d_subdirs);
+			list_move(&dn->d_child, &parent->d_subdirs);
 			spin_unlock(&dn->d_lock);
 			spin_unlock(&parent->d_lock);
 		}
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 8d6ac6b..2c2acc0 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -833,7 +833,7 @@ inode_has_hashed_dentries(struct inode *inode)
 	struct dentry *dentry;
 
 	spin_lock(&inode->i_lock);
-	list_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	list_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
 		if (!d_unhashed(dentry) || IS_ROOT(dentry)) {
 			spin_unlock(&inode->i_lock);
 			return true;
diff --git a/fs/coda/cache.c b/fs/coda/cache.c
index 6901578..4b2e5cb 100644
--- a/fs/coda/cache.c
+++ b/fs/coda/cache.c
@@ -95,7 +95,7 @@ static void coda_flag_children(struct dentry *parent, int flag)
 	spin_lock(&parent->d_lock);
 	list_for_each(child, &parent->d_subdirs)
 	{
-		de = list_entry(child, struct dentry, d_u.d_child);
+		de = list_entry(child, struct dentry, d_child);
 		/* don't know what to do with negative dentries */
 		if ( ! de->d_inode ) 
 			continue;
diff --git a/fs/dcache.c b/fs/dcache.c
index 09e2eda..2ccc646 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -43,7 +43,7 @@
 /*
  * Usage:
  * dcache->d_inode->i_lock protects:
- *   - i_dentry, d_alias, d_inode of aliases
+ *   - i_dentry, d_u.d_alias, d_inode of aliases
  * dcache_hash_bucket lock protects:
  *   - the dcache hash table
  * s_anon bl list spinlock protects:
@@ -58,7 +58,7 @@
  *   - d_unhashed()
  *   - d_parent and d_subdirs
  *   - childrens' d_child and d_parent
- *   - d_alias, d_inode
+ *   - d_u.d_alias, d_inode
  *
  * Ordering:
  * dentry->d_inode->i_lock
@@ -202,7 +202,6 @@ static void __d_free(struct rcu_head *head)
 {
 	struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);
 
-	WARN_ON(!list_empty(&dentry->d_alias));
 	if (dname_external(dentry))
 		kfree(dentry->d_name.name);
 	kmem_cache_free(dentry_cache, dentry); 
@@ -213,6 +212,7 @@ static void __d_free(struct rcu_head *head)
  */
 static void d_free(struct dentry *dentry)
 {
+	WARN_ON(!list_empty(&dentry->d_u.d_alias));
 	BUG_ON(dentry->d_count);
 	this_cpu_dec(nr_dentry);
 	if (dentry->d_op && dentry->d_op->d_release)
@@ -251,7 +251,7 @@ static void dentry_iput(struct dentry * dentry)
 	struct inode *inode = dentry->d_inode;
 	if (inode) {
 		dentry->d_inode = NULL;
-		list_del_init(&dentry->d_alias);
+		list_del_init(&dentry->d_u.d_alias);
 		spin_unlock(&dentry->d_lock);
 		spin_unlock(&inode->i_lock);
 		if (!inode->i_nlink)
@@ -275,7 +275,7 @@ static void dentry_unlink_inode(struct dentry * dentry)
 {
 	struct inode *inode = dentry->d_inode;
 	dentry->d_inode = NULL;
-	list_del_init(&dentry->d_alias);
+	list_del_init(&dentry->d_u.d_alias);
 	dentry_rcuwalk_barrier(dentry);
 	spin_unlock(&dentry->d_lock);
 	spin_unlock(&inode->i_lock);
@@ -368,7 +368,7 @@ static struct dentry *d_kill(struct dentry *dentry, struct dentry *parent)
 	__releases(parent->d_lock)
 	__releases(dentry->d_inode->i_lock)
 {
-	list_del(&dentry->d_u.d_child);
+	list_del(&dentry->d_child);
 	/*
 	 * Inform try_to_ascend() that we are no longer attached to the
 	 * dentry tree
@@ -686,7 +686,7 @@ static struct dentry *__d_find_alias(struct inode *inode, int want_discon)
 
 again:
 	discon_alias = NULL;
-	list_for_each_entry(alias, &inode->i_dentry, d_alias) {
+	list_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
 		spin_lock(&alias->d_lock);
  		if (S_ISDIR(inode->i_mode) || !d_unhashed(alias)) {
 			if (IS_ROOT(alias) &&
@@ -739,7 +739,7 @@ void d_prune_aliases(struct inode *inode)
 	struct dentry *dentry;
 restart:
 	spin_lock(&inode->i_lock);
-	list_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	list_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
 		spin_lock(&dentry->d_lock);
 		if (!dentry->d_count) {
 			__dget_dlock(dentry);
@@ -919,7 +919,7 @@ static void shrink_dcache_for_umount_subtree(struct dentry *dentry)
 		/* descend to the first leaf in the current subtree */
 		while (!list_empty(&dentry->d_subdirs))
 			dentry = list_entry(dentry->d_subdirs.next,
-					    struct dentry, d_u.d_child);
+					    struct dentry, d_child);
 
 		/* consume the dentries from this leaf up through its parents
 		 * until we find one with children or run out altogether */
@@ -951,17 +951,17 @@ static void shrink_dcache_for_umount_subtree(struct dentry *dentry)
 
 			if (IS_ROOT(dentry)) {
 				parent = NULL;
-				list_del(&dentry->d_u.d_child);
+				list_del(&dentry->d_child);
 			} else {
 				parent = dentry->d_parent;
 				parent->d_count--;
-				list_del(&dentry->d_u.d_child);
+				list_del(&dentry->d_child);
 			}
 
 			inode = dentry->d_inode;
 			if (inode) {
 				dentry->d_inode = NULL;
-				list_del_init(&dentry->d_alias);
+				list_del_init(&dentry->d_u.d_alias);
 				if (dentry->d_op && dentry->d_op->d_iput)
 					dentry->d_op->d_iput(dentry, inode);
 				else
@@ -979,7 +979,7 @@ static void shrink_dcache_for_umount_subtree(struct dentry *dentry)
 		} while (list_empty(&dentry->d_subdirs));
 
 		dentry = list_entry(dentry->d_subdirs.next,
-				    struct dentry, d_u.d_child);
+				    struct dentry, d_child);
 	}
 }
 
@@ -1072,7 +1072,7 @@ repeat:
 resume:
 	while (next != &this_parent->d_subdirs) {
 		struct list_head *tmp = next;
-		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
+		struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
 		next = tmp->next;
 
 		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
@@ -1099,7 +1099,7 @@ resume:
 		this_parent = try_to_ascend(this_parent, locked, seq);
 		if (!this_parent)
 			goto rename_retry;
-		next = child->d_u.d_child.next;
+		next = child->d_child.next;
 		goto resume;
 	}
 	spin_unlock(&this_parent->d_lock);
@@ -1155,7 +1155,7 @@ repeat:
 resume:
 	while (next != &this_parent->d_subdirs) {
 		struct list_head *tmp = next;
-		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
+		struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
 		next = tmp->next;
 
 		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
@@ -1206,7 +1206,7 @@ resume:
 		this_parent = try_to_ascend(this_parent, locked, seq);
 		if (!this_parent)
 			goto rename_retry;
-		next = child->d_u.d_child.next;
+		next = child->d_child.next;
 		goto resume;
 	}
 out:
@@ -1292,8 +1292,8 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
 	INIT_HLIST_BL_NODE(&dentry->d_hash);
 	INIT_LIST_HEAD(&dentry->d_lru);
 	INIT_LIST_HEAD(&dentry->d_subdirs);
-	INIT_LIST_HEAD(&dentry->d_alias);
-	INIT_LIST_HEAD(&dentry->d_u.d_child);
+	INIT_LIST_HEAD(&dentry->d_u.d_alias);
+	INIT_LIST_HEAD(&dentry->d_child);
 	d_set_d_op(dentry, dentry->d_sb->s_d_op);
 
 	this_cpu_inc(nr_dentry);
@@ -1323,7 +1323,7 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name)
 	 */
 	__dget_dlock(parent);
 	dentry->d_parent = parent;
-	list_add(&dentry->d_u.d_child, &parent->d_subdirs);
+	list_add(&dentry->d_child, &parent->d_subdirs);
 	spin_unlock(&parent->d_lock);
 
 	return dentry;
@@ -1380,7 +1380,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
 	if (inode) {
 		if (unlikely(IS_AUTOMOUNT(inode)))
 			dentry->d_flags |= DCACHE_NEED_AUTOMOUNT;
-		list_add(&dentry->d_alias, &inode->i_dentry);
+		list_add(&dentry->d_u.d_alias, &inode->i_dentry);
 	}
 	dentry->d_inode = inode;
 	dentry_rcuwalk_barrier(dentry);
@@ -1405,7 +1405,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
  
 void d_instantiate(struct dentry *entry, struct inode * inode)
 {
-	BUG_ON(!list_empty(&entry->d_alias));
+	BUG_ON(!list_empty(&entry->d_u.d_alias));
 	if (inode)
 		spin_lock(&inode->i_lock);
 	__d_instantiate(entry, inode);
@@ -1444,7 +1444,7 @@ static struct dentry *__d_instantiate_unique(struct dentry *entry,
 		return NULL;
 	}
 
-	list_for_each_entry(alias, &inode->i_dentry, d_alias) {
+	list_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
 		struct qstr *qstr = &alias->d_name;
 
 		/*
@@ -1470,7 +1470,7 @@ struct dentry *d_instantiate_unique(struct dentry *entry, struct inode *inode)
 {
 	struct dentry *result;
 
-	BUG_ON(!list_empty(&entry->d_alias));
+	BUG_ON(!list_empty(&entry->d_u.d_alias));
 
 	if (inode)
 		spin_lock(&inode->i_lock);
@@ -1513,7 +1513,7 @@ static struct dentry * __d_find_any_alias(struct inode *inode)
 
 	if (list_empty(&inode->i_dentry))
 		return NULL;
-	alias = list_first_entry(&inode->i_dentry, struct dentry, d_alias);
+	alias = list_first_entry(&inode->i_dentry, struct dentry, d_u.d_alias);
 	__dget(alias);
 	return alias;
 }
@@ -1587,7 +1587,7 @@ struct dentry *d_obtain_alias(struct inode *inode)
 	spin_lock(&tmp->d_lock);
 	tmp->d_inode = inode;
 	tmp->d_flags |= DCACHE_DISCONNECTED;
-	list_add(&tmp->d_alias, &inode->i_dentry);
+	list_add(&tmp->d_u.d_alias, &inode->i_dentry);
 	hlist_bl_lock(&tmp->d_sb->s_anon);
 	hlist_bl_add_head(&tmp->d_hash, &tmp->d_sb->s_anon);
 	hlist_bl_unlock(&tmp->d_sb->s_anon);
@@ -1996,7 +1996,7 @@ int d_validate(struct dentry *dentry, struct dentry *dparent)
 	struct dentry *child;
 
 	spin_lock(&dparent->d_lock);
-	list_for_each_entry(child, &dparent->d_subdirs, d_u.d_child) {
+	list_for_each_entry(child, &dparent->d_subdirs, d_child) {
 		if (dentry == child) {
 			spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
 			__dget_dlock(dentry);
@@ -2243,8 +2243,8 @@ static void __d_move(struct dentry * dentry, struct dentry * target)
 	/* Unhash the target: dput() will then get rid of it */
 	__d_drop(target);
 
-	list_del(&dentry->d_u.d_child);
-	list_del(&target->d_u.d_child);
+	list_del(&dentry->d_child);
+	list_del(&target->d_child);
 
 	/* Switch the names.. */
 	switch_names(dentry, target);
@@ -2254,15 +2254,15 @@ static void __d_move(struct dentry * dentry, struct dentry * target)
 	if (IS_ROOT(dentry)) {
 		dentry->d_parent = target->d_parent;
 		target->d_parent = target;
-		INIT_LIST_HEAD(&target->d_u.d_child);
+		INIT_LIST_HEAD(&target->d_child);
 	} else {
 		swap(dentry->d_parent, target->d_parent);
 
 		/* And add them back to the (new) parent lists */
-		list_add(&target->d_u.d_child, &target->d_parent->d_subdirs);
+		list_add(&target->d_child, &target->d_parent->d_subdirs);
 	}
 
-	list_add(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs);
+	list_add(&dentry->d_child, &dentry->d_parent->d_subdirs);
 
 	write_seqcount_end(&target->d_seq);
 	write_seqcount_end(&dentry->d_seq);
@@ -2369,18 +2369,18 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon)
 	swap(dentry->d_name.hash, anon->d_name.hash);
 
 	dentry->d_parent = (aparent == anon) ? dentry : aparent;
-	list_del(&dentry->d_u.d_child);
+	list_del(&dentry->d_child);
 	if (!IS_ROOT(dentry))
-		list_add(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs);
+		list_add(&dentry->d_child, &dentry->d_parent->d_subdirs);
 	else
-		INIT_LIST_HEAD(&dentry->d_u.d_child);
+		INIT_LIST_HEAD(&dentry->d_child);
 
 	anon->d_parent = (dparent == dentry) ? anon : dparent;
-	list_del(&anon->d_u.d_child);
+	list_del(&anon->d_child);
 	if (!IS_ROOT(anon))
-		list_add(&anon->d_u.d_child, &anon->d_parent->d_subdirs);
+		list_add(&anon->d_child, &anon->d_parent->d_subdirs);
 	else
-		INIT_LIST_HEAD(&anon->d_u.d_child);
+		INIT_LIST_HEAD(&anon->d_child);
 
 	write_seqcount_end(&dentry->d_seq);
 	write_seqcount_end(&anon->d_seq);
@@ -2934,7 +2934,7 @@ repeat:
 resume:
 	while (next != &this_parent->d_subdirs) {
 		struct list_head *tmp = next;
-		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
+		struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
 		next = tmp->next;
 
 		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
@@ -2964,7 +2964,7 @@ resume:
 		this_parent = try_to_ascend(this_parent, locked, seq);
 		if (!this_parent)
 			goto rename_retry;
-		next = child->d_u.d_child.next;
+		next = child->d_child.next;
 		goto resume;
 	}
 	spin_unlock(&this_parent->d_lock);
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index 9dc6e76..47d64e9 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -539,7 +539,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
 	parent = dentry;
  down:
 	mutex_lock(&parent->d_inode->i_mutex);
-	list_for_each_entry_safe(child, next, &parent->d_subdirs, d_u.d_child) {
+	list_for_each_entry_safe(child, next, &parent->d_subdirs, d_child) {
 		if (!debugfs_positive(child))
 			continue;
 
@@ -560,8 +560,8 @@ void debugfs_remove_recursive(struct dentry *dentry)
 	mutex_lock(&parent->d_inode->i_mutex);
 
 	if (child != dentry) {
-		next = list_entry(child->d_u.d_child.next, struct dentry,
-					d_u.d_child);
+		next = list_entry(child->d_child.next, struct dentry,
+					d_child);
 		goto up;
 	}
 
diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c
index b05acb7..3bbf5e7 100644
--- a/fs/exportfs/expfs.c
+++ b/fs/exportfs/expfs.c
@@ -50,7 +50,7 @@ find_acceptable_alias(struct dentry *result,
 
 	inode = result->d_inode;
 	spin_lock(&inode->i_lock);
-	list_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	list_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
 		dget(dentry);
 		spin_unlock(&inode->i_lock);
 		if (toput)
diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
index a8d03a4..019c29c 100644
--- a/fs/ext4/fsync.c
+++ b/fs/ext4/fsync.c
@@ -139,7 +139,7 @@ static int ext4_sync_parent(struct inode *inode)
 		spin_lock(&inode->i_lock);
 		if (!list_empty(&inode->i_dentry)) {
 			dentry = list_first_entry(&inode->i_dentry,
-						  struct dentry, d_alias);
+						  struct dentry, d_u.d_alias);
 			dget(dentry);
 		}
 		spin_unlock(&inode->i_lock);
diff --git a/fs/libfs.c b/fs/libfs.c
index 18d08f5..65c126f 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -104,18 +104,18 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int origin)
 
 			spin_lock(&dentry->d_lock);
 			/* d_lock not required for cursor */
-			list_del(&cursor->d_u.d_child);
+			list_del(&cursor->d_child);
 			p = dentry->d_subdirs.next;
 			while (n && p != &dentry->d_subdirs) {
 				struct dentry *next;
-				next = list_entry(p, struct dentry, d_u.d_child);
+				next = list_entry(p, struct dentry, d_child);
 				spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
 				if (simple_positive(next))
 					n--;
 				spin_unlock(&next->d_lock);
 				p = p->next;
 			}
-			list_add_tail(&cursor->d_u.d_child, p);
+			list_add_tail(&cursor->d_child, p);
 			spin_unlock(&dentry->d_lock);
 		}
 	}
@@ -139,7 +139,7 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir)
 {
 	struct dentry *dentry = filp->f_path.dentry;
 	struct dentry *cursor = filp->private_data;
-	struct list_head *p, *q = &cursor->d_u.d_child;
+	struct list_head *p, *q = &cursor->d_child;
 	ino_t ino;
 	int i = filp->f_pos;
 
@@ -165,7 +165,7 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir)
 
 			for (p=q->next; p != &dentry->d_subdirs; p=p->next) {
 				struct dentry *next;
-				next = list_entry(p, struct dentry, d_u.d_child);
+				next = list_entry(p, struct dentry, d_child);
 				spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
 				if (!simple_positive(next)) {
 					spin_unlock(&next->d_lock);
@@ -289,7 +289,7 @@ int simple_empty(struct dentry *dentry)
 	int ret = 0;
 
 	spin_lock(&dentry->d_lock);
-	list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child) {
+	list_for_each_entry(child, &dentry->d_subdirs, d_child) {
 		spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED);
 		if (simple_positive(child)) {
 			spin_unlock(&child->d_lock);
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c
index 9560fd7..ba792a0 100644
--- a/fs/ncpfs/dir.c
+++ b/fs/ncpfs/dir.c
@@ -391,7 +391,7 @@ ncp_dget_fpos(struct dentry *dentry, struct dentry *parent, unsigned long fpos)
 	spin_lock(&parent->d_lock);
 	next = parent->d_subdirs.next;
 	while (next != &parent->d_subdirs) {
-		dent = list_entry(next, struct dentry, d_u.d_child);
+		dent = list_entry(next, struct dentry, d_child);
 		if ((unsigned long)dent->d_fsdata == fpos) {
 			if (dent->d_inode)
 				dget(dent);
diff --git a/fs/ncpfs/ncplib_kernel.h b/fs/ncpfs/ncplib_kernel.h
index 32c0658..6d5e7c5 100644
--- a/fs/ncpfs/ncplib_kernel.h
+++ b/fs/ncpfs/ncplib_kernel.h
@@ -194,7 +194,7 @@ ncp_renew_dentries(struct dentry *parent)
 	spin_lock(&parent->d_lock);
 	next = parent->d_subdirs.next;
 	while (next != &parent->d_subdirs) {
-		dentry = list_entry(next, struct dentry, d_u.d_child);
+		dentry = list_entry(next, struct dentry, d_child);
 
 		if (dentry->d_fsdata == NULL)
 			ncp_age_dentry(server, dentry);
@@ -216,7 +216,7 @@ ncp_invalidate_dircache_entries(struct dentry *parent)
 	spin_lock(&parent->d_lock);
 	next = parent->d_subdirs.next;
 	while (next != &parent->d_subdirs) {
-		dentry = list_entry(next, struct dentry, d_u.d_child);
+		dentry = list_entry(next, struct dentry, d_child);
 		dentry->d_fsdata = NULL;
 		ncp_age_dentry(server, dentry);
 		next = next->next;
diff --git a/fs/nfs/getroot.c b/fs/nfs/getroot.c
index 4ca6f5c..b242f69 100644
--- a/fs/nfs/getroot.c
+++ b/fs/nfs/getroot.c
@@ -62,7 +62,7 @@ static int nfs_superblock_set_dummy_root(struct super_block *sb, struct inode *i
 		 */
 		spin_lock(&sb->s_root->d_inode->i_lock);
 		spin_lock(&sb->s_root->d_lock);
-		list_del_init(&sb->s_root->d_alias);
+		list_del_init(&sb->s_root->d_u.d_alias);
 		spin_unlock(&sb->s_root->d_lock);
 		spin_unlock(&sb->s_root->d_inode->i_lock);
 	}
diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c
index ccb14d3..e5b6db6 100644
--- a/fs/notify/fsnotify.c
+++ b/fs/notify/fsnotify.c
@@ -63,14 +63,14 @@ void __fsnotify_update_child_dentry_flags(struct inode *inode)
 	spin_lock(&inode->i_lock);
 	/* run all of the dentries associated with this inode.  Since this is a
 	 * directory, there damn well better only be one item on this list */
-	list_for_each_entry(alias, &inode->i_dentry, d_alias) {
+	list_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
 		struct dentry *child;
 
 		/* run all of the children of the original inode and fix their
 		 * d_flags to indicate parental interest (their parent is the
 		 * original inode) */
 		spin_lock(&alias->d_lock);
-		list_for_each_entry(child, &alias->d_subdirs, d_u.d_child) {
+		list_for_each_entry(child, &alias->d_subdirs, d_child) {
 			if (!child->d_inode)
 				continue;
 
diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c
index e5ba348..26977cc 100644
--- a/fs/ocfs2/dcache.c
+++ b/fs/ocfs2/dcache.c
@@ -175,7 +175,7 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode,
 
 	spin_lock(&inode->i_lock);
 	list_for_each(p, &inode->i_dentry) {
-		dentry = list_entry(p, struct dentry, d_alias);
+		dentry = list_entry(p, struct dentry, d_u.d_alias);
 
 		spin_lock(&dentry->d_lock);
 		if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) {
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 1332df0..31e55bf 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -105,15 +105,15 @@ struct dentry {
 	void *d_fsdata;			/* fs-specific data */
 
 	struct list_head d_lru;		/* LRU list */
+	struct list_head d_child;	/* child of parent list */
+	struct list_head d_subdirs;	/* our children */
 	/*
-	 * d_child and d_rcu can share memory
+	 * d_alias and d_rcu can share memory
 	 */
 	union {
-		struct list_head d_child;	/* child of parent list */
+		struct list_head d_alias;	/* inode alias list */
 	 	struct rcu_head d_rcu;
 	} d_u;
-	struct list_head d_subdirs;	/* our children */
-	struct list_head d_alias;	/* inode alias list */
 };
 
 /*
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index c776f89..34eda95 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -898,7 +898,7 @@ static void cgroup_clear_directory(struct dentry *dentry)
 	spin_lock(&dentry->d_lock);
 	node = dentry->d_subdirs.next;
 	while (node != &dentry->d_subdirs) {
-		struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
+		struct dentry *d = list_entry(node, struct dentry, d_child);
 
 		spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
 		list_del_init(node);
@@ -932,7 +932,7 @@ static void cgroup_d_remove_dir(struct dentry *dentry)
 	parent = dentry->d_parent;
 	spin_lock(&parent->d_lock);
 	spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
-	list_del_init(&dentry->d_u.d_child);
+	list_del_init(&dentry->d_child);
 	spin_unlock(&dentry->d_lock);
 	spin_unlock(&parent->d_lock);
 	remove_dir(dentry);
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 3068d16..0a9891e 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -1191,7 +1191,7 @@ static void sel_remove_entries(struct dentry *de)
 	spin_lock(&de->d_lock);
 	node = de->d_subdirs.next;
 	while (node != &de->d_subdirs) {
-		struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
+		struct dentry *d = list_entry(node, struct dentry, d_child);
 
 		spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
 		list_del_init(node);
@@ -1694,12 +1694,12 @@ static void sel_remove_classes(void)
 
 	list_for_each(class_node, &class_dir->d_subdirs) {
 		struct dentry *class_subdir = list_entry(class_node,
-					struct dentry, d_u.d_child);
+					struct dentry, d_child);
 		struct list_head *class_subdir_node;
 
 		list_for_each(class_subdir_node, &class_subdir->d_subdirs) {
 			struct dentry *d = list_entry(class_subdir_node,
-						struct dentry, d_u.d_child);
+						struct dentry, d_child);
 
 			if (d->d_inode)
 				if (d->d_inode->i_mode & S_IFDIR)
-- 
1.9.1


  parent reply	other threads:[~2015-04-09  8:56 UTC|newest]

Thread overview: 192+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-09  8:43 [PATCH 3.4 000/176] 3.4.107-rc1 review lizf
2015-04-09  8:44 ` [PATCH 3.4 001/176] spi: dw: Fix dynamic speed change lizf
2015-04-09  8:44 ` [PATCH 3.4 002/176] USB: serial: cp210x: add IDs for CEL MeshConnect USB Stick lizf
2015-04-09  8:44 ` [PATCH 3.4 003/176] iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask lizf
2015-04-09  8:44 ` [PATCH 3.4 004/176] usb: serial: ftdi_sio: add PIDs for Matrix Orbital products lizf
2015-04-09  8:44 ` [PATCH 3.4 005/176] USB: keyspan: fix tty line-status reporting lizf
2015-04-09  8:44 ` [PATCH 3.4 006/176] USB: keyspan: fix overrun-error reporting lizf
2015-04-09  8:44 ` [PATCH 3.4 007/176] USB: ssu100: " lizf
2015-04-09  8:44 ` [PATCH 3.4 008/176] SUNRPC: Fix locking around callback channel reply receive lizf
2015-04-09  8:44 ` [PATCH 3.4 009/176] nfsd: Fix slot wake up race in the nfsv4.1 callback code lizf
2015-04-09  8:44 ` [PATCH 3.4 010/176] bnx2fc: do not add shared skbs to the fcoe_rx_list lizf
2015-04-09  8:44 ` [PATCH 3.4 011/176] ARM: 8216/1: xscale: correct auxiliary register in suspend/resume lizf
2015-04-09  8:44 ` [PATCH 3.4 012/176] USB: xhci: don't start a halted endpoint before its new dequeue is set lizf
2015-04-09  8:44 ` [PATCH 3.4 013/176] USB: xhci: Reset a halted endpoint immediately when we encounter a stall lizf
2015-04-09  8:44 ` [PATCH 3.4 014/176] usb: xhci: rework root port wake bits if controller isn't allowed to wakeup lizf
2015-04-09  8:44 ` [PATCH 3.4 015/176] ALSA: hda - Limit 40bit DMA for AMD HDMI controllers lizf
2015-04-09  8:44 ` [PATCH 3.4 016/176] MIPS: Loongson: Make platform serial setup always built-in lizf
2015-04-09  8:44 ` [PATCH 3.4 017/176] usb-quirks: Add reset-resume quirk for MS Wireless Laser Mouse 6000 lizf
2015-04-09  8:44 ` [PATCH 3.4 018/176] Input: xpad - use proper endpoint type lizf
2015-04-09  8:44 ` [PATCH 3.4 019/176] powerpc/pseries: Fix endiannes issue in RTAS call from xmon lizf
2015-04-09  8:44 ` [PATCH 3.4 020/176] drm/i915: Unlock panel even when LVDS is disabled lizf
2015-04-09  8:44 ` [PATCH 3.4 021/176] AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller lizf
2015-04-09  8:44 ` [PATCH 3.4 022/176] sata_fsl: fix error handling of irq_of_parse_and_map lizf
2015-04-09  8:44 ` [PATCH 3.4 023/176] drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6 lizf
2015-04-09  8:44 ` [PATCH 3.4 024/176] mm: fix swapoff hang after page migration and fork lizf
2015-04-09  8:44 ` [PATCH 3.4 025/176] ahci: disable NCQ on Samsung pci-e SSDs on macbooks lizf
2015-04-09  8:44 ` [PATCH 3.4 026/176] ahci: disable MSI instead of " lizf
2015-04-09  8:44 ` [PATCH 3.4 027/176] ahci: disable MSI on SAMSUNG 0xa800 SSD lizf
2015-04-09  8:44 ` [PATCH 3.4 028/176] i2c: davinci: generate STP always when NACK is received lizf
2015-04-09  8:44 ` [PATCH 3.4 029/176] eCryptfs: Force RO mount when encrypted view is enabled lizf
2015-04-09  8:44 ` [PATCH 3.4 030/176] writeback: Move I_DIRTY_PAGES handling lizf
2015-04-09  8:44 ` [PATCH 3.4 031/176] writeback: fix a subtle race condition in I_DIRTY clearing lizf
2015-04-09  8:44 ` [PATCH 3.4 032/176] usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable() lizf
2015-04-09  8:44 ` [PATCH 3.4 033/176] KVM: s390: flush CPU on load control lizf
2015-04-09 10:17   ` Christian Borntraeger
2015-04-10  1:45     ` Zefan Li
2015-05-04 23:40     ` Ben Hutchings
2015-04-09  8:44 ` [PATCH 3.4 034/176] UBI: Fix invalid vfree() lizf
2015-04-09  8:44 ` [PATCH 3.4 035/176] driver core: Fix unbalanced device reference in drivers_probe lizf
2015-04-09  8:44 ` [PATCH 3.4 036/176] drbd: merge_bvec_fn: properly remap bvm->bi_bdev lizf
2015-04-09  8:44 ` [PATCH 3.4 037/176] PCI: Restore detection of read-only BARs lizf
2015-04-09 13:03   ` Myron Stowe
2015-04-10  1:44     ` Zefan Li
2015-04-09  8:44 ` [PATCH 3.4 038/176] scsi: correct return values for .eh_abort_handler implementations lizf
2015-04-09  8:44 ` [PATCH 3.4 039/176] genhd: check for int overflow in disk_expand_part_tbl() lizf
2015-04-09  8:44 ` [PATCH 3.4 040/176] ASoC: sigmadsp: Refuse to load firmware files with a non-supported version lizf
2015-04-09  8:44 ` [PATCH 3.4 041/176] megaraid_sas: corrected return of wait_event from abort frame path lizf
2015-04-09  8:44 ` [PATCH 3.4 042/176] cdc-acm: memory leak in error case lizf
2015-04-09  8:44 ` [PATCH 3.4 043/176] USB: cdc-acm: check for valid interfaces lizf
2015-04-09  8:44 ` [PATCH 3.4 044/176] mfd: tc6393xb: Fail ohci suspend if full state restore is required lizf
2015-04-09  8:44 ` [PATCH 3.4 045/176] serial: samsung: wait for transfer completion before clock disable lizf
2015-04-09  8:44 ` [PATCH 3.4 046/176] eCryptfs: Remove buggy and unnecessary write in file name decode routine lizf
2015-04-09  8:44 ` [PATCH 3.4 047/176] ath9k_hw: fix hardware queue allocation lizf
2015-04-09  8:44 ` [PATCH 3.4 048/176] ath9k: fix BE/BK queue order lizf
2015-04-09  8:44 ` [PATCH 3.4 049/176] ath5k: fix hardware queue index assignment lizf
2015-04-09  8:44 ` [PATCH 3.4 050/176] iommu/vt-d: Fix an off-by-one bug in __domain_mapping() lizf
2015-04-09  8:44 ` [PATCH 3.4 051/176] drm/vmwgfx: Don't use memory accounting for kernel-side fence objects lizf
2015-04-09  8:45 ` [PATCH 3.4 052/176] drm/vmwgfx: Fix fence event code lizf
2015-04-09  8:45 ` [PATCH 3.4 053/176] hp_accel: Add support for HP ZBook 15 lizf
2015-04-09  8:45 ` [PATCH 3.4 054/176] drm/radeon: check the right ring in radeon_evict_flags() lizf
2015-04-09  8:45 ` [PATCH 3.4 055/176] can: peak_usb: fix memset() usage lizf
2015-04-09  8:45 ` [PATCH 3.4 056/176] can: peak_usb: fix cleanup sequence order in case of error during init lizf
2015-04-09  8:45 ` [PATCH 3.4 057/176] ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery lizf
2015-04-09  8:45 ` [PATCH 3.4 058/176] KEYS: Fix stale key registration at error path lizf
2015-04-09  8:45 ` [PATCH 3.4 059/176] Btrfs: fix fs corruption on transaction abort if device supports discard lizf
2015-04-09  8:45 ` [PATCH 3.4 060/176] ncpfs: return proper error from NCP_IOC_SETROOT ioctl lizf
2015-04-09  8:45 ` [PATCH 3.4 061/176] x86_64, switch_to(): Load TLS descriptors before switching DS and ES lizf
2015-04-09  8:45 ` [PATCH 3.4 062/176] genirq: Prevent proc race against freeing of irq descriptors lizf
2015-04-09  8:45 ` [PATCH 3.4 063/176] x86/tls: Disallow unusual TLS segments lizf
2015-04-09  8:45 ` [PATCH 3.4 064/176] x86/tls: Don't validate lm in set_thread_area() after all lizf
2015-04-09  8:45 ` [PATCH 3.4 065/176] storvsc: ring buffer failures may result in I/O freeze lizf
2015-04-09  8:45 ` [PATCH 3.4 066/176] isofs: Fix infinite looping over CE entries lizf
2015-04-09  8:45 ` [PATCH 3.4 067/176] iscsi-target: Fail connection on short sendmsg writes lizf
2015-04-09  8:45 ` [PATCH 3.4 068/176] ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC lizf
2015-04-09  8:45 ` [PATCH 3.4 069/176] ocfs2: fix journal commit deadlock lizf
2015-04-09  8:45 ` [PATCH 3.4 070/176] isofs: Fix unchecked printing of ER records lizf
2015-04-09  8:45 ` [PATCH 3.4 071/176] udf: Verify i_size when loading inode lizf
2015-04-09  8:45 ` [PATCH 3.4 072/176] udf: Verify symlink size before loading it lizf
2015-04-09  8:45 ` [PATCH 3.4 073/176] udf: Check path length when reading symlink lizf
2015-04-09  8:45 ` [PATCH 3.4 074/176] x86_64, vdso: Fix the vdso address randomization algorithm lizf
2015-04-09  8:45 ` [PATCH 3.4 075/176] udf: Check component length before reading it lizf
2015-04-09  8:45 ` [PATCH 3.4 076/176] crypto: af_alg - fix backlog handling lizf
2015-04-09  8:45 ` [PATCH 3.4 077/176] net: Fix stacked vlan offload features computation lizf
2015-04-10  0:49   ` Toshiaki Makita
2015-04-10  1:40     ` Zefan Li
2015-04-09  8:45 ` [PATCH 3.4 078/176] video/logo: prevent use of logos after they have been freed lizf
2015-04-09  8:45 ` [PATCH 3.4 079/176] USB: cp210x: fix ID for production CEL MeshConnect USB Stick lizf
2015-04-09  8:45 ` [PATCH 3.4 080/176] x86, um: actually mark system call tables readonly lizf
2015-04-09  8:45 ` [PATCH 3.4 081/176] ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC codecs lizf
2015-04-09  8:45 ` [PATCH 3.4 082/176] virtio: use dev_to_virtio wrapper in virtio lizf
2015-04-09  8:45 ` [PATCH 3.4 083/176] virtio_pci: defer kfree until release callback lizf
2015-04-09  8:45 ` [PATCH 3.4 084/176] virtio_pci: document why we defer kfree lizf
2015-04-09  8:45 ` [PATCH 3.4 085/176] USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices lizf
2015-04-09  8:45 ` [PATCH 3.4 086/176] mm: propagate error from stack expansion even for guard page lizf
2015-04-09  8:45 ` [PATCH 3.4 087/176] sata_dwc_460ex: fix resource leak on error path lizf
2015-04-09  8:45 ` [PATCH 3.4 088/176] time: settimeofday: Validate the values of tv from user lizf
2015-04-09  8:45 ` [PATCH 3.4 089/176] time: adjtimex: Validate the ADJ_FREQUENCY values lizf
2015-04-09  8:45 ` [PATCH 3.4 090/176] Input: i8042 - reset keyboard to fix Elantech touchpad detection lizf
2015-04-09  8:45 ` [PATCH 3.4 091/176] Input: I8042 - add Acer Aspire 7738 to the nomux list lizf
2015-04-09  8:45 ` [PATCH 3.4 092/176] mac80211: fix multicast LED blinking and counter lizf
2015-04-09  8:45 ` [PATCH 3.4 093/176] mm: prevent endless growth of anon_vma hierarchy lizf
2015-04-09  8:45 ` [PATCH 3.4 094/176] mm: protect set_page_dirty() from ongoing truncation lizf
2015-04-09  8:45 ` [PATCH 3.4 095/176] HID: roccat: potential out of bounds in pyra_sysfs_write_settings() lizf
2015-04-09  8:45 ` [PATCH 3.4 096/176] OHCI: add a quirk for ULi M5237 blocking on reset lizf
2015-04-09  8:45 ` [PATCH 3.4 097/176] USB: console: fix potential use after free lizf
2015-04-09  8:45 ` [PATCH 3.4 098/176] mm: Don't count the stack guard page towards RLIMIT_STACK lizf
2015-04-09  8:45 ` [PATCH 3.4 099/176] mm: fix corner case in anon_vma endless growing prevention lizf
2015-04-09  8:45 ` [PATCH 3.4 100/176] gpio: fix memory and reference leaks in gpiochip_add error path lizf
2015-04-09  8:45 ` [PATCH 3.4 101/176] usb: dwc3: gadget: Stop TRB preparation after limit is reached lizf
2015-04-09  8:45 ` [PATCH 3.4 102/176] ftrace/jprobes/x86: Fix conflict between jprobes and function graph tracing lizf
2015-04-09  8:45 ` [PATCH 3.4 103/176] can: dev: fix crtlmode_supported check lizf
2015-04-09  8:45 ` [PATCH 3.4 104/176] sysfs.h: add ATTRIBUTE_GROUPS() macro lizf
2015-04-09  8:45 ` [PATCH 3.4 105/176] driver core: Introduce device_create_groups lizf
2015-04-09  8:45 ` [PATCH 3.4 106/176] gpio: sysfs: fix gpio-chip device-attribute leak lizf
2015-04-09  8:45 ` [PATCH 3.4 107/176] gpiolib: Refactor gpio_export lizf
2015-04-09  8:45 ` [PATCH 3.4 108/176] gpio: sysfs: fix gpio device-attribute leak lizf
2015-04-09  8:45 ` [PATCH 3.4 109/176] gpio: sysfs: fix gpio attribute-creation race lizf
2015-04-09  8:45 ` [PATCH 3.4 110/176] ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210 lizf
2015-04-09  8:45 ` [PATCH 3.4 111/176] libata: allow sata_sil24 to opt-out of tag ordered submission lizf
2015-04-09  8:46 ` [PATCH 3.4 112/176] scripts/recordmcount.pl: There is no -m32 gcc option on Super-H anymore lizf
2015-04-09  8:46 ` [PATCH 3.4 113/176] libata: prevent HSM state change race between ISR and PIO lizf
2015-04-09  8:46 ` [PATCH 3.4 114/176] x86, hyperv: Mark the Hyper-V clocksource as being continuous lizf
2015-04-09  8:46 ` [PATCH 3.4 115/176] spi: dw: Fix detecting FIFO depth lizf
2015-04-09  9:37   ` Axel Lin
2015-04-10  1:52     ` Zefan Li
2015-04-09  8:46 ` [PATCH 3.4 116/176] spi: dw-mid: fix FIFO size lizf
2015-04-09  8:46 ` [PATCH 3.4 117/176] ASoC: wm8960: Fix capture sample rate from 11250 to 11025 lizf
2015-04-09  8:46 ` [PATCH 3.4 118/176] regulator: core: fix race condition in regulator_put() lizf
2015-04-09  8:46 ` [PATCH 3.4 119/176] powerpc/xmon: Fix another endiannes issue in RTAS call from xmon lizf
2015-04-09  8:46 ` [PATCH 3.4 120/176] nl80211: fix per-station group key get/del and memory leak lizf
2015-04-09  8:46 ` [PATCH 3.4 121/176] usb-storage/SCSI: Add broken_fua blacklist flag lizf
2015-04-09  8:46 ` [PATCH 3.4 122/176] usb-storage/SCSI: blacklist FUA on JMicron 152d:2566 USB-SATA controller lizf
2015-04-09  8:46 ` [PATCH 3.4 123/176] usb-core bInterval quirk lizf
2015-04-09  8:46 ` [PATCH 3.4 124/176] USB: Add OTG PET device to TPL lizf
2015-04-09  8:46 ` [PATCH 3.4 125/176] drm/i915: Only fence tiled region of object lizf
2015-04-09  8:46 ` [PATCH 3.4 126/176] ALSA: seq-dummy: remove deadlock-causing events on close lizf
2015-04-09  8:46 ` [PATCH 3.4 127/176] net: sctp: fix slab corruption from use after free on INIT collisions lizf
2015-04-09  8:46 ` [PATCH 3.4 128/176] ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos too lizf
2015-04-09  8:46 ` [PATCH 3.4 129/176] vm: add VM_FAULT_SIGSEGV handling support lizf
2015-04-09  8:46 ` [PATCH 3.4 130/176] vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than SIGBUS lizf
2015-04-09  8:46 ` [PATCH 3.4 131/176] net: sctp: fix panic on duplicate ASCONF chunks lizf
2015-04-09  8:46 ` [PATCH 3.4 132/176] net: sctp: fix skb_over_panic when receiving malformed " lizf
2015-04-09  8:46 ` [PATCH 3.4 133/176] x86, mm/ASLR: Fix stack randomization on 64-bit systems lizf
2015-04-09  8:46 ` [PATCH 3.4 134/176] KEYS: close race between key lookup and freeing lizf
2015-04-09  8:46 ` lizf [this message]
2015-04-09  8:46 ` [PATCH 3.4 136/176] deal with deadlock in d_walk() lizf
2015-04-09  8:46 ` [PATCH 3.4 137/176] MIPS: IRQ: Fix disable_irq on CPU IRQs lizf
2015-04-09  8:46 ` [PATCH 3.4 138/176] ASoC: atmel_ssc_dai: fix start event for I2S mode lizf
2015-04-09  8:46 ` [PATCH 3.4 139/176] ALSA: ak411x: Fix stall in work callback lizf
2015-04-09  8:46 ` [PATCH 3.4 140/176] lib/checksum.c: fix carry in csum_tcpudp_nofold lizf
2015-04-09 17:44   ` Karl Beldan
2015-04-09 18:20     ` David Miller
2015-04-10  1:42     ` Zefan Li
2015-04-09  8:46 ` [PATCH 3.4 141/176] caif: remove wrong dev_net_set() call lizf
2015-04-09  8:46 ` [PATCH 3.4 142/176] MIPS: Fix kernel lockup or crash after CPU offline/online lizf
2015-04-09  8:46 ` [PATCH 3.4 143/176] gpio: sysfs: fix memory leak in gpiod_export_link lizf
2015-04-09  8:46 ` [PATCH 3.4 144/176] gpio: sysfs: fix memory leak in gpiod_sysfs_set_active_low lizf
2015-04-09  8:46 ` [PATCH 3.4 145/176] MIPS: Fix C0_Pagegrain[IEC] support lizf
2015-04-09  8:46 ` [PATCH 3.4 146/176] net: sctp: fix NULL pointer dereference in af->from_addr_param on malformed packet lizf
2015-04-09  8:46 ` [PATCH 3.4 147/176] net: sctp: fix passing wrong parameter header to param_type2af in sctp_process_param lizf
2015-04-09  8:46 ` [PATCH 3.4 148/176] ASoC: sgtl5000: add delay before first I2C access lizf
2015-04-09  8:46 ` [PATCH 3.4 149/176] nilfs2: fix deadlock of segment constructor over I_SYNC flag lizf
2015-04-09  8:46 ` [PATCH 3.4 150/176] Drivers: hv: vmbus: incorrect device name is printed when child device is unregistered lizf
2015-04-09  8:46 ` [PATCH 3.4 151/176] Bluetooth: sort the list of IDs in the source code lizf
2015-04-09  8:46 ` [PATCH 3.4 152/176] Bluetooth: append new supported device to the list [0b05:17d0] lizf
2015-04-09  8:46 ` [PATCH 3.4 153/176] Bluetooth: Add support for Intel bootloader devices lizf
2015-04-09  8:46 ` [PATCH 3.4 154/176] Bluetooth: Ignore isochronous endpoints for Intel USB bootloader lizf
2015-04-09  8:46 ` [PATCH 3.4 155/176] Bluetooth: Add support for Acer [13D3:3432] lizf
2015-04-09  8:46 ` [PATCH 3.4 156/176] Bluetooth: Add support for Broadcom device of Asus Z97-DELUXE motherboard lizf
2015-04-09  8:46 ` [PATCH 3.4 157/176] Add a new PID/VID 0227/0930 for AR3012 lizf
2015-04-09  8:46 ` [PATCH 3.4 158/176] Bluetooth: Add support for Acer [0489:e078] lizf
2015-04-09  8:46 ` [PATCH 3.4 159/176] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device lizf
2015-04-09  8:46 ` [PATCH 3.4 160/176] Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 lizf
2015-04-09  8:46 ` [PATCH 3.4 161/176] pagemap: do not leak physical addresses to non-privileged userspace lizf
2015-04-09  8:46 ` [PATCH 3.4 162/176] Bluetooth: Fix invalid length check in l2cap_information_rsp() lizf
2015-04-09  8:46 ` [PATCH 3.4 163/176] jfs: fix readdir regression lizf
2015-04-09  8:46 ` [PATCH 3.4 164/176] ipvs: rerouting to local clients is not needed anymore lizf
2015-04-09  8:46 ` [PATCH 3.4 165/176] staging: comedi: cb_pcidas64: fix incorrect AI range code handling lizf
2015-04-09  8:46 ` [PATCH 3.4 166/176] Bluetooth: ath3k: workaround the compatibility issue with xHCI controller lizf
2015-04-09  8:46 ` [PATCH 3.4 167/176] sched/rt: Reduce rq lock contention by eliminating locking of non-feasible target lizf
2015-04-09  8:46 ` [PATCH 3.4 168/176] net:socket: set msg_namelen to 0 if msg_name is passed as NULL in msghdr struct from userland lizf
2015-04-09  8:46 ` [PATCH 3.4 169/176] fsnotify: next_i is freed during fsnotify_unmount_inodes lizf
2015-04-09  8:46 ` [PATCH 3.4 170/176] x86, cpu, amd: Add workaround for family 16h, erratum 793 lizf
2015-04-09  8:46 ` [PATCH 3.4 171/176] s390/3215: fix tty output containing tabs lizf
2015-04-09  8:47 ` [PATCH 3.4 172/176] ntp: Fixup adjtimex freq validation on 32-bit systems lizf
2015-04-09  8:47 ` [PATCH 3.4 173/176] spi: dw: revisit FIFO size detection again lizf
2015-04-09  8:47 ` [PATCH 3.4 174/176] nilfs2: fix deadlock of segment constructor during recovery lizf
2015-04-09  8:47 ` [PATCH 3.4 175/176] net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour lizf
2015-04-09  8:47 ` [PATCH 3.4 176/176] mm: fix anon_vma->degree underflow in anon_vma endless growing prevention lizf
2015-04-09 15:20 ` [PATCH 3.4 000/176] 3.4.107-rc1 review Guenter Roeck
2015-04-13  2:01   ` Zefan Li
2015-04-13  4:19     ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1428569224-23820-135-git-send-email-lizf@kernel.org \
    --to=lizf@kernel.org \
    --cc=ben@decadent.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).