diff options
author | gonzo <gonzo@FreeBSD.org> | 2008-06-22 14:34:38 +0000 |
---|---|---|
committer | gonzo <gonzo@FreeBSD.org> | 2008-06-22 14:34:38 +0000 |
commit | 7fd85e5a638cc3e2d16089cf3cedca92b49da839 (patch) | |
tree | 7a1b1b3548c3a7613f9aba91b5dcb366c637518e /sys/fs | |
parent | cbe6e0e8b0f1016a5de8a482fb200837a7df2826 (diff) | |
download | FreeBSD-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
Diffstat (limited to 'sys/fs')
-rw-r--r-- | sys/fs/devfs/devfs_rule.c | 6 |
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; |