summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/drivers/net/netcons_overflow.sh
diff options
context:
space:
mode:
authorGustavo Luiz Duarte <gustavold@gmail.com>2025-11-19 16:14:51 -0800
committerJakub Kicinski <kuba@kernel.org>2025-11-20 18:47:18 -0800
commiteb83801af2dcf60dc10d7c0f5d9cb8289b2af260 (patch)
tree999adf3530497a2f91ad8695b1fc88138eead935 /tools/testing/selftests/drivers/net/netcons_overflow.sh
parent9dc10f50c430d861d4f3d5d0b38efd675f6d76ae (diff)
netconsole: Dynamic allocation of userdata buffer
The userdata buffer in struct netconsole_target is currently statically allocated with a size of MAX_USERDATA_ITEMS * MAX_EXTRADATA_ENTRY_LEN (16 * 256 = 4096 bytes). This wastes memory when userdata entries are not used or when only a few entries are configured, which is common in typical usage scenarios. It also forces us to keep MAX_USERDATA_ITEMS small to limit the memory wasted. Change the userdata buffer from a static array to a dynamically allocated pointer. The buffer is now allocated on-demand in update_userdata() whenever userdata entries are added, modified, or removed via configfs. The implementation calculates the exact size needed for all current userdata entries, allocates a new buffer of that size, formats the entries into it, and atomically swaps it with the old buffer. This approach provides several benefits: - Memory efficiency: Targets with no userdata use zero bytes instead of 4KB, and targets with userdata only allocate what they need; - Scalability: Makes it practical to increase MAX_USERDATA_ITEMS to a much larger value without imposing a fixed memory cost on every target; - No hot-path overhead: Allocation occurs during configuration (write to configfs), not during message transmission If memory allocation fails during userdata update, -ENOMEM is returned to userspace through the configfs attribute write operation. The sysdata buffer remains statically allocated since it has a smaller fixed size (MAX_SYSDATA_ITEMS * MAX_EXTRADATA_ENTRY_LEN = 4 * 256 = 1024 bytes) and its content length is less predictable. Signed-off-by: Gustavo Luiz Duarte <gustavold@gmail.com> Reviewed-by: Breno Leitao <leitao@debian.org> Link: https://patch.msgid.link/20251119-netconsole_dynamic_extradata-v3-3-497ac3191707@meta.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/testing/selftests/drivers/net/netcons_overflow.sh')
0 files changed, 0 insertions, 0 deletions