s3:smbd: fix file corruption using "write cache size != 0"
authorStefan Metzmacher <metze@samba.org>
Fri, 7 Nov 2014 23:57:40 +0000 (15:57 -0800)
committerKarolin Seeger <kseeger@samba.org>
Sun, 9 Nov 2014 21:51:19 +0000 (22:51 +0100)
A client can:
- open a handle (h1)
- write some data to h1.
- open a 2nd handle h2 (downgrades both handles to level II)
- try to read the data on h2 (this gets old data)

Bug: https://bugzilla.samba.org/show_bug.cgi?id=10921

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(v4-0-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-0-test): Sun Nov  9 22:51:19 CET 2014 on sn-devel-104

source3/smbd/oplock.c

index 95d88ef3813fb19dae14e3e27f52e99b4c180bc5..045fd46967d3faebb024fce1417cfe13167d2227 100644 (file)
@@ -151,6 +151,9 @@ static void downgrade_file_oplock(files_struct *fsp)
        sconn->oplocks.level_II_open++;
        fsp->sent_oplock_break = NO_BREAK_SENT;
 
+       flush_write_cache(fsp, OPLOCK_RELEASE_FLUSH);
+       delete_write_cache(fsp);
+
        TALLOC_FREE(fsp->oplock_timeout);
 }