From: Alok Tiwari <[email protected]> Sent: Saturday, September 13, 2025 12:25 PM > > The target_cpu_store() function parses the target CPU from the sysfs > buffer using sscanf(). The format string currently uses "%uu", which > is invalid and causes incorrect parsing.
The %uu format string definitely looks invalid, but I'm not seeing incorrect parsing. For example, this command works: # echo 5 >/sys/bus/vmbus/devices/<uuid>/channels/<nn>/cpu and the target cpu is indeed changed to "5". A two-digit value also works: # echo 14 >/sys/bus/vmbus/devices/<uuid>/channels/<nn>/cpu What are the details of the incorrect parsing that you are seeing? Michael > > Fix it by using "%u" to correctly read the value. > > This only fixes the parsing format. > > Signed-off-by: Alok Tiwari <[email protected]> > --- > drivers/hv/vmbus_drv.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c > index 8b58306cb140..fbab9f2d7fa6 100644 > --- a/drivers/hv/vmbus_drv.c > +++ b/drivers/hv/vmbus_drv.c > @@ -1742,7 +1742,7 @@ static ssize_t target_cpu_store(struct vmbus_channel > *channel, > u32 target_cpu; > ssize_t ret; > > - if (sscanf(buf, "%uu", &target_cpu) != 1) > + if (sscanf(buf, "%u", &target_cpu) != 1) > return -EIO; > > cpus_read_lock(); > -- > 2.50.1 >
