summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgonzo <gonzo@FreeBSD.org>2008-06-22 14:34:38 +0000
committergonzo <gonzo@FreeBSD.org>2008-06-22 14:34:38 +0000
commit7fd85e5a638cc3e2d16089cf3cedca92b49da839 (patch)
tree7a1b1b3548c3a7613f9aba91b5dcb366c637518e
parentcbe6e0e8b0f1016a5de8a482fb200837a7df2826 (diff)
downloadFreeBSD-src-7fd85e5a638cc3e2d16089cf3cedca92b49da839.zip
FreeBSD-src-7fd85e5a638cc3e2d16089cf3cedca92b49da839.tar.gz
Get pointer to devfs_ruleset struct after garbage collection has been
performed. Otherwise if ruleset is used by given mountpoint and is empty it's freed by devfs_ruleset_reap and pointer becomes bogus. Submitted by: Mateusz Guzik <mjguzik@gmail.com> PR: kern/124853
-rw-r--r--sys/fs/devfs/devfs_rule.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/fs/devfs/devfs_rule.c b/sys/fs/devfs/devfs_rule.c
index bb7ebd1..bc1f32c 100644
--- a/sys/fs/devfs/devfs_rule.c
+++ b/sys/fs/devfs/devfs_rule.c
@@ -735,15 +735,15 @@ devfs_ruleset_use(devfs_rsnum rsnum, struct devfs_mount *dm)
{
struct devfs_ruleset *cds, *ds;
- ds = devfs_ruleset_bynum(rsnum);
- if (ds == NULL)
- ds = devfs_ruleset_create(rsnum);
if (dm->dm_ruleset != 0) {
cds = devfs_ruleset_bynum(dm->dm_ruleset);
--cds->ds_refcount;
devfs_ruleset_reap(cds);
}
+ ds = devfs_ruleset_bynum(rsnum);
+ if (ds == NULL)
+ ds = devfs_ruleset_create(rsnum);
/* These should probably be made atomic somehow. */
++ds->ds_refcount;
dm->dm_ruleset = rsnum;
OpenPOWER on IntegriCloud