CAM: Use sbuf_new_for_sysctl() in more places

There is no need to allocate buffer, worry about overflows, etc.

MFC after:	2 weeks

(cherry picked from commit 1b44079584dc317230cf810c0fe0a8c401a5c791)
This commit is contained in:
Alexander Motin 2023-11-22 15:32:16 -05:00
parent 3a8271dc1d
commit f035d56e71
2 changed files with 8 additions and 16 deletions

View file

@ -1426,7 +1426,6 @@ adazonemodesysctl(SYSCTL_HANDLER_ARGS)
static int
adazonesupsysctl(SYSCTL_HANDLER_ARGS)
{
char tmpbuf[180];
struct ada_softc *softc;
struct sbuf sb;
int error, first;
@ -1434,15 +1433,14 @@ adazonesupsysctl(SYSCTL_HANDLER_ARGS)
softc = (struct ada_softc *)arg1;
error = 0;
first = 1;
sbuf_new(&sb, tmpbuf, sizeof(tmpbuf), 0);
sbuf_new_for_sysctl(&sb, NULL, 0, req);
for (i = 0; i < sizeof(ada_zone_desc_table) /
sizeof(ada_zone_desc_table[0]); i++) {
if (softc->zone_flags & ada_zone_desc_table[i].value) {
if (first == 0)
sbuf_printf(&sb, ", ");
sbuf_cat(&sb, ", ");
else
first = 0;
sbuf_cat(&sb, ada_zone_desc_table[i].desc);
@ -1452,10 +1450,8 @@ adazonesupsysctl(SYSCTL_HANDLER_ARGS)
if (first == 1)
sbuf_printf(&sb, "None");
sbuf_finish(&sb);
error = sysctl_handle_string(oidp, sbuf_data(&sb), sbuf_len(&sb), req);
error = sbuf_finish(&sb);
sbuf_delete(&sb);
return (error);
}

View file

@ -2735,7 +2735,6 @@ dazonemodesysctl(SYSCTL_HANDLER_ARGS)
static int
dazonesupsysctl(SYSCTL_HANDLER_ARGS)
{
char tmpbuf[180];
struct da_softc *softc;
struct sbuf sb;
int error, first;
@ -2743,15 +2742,14 @@ dazonesupsysctl(SYSCTL_HANDLER_ARGS)
softc = (struct da_softc *)arg1;
error = 0;
first = 1;
sbuf_new(&sb, tmpbuf, sizeof(tmpbuf), 0);
sbuf_new_for_sysctl(&sb, NULL, 0, req);
for (i = 0; i < sizeof(da_zone_desc_table) /
sizeof(da_zone_desc_table[0]); i++) {
if (softc->zone_flags & da_zone_desc_table[i].value) {
if (first == 0)
sbuf_printf(&sb, ", ");
sbuf_cat(&sb, ", ");
else
first = 0;
sbuf_cat(&sb, da_zone_desc_table[i].desc);
@ -2761,10 +2759,8 @@ dazonesupsysctl(SYSCTL_HANDLER_ARGS)
if (first == 1)
sbuf_printf(&sb, "None");
sbuf_finish(&sb);
error = sysctl_handle_string(oidp, sbuf_data(&sb), sbuf_len(&sb), req);
error = sbuf_finish(&sb);
sbuf_delete(&sb);
return (error);
}