mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jiri Slaby <jslaby@suse.cz>
To: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>,
	Jiri Slaby <jslaby@suse.cz>
Subject: [PATCH 3.12 175/176] move d_rcu from overlapping d_child to overlapping d_alias
Date: Wed, 28 Jan 2015 15:30:05 +0100	[thread overview]
Message-ID: <f544f36115f5d86d70d338f1a5bc841dfd65eed3.1422455352.git.jslaby@suse.cz> (raw)
In-Reply-To: <ce4a451f616a1e7ab58cfeceea5e49c8b1c68c81.1422455352.git.jslaby@suse.cz>
In-Reply-To: <cover.1422455352.git.jslaby@suse.cz>

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

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 946e51f2bf37f1656916eb75bd0742ba33983c28 upstream.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 arch/powerpc/platforms/cell/spufs/inode.c       |  2 +-
 drivers/staging/lustre/lustre/llite/dcache.c    |  2 +-
 drivers/staging/lustre/lustre/llite/llite_lib.c |  2 +-
 drivers/staging/lustre/lustre/llite/namei.c     |  8 ++--
 fs/affs/amigaffs.c                              |  2 +-
 fs/autofs4/expire.c                             | 12 +++---
 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                                     | 56 ++++++++++++-------------
 fs/debugfs/inode.c                              |  4 +-
 fs/exportfs/expfs.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                                 |  2 +-
 kernel/trace/trace.c                            |  4 +-
 kernel/trace/trace_events.c                     |  2 +-
 security/selinux/selinuxfs.c                    |  6 +--
 25 files changed, 79 insertions(+), 79 deletions(-)

diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index 87ba7cf99cd7..65d633f20d37 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);
diff --git a/drivers/staging/lustre/lustre/llite/dcache.c b/drivers/staging/lustre/lustre/llite/dcache.c
index e7629be39739..c6ca9ca8eab4 100644
--- a/drivers/staging/lustre/lustre/llite/dcache.c
+++ b/drivers/staging/lustre/lustre/llite/dcache.c
@@ -278,7 +278,7 @@ void ll_invalidate_aliases(struct inode *inode)
 	       inode->i_ino, inode->i_generation, inode);
 
 	ll_lock_dcache(inode);
-	ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_alias) {
+	ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_u.d_alias) {
 		CDEBUG(D_DENTRY, "dentry in drop %.*s (%p) parent %p "
 		       "inode %p flags %d\n", dentry->d_name.len,
 		       dentry->d_name.name, dentry, dentry->d_parent,
diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c
index b868c2bd58d2..04313298df4a 100644
--- a/drivers/staging/lustre/lustre/llite/llite_lib.c
+++ b/drivers/staging/lustre/lustre/llite/llite_lib.c
@@ -665,7 +665,7 @@ void lustre_dump_dentry(struct dentry *dentry, int recur)
 		return;
 
 	list_for_each(tmp, &dentry->d_subdirs) {
-		struct dentry *d = list_entry(tmp, struct dentry, d_u.d_child);
+		struct dentry *d = list_entry(tmp, struct dentry, d_child);
 		lustre_dump_dentry(d, recur - 1);
 	}
 }
diff --git a/drivers/staging/lustre/lustre/llite/namei.c b/drivers/staging/lustre/lustre/llite/namei.c
index 34815b550e71..cd90a6539555 100644
--- a/drivers/staging/lustre/lustre/llite/namei.c
+++ b/drivers/staging/lustre/lustre/llite/namei.c
@@ -175,14 +175,14 @@ static void ll_invalidate_negative_children(struct inode *dir)
 	struct ll_d_hlist_node *p;
 
 	ll_lock_dcache(dir);
-	ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_alias) {
+	ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_u.d_alias) {
 		spin_lock(&dentry->d_lock);
 		if (!list_empty(&dentry->d_subdirs)) {
 			struct dentry *child;
 
 			list_for_each_entry_safe(child, tmp_subdir,
 						 &dentry->d_subdirs,
-						 d_u.d_child) {
+						 d_child) {
 				if (child->d_inode == NULL)
 					d_lustre_invalidate(child, 1);
 			}
@@ -363,7 +363,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
 	discon_alias = invalid_alias = NULL;
 
 	ll_lock_dcache(inode);
-	ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_alias) {
+	ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_u.d_alias) {
 		LASSERT(alias != dentry);
 
 		spin_lock(&alias->d_lock);
@@ -953,7 +953,7 @@ static void ll_get_child_fid(struct inode * dir, struct qstr *name,
 {
 	struct dentry *parent, *child;
 
-	parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_alias);
+	parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_u.d_alias);
 	child = d_lookup(parent, name);
 	if (child) {
 		if (child->d_inode)
diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
index d9a43674cb94..9cca0ea4e479 100644
--- a/fs/affs/amigaffs.c
+++ b/fs/affs/amigaffs.c
@@ -126,7 +126,7 @@ affs_fix_dcache(struct inode *inode, u32 entry_ino)
 {
 	struct dentry *dentry;
 	spin_lock(&inode->i_lock);
-	hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
 		if (entry_ino == (u32)(long)dentry->d_fsdata) {
 			dentry->d_fsdata = (void *)inode->i_ino;
 			break;
diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c
index 3d9d3f5d5dda..d096316533da 100644
--- a/fs/autofs4/expire.c
+++ b/fs/autofs4/expire.c
@@ -91,7 +91,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev,
 	spin_lock(&root->d_lock);
 
 	if (prev)
-		next = prev->d_u.d_child.next;
+		next = prev->d_child.next;
 	else {
 		prev = dget_dlock(root);
 		next = prev->d_subdirs.next;
@@ -105,13 +105,13 @@ cont:
 		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);
 	/* Already gone or negative dentry (under construction) - try next */
 	if (!d_count(q) || !simple_positive(q)) {
 		spin_unlock(&q->d_lock);
-		next = q->d_u.d_child.next;
+		next = q->d_child.next;
 		goto cont;
 	}
 	dget_dlock(q);
@@ -161,13 +161,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 */
@@ -447,7 +447,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 2a69bde8c61d..b3f4794c9f6d 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -655,7 +655,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 868b61d56cac..ea3de8b719ab 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -103,7 +103,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.
  *
@@ -138,11 +138,11 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx)
 		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,
@@ -164,7 +164,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 8549a48115f7..74a479e518d4 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -880,9 +880,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);
 }
@@ -1309,7 +1309,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 2a93255c0150..ab9f992ca479 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -874,7 +874,7 @@ inode_has_hashed_dentries(struct inode *inode)
 	struct dentry *dentry;
 
 	spin_lock(&inode->i_lock);
-	hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	hlist_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 1da168c61d35..9bc1147a6c5d 100644
--- a/fs/coda/cache.c
+++ b/fs/coda/cache.c
@@ -92,7 +92,7 @@ static void coda_flag_children(struct dentry *parent, int flag)
 	struct dentry *de;
 
 	spin_lock(&parent->d_lock);
-	list_for_each_entry(de, &parent->d_subdirs, d_u.d_child) {
+	list_for_each_entry(de, &parent->d_subdirs, d_child) {
 		/* don't know what to do with negative dentries */
 		if (de->d_inode ) 
 			coda_flag_inode(de->d_inode, flag);
diff --git a/fs/dcache.c b/fs/dcache.c
index d449b1aed5ad..09f7a612ba7f 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -44,7 +44,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:
@@ -59,7 +59,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
@@ -268,7 +268,6 @@ static void __d_free(struct rcu_head *head)
 {
 	struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);
 
-	WARN_ON(!hlist_unhashed(&dentry->d_alias));
 	if (dname_external(dentry))
 		kfree(dentry->d_name.name);
 	kmem_cache_free(dentry_cache, dentry); 
@@ -276,6 +275,7 @@ static void __d_free(struct rcu_head *head)
 
 static void dentry_free(struct dentry *dentry)
 {
+	WARN_ON(!hlist_unhashed(&dentry->d_u.d_alias));
 	/* if dentry was never visible to RCU, immediate free is OK */
 	if (!(dentry->d_flags & DCACHE_RCUACCESS))
 		__d_free(&dentry->d_u.d_rcu);
@@ -309,7 +309,7 @@ static void dentry_iput(struct dentry * dentry)
 	struct inode *inode = dentry->d_inode;
 	if (inode) {
 		dentry->d_inode = NULL;
-		hlist_del_init(&dentry->d_alias);
+		hlist_del_init(&dentry->d_u.d_alias);
 		spin_unlock(&dentry->d_lock);
 		spin_unlock(&inode->i_lock);
 		if (!inode->i_nlink)
@@ -333,7 +333,7 @@ static void dentry_unlink_inode(struct dentry * dentry)
 {
 	struct inode *inode = dentry->d_inode;
 	dentry->d_inode = NULL;
-	hlist_del_init(&dentry->d_alias);
+	hlist_del_init(&dentry->d_u.d_alias);
 	dentry_rcuwalk_barrier(dentry);
 	spin_unlock(&dentry->d_lock);
 	spin_unlock(&inode->i_lock);
@@ -488,7 +488,7 @@ static void __dentry_kill(struct dentry *dentry)
 	}
 	/* if it was on the hash then remove it */
 	__d_drop(dentry);
-	list_del(&dentry->d_u.d_child);
+	list_del(&dentry->d_child);
 	/*
 	 * Inform d_walk() that we are no longer attached to the
 	 * dentry tree
@@ -772,7 +772,7 @@ static struct dentry *__d_find_alias(struct inode *inode, int want_discon)
 
 again:
 	discon_alias = NULL;
-	hlist_for_each_entry(alias, &inode->i_dentry, d_alias) {
+	hlist_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) &&
@@ -825,7 +825,7 @@ void d_prune_aliases(struct inode *inode)
 	struct dentry *dentry;
 restart:
 	spin_lock(&inode->i_lock);
-	hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
 		spin_lock(&dentry->d_lock);
 		if (!dentry->d_lockref.count) {
 			/*
@@ -1110,7 +1110,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);
@@ -1162,7 +1162,7 @@ resume:
 			goto rename_retry;
 		}
 		rcu_read_unlock();
-		next = child->d_u.d_child.next;
+		next = child->d_child.next;
 		goto resume;
 	}
 	if (need_seqretry(&rename_lock, seq)) {
@@ -1497,8 +1497,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_HLIST_NODE(&dentry->d_alias);
-	INIT_LIST_HEAD(&dentry->d_u.d_child);
+	INIT_HLIST_NODE(&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);
@@ -1528,7 +1528,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;
@@ -1588,7 +1588,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
 	if (inode) {
 		if (unlikely(IS_AUTOMOUNT(inode)))
 			dentry->d_flags |= DCACHE_NEED_AUTOMOUNT;
-		hlist_add_head(&dentry->d_alias, &inode->i_dentry);
+		hlist_add_head(&dentry->d_u.d_alias, &inode->i_dentry);
 	}
 	dentry->d_inode = inode;
 	dentry_rcuwalk_barrier(dentry);
@@ -1613,7 +1613,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
  
 void d_instantiate(struct dentry *entry, struct inode * inode)
 {
-	BUG_ON(!hlist_unhashed(&entry->d_alias));
+	BUG_ON(!hlist_unhashed(&entry->d_u.d_alias));
 	if (inode)
 		spin_lock(&inode->i_lock);
 	__d_instantiate(entry, inode);
@@ -1652,7 +1652,7 @@ static struct dentry *__d_instantiate_unique(struct dentry *entry,
 		return NULL;
 	}
 
-	hlist_for_each_entry(alias, &inode->i_dentry, d_alias) {
+	hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
 		/*
 		 * Don't need alias->d_lock here, because aliases with
 		 * d_parent == entry->d_parent are not subject to name or
@@ -1678,7 +1678,7 @@ struct dentry *d_instantiate_unique(struct dentry *entry, struct inode *inode)
 {
 	struct dentry *result;
 
-	BUG_ON(!hlist_unhashed(&entry->d_alias));
+	BUG_ON(!hlist_unhashed(&entry->d_u.d_alias));
 
 	if (inode)
 		spin_lock(&inode->i_lock);
@@ -1721,7 +1721,7 @@ static struct dentry * __d_find_any_alias(struct inode *inode)
 
 	if (hlist_empty(&inode->i_dentry))
 		return NULL;
-	alias = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
+	alias = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias);
 	__dget(alias);
 	return alias;
 }
@@ -1795,7 +1795,7 @@ struct dentry *d_obtain_alias(struct inode *inode)
 	spin_lock(&tmp->d_lock);
 	tmp->d_inode = inode;
 	tmp->d_flags |= DCACHE_DISCONNECTED;
-	hlist_add_head(&tmp->d_alias, &inode->i_dentry);
+	hlist_add_head(&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);
@@ -2238,7 +2238,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);
@@ -2485,8 +2485,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);
@@ -2496,15 +2496,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);
@@ -2611,9 +2611,9 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon)
 	swap(dentry->d_name.hash, anon->d_name.hash);
 
 	dentry->d_parent = dentry;
-	list_del_init(&dentry->d_u.d_child);
+	list_del_init(&dentry->d_child);
 	anon->d_parent = dparent;
-	list_move(&anon->d_u.d_child, &dparent->d_subdirs);
+	list_move(&anon->d_child, &dparent->d_subdirs);
 
 	write_seqcount_end(&dentry->d_seq);
 	write_seqcount_end(&anon->d_seq);
@@ -3241,7 +3241,7 @@ void d_tmpfile(struct dentry *dentry, struct inode *inode)
 {
 	inode_dec_link_count(inode);
 	BUG_ON(dentry->d_name.name != dentry->d_iname ||
-		!hlist_unhashed(&dentry->d_alias) ||
+		!hlist_unhashed(&dentry->d_u.d_alias) ||
 		!d_unlinked(dentry));
 	spin_lock(&dentry->d_parent->d_lock);
 	spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index 15761957cc3f..f3784dd57353 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -549,10 +549,10 @@ void debugfs_remove_recursive(struct dentry *dentry)
 	/*
 	 * The parent->d_subdirs is protected by the d_lock. Outside that
 	 * lock, the child can be unlinked and set to be freed which can
-	 * use the d_u.d_child as the rcu head and corrupt this list.
+	 * use the d_child as the rcu head and corrupt this list.
 	 */
 	spin_lock(&parent->d_lock);
-	list_for_each_entry(child, &parent->d_subdirs, d_u.d_child) {
+	list_for_each_entry(child, &parent->d_subdirs, d_child) {
 		if (!debugfs_positive(child))
 			continue;
 
diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c
index c43fe9b39ff2..b75f1742ddf9 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);
-	hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
 		dget(dentry);
 		spin_unlock(&inode->i_lock);
 		if (toput)
diff --git a/fs/libfs.c b/fs/libfs.c
index 193e0c29fb94..80d18955c322 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -105,18 +105,18 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence)
 
 			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);
 		}
 	}
@@ -140,7 +140,7 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
 {
 	struct dentry *dentry = file->f_path.dentry;
 	struct dentry *cursor = file->private_data;
-	struct list_head *p, *q = &cursor->d_u.d_child;
+	struct list_head *p, *q = &cursor->d_child;
 
 	if (!dir_emit_dots(file, ctx))
 		return 0;
@@ -149,7 +149,7 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
 		list_move(q, &dentry->d_subdirs);
 
 	for (p = q->next; p != &dentry->d_subdirs; p = p->next) {
-		struct dentry *next = list_entry(p, struct dentry, d_u.d_child);
+		struct dentry *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);
@@ -270,7 +270,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 3be047474bfc..0686002ccd1c 100644
--- a/fs/ncpfs/dir.c
+++ b/fs/ncpfs/dir.c
@@ -407,7 +407,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 32c06587351a..6d5e7c56c79d 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 66984a9aafaa..5b8ab0e444f9 100644
--- a/fs/nfs/getroot.c
+++ b/fs/nfs/getroot.c
@@ -58,7 +58,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);
-		hlist_del_init(&sb->s_root->d_alias);
+		hlist_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 4bb21d67d9b1..a3153e2d0f1f 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 */
-	hlist_for_each_entry(alias, &inode->i_dentry, d_alias) {
+	hlist_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 e2e05a106beb..92edcfc23c1c 100644
--- a/fs/ocfs2/dcache.c
+++ b/fs/ocfs2/dcache.c
@@ -172,7 +172,7 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode,
 	struct dentry *dentry;
 
 	spin_lock(&inode->i_lock);
-	hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+	hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
 		spin_lock(&dentry->d_lock);
 		if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) {
 			trace_ocfs2_find_local_alias(dentry->d_name.len,
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index cbde0540d4dd..53c1b60a29a0 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -122,15 +122,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 hlist_node d_alias;	/* inode alias list */
 	 	struct rcu_head d_rcu;
 	} d_u;
-	struct list_head d_subdirs;	/* our children */
-	struct hlist_node d_alias;	/* inode alias list */
 };
 
 /*
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 1c204fdb85d8..5d9d542c0bb5 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1012,7 +1012,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/kernel/trace/trace.c b/kernel/trace/trace.c
index dcdf4e682dd4..691a8ea6f472 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -6063,7 +6063,7 @@ static int instance_mkdir (struct inode *inode, struct dentry *dentry, umode_t m
 	int ret;
 
 	/* Paranoid: Make sure the parent is the "instances" directory */
-	parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
+	parent = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias);
 	if (WARN_ON_ONCE(parent != trace_instance_dir))
 		return -ENOENT;
 
@@ -6090,7 +6090,7 @@ static int instance_rmdir(struct inode *inode, struct dentry *dentry)
 	int ret;
 
 	/* Paranoid: Make sure the parent is the "instances" directory */
-	parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
+	parent = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias);
 	if (WARN_ON_ONCE(parent != trace_instance_dir))
 		return -ENOENT;
 
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index bc1bd20f7942..be15da87b390 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -427,7 +427,7 @@ static void remove_event_file_dir(struct ftrace_event_file *file)
 
 	if (dir) {
 		spin_lock(&dir->d_lock);	/* probably unneeded */
-		list_for_each_entry(child, &dir->d_subdirs, d_u.d_child) {
+		list_for_each_entry(child, &dir->d_subdirs, d_child) {
 			if (child->d_inode)	/* probably unneeded */
 				child->d_inode->i_private = NULL;
 		}
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index ff427733c290..86f969437f5d 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -1190,7 +1190,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);
@@ -1664,12 +1664,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)
-- 
2.2.2


  parent reply	other threads:[~2015-01-29 10:44 UTC|newest]

Thread overview: 184+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-28 14:29 [PATCH 3.12 000/176] 3.12.37-stable review Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 001/176] fsnotify: next_i is freed during fsnotify_unmount_inodes Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 002/176] drivers/rtc/rtc-sirfsoc.c: move hardware initilization earlier in probe Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 003/176] ocfs2: fix journal commit deadlock Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 004/176] ath9k_hw: fix hardware queue allocation Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 005/176] ath9k: fix BE/BK queue order Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 006/176] can: peak_usb: fix cleanup sequence order in case of error during init Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 007/176] can: peak_usb: fix memset() usage Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 008/176] ath5k: fix hardware queue index assignment Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 009/176] ASoC: sigmadsp: Refuse to load firmware files with a non-supported version Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 010/176] ASoC: max98090: Fix ill-defined sidetone route Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 011/176] ASoC: dwc: Ensure FIFOs are flushed to prevent channel swap Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 012/176] powerpc: Fix bad NULL pointer check in udbg_uart_getc_poll() Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 013/176] powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 014/176] PCI: Restore detection of read-only BARs Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 015/176] pstore-ram: Fix hangs by using write-combine mappings Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 016/176] pstore-ram: Allow optional mapping with pgprot_noncached Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 017/176] UBI: Fix invalid vfree() Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 018/176] UBI: Fix double free after do_sync_erase() Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 019/176] iommu/vt-d: Fix an off-by-one bug in __domain_mapping() Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 020/176] HID: i2c-hid: fix race condition reading reports Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 021/176] HID: i2c-hid: prevent buffer overflow in early IRQ Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 022/176] HID: roccat: potential out of bounds in pyra_sysfs_write_settings() Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 023/176] HID: add battery quirk for USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO keyboard Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 024/176] HID: Add a new id 0x501a for Genius MousePen i608X Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 025/176] kvm: x86: drop severity of "generation wraparound" message Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 026/176] x86_64, vdso: Fix the vdso address randomization algorithm Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 027/176] x86, vdso: Use asm volatile in __getcpu Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 028/176] driver core: Fix unbalanced device reference in drivers_probe Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 029/176] ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 030/176] ALSA: hda - using uninitialized data Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 031/176] ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC codecs Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 032/176] USB: cdc-acm: check for valid interfaces Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 033/176] Add USB_EHCI_EXYNOS to multi_v7_defconfig Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 034/176] genhd: check for int overflow in disk_expand_part_tbl() Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 035/176] cdc-acm: memory leak in error case Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 036/176] writeback: fix a subtle race condition in I_DIRTY clearing Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 037/176] serial: samsung: wait for transfer completion before clock disable Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 038/176] n_tty: Fix read_buf race condition, increment read_head after pushing data Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 039/176] Drivers: hv: vmbus: Fix a race condition when unregistering a device Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 040/176] fs: nfsd: Fix signedness bug in compare_blob Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 041/176] nfsd4: fix xdr4 inclusion of escaped char Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 042/176] ceph: do_sync is never initialized Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 043/176] mtd: tests: abort torturetest on erase errors Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 044/176] nilfs2: fix the nilfs_iget() vs. nilfs_new_inode() races Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 045/176] scripts/kernel-doc: don't eat struct members with __aligned Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 046/176] ARM: OMAP4: PM: Only do static dependency configuration in omap4_init_static_deps Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 047/176] Revert "ARM: 7830/1: delay: don't bother reporting bogomips in /proc/cpuinfo" Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 048/176] ARM: mvebu: disable I/O coherency on non-SMP situations on Armada 370/375/38x/XP Jiri Slaby
2015-01-28 14:27 ` [PATCH 3.12 049/176] perf/x86/intel/uncore: Make sure only uncore events are collected Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 050/176] perf: Fix events installation during moving group Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 051/176] perf session: Do not fail on processing out of order event Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 052/176] spi: fsl: Fix problem with multi message transfers Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 053/176] mmc: sdhci: Fix sleep in atomic after inserting SD card Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 054/176] mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process being killed Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 055/176] mm: propagate error from stack expansion even for guard page Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 056/176] mm: Don't count the stack guard page towards RLIMIT_STACK Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 057/176] netlink: Always copy on mmap TX Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 058/176] netlink: Don't reorder loads/stores before marking mmap netlink frame as available Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 059/176] in6: fix conflict with glibc Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 060/176] tg3: tg3_disable_ints using uninitialized mailbox value to disable interrupts Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 061/176] net: Fix stacked vlan offload features computation Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 062/176] net: Reset secmark when scrubbing packet Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 063/176] tcp: Do not apply TSO segment limit to non-TSO packets Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 064/176] alx: fix alx_poll() Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 065/176] team: avoid possible underflow of count_pending value for notify_peers and mcast_rejoin Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 066/176] enic: fix rx skb checksum Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 067/176] net/core: Handle csum for CHECKSUM_COMPLETE VXLAN forwarding Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 068/176] netfilter: ipset: small potential read beyond the end of buffer Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 069/176] ACPI / osl: speedup grace period in acpi_os_map_cleanup Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 070/176] drm/i915: Resolving the memory region conflict for Stolen area Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 071/176] drm/vmwgfx: Fix fence event code Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 072/176] drm/ttm: Avoid memory allocation from shrinker functions Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 073/176] drm/radeon: fix typo in CI dpm disable Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 074/176] drm/radeon: work around a hw bug in MGCG on CIK Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 075/176] drm/radeon: check the right ring in radeon_evict_flags() Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 076/176] drm/radeon: properly filter DP1.2 4k modes on non-DP1.2 hw Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 077/176] drm/i915: Don't complain about stolen conflicts on gen3 Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 078/176] drm/i915: Invalidate media caches on gen7 Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 079/176] drm/i915: Force the CS stall for invalidate flushes Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 080/176] cfg80211: avoid mem leak on driver hint set Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 081/176] hp_accel: Add support for HP ZBook 15 Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 082/176] tick/powerclamp: Remove tick_nohz_idle abuse Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 083/176] genirq: Prevent proc race against freeing of irq descriptors Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 084/176] iscsi-target: Fail connection on short sendmsg writes Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 085/176] Revert "[SCSI] mpt2sas: Remove phys on topology change." Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 086/176] Revert "[SCSI] mpt3sas: Remove phys on topology change" Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 087/176] scsi: blacklist RSOC for Microsoft iSCSI target devices Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 088/176] ipvs: correct usage/allocation of seqadj ext in ipvs Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 089/176] ALSA: usb-audio: Add support for Focusrite Saffire 6 USB Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 090/176] ALSA: snd-usb: re-order some quirk entries Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 091/176] storvsc: ring buffer failures may result in I/O freeze Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 092/176] net: ethernet: cpsw: fix hangs with interrupts Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 093/176] video/logo: prevent use of logos after they have been freed Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 094/176] smiapp-pll: Correct clock debug prints Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 095/176] af9005: fix kernel panic on init if compiled without IR Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 096/176] smiapp: Take mutex during PLL update in sensor initialisation Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 097/176] sound: simplify au0828 quirk table Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 098/176] sound: Update au0828 quirks table Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 099/176] uvcvideo: Fix destruction order in uvc_delete() Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 100/176] vfio-pci: Fix the check on pci device type in vfio_pci_probe() Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 101/176] drivers: net: cpsw: fix multicast flush in dual emac mode Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 102/176] ftrace/jprobes/x86: Fix conflict between jprobes and function graph tracing Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 103/176] NFSv4.1: Fix client id trunking on Linux Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 104/176] gpiolib: of: Correct error handling in of_get_named_gpiod_flags Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 105/176] gpio: fix memory and reference leaks in gpiochip_add error path Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 106/176] OHCI: add a quirk for ULi M5237 blocking on reset Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 107/176] usb: dwc3: gadget: Fix TRB preparation during SG Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 108/176] usb: dwc3: gadget: Stop TRB preparation after limit is reached Jiri Slaby
2015-01-28 14:28 ` [PATCH 3.12 109/176] USB: cp210x: fix ID for production CEL MeshConnect USB Stick Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 110/176] USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 111/176] USB: keyspan: fix null-deref at probe Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 112/176] USB: console: fix uninitialised ldisc semaphore Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 113/176] USB: console: fix potential use after free Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 114/176] USB: EHCI: fix initialization bug in iso_stream_schedule() Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 115/176] usb: musb: stuff leak of struct usb_hcd Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 116/176] can: kvaser_usb: Don't free packets when tight on URBs Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 117/176] can: kvaser_usb: Reset all URB tx contexts upon channel close Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 118/176] can: kvaser_usb: Don't send a RESET_CHIP for non-existing channels Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 119/176] Input: i8042 - reset keyboard to fix Elantech touchpad detection Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 120/176] Input: I8042 - add Acer Aspire 7738 to the nomux list Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 121/176] ARM: dts: imx25: Fix the SPI1 clocks Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 122/176] ARM: imx6q: drop unnecessary semicolon Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 123/176] ARM: clk-imx6q: fix video divider for rev T0 1.0 Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 124/176] ARM: omap5/dra7xx: Fix frequency typos Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 125/176] ARM: shmobile: sh73a0 legacy: Set .control_parent for all irqpin instances Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 126/176] decompress_bunzip2: off by one in get_next_block() Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 127/176] um: Skip futex_atomic_cmpxchg_inatomic() test Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 128/176] x86, um: actually mark system call tables readonly Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 129/176] LOCKD: Fix a race when initialising nlmsvc_timeout Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 130/176] vhost-scsi: Add missing virtio-scsi -> TCM attribute conversion Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 131/176] iscsi,iser-target: Initiate termination only once Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 132/176] iser-target: Fix flush + disconnect completion handling Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 133/176] iser-target: Parallelize CM connection establishment Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 134/176] iser-target: Fix connected_handler + teardown flow race Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 135/176] iser-target: Handle ADDR_CHANGE event for listener cm_id Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 136/176] iser-target: Fix implicit termination of connections Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 137/176] bcache: Make sure to pass GFP_WAIT to mempool_alloc() Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 138/176] crypto: sha256_ssse3 - use correct module alias for sha224 Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 139/176] gpio: sysfs: fix gpio-chip device-attribute leak Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 140/176] gpio: sysfs: fix gpio " Jiri Slaby
2015-01-28 16:10   ` Johan Hovold
2015-01-28 17:46     ` Jiri Slaby
2015-01-28 18:06       ` Johan Hovold
2015-01-28 19:40         ` Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 141/176] pinctrl: Fix two deadlocks Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 142/176] libata: prevent HSM state change race between ISR and PIO Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 143/176] ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210 Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 144/176] scripts/recordmcount.pl: There is no -m32 gcc option on Super-H anymore Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 145/176] drm/i915: Fix mutex->owner inspection race under DEBUG_MUTEXES Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 146/176] drm/radeon: add si dpm quirk list Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 147/176] ipr: wait for aborted command responses Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 148/176] dm cache: share cache-metadata object across inactive and active DM tables Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 149/176] dm cache: fix problematic dual use of a single migration count variable Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 150/176] time: settimeofday: Validate the values of tv from user Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 151/176] time: adjtimex: Validate the ADJ_FREQUENCY values Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 152/176] ARM: dts: imx25: Fix PWM "per" clocks Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 153/176] bus: mvebu-mbus: fix support of MBus window 13 Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 154/176] can: dev: fix crtlmode_supported check Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 155/176] clocksource: exynos_mct: Fix bitmask regression for exynos4_mct_write Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 156/176] x86, hyperv: Mark the Hyper-V clocksource as being continuous Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 157/176] x86/tsc: Change Fast TSC calibration failed from error to info Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 158/176] x86, boot: Skip relocs when load address unchanged Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 159/176] x86, tls, ldt: Stop checking lm in LDT_empty Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 160/176] x86, tls: Interpret an all-zero struct user_desc as "no segment" Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 161/176] x86/apic: Re-enable PCI_MSI support for non-SMP X86_32 Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 162/176] x86/asm/traps: Disable tracing and kprobes in fixup_bad_iret and sync_regs Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 163/176] sata_dwc_460ex: fix resource leak on error path Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 164/176] KEYS: close race between key lookup and freeing Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 165/176] ipvs: uninitialized data with IP_VS_IPV6 Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 167/176] crypto: prefix module autoloading with "crypto-" Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 168/176] crypto: include crypto- module prefix in template Jiri Slaby
2015-01-28 14:29 ` [PATCH 3.12 169/176] crypto: add missing crypto module aliases Jiri Slaby
2015-01-28 14:30 ` [PATCH 3.12 170/176] mmc: sdhci: Don't signal the sdio irq if it's not setup Jiri Slaby
2015-01-28 14:30 ` [PATCH 3.12 171/176] mm: get rid of radix tree gfp mask for pagecache_get_page Jiri Slaby
2015-01-28 14:30 ` [PATCH 3.12 172/176] md/raid5: fetch_block must fetch all the blocks handle_stripe_dirtying wants Jiri Slaby
2015-01-28 14:30 ` [PATCH 3.12 173/176] USB: adutux: NULL dereferences on disconnect Jiri Slaby
2015-01-28 14:30 ` [PATCH 3.12 174/176] usb: musb: Fix a few off-by-one lengths Jiri Slaby
2015-01-28 14:30 ` Jiri Slaby [this message]
2015-01-28 14:30 ` [PATCH 3.12 176/176] deal with deadlock in d_walk() Jiri Slaby
2015-01-28 16:48 ` [PATCH 3.12 000/176] 3.12.37-stable review Guenter Roeck
2015-01-29 14:49   ` Jiri Slaby
2015-01-29 18:39     ` Guenter Roeck
2015-01-28 16:51 ` Shuah Khan

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=f544f36115f5d86d70d338f1a5bc841dfd65eed3.1422455352.git.jslaby@suse.cz \
    --to=jslaby@suse.cz \
    --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

all inboxes | Powered by JetHome®