Move the M_WAITOK flag in notify() into an M_NOWAIT one in order to match
the behaviour alredy present with the further malloc() call in devctl_notify(). This fixes a bug in the CAM layer where the camisr handler finished to call camperiphfree() (and subsequently destroy_dev() resulting in a new dev notify) while the xpt lock is held. PR: kern/130330 Tested by: Riccardo Torrini <riccardo dot torrini at esaote dot com>
This commit is contained in:
parent
46990862ab
commit
9995e57b01
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=192535
@ -491,7 +491,9 @@ notify(struct cdev *dev, const char *ev)
|
||||
if (cold)
|
||||
return;
|
||||
namelen = strlen(dev->si_name);
|
||||
data = malloc(namelen + sizeof(prefix), M_TEMP, M_WAITOK);
|
||||
data = malloc(namelen + sizeof(prefix), M_TEMP, M_NOWAIT);
|
||||
if (data == NULL)
|
||||
return;
|
||||
memcpy(data, prefix, sizeof(prefix) - 1);
|
||||
memcpy(data + sizeof(prefix) - 1, dev->si_name, namelen + 1);
|
||||
devctl_notify("DEVFS", "CDEV", ev, data);
|
||||
|
Loading…
Reference in New Issue
Block a user