On Sat, Jul 18, 2015 at 10:40:23AM +0300, Cyrill Gorcunov wrote:
> +
> +static void __exit __exit_venetstat(void)
> +{
> +     struct ve_struct *ve;
> +
> +     mutex_lock(&ve_list_lock);
> +     for_each_ve(ve) {
> +             venet_acct_put_stat(ve->stat);
> +             ve->stat = NULL;
> +     }
> +     mutex_unlock(&ve_list_lock);
> +

venet_acct_hook can be called in this moment. I think we need to
unregister the hook before the previous loop.

> +     ve_hook_unregister(&venet_acct_hook);
> +}
>  
>  int __init venetstat_init(void)
>  {
> @@ -1095,6 +1156,10 @@ int __init venetstat_init(void)
>       for (i = 0; i < STAT_HASH_LEN; i++)
>               INIT_LIST_HEAD(stat_hash_list + i);
>  
> +     i = __init_venetstat();
> +     if (i)
> +             return i;

This looks ugly. Could you declare one more variable with more suitable
name.

> +
>  #if CONFIG_PROC_FS
>       de = proc_create("venetstat", S_IFREG|S_IRUSR, proc_vz_dir,
>                       &proc_venetstat_operations);
> @@ -1113,6 +1178,7 @@ int __init venetstat_init(void)
>  
>  void __exit venetstat_exit(void)
>  {
> +     __exit_venetstat();
>       vzioctl_unregister(&tc_ioctl_info);
>       venet_acct_destroy_all_stat();
>  
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to