The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-123.1.2.vz7.4.9 ------> commit 1b776f45202a6e39b9516a080212a206be840ad4 Author: Kirill Tkhai <ktk...@odin.com> Date: Thu Apr 30 19:24:53 2015 +0400
ve: Make get_ve_by_id() lockless css_tryget() fails if css_offline has already been called, so the "true" result guarantees that final put_ve() hasn't been made yet. Signed-off-by: Kirill Tkhai <ktk...@odin.com> Acked-by: Vladimir Davydov <vdavy...@parallels.com> --- kernel/ve/ve.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c index 9a6424e..3ef10bc 100644 --- a/kernel/ve/ve.c +++ b/kernel/ve/ve.c @@ -226,10 +226,11 @@ EXPORT_SYMBOL(__find_ve_by_id); struct ve_struct *get_ve_by_id(envid_t veid) { struct ve_struct *ve; - mutex_lock(&ve_list_lock); + rcu_read_lock(); ve = __find_ve_by_id(veid); - get_ve(ve); - mutex_unlock(&ve_list_lock); + if (ve && !css_tryget(&ve->css)) + ve = NULL; + rcu_read_unlock(); return ve; } EXPORT_SYMBOL(get_ve_by_id); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel