That looks good to me.

-Paul [the paranoid portability policeman]


On Thu, Apr 24, 2014 at 3:41 AM, Jeff Squyres (jsquyres) <jsquy...@cisco.com
> wrote:

> On Apr 23, 2014, at 6:38 PM, Paul Hargrove <phhargr...@lbl.gov> wrote:
>
> > -Paul [Who always does what the late W. Richard Stevens says to.]
>
> You make a good point, sir.  How about this?
>
> diff --git a/src/topology-linux.c b/src/topology-linux.c
> index 25fb465..c9dc7e2 100644
> --- a/src/topology-linux.c
> +++ b/src/topology-linux.c
> @@ -4568,7 +4568,7 @@ hwloc_linux_component_instantiate(struct
> hwloc_disc_compon
>    struct hwloc_backend *backend;
>    struct hwloc_linux_backend_data_s *data;
>    const char * fsroot_path = _data1;
> -  int root = -1;
> +  int flags, root = -1;
>
>    backend = hwloc_backend_alloc(component);
>    if (!backend)
> @@ -4602,8 +4602,11 @@ hwloc_linux_component_instantiate(struct
> hwloc_disc_compo
>    }
>
>    /* Since this fd stays open after hwloc returns, mark it as
> -     close-on-exec so that children don't inherit it */
> -  if (fcntl(root, F_SETFD, FD_CLOEXEC) == -1) {
> +     close-on-exec so that children don't inherit it.  Stevens says
> +     that we should GETFD before we SETFD, so we do. */
> +  flags = fcntl(root, F_GETFD, 0);
> +  if (-1 == flags ||
> +      -1 == fcntl(root, F_SETFD, FD_CLOEXEC | flags)) {
>        close(root);
>        root = -1;
>        goto out_with_data;
>
>
> --
> Jeff Squyres
> jsquy...@cisco.com
> For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> hwloc-devel mailing list
> hwloc-de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel
>



-- 
Paul H. Hargrove                          phhargr...@lbl.gov
Future Technologies Group
Computer and Data Sciences Department     Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900

Reply via email to