Skip to content

Commit 2346837

Browse files
committed
devclass: make devclass_alloc_unit use M_NOWAIT
The only caller already does this. The routine can be called with a mutex held making M_WAITOK illegal. Sponsored by: Rubicon Communications, LLC ("Netgate")
1 parent 23f453a commit 2346837

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

sys/kern/subr_bus.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,6 +1208,7 @@ devclass_get_sysctl_tree(devclass_t dc)
12081208
static int
12091209
devclass_alloc_unit(devclass_t dc, device_t dev, int *unitp)
12101210
{
1211+
device_t *devices;
12111212
const char *s;
12121213
int unit = *unitp;
12131214

@@ -1264,8 +1265,11 @@ devclass_alloc_unit(devclass_t dc, device_t dev, int *unitp)
12641265
int newsize;
12651266

12661267
newsize = unit + 1;
1267-
dc->devices = reallocf(dc->devices,
1268-
newsize * sizeof(*dc->devices), M_BUS, M_WAITOK);
1268+
devices = reallocf(dc->devices,
1269+
newsize * sizeof(*dc->devices), M_BUS, M_NOWAIT);
1270+
if (devices == NULL)
1271+
return (ENOMEM);
1272+
dc->devices = devices;
12691273
memset(dc->devices + dc->maxunit, 0,
12701274
sizeof(device_t) * (newsize - dc->maxunit));
12711275
dc->maxunit = newsize;

0 commit comments

Comments
 (0)