2020-01-19 12:46:53

by chenzhou

[permalink] [raw]
Subject: [PATCH -next] net: hns3: replace snprintf with scnprintf in hns3_update_strings

snprintf returns the number of bytes that would be written, which may be
greater than the the actual length to be written. Here use extra code to
handle this.

scnprintf returns the number of bytes that was actually written, just use
scnprintf to simplify the code.

Signed-off-by: Chen Zhou <[email protected]>
---
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
index 6e0212b..fa01888 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
@@ -423,9 +423,8 @@ static void *hns3_update_strings(u8 *data, const struct hns3_stats *stats,
data[ETH_GSTRING_LEN - 1] = '\0';

/* first, prepend the prefix string */
- n1 = snprintf(data, MAX_PREFIX_SIZE, "%s%d_",
+ n1 = scnprintf(data, MAX_PREFIX_SIZE, "%s%d_",
prefix, i);
- n1 = min_t(uint, n1, MAX_PREFIX_SIZE - 1);
size_left = (ETH_GSTRING_LEN - 1) - n1;

/* now, concatenate the stats string to it */
--
2.7.4


2020-01-20 01:29:23

by Huazhong Tan

[permalink] [raw]
Subject: Re: [PATCH -next] net: hns3: replace snprintf with scnprintf in hns3_update_strings



On 2020/1/19 20:40, Chen Zhou wrote:
> snprintf returns the number of bytes that would be written, which may be
> greater than the the actual length to be written. Here use extra code to
> handle this.
>
> scnprintf returns the number of bytes that was actually written, just use
> scnprintf to simplify the code.
>
> Signed-off-by: Chen Zhou <[email protected]>
> ---
> drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
> index 6e0212b..fa01888 100644
> --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
> +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
> @@ -423,9 +423,8 @@ static void *hns3_update_strings(u8 *data, const struct hns3_stats *stats,
> data[ETH_GSTRING_LEN - 1] = '\0';
>
> /* first, prepend the prefix string */
> - n1 = snprintf(data, MAX_PREFIX_SIZE, "%s%d_",
> + n1 = scnprintf(data, MAX_PREFIX_SIZE, "%s%d_",
> prefix, i);

not align?

> - n1 = min_t(uint, n1, MAX_PREFIX_SIZE - 1);
> size_left = (ETH_GSTRING_LEN - 1) - n1;
>
> /* now, concatenate the stats string to it */
>

2020-01-20 02:39:52

by chenzhou

[permalink] [raw]
Subject: Re: [PATCH -next] net: hns3: replace snprintf with scnprintf in hns3_update_strings



On 2020/1/20 9:27, tanhuazhong wrote:
>
>
> On 2020/1/19 20:40, Chen Zhou wrote:
>> snprintf returns the number of bytes that would be written, which may be
>> greater than the the actual length to be written. Here use extra code to
>> handle this.
>>
>> scnprintf returns the number of bytes that was actually written, just use
>> scnprintf to simplify the code.
>>
>> Signed-off-by: Chen Zhou <[email protected]>
>> ---
>> drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
>> index 6e0212b..fa01888 100644
>> --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
>> +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
>> @@ -423,9 +423,8 @@ static void *hns3_update_strings(u8 *data, const struct hns3_stats *stats,
>> data[ETH_GSTRING_LEN - 1] = '\0';
>> /* first, prepend the prefix string */
>> - n1 = snprintf(data, MAX_PREFIX_SIZE, "%s%d_",
>> + n1 = scnprintf(data, MAX_PREFIX_SIZE, "%s%d_",
>> prefix, i);
>
> not align?

Ok, I will fix it in next version.

Thanks,
Chen Zhou

>
>> - n1 = min_t(uint, n1, MAX_PREFIX_SIZE - 1);
>> size_left = (ETH_GSTRING_LEN - 1) - n1;
>> /* now, concatenate the stats string to it */
>>
>
>
> .
>