lockdep: fixup the inode dir annotation

A slight oversight tripped lockdep debugging code, each lockdep
class should have but a single init site.

Rearange the code to make this true.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Peter Zijlstra 2007-10-16 06:47:54 +02:00 committed by Linus Torvalds
parent e744fdea54
commit 1e89a5e15a

View file

@ -568,16 +568,16 @@ EXPORT_SYMBOL(new_inode);
void unlock_new_inode(struct inode *inode) void unlock_new_inode(struct inode *inode)
{ {
#ifdef CONFIG_DEBUG_LOCK_ALLOC #ifdef CONFIG_DEBUG_LOCK_ALLOC
if (inode->i_mode & S_IFDIR) {
struct file_system_type *type = inode->i_sb->s_type; struct file_system_type *type = inode->i_sb->s_type;
/* /*
* ensure nobody is actually holding i_mutex * ensure nobody is actually holding i_mutex
*/ */
mutex_destroy(&inode->i_mutex); mutex_destroy(&inode->i_mutex);
mutex_init(&inode->i_mutex); mutex_init(&inode->i_mutex);
if (inode->i_mode & S_IFDIR)
lockdep_set_class(&inode->i_mutex, &type->i_mutex_dir_key); lockdep_set_class(&inode->i_mutex, &type->i_mutex_dir_key);
else }
lockdep_set_class(&inode->i_mutex, &type->i_mutex_key);
#endif #endif
/* /*
* This is special! We do not need the spinlock * This is special! We do not need the spinlock