]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
locking: Make share_mode_watch_send() take "share_mode_lock"
authorVolker Lendecke <vl@samba.org>
Tue, 3 Nov 2020 16:36:08 +0000 (17:36 +0100)
committerJeremy Allison <jra@samba.org>
Tue, 10 Nov 2020 19:49:34 +0000 (19:49 +0000)
This makes clear that this can only be done under a lock

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/locking/share_mode_lock.c
source3/locking/share_mode_lock.h
source3/smbd/blocking.c
source3/smbd/open.c
source3/smbd/smb2_lock.c
source3/smbd/smb2_setinfo.c

index f4f563ee37c011548826d30dea2aac5470d2fcf8..6ac6016e5e04aff241fe1a2f8ccbb53b1e308c4a 100644 (file)
@@ -1131,10 +1131,10 @@ static void share_mode_watch_done(struct tevent_req *subreq);
 struct tevent_req *share_mode_watch_send(
        TALLOC_CTX *mem_ctx,
        struct tevent_context *ev,
-       struct file_id id,
+       struct share_mode_lock *lck,
        struct server_id blocker)
 {
-       TDB_DATA key = locking_key(&id);
+       TDB_DATA key = locking_key(&lck->data->id);
        struct tevent_req *req = NULL, *subreq = NULL;
        struct share_mode_watch_state *state = NULL;
 
index f2f35d994872de5230308e8b86083ea4ff9eb344..b2076254acee9b4e6f63ea8883f0719d218d1755 100644 (file)
@@ -101,7 +101,7 @@ bool share_mode_have_entries(struct share_mode_lock *lck);
 struct tevent_req *share_mode_watch_send(
        TALLOC_CTX *mem_ctx,
        struct tevent_context *ev,
-       struct file_id id,
+       struct share_mode_lock *lck,
        struct server_id blocker);
 NTSTATUS share_mode_watch_recv(
        struct tevent_req *req, bool *blockerdead, struct server_id *blocker);
index 30bb84c0a7bd6344f6c72aef691bd6d223b9a71c..ef2fe321f5c296601839a508d64594c02bcb0a5a 100644 (file)
@@ -578,7 +578,7 @@ static void smbd_smb1_do_locks_try(struct tevent_req *req)
 
 setup_retry:
        subreq = share_mode_watch_send(
-               state, state->ev, lck->data->id, blocking_pid);
+               state, state->ev, lck, blocking_pid);
        if (tevent_req_nomem(subreq, req)) {
                goto done;
        }
index b7f050b80dece64fd54a2588ce524ab4417e03c7..1419fb5128d46fad84ff9626439c51ba62c513d1 100644 (file)
@@ -2772,7 +2772,7 @@ static void defer_open(struct share_mode_lock *lck,
        watch_req = share_mode_watch_send(
                watch_state,
                req->sconn->ev_ctx,
-               lck->data->id,
+               lck,
                (struct server_id){0});
        if (watch_req == NULL) {
                exit_server("Could not watch share mode record");
@@ -2893,7 +2893,7 @@ static bool setup_poll_open(
                open_rec->watch_req = share_mode_watch_send(
                        open_rec,
                        req->sconn->ev_ctx,
-                       lck->data->id,
+                       lck,
                        (struct server_id) {0});
                if (open_rec->watch_req == NULL) {
                        DBG_WARNING("share_mode_watch_send failed\n");
index 12ad12aaf934369f92cc0e5101c0d53cbe1edd2f..b07c9ff93c0a01f763526e3f4f57591d2fb6db89 100644 (file)
@@ -669,7 +669,7 @@ setup_retry:
        DBG_DEBUG("Watching share mode lock\n");
 
        subreq = share_mode_watch_send(
-               state, state->ev, lck->data->id, blocking_pid);
+               state, state->ev, lck, blocking_pid);
        TALLOC_FREE(lck);
        if (tevent_req_nomem(subreq, req)) {
                return;
index bd2caab862a3d77cb1f64eed4eabb99213b53de2..c8071a73498a36b9be5606cde472236ca38e1f37 100644 (file)
@@ -269,7 +269,7 @@ static struct tevent_req *delay_rename_for_lease_break(struct tevent_req *req,
        subreq = share_mode_watch_send(
                                rename_state,
                                ev,
-                               lck->data->id,
+                               lck,
                                (struct server_id){0});
 
        if (subreq == NULL) {