Loading fs/super.c +10 −8 Original line number Diff line number Diff line Loading @@ -441,12 +441,13 @@ struct super_block * get_super(struct block_device *bdev) sb->s_count++; spin_unlock(&sb_lock); down_read(&sb->s_umount); /* still alive? */ if (sb->s_root) return sb; up_read(&sb->s_umount); /* restart only when sb is no longer on the list */ /* nope, got unmounted */ spin_lock(&sb_lock); if (__put_super_and_need_restart(sb)) __put_super(sb); goto rescan; } } Loading Loading @@ -500,12 +501,13 @@ struct super_block * user_get_super(dev_t dev) sb->s_count++; spin_unlock(&sb_lock); down_read(&sb->s_umount); /* still alive? */ if (sb->s_root) return sb; up_read(&sb->s_umount); /* restart only when sb is no longer on the list */ /* nope, got unmounted */ spin_lock(&sb_lock); if (__put_super_and_need_restart(sb)) __put_super(sb); goto rescan; } } Loading Loading
fs/super.c +10 −8 Original line number Diff line number Diff line Loading @@ -441,12 +441,13 @@ struct super_block * get_super(struct block_device *bdev) sb->s_count++; spin_unlock(&sb_lock); down_read(&sb->s_umount); /* still alive? */ if (sb->s_root) return sb; up_read(&sb->s_umount); /* restart only when sb is no longer on the list */ /* nope, got unmounted */ spin_lock(&sb_lock); if (__put_super_and_need_restart(sb)) __put_super(sb); goto rescan; } } Loading Loading @@ -500,12 +501,13 @@ struct super_block * user_get_super(dev_t dev) sb->s_count++; spin_unlock(&sb_lock); down_read(&sb->s_umount); /* still alive? */ if (sb->s_root) return sb; up_read(&sb->s_umount); /* restart only when sb is no longer on the list */ /* nope, got unmounted */ spin_lock(&sb_lock); if (__put_super_and_need_restart(sb)) __put_super(sb); goto rescan; } } Loading