[PATCH 1/2] Cygwin: lockf: Fix adding a new lock over multiple locks
Corinna Vinschen
corinna-cygwin@cygwin.com
Tue Oct 22 16:03:42 GMT 2024
Hi Takashi,
On Oct 20 18:26, Takashi Yano wrote:
> Previously, adding a new lock by lockf() over multiple existing locks
> failed. This is due to a bug that lf_setlock() tries to create a lock
> that has already been created. This patch fixes the issue.
>
> Addresses: https://cygwin.com/pipermail/cygwin/2024-October/256528.html
> Fixes: a998dd705576 ("* flock.cc: Implement all advisory file locking here.")
> Reported-by: Christian Franke <Christian.Franke@t-online.de>
> Reviewed-by:
> Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
> ---
> winsup/cygwin/flock.cc | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc
> index 0f1efa01d..5550b3a5b 100644
> --- a/winsup/cygwin/flock.cc
> +++ b/winsup/cygwin/flock.cc
> @@ -1454,13 +1454,14 @@ lf_setlock (lockf_t *lock, inode_t *node, lockf_t **clean, HANDLE fhdl)
> /*
> * Add the new lock before overlap.
> */
> - if (needtolink) {
> + if (needtolink)
> + {
> *prev = lock;
> lock->lf_next = overlap;
> - }
> + lock->create_lock_obj ();
> + }
> overlap->lf_start = lock->lf_end + 1;
> lf_wakelock (overlap, fhdl);
> - lock->create_lock_obj ();
> overlap->create_lock_obj ();
> break;
> }
> --
> 2.45.1
LGTM.
Thanks,
Corinna
More information about the Cygwin-patches
mailing list