diff mbox series

[v3,1/2] mwifiex: Use a define for firmware version string length

Message ID 20211103171055.16911-2-verdre@v0yd.nl (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show
Series mwifiex: Add quirk to disable deep sleep with certain hardware revision | expand

Commit Message

Jonas Dreßler Nov. 3, 2021, 5:10 p.m. UTC
Since the version string we get from the firmware is always 128
characters long, use a define for this size instead of having the number
128 copied all over the place.

Signed-off-by: Jonas Dreßler <verdre@v0yd.nl>
---
 drivers/net/wireless/marvell/mwifiex/fw.h          | 4 +++-
 drivers/net/wireless/marvell/mwifiex/main.h        | 2 +-
 drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 5 +++--
 3 files changed, 7 insertions(+), 4 deletions(-)

Comments

Brian Norris Nov. 3, 2021, 5:28 p.m. UTC | #1
On Wed, Nov 03, 2021 at 06:10:54PM +0100, Jonas Dreßler wrote:
> Since the version string we get from the firmware is always 128
> characters long, use a define for this size instead of having the number
> 128 copied all over the place.
> 
> Signed-off-by: Jonas Dreßler <verdre@v0yd.nl>

Thanks for this patch. For the series:

Reviewed-by: Brian Norris <briannorris@chromium.org>

> ---
>  drivers/net/wireless/marvell/mwifiex/fw.h          | 4 +++-
>  drivers/net/wireless/marvell/mwifiex/main.h        | 2 +-
>  drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 5 +++--
>  3 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/wireless/marvell/mwifiex/fw.h b/drivers/net/wireless/marvell/mwifiex/fw.h
> index 2ff23ab259ab..63c25c69ed2b 100644
> --- a/drivers/net/wireless/marvell/mwifiex/fw.h
> +++ b/drivers/net/wireless/marvell/mwifiex/fw.h
> @@ -2071,9 +2071,11 @@ struct mwifiex_ie_types_robust_coex {
>  	__le32 mode;
>  } __packed;
>  
> +#define MWIFIEX_VERSION_STR_LENGTH  128
> +
>  struct host_cmd_ds_version_ext {
>  	u8 version_str_sel;
> -	char version_str[128];
> +	char version_str[MWIFIEX_VERSION_STR_LENGTH];
>  } __packed;
>  
>  struct host_cmd_ds_mgmt_frame_reg {
> diff --git a/drivers/net/wireless/marvell/mwifiex/main.h b/drivers/net/wireless/marvell/mwifiex/main.h
> index 90012cbcfd15..65609ea2327e 100644
> --- a/drivers/net/wireless/marvell/mwifiex/main.h
> +++ b/drivers/net/wireless/marvell/mwifiex/main.h
> @@ -646,7 +646,7 @@ struct mwifiex_private {
>  	struct wireless_dev wdev;
>  	struct mwifiex_chan_freq_power cfp;
>  	u32 versionstrsel;
> -	char version_str[128];
> +	char version_str[MWIFIEX_VERSION_STR_LENGTH];
>  #ifdef CONFIG_DEBUG_FS
>  	struct dentry *dfs_dev_dir;
>  #endif
> diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
> index 6b5d35d9e69f..20b69a37f9e1 100644
> --- a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
> +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
> @@ -711,8 +711,9 @@ static int mwifiex_ret_ver_ext(struct mwifiex_private *priv,
>  	if (version_ext) {
>  		version_ext->version_str_sel = ver_ext->version_str_sel;
>  		memcpy(version_ext->version_str, ver_ext->version_str,
> -		       sizeof(char) * 128);
> -		memcpy(priv->version_str, ver_ext->version_str, 128);
> +		       MWIFIEX_VERSION_STR_LENGTH);
> +		memcpy(priv->version_str, ver_ext->version_str,
> +		       MWIFIEX_VERSION_STR_LENGTH);

Not related to your patch, but this highlights that nobody is ensuring
this string is 0-terminated, and various other places (notably, *not*
your patch 2!) assume that it is.

We should either fix those to use an snprintf()/length-restricted
variant, or else just force:

		priv->version_str[MWIFIEX_VERSION_STR_LENGTH - 1] = '\0';

here.

But that's a separate issue/patch. I can cook one on top of your series
when it gets merged if you don't want to.

Brian

>  	}
>  	return 0;
>  }
> -- 
> 2.33.1
>
Jonas Dreßler Nov. 3, 2021, 8:01 p.m. UTC | #2
On 11/3/21 18:28, Brian Norris wrote:
> On Wed, Nov 03, 2021 at 06:10:54PM +0100, Jonas Dreßler wrote:
>> Since the version string we get from the firmware is always 128
>> characters long, use a define for this size instead of having the number
>> 128 copied all over the place.
>>
>> Signed-off-by: Jonas Dreßler <verdre@v0yd.nl>
> 
> Thanks for this patch. For the series:
> 
> Reviewed-by: Brian Norris <briannorris@chromium.org>
> 
>> ---
>>   drivers/net/wireless/marvell/mwifiex/fw.h          | 4 +++-
>>   drivers/net/wireless/marvell/mwifiex/main.h        | 2 +-
>>   drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 5 +++--
>>   3 files changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/wireless/marvell/mwifiex/fw.h b/drivers/net/wireless/marvell/mwifiex/fw.h
>> index 2ff23ab259ab..63c25c69ed2b 100644
>> --- a/drivers/net/wireless/marvell/mwifiex/fw.h
>> +++ b/drivers/net/wireless/marvell/mwifiex/fw.h
>> @@ -2071,9 +2071,11 @@ struct mwifiex_ie_types_robust_coex {
>>   	__le32 mode;
>>   } __packed;
>>   
>> +#define MWIFIEX_VERSION_STR_LENGTH  128
>> +
>>   struct host_cmd_ds_version_ext {
>>   	u8 version_str_sel;
>> -	char version_str[128];
>> +	char version_str[MWIFIEX_VERSION_STR_LENGTH];
>>   } __packed;
>>   
>>   struct host_cmd_ds_mgmt_frame_reg {
>> diff --git a/drivers/net/wireless/marvell/mwifiex/main.h b/drivers/net/wireless/marvell/mwifiex/main.h
>> index 90012cbcfd15..65609ea2327e 100644
>> --- a/drivers/net/wireless/marvell/mwifiex/main.h
>> +++ b/drivers/net/wireless/marvell/mwifiex/main.h
>> @@ -646,7 +646,7 @@ struct mwifiex_private {
>>   	struct wireless_dev wdev;
>>   	struct mwifiex_chan_freq_power cfp;
>>   	u32 versionstrsel;
>> -	char version_str[128];
>> +	char version_str[MWIFIEX_VERSION_STR_LENGTH];
>>   #ifdef CONFIG_DEBUG_FS
>>   	struct dentry *dfs_dev_dir;
>>   #endif
>> diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
>> index 6b5d35d9e69f..20b69a37f9e1 100644
>> --- a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
>> +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
>> @@ -711,8 +711,9 @@ static int mwifiex_ret_ver_ext(struct mwifiex_private *priv,
>>   	if (version_ext) {
>>   		version_ext->version_str_sel = ver_ext->version_str_sel;
>>   		memcpy(version_ext->version_str, ver_ext->version_str,
>> -		       sizeof(char) * 128);
>> -		memcpy(priv->version_str, ver_ext->version_str, 128);
>> +		       MWIFIEX_VERSION_STR_LENGTH);
>> +		memcpy(priv->version_str, ver_ext->version_str,
>> +		       MWIFIEX_VERSION_STR_LENGTH);
> 
> Not related to your patch, but this highlights that nobody is ensuring
> this string is 0-terminated, and various other places (notably, *not*
> your patch 2!) assume that it is.
> 
> We should either fix those to use an snprintf()/length-restricted
> variant, or else just force:
> 
> 		priv->version_str[MWIFIEX_VERSION_STR_LENGTH - 1] = '\0';
> 
> here.

Indeed, right now we just trust the firmware to make sure that's the case.

Let me add another patch appending the '\0' to priv->version_str...

> 
> But that's a separate issue/patch. I can cook one on top of your series
> when it gets merged if you don't want to.
> 
> Brian
> 
>>   	}
>>   	return 0;
>>   }
>> -- 
>> 2.33.1
>>
diff mbox series

Patch

diff --git a/drivers/net/wireless/marvell/mwifiex/fw.h b/drivers/net/wireless/marvell/mwifiex/fw.h
index 2ff23ab259ab..63c25c69ed2b 100644
--- a/drivers/net/wireless/marvell/mwifiex/fw.h
+++ b/drivers/net/wireless/marvell/mwifiex/fw.h
@@ -2071,9 +2071,11 @@  struct mwifiex_ie_types_robust_coex {
 	__le32 mode;
 } __packed;
 
+#define MWIFIEX_VERSION_STR_LENGTH  128
+
 struct host_cmd_ds_version_ext {
 	u8 version_str_sel;
-	char version_str[128];
+	char version_str[MWIFIEX_VERSION_STR_LENGTH];
 } __packed;
 
 struct host_cmd_ds_mgmt_frame_reg {
diff --git a/drivers/net/wireless/marvell/mwifiex/main.h b/drivers/net/wireless/marvell/mwifiex/main.h
index 90012cbcfd15..65609ea2327e 100644
--- a/drivers/net/wireless/marvell/mwifiex/main.h
+++ b/drivers/net/wireless/marvell/mwifiex/main.h
@@ -646,7 +646,7 @@  struct mwifiex_private {
 	struct wireless_dev wdev;
 	struct mwifiex_chan_freq_power cfp;
 	u32 versionstrsel;
-	char version_str[128];
+	char version_str[MWIFIEX_VERSION_STR_LENGTH];
 #ifdef CONFIG_DEBUG_FS
 	struct dentry *dfs_dev_dir;
 #endif
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
index 6b5d35d9e69f..20b69a37f9e1 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
@@ -711,8 +711,9 @@  static int mwifiex_ret_ver_ext(struct mwifiex_private *priv,
 	if (version_ext) {
 		version_ext->version_str_sel = ver_ext->version_str_sel;
 		memcpy(version_ext->version_str, ver_ext->version_str,
-		       sizeof(char) * 128);
-		memcpy(priv->version_str, ver_ext->version_str, 128);
+		       MWIFIEX_VERSION_STR_LENGTH);
+		memcpy(priv->version_str, ver_ext->version_str,
+		       MWIFIEX_VERSION_STR_LENGTH);
 	}
 	return 0;
 }