s3: delete requests are not special
authorVolker Lendecke <vl@samba.org>
Mon, 10 Sep 2012 09:25:03 +0000 (11:25 +0200)
committerKarolin Seeger <kseeger@samba.org>
Fri, 21 Sep 2012 07:44:43 +0000 (09:44 +0200)
The only difference between batch and exclusive oplocks is the time of
the check: Batch is checked before the share mode check, exclusive after.

Signed-off-by: Jeremy Allison <jra@samba.org>
Fix bug #9150 - Valid open requests can cause smbd assert due to incorrect
oplock handling on delete requests.
(cherry picked from commit b20ca77e2a9d111eb2e77d0b804fe7505b07e418)

source3/smbd/open.c

index dfa45ef739a868b201eff51b14de8c035d5d5810..843bb2b6a8f44ab6e9df7a701c5a372dd15b3e43 100644 (file)
@@ -894,11 +894,6 @@ static NTSTATUS open_mode_check(connection_struct *conn,
        return NT_STATUS_OK;
 }
 
-static bool is_delete_request(files_struct *fsp) {
-       return ((fsp->access_mask == DELETE_ACCESS) &&
-               (fsp->oplock_type == NO_OPLOCK));
-}
-
 /*
  * Send a break message to the oplock holder and delay the open for
  * our client.
@@ -1002,13 +997,9 @@ static bool delay_for_oplocks(struct share_mode_lock *lck,
        }
 
        if (exclusive != NULL) { /* Found an exclusive oplock */
-               bool delay_it = is_delete_request(fsp) ?
-                               BATCH_OPLOCK_TYPE(exclusive->op_type) : true;
                SMB_ASSERT(!have_level2);
-               if (delay_it) {
-                       send_break_message(fsp, exclusive, mid, oplock_request);
-                       return true;
-               }
+               send_break_message(fsp, exclusive, mid, oplock_request);
+               return true;
        }
 
        /*