From: Volker Lendecke Date: Mon, 10 Sep 2012 09:25:03 +0000 (+0200) Subject: s3: delete requests are not special X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d0a8945ce9f521934d6f580d2b48abce0169a6d;p=thirdparty%2Fsamba.git s3: delete requests are not special 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 Fix bug #9150 - Valid open requests can cause smbd assert due to incorrect oplock handling on delete requests. --- diff --git a/source3/smbd/open.c b/source3/smbd/open.c index 3100ad01876..7d6a25ff296 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -934,11 +934,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. @@ -1083,13 +1078,8 @@ static bool delay_for_exclusive_oplocks(files_struct *fsp, } if (ex_entry != NULL) { - /* Found an exclusive or batch oplock */ - bool delay_it = is_delete_request(fsp) ? - BATCH_OPLOCK_TYPE(ex_entry->op_type) : true; - if (delay_it) { - send_break_message(fsp, ex_entry, mid, oplock_request); - return true; - } + send_break_message(fsp, ex_entry, mid, oplock_request); + return true; } return false; }