summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_ktr.c
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2013-02-08 07:29:07 +0000
committeravg <avg@FreeBSD.org>2013-02-08 07:29:07 +0000
commitce73fe0e978453dce99555cea3e42b111ab3bb45 (patch)
tree87ca74fe0982f91d2ebeed91d4ad770cab165d68 /sys/kern/kern_ktr.c
parent89d287b04017254988cbc3d9d57a802dc0ba92b3 (diff)
downloadFreeBSD-src-ce73fe0e978453dce99555cea3e42b111ab3bb45.zip
FreeBSD-src-ce73fe0e978453dce99555cea3e42b111ab3bb45.tar.gz
ktr: correctly handle possible wrap-around in the boot buffer
Older entries should be 'before' newer entries in the new buffer too and there should be no zero-filled gap between them. Pointed out by: jhb MFC after: 3 days X-MFC with: r246282
Diffstat (limited to 'sys/kern/kern_ktr.c')
-rw-r--r--sys/kern/kern_ktr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_ktr.c b/sys/kern/kern_ktr.c
index a11c76c..3202b9b 100644
--- a/sys/kern/kern_ktr.c
+++ b/sys/kern/kern_ktr.c
@@ -213,7 +213,11 @@ ktr_entries_initializer(void *dummy __unused)
ktr_mask = 0;
ktr_buf = malloc(sizeof(*ktr_buf) * KTR_ENTRIES, M_KTR,
M_WAITOK | M_ZERO);
- memcpy(ktr_buf, ktr_buf_init, sizeof(ktr_buf_init));
+ memcpy(ktr_buf, ktr_buf_init + ktr_idx,
+ (KTR_BOOT_ENTRIES - ktr_idx) * sizeof(*ktr_buf));
+ if (ktr_idx != 0)
+ memcpy(ktr_buf + KTR_BOOT_ENTRIES - ktr_idx, ktr_buf_init,
+ ktr_idx * sizeof(*ktr_buf));
ktr_entries = KTR_ENTRIES;
ktr_mask = mask;
}
OpenPOWER on IntegriCloud