We may have a case, when VE is dead, but there are some users of it, overlayfs superblock for example.
This user may want to use VE creds, so we need to keep ve->init_cred alive. Drop creds in ve_destroy. We need to drop ve_nsproxy early because ploop waits for refcount going to zero, dropping ve_nsproxy in destroy causes CT suspend/resume hangs. https://virtuozzo.atlassian.net/browse/VSTOR-142405 Signed-off-by: Vladimir Riabchun <[email protected]> --- kernel/ve/ve.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c index b3988a8d590f..1e0c092f080e 100644 --- a/kernel/ve/ve.c +++ b/kernel/ve/ve.c @@ -378,7 +378,10 @@ static void ve_drop_context(struct ve_struct *ve) rcu_assign_pointer(ve->ve_nsproxy, NULL); synchronize_rcu(); put_nsproxy(ve_nsproxy); +} +static void ve_drop_cred(struct ve_struct *ve) +{ put_cred(ve->init_cred); ve->init_cred = NULL; } @@ -929,6 +932,7 @@ static void ve_destroy(struct cgroup_subsys_state *css) { struct ve_struct *ve = css_to_ve(css); + ve_drop_cred(ve); free_ve_devmnts(ve); kmapset_unlink(&ve->sysfs_perms_key, &sysfs_ve_perms_set); -- 2.52.0 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
