On Wed, 15 Jan 2025 05:35:20 -0800 Breno Leitao wrote: > + WARN_ON_ONCE(userdata_len + sysdata_len > > + MAX_EXTRADATA_ENTRY_LEN * MAX_EXTRADATA_ITEMS); > + > + /* nt->sysdata_length will be used later to decide if the message > + * needs to be fragmented. > + * userdata_len cannot be used for it, once next sysdata append should > + * start from the same userdata_len location, and only overwrite old > + * sysdata. > + */ > + nt->sysdata_length = sysdata_len; Updating nt-> fields at runtime is something we haven't done before, right? What's the locking? We depend on target_list_lock ? Looks like previously all the data was on the stack, now we have a mix. Maybe we can pack all the bits of state into a struct for easier passing around, but still put it on the stack?