• M
    [PATCH] fuse: fix bitfield race · 095da6cb
    Miklos Szeredi 提交于
    Fix race in setting bitfields of fuse_conn.  Spotted by Andrew Morton.
    
    The two fields ->connected and ->mounted were always changed with the
    fuse_lock held.  But other bitfields in the same structure were changed
    without the lock.  In theory this could lead to losing the assignment of
    even the ones under lock.  The chosen solution is to change these two
    fields to be a full unsigned type.  The other bitfields aren't "important"
    enough to warrant the extra complexity of full locking or changing them to
    bitops.
    
    For all bitfields document why they are safe wrt. concurrent
    assignments.
    
    Also make the initialization of the 'num_waiting' atomic counter explicit.
    Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    095da6cb
fuse_i.h 11.3 KB