+
+struct sized_alloc *sized_kzmalloc(size_t size, int flags)
+{
+ struct sized_alloc *sza;
+
+ sza = kzmalloc(sizeof(struct sized_alloc) + size, flags);
+ if (!sza)
+ return NULL;
+ sza->buf = sza + 1;
+ sza->size = size;
+ return sza;
+}
+
+void sza_printf(struct sized_alloc *sza, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ sza->sofar += vsnprintf(sza->buf + sza->sofar, sza->size - sza->sofar,
+ fmt, ap);
+ va_end(ap);
+}