SPDX-License-Identifier: GPL-2.0 diff --git a/fs/inode.c b/fs/inode.c index 0f1e3b563c47..b3154d597a9c 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -882,6 +882,8 @@ unsigned int get_next_ino(void) unsigned int *p = &get_cpu_var(last_ino); unsigned int res = *p; +start: + #ifdef CONFIG_SMP if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) { static atomic_t shared_last_ino; @@ -894,7 +896,7 @@ unsigned int get_next_ino(void) res++; /* get_next_ino should not provide a 0 inode number */ if (unlikely(!res)) - res++; + goto start; *p = res; put_cpu_var(last_ino); return res;