Skip to content
  • Alexander Viro's avatar
    [PATCH] Fix double decrement of mqueue_mnt->mnt_count in sys_mq_open · 7c7dce92
    Alexander Viro authored
    
    
    Fixed the refcounting on failure exits in sys_mq_open() and
    cleaned the logics up.  Rules are actually pretty simple - dentry_open()
    expects vfsmount and dentry to be pinned down and it either transfers
    them into created struct file or drops them.  Old code had been very
    confused in that area - if dentry_open() had failed either in do_open()
    or do_create(), we ended up dentry and mqueue_mnt dropped twice, once
    by dentry_open() cleanup and then by sys_mq_open().
    
    Fix consists of making the rules for do_create() and do_open()
    same as for dentry_open() and updating the sys_mq_open() accordingly;
    that actually leads to more straightforward code and less work on
    normal path.
    
    Signed-off-by: default avatarAl Viro <aviro@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    7c7dce92