> @@ -130,6 +131,34 @@ struct ve_struct {
>  #endif
>  };
>  
> +static inline struct ve_struct *get_exec_env(void)
> +{
> +     struct ve_struct *ve;
> +
> +     if (++current->ve_attach_lock_depth > 1)
> +             return current->task_ve;
> +
> +     rcu_read_lock();
> +again:
> +     ve = current->task_ve;
> +     read_lock(&ve->attach_lock);
> +     if (unlikely(current->task_ve != ve)) {
> +             read_unlock(&ve->attach_lock);
> +             goto again;

Please, no. 3.10 kernel has task_work-s, ask the task you want to
attach to ve to execute the work by moving itself into it and keep
this small routine small and simple.

> +     }
> +     rcu_read_unlock();
> +
> +     return ve;
> +}
> +

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to