Hi list, Apparently, the following two C language constructs while (condition) { // DO HARD WORK } and repeat: if (condition) { // DO HARD WORK goto repeat; } are equivalent, but the latter one looks quite cumbersome and is not idiomatic. However, the mntput_no_expire() routine in fs/namespace.c is implemented using the goto-based approach. The patch given below replaces the goto-loop by a while-based one. Besides, it removes the export for the same routine, because there are no users for it outside of the core VFS code. Signed-off-by: Dmitri Vorobiev <dmitri.vorobiev@xxxxxxxxx> --- diff --git a/fs/namespace.c b/fs/namespace.c index 0608388..38b4b4a 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -278,8 +278,7 @@ static inline void __mntput(struct vfsmo void mntput_no_expire(struct vfsmount *mnt) { -repeat: - if (atomic_dec_and_lock(&mnt->mnt_count, &vfsmount_lock)) { + while (atomic_dec_and_lock(&mnt->mnt_count, &vfsmount_lock)) { if (likely(!mnt->mnt_pinned)) { spin_unlock(&vfsmount_lock); __mntput(mnt); @@ -290,12 +289,9 @@ repeat: spin_unlock(&vfsmount_lock); acct_auto_close_mnt(mnt); security_sb_umount_close(mnt); - goto repeat; } } -EXPORT_SYMBOL(mntput_no_expire); - void mnt_pin(struct vfsmount *mnt) { spin_lock(&vfsmount_lock); - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html