autofs - Fix sparse warning: context imbalance in autofs4_d_automount() different...
authorPeter Huewe <peterhuewe@gmx.de>
Fri, 1 Mar 2013 11:46:40 +0000 (19:46 +0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 1 Mar 2013 20:04:39 +0000 (12:04 -0800)
Sparse complains:

  fs/autofs4/root.c:409:9: sparse: context imbalance in 'autofs4_d_automount' - different lock contexts for basic block

This was introduced by commit f55fb0c24386 ("autofs4 - dont clear
DCACHE_NEED_AUTOMOUNT on rootless mount")

The function autofs4_d_automount can be left with the (&sbi->fs_lock)
held if sbi->version <= 4 and simple_empty(dentry) == false so the
warning seems valid.

--> Add an spin_unlock in this case before we jump to done

Unfortunately compile tested only.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
Acked-by: Ian Kent <raven@themaw.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/autofs4/root.c

index 230bd2aad4f4e740ef31d2ebf81855016993d673..9bd16255dd9cd631371acf3ed3ec276682ded828 100644 (file)
@@ -383,8 +383,10 @@ static struct vfsmount *autofs4_d_automount(struct path *path)
                                goto done;
                        }
                } else {
-                       if (!simple_empty(dentry))
+                       if (!simple_empty(dentry)) {
+                               spin_unlock(&sbi->fs_lock);
                                goto done;
+                       }
                }
                ino->flags |= AUTOFS_INF_PENDING;
                spin_unlock(&sbi->fs_lock);