瀏覽代碼

sget(): handle failures of register_shrinker()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Al Viro 7 年之前
父節點
當前提交
9ee332d99e
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      fs/super.c

+ 5 - 1
fs/super.c

@@ -517,7 +517,11 @@ retry:
 	hlist_add_head(&s->s_instances, &type->fs_supers);
 	hlist_add_head(&s->s_instances, &type->fs_supers);
 	spin_unlock(&sb_lock);
 	spin_unlock(&sb_lock);
 	get_filesystem(type);
 	get_filesystem(type);
-	register_shrinker(&s->s_shrink);
+	err = register_shrinker(&s->s_shrink);
+	if (err) {
+		deactivate_locked_super(s);
+		s = ERR_PTR(err);
+	}
 	return s;
 	return s;
 }
 }