Skip site navigation (1)Skip section navigation (2)


| raw e-mail | index | archive | help
```
[root@freebsd-main ~]# dtrace -n 'fbt::dev_ref:entry {printf("[%s]: invoke
dev_ref: %s, refcount:%d", execname, args[0]->si_name, args[0]->si_refcount=
)}'
dtrace: description 'fbt::dev_ref:entry ' matched 1 probe
CPU     ID                    FUNCTION:NAME
  1  43845                    dev_ref:entry [sshd]: invoke dev_ref: hpet0,
refcount:11
  0  43845                    dev_ref:entry [sshd]: invoke dev_ref: hpet0,
refcount:12
  0  43845                    dev_ref:entry [bash]: invoke dev_ref: hpet0,
refcount:13
  1  43845                    dev_ref:entry [resizewin]: invoke dev_ref: hp=
et0,
refcount:14
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:15
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:16
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:17
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:18
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:19
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:20
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:21
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:22
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:23
  1  43845                    dev_ref:entry [sysctl]: invoke dev_ref: hpet0,
refcount:24
  1  43845                    dev_ref:entry [sh]: invoke dev_ref: hpet0,
refcount:25
  1  43845                    dev_ref:entry [atrun]: invoke dev_ref: hpet0,
refcount:26
```

this cdev->si_refcount leak might have kernel panic risk if enable KASSERT(=
),
see dev_rel()
```
void
dev_rel(struct cdev *dev)
{
        int flag =3D 0;

        dev_lock_assert_unlocked();
        dev_lock();
        dev->si_refcount--;
        KASSERT(dev->si_refcount >=3D 0,
            ("dev_rel(%s) gave negative count", devtoname(dev)));
        if (dev->si_devsw =3D=3D NULL && dev->si_refcount =3D=3D 0) {
                LIST_REMOVE(dev, si_list);
                flag =3D 1;
        }
        dev_unlock();
        if (flag)
                devfs_free(dev);
}
```

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?>