Author: vlendec
Date: 2005-08-03 00:20:34 +0000 (Wed, 03 Aug 2005)
New Revision: 8967

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8967

Log:
Hint from Jeremy: We need to call delay_for_oplocks with the share mode entry
locked, as we decide to grant an oplock and later then entry that oplock
entry. This needs to be protected.

Volker

Modified:
   trunk/source/smbd/open.c


Changeset:
Modified: trunk/source/smbd/open.c
===================================================================
--- trunk/source/smbd/open.c    2005-08-03 00:08:28 UTC (rev 8966)
+++ trunk/source/smbd/open.c    2005-08-03 00:20:34 UTC (rev 8967)
@@ -1590,6 +1590,8 @@
                dev = psbuf->st_dev;
                inode = psbuf->st_ino;
 
+               lock_share_entry(dev, inode);
+
                /* delay_for_oplocks might delete the fsp */
                open_time = fsp->open_time;
                if (delay_for_oplocks(fsp, second_try)) {
@@ -1601,11 +1603,10 @@
                        defer_open(&open_time,
                                   (OPLOCK_BREAK_TIMEOUT*2) * 1000000,
                                   fname, dev, inode);
+                       unlock_share_entry(dev, inode);
                        return NULL;
                }
 
-               lock_share_entry(dev, inode);
-
                num_share_modes = open_mode_check(conn, fname, dev, inode,
                                                  access_mask, share_access,
                                                  create_options,

Reply via email to