Reviewed-by: Steven Dake - I will merge

Thanks for the work!
-steve

On 02/14/2011 07:51 PM, Russell Bryant wrote:
> This patch adds a couple of missing calls to pthread_attr_destroy().
> 
> There were a couple of instances where pthread_attr_init() was being
> used without a cooresponding call to pthread_attr_destroy().  This also
> localizes the pthread_attr_t to the function where it is needed instead
> of having it persist (the man page specifically states that destroying
> the attributes structure has no effect on threads created using the
> attributes).
> 
> ---
>  exec/coroipcs.c |   15 ++++++++-------
>  exec/timer.c    |    4 ++--
>  2 files changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/exec/coroipcs.c b/exec/coroipcs.c
> index 1897231..b64c5a9 100644
> --- a/exec/coroipcs.c
> +++ b/exec/coroipcs.c
> @@ -142,7 +142,6 @@ struct conn_info {
>       int fd;
>       pthread_t thread;
>       pid_t client_pid;
> -     pthread_attr_t thread_attr;
>       unsigned int service;
>       enum conn_state state;
>       int refcount;
> @@ -1571,7 +1570,6 @@ int coroipcs_handler_dispatch (
>       int res;
>       char buf;
>  
> -
>       if (ipc_thread_exiting (conn_info)) {
>               return conn_info_destroy (conn_info);
>       }
> @@ -1588,6 +1586,8 @@ int coroipcs_handler_dispatch (
>        * Read the header and process it
>        */
>       if (conn_info->service == SOCKET_SERVICE_INIT && (revent & POLLIN)) {
> +             pthread_attr_t thread_attr;
> +
>               /*
>                * Receive in a nonblocking fashion the request
>                * IF security invalid, send ERR_SECURITY, otherwise
> @@ -1684,21 +1684,22 @@ int coroipcs_handler_dispatch (
>               /* create stats objects */
>               coroipcs_init_conn_stats (conn_info);
>  
> -             pthread_attr_init (&conn_info->thread_attr);
> +             pthread_attr_init (&thread_attr);
>               /*
>               * IA64 needs more stack space then other arches
>               */
>               #if defined(__ia64__)
> -             pthread_attr_setstacksize (&conn_info->thread_attr, 400000);
> +             pthread_attr_setstacksize (&thread_attr, 400000);
>               #else
> -             pthread_attr_setstacksize (&conn_info->thread_attr, 200000);
> +             pthread_attr_setstacksize (&thread_attr, 200000);
>               #endif
>  
> -             pthread_attr_setdetachstate (&conn_info->thread_attr, 
> PTHREAD_CREATE_JOINABLE);
> +             pthread_attr_setdetachstate (&thread_attr, 
> PTHREAD_CREATE_JOINABLE);
>               res = pthread_create (&conn_info->thread,
> -                     &conn_info->thread_attr,
> +                     &thread_attr,
>                       pthread_ipc_consumer,
>                       conn_info);
> +             pthread_attr_destroy (&thread_attr);
>  
>               /*
>                * Security check - disallow multiple configurations of
> diff --git a/exec/timer.c b/exec/timer.c
> index 69f9a95..a89f4bc 100644
> --- a/exec/timer.c
> +++ b/exec/timer.c
> @@ -85,8 +85,6 @@ static pthread_mutex_t timer_mutex = 
> PTHREAD_MUTEX_INITIALIZER;
>  
>  static pthread_t expiry_thread;
>  
> -static pthread_attr_t thread_attr;
> -
>  static struct timerlist timers_timerlist;
>  
>  static int sched_priority = 0;
> @@ -154,6 +152,7 @@ int corosync_timer_init (
>       int sched_priority_in)
>  {
>       int res;
> +     pthread_attr_t thread_attr;
>  
>       timer_serialize_lock_fn = serialize_lock_fn;
>       timer_serialize_unlock_fn = serialize_unlock_fn;
> @@ -169,6 +168,7 @@ int corosync_timer_init (
>       pthread_attr_setdetachstate (&thread_attr, PTHREAD_CREATE_DETACHED);
>       res = pthread_create (&expiry_thread, &thread_attr,
>               prioritized_timer_thread, NULL);
> +     pthread_attr_destroy (&thread_attr);
>  
>       return (res);
>  }

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to