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