[Impact]
Current code produces a warning as shown below when total characters
in the constituent block device names plus the slashes exceeds 200.
snprintf() returns the number of characters generated from the given
input, which could cause the expression “200 – len” to wrap around
to a large positive number. Fix this by using scnprintf() instead,
which returns the actual number of characters written into the buffer.
SRU Justification
[Impact]
Current code produces a warning as shown below when total characters
in the constituent block device names plus the slashes exceeds 200.
snprintf() returns the number of characters generated from the given
input, which could cause the expression “200 – len” to wrap around
to a large positive number. Fix this by using scnprintf() instead,
which returns the actual number of characters written into the buffer.
[ 1513.267938] ------------[ cut here ]------------ lib/vsprintf. c:2509 vsnprintf+ 0x2c8/0x510 0x2c8/0x510 0x114/0x240 [raid0] 0x19/0x40 0x19e/0x270 [raid0] capable+ 0x3f/0x60 0x19/0x110 0x195e/ 0x1f90 ioctl+0x91f/ 0x9f0 0x3d/0x50 ioctl+0xa9/ 0x640 0x75/0x80 ioctl+0x1a/ 0x20 64+0x5e/ 0x200 64_after_ hwframe+ 0x44/0xa9
[ 1513.267943] WARNING: CPU: 15 PID: 37247 at <snip>/
[ 1513.267944] Modules linked in: <snip>
[ 1513.267969] CPU: 15 PID: 37247 Comm: mdadm Not tainted 5.4.0-1085-azure #90~18.04.1-Ubuntu
[ 1513.267969] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.1 05/09/2022
[ 1513.267971] RIP: 0010:vsnprintf+
<-snip->
[ 1513.267982] Call Trace:
[ 1513.267986] snprintf+0x45/0x70
[ 1513.267990] ? disk_name+0x71/0xa0
[ 1513.267993] dump_zones+
[ 1513.267996] ? _cond_resched+
[ 1513.267998] raid0_run+
[ 1513.268000] md_run+0x5e0/0xc50
[ 1513.268003] ? security_
[ 1513.268005] do_md_run+
[ 1513.268006] md_ioctl+
[ 1513.268007] blkdev_
[ 1513.268010] block_ioctl+
[ 1513.268012] do_vfs_
[ 1513.268014] ? __fput+0x162/0x260
[ 1513.268016] ksys_ioctl+
[ 1513.268017] __x64_sys_
[ 1513.268019] do_syscall_
[ 1513.268021] entry_SYSCALL_
[Where things could go wrong]
This seems unlikely to cause a regression
[Other Info]
SF: #00346036