* [PATCH 0/2] Two libxl misc patches @ 2015-01-07 15:22 Wei Liu 2015-01-07 15:22 ` [PATCH 1/2] libxl_internal: lock_carefd -> carefd Wei Liu 2015-01-07 15:23 ` [PATCH 2/2] libxl_internal: comment on domain userdata unlock function Wei Liu 0 siblings, 2 replies; 7+ messages in thread From: Wei Liu @ 2015-01-07 15:22 UTC (permalink / raw) To: xen-devel; +Cc: Wei Liu These changes were requested by Ian Campbell when relevant patches were posted but they didn't warrant a resend at that time. Wei Liu (2): libxl_internal: lock_carefd -> carefd libxl_internal: comment on domain userdata unlock function tools/libxl/libxl_internal.c | 20 +++++++++++++++++--- tools/libxl/libxl_internal.h | 2 +- 2 files changed, 18 insertions(+), 4 deletions(-) -- 1.7.10.4 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] libxl_internal: lock_carefd -> carefd 2015-01-07 15:22 [PATCH 0/2] Two libxl misc patches Wei Liu @ 2015-01-07 15:22 ` Wei Liu 2015-01-07 16:50 ` Ian Jackson 2015-01-07 15:23 ` [PATCH 2/2] libxl_internal: comment on domain userdata unlock function Wei Liu 1 sibling, 1 reply; 7+ messages in thread From: Wei Liu @ 2015-01-07 15:22 UTC (permalink / raw) To: xen-devel; +Cc: Ian Jackson, Wei Liu, Ian Campbell lock_ prefix is redundant. Signed-off-by: Wei Liu <wei.liu2@citrix.com> Cc: Ian Campbell <ian.campbell@citrix.com> Cc: Ian Jackson <ian.jackson@eu.citrix.com> --- tools/libxl/libxl_internal.c | 6 +++--- tools/libxl/libxl_internal.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c index 00c3b1e..9d8025d 100644 --- a/tools/libxl/libxl_internal.c +++ b/tools/libxl/libxl_internal.c @@ -405,7 +405,7 @@ libxl__domain_userdata_lock *libxl__lock_domain_userdata(libxl__gc *gc, fd = open(lockfile, O_RDWR|O_CREAT, 0666); if (fd < 0) LOGE(ERROR, "cannot open lockfile %s, errno=%d", lockfile, errno); - lock->lock_carefd = libxl__carefd_opened(CTX, fd); + lock->carefd = libxl__carefd_opened(CTX, fd); if (fd < 0) goto out; /* Lock the file in exclusive mode, wait indefinitely to @@ -440,7 +440,7 @@ libxl__domain_userdata_lock *libxl__lock_domain_userdata(libxl__gc *gc, break; } - libxl__carefd_close(lock->lock_carefd); + libxl__carefd_close(lock->carefd); } /* Check the domain is still there, if not we should release the @@ -459,7 +459,7 @@ out: void libxl__unlock_domain_userdata(libxl__domain_userdata_lock *lock) { if (lock->path) unlink(lock->path); - if (lock->lock_carefd) libxl__carefd_close(lock->lock_carefd); + if (lock->carefd) libxl__carefd_close(lock->carefd); free(lock->path); free(lock); } diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 9695f18..3a4e222 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -3522,7 +3522,7 @@ int libxl__cpuid_policy_is_empty(libxl_cpuid_policy_list *pl); /* Portability note: a proper flock(2) implementation is required */ typedef struct { - libxl__carefd *lock_carefd; + libxl__carefd *carefd; char *path; /* path of the lock file itself */ } libxl__domain_userdata_lock; libxl__domain_userdata_lock *libxl__lock_domain_userdata(libxl__gc *gc, -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] libxl_internal: lock_carefd -> carefd 2015-01-07 15:22 ` [PATCH 1/2] libxl_internal: lock_carefd -> carefd Wei Liu @ 2015-01-07 16:50 ` Ian Jackson 0 siblings, 0 replies; 7+ messages in thread From: Ian Jackson @ 2015-01-07 16:50 UTC (permalink / raw) To: Wei Liu; +Cc: Ian Campbell, xen-devel Wei Liu writes ("[PATCH 1/2] libxl_internal: lock_carefd -> carefd"): > lock_ prefix is redundant. Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> (for 4.6) ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] libxl_internal: comment on domain userdata unlock function 2015-01-07 15:22 [PATCH 0/2] Two libxl misc patches Wei Liu 2015-01-07 15:22 ` [PATCH 1/2] libxl_internal: lock_carefd -> carefd Wei Liu @ 2015-01-07 15:23 ` Wei Liu 2015-01-07 16:52 ` Ian Jackson 1 sibling, 1 reply; 7+ messages in thread From: Wei Liu @ 2015-01-07 15:23 UTC (permalink / raw) To: xen-devel; +Cc: Ian Jackson, Wei Liu, Ian Campbell Discuss why we need to unlink file path before closes fd. Signed-off-by: Wei Liu <wei.liu2@citrix.com> Cc: Ian Campbell <ian.campbell@citrix.com> Cc: Ian Jackson <ian.jackson@eu.citrix.com> --- tools/libxl/libxl_internal.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c index 9d8025d..a70214b 100644 --- a/tools/libxl/libxl_internal.c +++ b/tools/libxl/libxl_internal.c @@ -458,6 +458,20 @@ out: void libxl__unlock_domain_userdata(libxl__domain_userdata_lock *lock) { + /* It's important to unlink the file before closing fd to avoid + * such race (if close before unlink): + * + * P1 LOCK P2 UNLOCK + * fd1 = open(lockfile) + * close(fd2) + * flock(fd1) + * fstat and stat check success + * unlink(lockfile) + * return lock + * + * In above case P1 thinks it has got hold of the lock but + * actually lock is released by P2 (lockfile unlinked). + */ if (lock->path) unlink(lock->path); if (lock->carefd) libxl__carefd_close(lock->carefd); free(lock->path); -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] libxl_internal: comment on domain userdata unlock function 2015-01-07 15:23 ` [PATCH 2/2] libxl_internal: comment on domain userdata unlock function Wei Liu @ 2015-01-07 16:52 ` Ian Jackson 2015-01-07 16:57 ` Wei Liu 0 siblings, 1 reply; 7+ messages in thread From: Ian Jackson @ 2015-01-07 16:52 UTC (permalink / raw) To: Wei Liu; +Cc: Ian Campbell, xen-devel Wei Liu writes ("[PATCH 2/2] libxl_internal: comment on domain userdata unlock function"): > Discuss why we need to unlink file path before closes fd. Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> subject to minor grammar complaint: Potential backport candidate for 4.5.1 ? > diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c > index 9d8025d..a70214b 100644 > --- a/tools/libxl/libxl_internal.c > +++ b/tools/libxl/libxl_internal.c > @@ -458,6 +458,20 @@ out: > > void libxl__unlock_domain_userdata(libxl__domain_userdata_lock *lock) > { > + /* It's important to unlink the file before closing fd to avoid > + * such race (if close before unlink): ^^^^ "to avoid the following race". "Such" must refer to a thing which precedes. Ian. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] libxl_internal: comment on domain userdata unlock function 2015-01-07 16:52 ` Ian Jackson @ 2015-01-07 16:57 ` Wei Liu 2015-01-08 17:42 ` Ian Campbell 0 siblings, 1 reply; 7+ messages in thread From: Wei Liu @ 2015-01-07 16:57 UTC (permalink / raw) To: Ian Jackson; +Cc: Wei Liu, Ian Campbell, xen-devel On Wed, Jan 07, 2015 at 04:52:00PM +0000, Ian Jackson wrote: > Wei Liu writes ("[PATCH 2/2] libxl_internal: comment on domain userdata unlock function"): > > Discuss why we need to unlink file path before closes fd. > > Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> > subject to minor grammar complaint: > > Potential backport candidate for 4.5.1 ? > Sure, if you feel this is important. > > diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c > > index 9d8025d..a70214b 100644 > > --- a/tools/libxl/libxl_internal.c > > +++ b/tools/libxl/libxl_internal.c > > @@ -458,6 +458,20 @@ out: > > > > void libxl__unlock_domain_userdata(libxl__domain_userdata_lock *lock) > > { > > + /* It's important to unlink the file before closing fd to avoid > > + * such race (if close before unlink): > ^^^^ > > "to avoid the following race". "Such" must refer to a thing which > precedes. > I suppose you (or Ian C) can fix this when committing? Do I need to resend? Wei. > Ian. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] libxl_internal: comment on domain userdata unlock function 2015-01-07 16:57 ` Wei Liu @ 2015-01-08 17:42 ` Ian Campbell 0 siblings, 0 replies; 7+ messages in thread From: Ian Campbell @ 2015-01-08 17:42 UTC (permalink / raw) To: Wei Liu; +Cc: Ian Jackson, xen-devel On Wed, 2015-01-07 at 16:57 +0000, Wei Liu wrote: > > > diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c > > > index 9d8025d..a70214b 100644 > > > --- a/tools/libxl/libxl_internal.c > > > +++ b/tools/libxl/libxl_internal.c > > > @@ -458,6 +458,20 @@ out: > > > > > > void libxl__unlock_domain_userdata(libxl__domain_userdata_lock *lock) > > > { > > > + /* It's important to unlink the file before closing fd to avoid > > > + * such race (if close before unlink): > > ^^^^ > > > > "to avoid the following race". "Such" must refer to a thing which > > precedes. > > > > I suppose you (or Ian C) can fix this when committing? Do I need to > resend? I've applied both patches and fixed this up. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-01-08 17:42 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-01-07 15:22 [PATCH 0/2] Two libxl misc patches Wei Liu 2015-01-07 15:22 ` [PATCH 1/2] libxl_internal: lock_carefd -> carefd Wei Liu 2015-01-07 16:50 ` Ian Jackson 2015-01-07 15:23 ` [PATCH 2/2] libxl_internal: comment on domain userdata unlock function Wei Liu 2015-01-07 16:52 ` Ian Jackson 2015-01-07 16:57 ` Wei Liu 2015-01-08 17:42 ` Ian Campbell
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.