]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] set_anon_super locking fix
authorAndrew Morton <akpm@osdl.org>
Sun, 18 Apr 2004 03:55:56 +0000 (20:55 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sun, 18 Apr 2004 03:55:56 +0000 (20:55 -0700)
Take the idr's lock while removing an element on the error path.  Spotted by
Nathan Lynch <nathanl@austin.ibm.com>.

fs/super.c

index 9aa36aee628a8538035bdbf6d98384d0d1e28574..f20abf04f8a54b11a565729e656e893d67243d7a 100644 (file)
@@ -562,7 +562,9 @@ int set_anon_super(struct super_block *s, void *data)
        spin_unlock(&unnamed_dev_lock);
 
        if ((dev & MAX_ID_MASK) == (1 << MINORBITS)) {
+               spin_lock(&unnamed_dev_lock);
                idr_remove(&unnamed_dev_idr, dev);
+               spin_unlock(&unnamed_dev_lock);
                return -EMFILE;
        }
        s->s_dev = MKDEV(0, dev & MINORMASK);