On Tue, 17 Dec 2024 16:02:34 -0800 Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > On Tue, 17 Dec 2024 at 15:32, Linus Torvalds > <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > But if you look more closely, you'll see that the way the buffer is > > managed is actually not as a word array at all, but using > > > > char *str, *end; > > > > instead of word pointers. > > Oh, and in addition to the smaller-than-int types ('%c' and '%hd' > etc), pointers that get dereferenced also get written as a byte string > to that word array. There might be other cases too. > > So it's really a fairly odd kind of "sometimes words, sometimes not" > array, with the size of the array given in words. > > That binary printf is very strange. Note that at least on the tracing user space side, as trace_printk() is never used in production systems and mostly just used for debugging, we can be pretty liberal if I have to change libtraceevent. I could even add an update to the format file to have the library stay backward compatible with older kernels and can see that the format file has been updated to know that the vbin_printf() has changed. -- Steve