Add a kernel function to delist our kernel character devices, so that
the device name can be re-used right away in case we are destroying the character devices in the background. MFC after: 4 days Reported by: dchagin@
This commit is contained in:
parent
c24341d2e3
commit
07dbde6777
@ -2019,7 +2019,10 @@ usb_destroy_dev(struct usb_fs_privdata *pd)
|
||||
usb_destroy_dev_sync(pd);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* make sure we can re-use the device name */
|
||||
delist_dev(pd->cdev);
|
||||
|
||||
USB_BUS_LOCK(bus);
|
||||
LIST_INSERT_HEAD(&bus->pd_cleanup_list, pd, pd_next);
|
||||
/* get cleanup going */
|
||||
|
@ -1114,6 +1114,23 @@ destroy_devl(struct cdev *dev)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
delist_dev_locked(struct cdev *dev)
|
||||
{
|
||||
struct cdev *child;
|
||||
devfs_destroy(dev);
|
||||
LIST_FOREACH(child, &dev->si_children, si_siblings)
|
||||
delist_dev_locked(child);
|
||||
}
|
||||
|
||||
void
|
||||
delist_dev(struct cdev *dev)
|
||||
{
|
||||
dev_lock();
|
||||
delist_dev_locked(dev);
|
||||
dev_unlock();
|
||||
}
|
||||
|
||||
void
|
||||
destroy_dev(struct cdev *dev)
|
||||
{
|
||||
|
@ -245,6 +245,7 @@ void clone_cleanup(struct clonedevs **);
|
||||
int clone_create(struct clonedevs **, struct cdevsw *, int *unit, struct cdev **dev, int extra);
|
||||
|
||||
int count_dev(struct cdev *_dev);
|
||||
void delist_dev(struct cdev *_dev);
|
||||
void destroy_dev(struct cdev *_dev);
|
||||
int destroy_dev_sched(struct cdev *dev);
|
||||
int destroy_dev_sched_cb(struct cdev *dev, void (*cb)(void *), void *arg);
|
||||
|
Loading…
x
Reference in New Issue
Block a user