• 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
mqueue.c 29.2 KB