Patch "md: Replace snprintf with scnprintf" has been added to the 6.0-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    md: Replace snprintf with scnprintf

to the 6.0-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     md-replace-snprintf-with-scnprintf.patch
and it can be found in the queue-6.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 9f62ae13ee319ab4af07d741ef2ba9100c25cd6b
Author: Saurabh Sengar <ssengar@xxxxxxxxxxxxxxxxxxx>
Date:   Tue Aug 23 11:51:04 2022 -0700

    md: Replace snprintf with scnprintf
    
    [ Upstream commit 1727fd5015d8f93474148f94e34cda5aa6ad4a43 ]
    
    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 ]------------
    [ 1513.267943] WARNING: CPU: 15 PID: 37247 at <snip>/lib/vsprintf.c:2509 vsnprintf+0x2c8/0x510
    [ 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+0x2c8/0x510
    <-snip->
    [ 1513.267982] Call Trace:
    [ 1513.267986]  snprintf+0x45/0x70
    [ 1513.267990]  ? disk_name+0x71/0xa0
    [ 1513.267993]  dump_zones+0x114/0x240 [raid0]
    [ 1513.267996]  ? _cond_resched+0x19/0x40
    [ 1513.267998]  raid0_run+0x19e/0x270 [raid0]
    [ 1513.268000]  md_run+0x5e0/0xc50
    [ 1513.268003]  ? security_capable+0x3f/0x60
    [ 1513.268005]  do_md_run+0x19/0x110
    [ 1513.268006]  md_ioctl+0x195e/0x1f90
    [ 1513.268007]  blkdev_ioctl+0x91f/0x9f0
    [ 1513.268010]  block_ioctl+0x3d/0x50
    [ 1513.268012]  do_vfs_ioctl+0xa9/0x640
    [ 1513.268014]  ? __fput+0x162/0x260
    [ 1513.268016]  ksys_ioctl+0x75/0x80
    [ 1513.268017]  __x64_sys_ioctl+0x1a/0x20
    [ 1513.268019]  do_syscall_64+0x5e/0x200
    [ 1513.268021]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 766038846e875 ("md/raid0: replace printk() with pr_*()")
    Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx>
    Acked-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxx>
    Signed-off-by: Saurabh Sengar <ssengar@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Song Liu <song@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 78addfe4a0c9..857c49399c28 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -47,7 +47,7 @@ static void dump_zones(struct mddev *mddev)
 		int len = 0;
 
 		for (k = 0; k < conf->strip_zone[j].nb_dev; k++)
-			len += snprintf(line+len, 200-len, "%s%pg", k?"/":"",
+			len += scnprintf(line+len, 200-len, "%s%pg", k?"/":"",
 				conf->devlist[j * raid_disks + k]->bdev);
 		pr_debug("md: zone%d=[%s]\n", j, line);
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux