[PATCH 1/2] Cygwin: lockf: Fix adding a new lock over multiple locks
Takashi Yano
takashi.yano@nifty.ne.jp
Sun Oct 20 09:26:36 GMT 2024
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
More information about the Cygwin-patches
mailing list