svn commit: r340208 - in head/sys: kern sys
Mark Johnston
markj at FreeBSD.org
Tue Nov 6 23:41:46 UTC 2018
Author: markj
Date: Tue Nov 6 23:41:44 2018
New Revision: 340208
URL: https://svnweb.freebsd.org/changeset/base/340208
Log:
Avoid fixing the tty_info() buffer size in tty.h.
Different compilation units may otherwise get a different view of the
layout of struct tty depending on whether they include opt_printf.h.
This caused a blowup in the number of types defined in the kernel's
CTF file after r339468; thanks to dim@ for bisecting down to that
revision.
PR: 232675
Reported by: dim
Reviewed by: cem (previous version)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17877
Modified:
head/sys/kern/tty.c
head/sys/kern/tty_info.c
head/sys/sys/tty.h
Modified: head/sys/kern/tty.c
==============================================================================
--- head/sys/kern/tty.c Tue Nov 6 22:50:50 2018 (r340207)
+++ head/sys/kern/tty.c Tue Nov 6 23:41:44 2018 (r340208)
@@ -33,6 +33,7 @@
__FBSDID("$FreeBSD$");
#include "opt_capsicum.h"
+#include "opt_printf.h"
#include <sys/param.h>
#include <sys/capsicum.h>
@@ -106,6 +107,12 @@ SYSCTL_INT(_kern, OID_AUTO, tty_drainwait, CTLFLAG_RWT
#define TTYBUF_MAX 65536
+#ifdef PRINTF_BUFR_SIZE
+#define TTY_PRBUF_SIZE PRINTF_BUFR_SIZE
+#else
+#define TTY_PRBUF_SIZE 256
+#endif
+
/*
* Allocate buffer space if necessary, and set low watermarks, based on speed.
* Note that the ttyxxxq_setsize() functions may drop and then reacquire the tty
@@ -1051,7 +1058,9 @@ tty_alloc_mutex(struct ttydevsw *tsw, void *sc, struct
PATCH_FUNC(busy);
#undef PATCH_FUNC
- tp = malloc(sizeof(struct tty), M_TTY, M_WAITOK|M_ZERO);
+ tp = malloc(sizeof(struct tty) + TTY_PRBUF_SIZE, M_TTY,
+ M_WAITOK | M_ZERO);
+ tp->t_prbufsz = TTY_PRBUF_SIZE;
tp->t_devsw = tsw;
tp->t_devswsoftc = sc;
tp->t_flags = tsw->tsw_flags;
Modified: head/sys/kern/tty_info.c
==============================================================================
--- head/sys/kern/tty_info.c Tue Nov 6 22:50:50 2018 (r340207)
+++ head/sys/kern/tty_info.c Tue Nov 6 23:41:44 2018 (r340208)
@@ -271,7 +271,7 @@ tty_info(struct tty *tp)
if (tty_checkoutq(tp) == 0)
return;
- (void)sbuf_new(&sb, tp->t_prbuf, sizeof(tp->t_prbuf), SBUF_FIXEDLEN);
+ (void)sbuf_new(&sb, tp->t_prbuf, tp->t_prbufsz, SBUF_FIXEDLEN);
sbuf_set_drain(&sb, sbuf_tty_drain, tp);
/* Print load average. */
Modified: head/sys/sys/tty.h
==============================================================================
--- head/sys/sys/tty.h Tue Nov 6 22:50:50 2018 (r340207)
+++ head/sys/sys/tty.h Tue Nov 6 23:41:44 2018 (r340208)
@@ -133,12 +133,8 @@ struct tty {
void *t_hooksoftc; /* (t) Soft config, for hooks. */
struct cdev *t_dev; /* (c) Primary character device. */
-#ifndef PRINTF_BUFR_SIZE
-#define TTY_PRINTF_SIZE 256
-#else
-#define TTY_PRINTF_SIZE PRINTF_BUFR_SIZE
-#endif
- char t_prbuf[TTY_PRINTF_SIZE]; /* (t) */
+ size_t t_prbufsz; /* (t) SIGINFO buffer size. */
+ char t_prbuf[]; /* (t) SIGINFO buffer. */
};
/*
More information about the svn-src-all
mailing list