git: tmpfs - Fix write-append/mmap-read race

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Jul 3 22:00:37 PDT 2015


commit b37a7c00afef1d167a3d2e2de799d16d733854f2
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Jul 3 21:55:10 2015 -0700

    tmpfs - Fix write-append/mmap-read race
    
    * tmpfs_write() was not extending the target file atomically with the
      write via a file node lock.  Although the vnode is locked exclusively,
      this only prevents read() and write() related races.  lseek() and memory
      mapped reads could still race.
    
    * Adjust the NODE LOCK to cover the entire tmpfs_write() operation.  This
      fixes races against lseek() or stat() which would otherwise allow the
      new post-append file size to be returned before the write completes.
    
    						-Matt
    
    Reported-by: Ben Woolley <tautolog at gmail.com>

Summary of changes:
 sys/vfs/tmpfs/tmpfs.h       |  4 ++--
 sys/vfs/tmpfs/tmpfs_subr.c  | 21 ++++++++-------------
 sys/vfs/tmpfs/tmpfs_vnops.c | 23 +++++++++++++----------
 3 files changed, 23 insertions(+), 25 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/b37a7c00afef1d167a3d2e2de799d16d733854f2


-- 
DragonFly BSD source repository



More information about the Commits mailing list