public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
From: mornfall@sourceware.org
To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org
Subject: LVM2/daemons/clvmd clvmd.c
Date: Wed, 27 Oct 2010 11:40:00 -0000	[thread overview]
Message-ID: <20101027114015.26986.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mornfall@sourceware.org	2010-10-27 11:40:15

Modified files:
	daemons/clvmd  : clvmd.c 

Log message:
	Alasdair correctly pointed out that if the two closes are concurrent (I haven't
	checked, so they *might*), there is still a race possibility with the last
	fix. This patch fixes that.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/clvmd/clvmd.c.diff?cvsroot=lvm2&r1=1.81&r2=1.82

--- LVM2/daemons/clvmd/clvmd.c	2010/10/27 09:13:37	1.81
+++ LVM2/daemons/clvmd/clvmd.c	2010/10/27 11:40:14	1.82
@@ -188,6 +188,14 @@
 	        exit(status);
 }
 
+static void safe_close(int *fd)
+{
+	if (*fd >= 0) {
+		int to_close = *fd;
+		*fd = -1;
+		close(to_close);
+	}
+}
 
 void debuglog(const char *fmt, ...)
 {
@@ -838,10 +846,7 @@
 						lastfd->next = thisfd->next;
 						free_fd = thisfd;
 						thisfd = lastfd;
-						if (free_fd->fd >= 0) {
-							close(free_fd->fd);
-							free_fd->fd = -1;
-						}
+						safe_close(&(free_fd->fd));
 
 						/* Queue cleanup, this also frees the client struct */
 						add_to_lvmqueue(free_fd, NULL, 0, NULL);
@@ -1091,10 +1096,7 @@
 			thisfd->bits.localsock.pipe_client->bits.pipe.client =
 			    NULL;
 
-		if (thisfd->fd >= 0) {
-			close(thisfd->fd);
-			thisfd->fd = -1;
-		}
+		safe_close(&(thisfd->fd));
 		return 0;
 	} else {
 		int comms_pipe[2];


             reply	other threads:[~2010-10-27 11:40 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-27 11:40 mornfall [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-03-27 16:59 mbroz
2012-03-23  9:43 zkabelac
2012-02-28 10:42 zkabelac
2012-02-27 10:17 zkabelac
2012-02-08 13:03 zkabelac
2012-01-26 17:55 zkabelac
2012-01-25 22:36 zkabelac
2011-10-11 10:06 zkabelac
2011-10-11  9:56 zkabelac
2011-10-11  9:23 zkabelac
2011-10-11  9:18 zkabelac
2011-03-30 12:48 zkabelac
2011-02-28 19:50 zkabelac
2011-01-05 12:17 zkabelac
2010-12-22 14:00 zkabelac
2010-12-20 13:48 zkabelac
2010-11-29 12:44 zkabelac
2010-10-27  9:13 mornfall
2010-10-26  9:57 zkabelac
2010-10-26  9:01 zkabelac
2009-04-22 10:38 mbroz
2005-08-09 10:39 pcaulfield
2004-09-30 14:16 pcaulfield
2004-09-23 12:51 pcaulfield

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101027114015.26986.qmail@sourceware.org \
    --to=mornfall@sourceware.org \
    --cc=lvm-devel@redhat.com \
    --cc=lvm2-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).