• Vladimir Davydov's avatar
    mqueue: sys_mq_open: do not call mnt_drop_write() if read-only · 38d78e58
    Vladimir Davydov authored
    mnt_drop_write() must be called only if mnt_want_write() succeeded,
    otherwise the mnt_writers counter will diverge.
    
    mnt_writers counters are used to check if remounting FS as read-only is
    OK, so after an extra mnt_drop_write() call, it would be impossible to
    remount mqueue FS as read-only.  Besides, on umount a warning would be
    printed like this one:
    
      =====================================
      [ BUG: bad unlock balance detected! ]
      3.9.0-rc3 #5 Not tainted
      -------------------------------------
      a.out/12486 is trying to release lock (sb_writers) at:
      mnt_drop_write+0x1f/0x30
      but there are no more locks to release!
    Signed-off-by: default avatarVladimir Davydov <vdavydov@parallels.com>
    Cc: Doug Ledford <dledford@redhat.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    38d78e58
mqueue.c 35.1 KB