Page MenuHomeFreeBSD

D31832.id94651.diff
No OneTemporary

D31832.id94651.diff

Index: sys/kern/subr_bus.c
===================================================================
--- sys/kern/subr_bus.c
+++ sys/kern/subr_bus.c
@@ -267,6 +267,7 @@
sbuf_new_for_sysctl(&sb, NULL, 1024, req);
sbuf_clear_flags(&sb, SBUF_INCLUDENUL);
+ bus_topo_lock();
switch (arg2) {
case DEVICE_SYSCTL_DESC:
sbuf_cat(&sb, dev->desc ? dev->desc : "");
@@ -284,10 +285,12 @@
sbuf_cat(&sb, dev->parent ? dev->parent->nameunit : "");
break;
default:
- sbuf_delete(&sb);
- return (EINVAL);
+ error = EINVAL;
+ goto out;
}
error = sbuf_finish(&sb);
+out:
+ bus_topo_unlock();
sbuf_delete(&sb);
return (error);
}
@@ -307,33 +310,33 @@
dev->nameunit + strlen(dc->name),
CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "", "device_index");
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree),
- OID_AUTO, "%desc", CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ OID_AUTO, "%desc", CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, DEVICE_SYSCTL_DESC, device_sysctl_handler, "A",
"device description");
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree),
OID_AUTO, "%driver",
- CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, DEVICE_SYSCTL_DRIVER, device_sysctl_handler, "A",
"device driver name");
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree),
OID_AUTO, "%location",
- CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, DEVICE_SYSCTL_LOCATION, device_sysctl_handler, "A",
"device location relative to parent");
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree),
OID_AUTO, "%pnpinfo",
- CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, DEVICE_SYSCTL_PNPINFO, device_sysctl_handler, "A",
"device identification");
SYSCTL_ADD_PROC(&dev->sysctl_ctx, SYSCTL_CHILDREN(dev->sysctl_tree),
OID_AUTO, "%parent",
- CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, DEVICE_SYSCTL_PARENT, device_sysctl_handler, "A",
"parent device");
if (bus_get_domain(dev, &domain) == 0)
SYSCTL_ADD_INT(&dev->sysctl_ctx,
SYSCTL_CHILDREN(dev->sysctl_tree), OID_AUTO, "%domain",
- CTLFLAG_RD, NULL, domain, "NUMA domain");
+ CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, domain, "NUMA domain");
}
static void

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 5, 9:11 AM (45 m, 14 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29279547
Default Alt Text
D31832.id94651.diff (2 KB)

Event Timeline