On Mon, 12 Jul 2021 15:18:05 +0000 Chuck Lever III <chuck.lever@xxxxxxxxxx> wrote: > Hello Steven- > > > On May 13, 2021, at 10:50 AM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > > > > On Wed, 12 May 2021 16:52:05 +0000 > > Chuck Lever III <chuck.lever@xxxxxxxxxx> wrote: > > > >> The underlying need is to support non-NUL-terminated C strings. > >> > >> I assumed that since the commentary around 9a6944fee68e claims > >> the proper way to trace C strings is to use __string and friends, > >> and those do not support non-NUL-terminated strings, that such > >> strings are really not first-class citizens. Thus I concluded > >> that my use of '%.*s' was incorrect. > >> > >> Having some __string-style helpers that can deal with such > >> strings would be valuable. > > > > I guess the best I can do is a strncpy version, that will add the '\0' in > > the ring buffer. That way we don't need to save the length as well (length > > would need to be at least 4 bytes, where as '\0' is one). > > > > Something like this? > > I don't see this change in v5.14-rc1. Grumble. I thought this thread was over with the bug fix that was sent, but completely forgot about this change, as I never made it into a real commit. I can add this now, kick off some tests, and grovel to Linus saying that this is unused code, but other code will depend on this, and I want to get it upstream so that it can. -- Steve > > > > I added "__string_len()" and "__assign_str_len()". You use them just like > > __string() and __assign_str() but add a max length that you want to use > > (although, it will always allocate "len" regardless if the string is > > smaller). Then use __get_str() just like you use __string(). > > > > Would something like that work? > > > > -- Steve > >