# \[PATCH\] ptp: ptp\_clockmatrix: initialize variables

- Subsystems: NETWORKING DRIVERS, PTP HARDWARE CLOCK SUPPORT, THE REST
- Maintainers: Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Richard Cochran, Linus Torvalds
- List: netdev
- 4 messages, 2 authors
- Page: https://ratatoskr.run/netdev/2020/10/6136325/t

## \[PATCH\] ptp: ptp\_clockmatrix: initialize variables

- From: trix@redhat.com
- Date: 2020-10-11 20:10:35 
- Message: https://ratatoskr.run/netdev/2020/10/6136325.md

```text
From: Tom Rix <trix@redhat.com>

Clang static analysis reports this representative problem

ptp_clockmatrix.c:1852:2: warning: 5th function call argument
  is an uninitialized value
        snprintf(idtcm->version, sizeof(idtcm->version), "%u.%u.%u",
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

idtcm_display_version_info() calls several idtcm_read_*'s without
checking a return status.  Initialize the read variables so if a
read fails, a garbage value is not displayed.

Signed-off-by: Tom Rix <trix@redhat.com>
---
 drivers/ptp/ptp_clockmatrix.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/ptp/ptp_clockmatrix.c b/drivers/ptp/ptp_clockmatrix.c
index e020faff7da5..47e5e62da5d2 100644
--- a/drivers/ptp/ptp_clockmatrix.c
+++ b/drivers/ptp/ptp_clockmatrix.c
@@ -1832,12 +1832,12 @@ static int idtcm_enable_tod(struct idtcm_channel *channel)
 
 static void idtcm_display_version_info(struct idtcm *idtcm)
 {
-	u8 major;
-	u8 minor;
-	u8 hotfix;
-	u16 product_id;
-	u8 hw_rev_id;
-	u8 config_select;
+	u8 major = 0;
+	u8 minor = 0;
+	u8 hotfix = 0;
+	u16 product_id = 0;
+	u8 hw_rev_id = 0;
+	u8 config_select = 0;
 	char *fmt = "%d.%d.%d, Id: 0x%04x  HW Rev: %d  OTP Config Select: %d\n";
 
 	idtcm_read_major_release(idtcm, &major);
-- 
2.18.1

```

## Re: \[PATCH\] ptp: ptp\_clockmatrix: initialize variables

- From: Richard Cochran \<richardcochran@gmail.com\>
- Date: 2020-10-12 22:01:33 
- Message: https://ratatoskr.run/netdev/2020/10/6138062.md

```text
On Sun, Oct 11, 2020 at 01:09:55PM -0700, trix@redhat.com wrote:
> From: Tom Rix <trix@redhat.com>
> 
> Clang static analysis reports this representative problem
> 
> ptp_clockmatrix.c:1852:2: warning: 5th function call argument
>   is an uninitialized value
>         snprintf(idtcm->version, sizeof(idtcm->version), "%u.%u.%u",
>         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> idtcm_display_version_info() calls several idtcm_read_*'s without
> checking a return status.

So why not check the return status?

Your patch papers over the issue.

Thanks,
Richard
```

## Re: \[PATCH\] ptp: ptp\_clockmatrix: initialize variables

- From: Tom Rix \<trix@redhat.com\>
- Date: 2020-10-13 04:07:39 
- Message: https://ratatoskr.run/netdev/2020/10/6138226.md

```text

On 10/12/20 3:01 PM, Richard Cochran wrote:
> On Sun, Oct 11, 2020 at 01:09:55PM -0700, trix@redhat.com wrote:
>> From: Tom Rix <trix@redhat.com>
>>
>> Clang static analysis reports this representative problem
>>
>> ptp_clockmatrix.c:1852:2: warning: 5th function call argument
>>   is an uninitialized value
>>         snprintf(idtcm->version, sizeof(idtcm->version), "%u.%u.%u",
>>         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> idtcm_display_version_info() calls several idtcm_read_*'s without
>> checking a return status.
> So why not check the return status?

calling function is a print information only function that returns void.

I do think not adding error handling is worth it.

I could change the return and then the calls if if you like.

Tom

>
> Your patch papers over the issue.
>
> Thanks,
> Richard
>

```

## Re: \[PATCH\] ptp: ptp\_clockmatrix: initialize variables

- From: Richard Cochran \<richardcochran@gmail.com\>
- Date: 2020-10-13 12:40:12 
- Message: https://ratatoskr.run/netdev/2020/10/6138635.md

```text
On Mon, Oct 12, 2020 at 09:07:30PM -0700, Tom Rix wrote:
> calling function is a print information only function that returns void.

That is fine.

> I do think not adding error handling is worth it.
> 
> I could change the return and then the calls if if you like.

How about printing the version string when readable, and otherwise
print an appropriate informative error message?

Thanks,
Richard
```
