drivers/net/ethernet/intel/igc/igc_ptp.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
clang static analysis reports
drivers/net/ethernet/intel/igc/igc_ptp.c:673:3: warning: The left operand of
'+' is a garbage value [core.UndefinedBinaryOperatorResult]
ktime_add_ns(shhwtstamps.hwtstamp, adjust);
^ ~~~~~~~~~~~~~~~~~~~~
igc_ptp_systim_to_hwtstamp() silently returns without setting the hwtstamp
if the mac type is unknown. This should be treated as an error.
Fixes: 81b055205e8b ("igc: Add support for RX timestamping")
Signed-off-by: Tom Rix <trix@redhat.com>
---
drivers/net/ethernet/intel/igc/igc_ptp.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
index c34734d432e0..4e10ced736db 100644
--- a/drivers/net/ethernet/intel/igc/igc_ptp.c
+++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
@@ -417,10 +417,12 @@ static int igc_ptp_verify_pin(struct ptp_clock_info *ptp, unsigned int pin,
*
* We need to convert the system time value stored in the RX/TXSTMP registers
* into a hwtstamp which can be used by the upper level timestamping functions.
+ *
+ * Returns 0 on success.
**/
-static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
- struct skb_shared_hwtstamps *hwtstamps,
- u64 systim)
+static int igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
+ struct skb_shared_hwtstamps *hwtstamps,
+ u64 systim)
{
switch (adapter->hw.mac.type) {
case igc_i225:
@@ -430,8 +432,9 @@ static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
systim & 0xFFFFFFFF);
break;
default:
- break;
+ return -EINVAL;
}
+ return 0;
}
/**
@@ -652,7 +655,8 @@ static void igc_ptp_tx_hwtstamp(struct igc_adapter *adapter)
regval = rd32(IGC_TXSTMPL);
regval |= (u64)rd32(IGC_TXSTMPH) << 32;
- igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval);
+ if (igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval))
+ return;
switch (adapter->link_speed) {
case SPEED_10:
--
2.27.0
On 1/14/2023 16:04, Tom Rix wrote: > clang static analysis reports > drivers/net/ethernet/intel/igc/igc_ptp.c:673:3: warning: The left operand of > '+' is a garbage value [core.UndefinedBinaryOperatorResult] > ktime_add_ns(shhwtstamps.hwtstamp, adjust); > ^ ~~~~~~~~~~~~~~~~~~~~ > > igc_ptp_systim_to_hwtstamp() silently returns without setting the hwtstamp > if the mac type is unknown. This should be treated as an error. > > Fixes: 81b055205e8b ("igc: Add support for RX timestamping") > Signed-off-by: Tom Rix <trix@redhat.com> > --- > drivers/net/ethernet/intel/igc/igc_ptp.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) Tested-by: Naama Meir <naamax.meir@linux.intel.com>
On 1/14/2023 16:04, Tom Rix wrote: > clang static analysis reports > drivers/net/ethernet/intel/igc/igc_ptp.c:673:3: warning: The left operand of > '+' is a garbage value [core.UndefinedBinaryOperatorResult] > ktime_add_ns(shhwtstamps.hwtstamp, adjust); > ^ ~~~~~~~~~~~~~~~~~~~~ > > igc_ptp_systim_to_hwtstamp() silently returns without setting the hwtstamp > if the mac type is unknown. This should be treated as an error. > > Fixes: 81b055205e8b ("igc: Add support for RX timestamping") > Signed-off-by: Tom Rix <trix@redhat.com> > --- > drivers/net/ethernet/intel/igc/igc_ptp.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c > index c34734d432e0..4e10ced736db 100644 > --- a/drivers/net/ethernet/intel/igc/igc_ptp.c > +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c > @@ -417,10 +417,12 @@ static int igc_ptp_verify_pin(struct ptp_clock_info *ptp, unsigned int pin, > * > * We need to convert the system time value stored in the RX/TXSTMP registers > * into a hwtstamp which can be used by the upper level timestamping functions. > + * > + * Returns 0 on success. > **/ > -static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter, > - struct skb_shared_hwtstamps *hwtstamps, > - u64 systim) > +static int igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter, > + struct skb_shared_hwtstamps *hwtstamps, > + u64 systim) > { > switch (adapter->hw.mac.type) { > case igc_i225: > @@ -430,8 +432,9 @@ static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter, > systim & 0xFFFFFFFF); > break; > default: > - break; > + return -EINVAL; > } > + return 0; > } > > /** > @@ -652,7 +655,8 @@ static void igc_ptp_tx_hwtstamp(struct igc_adapter *adapter) > > regval = rd32(IGC_TXSTMPL); > regval |= (u64)rd32(IGC_TXSTMPH) << 32; > - igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval); > + if (igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval)) > + return; > > switch (adapter->link_speed) { > case SPEED_10: Acked-by: Sasha Neftin <sasha.neftin@intel.com>
On Sat, Jan 14, 2023 at 09:04:12AM -0500, Tom Rix wrote: > clang static analysis reports > drivers/net/ethernet/intel/igc/igc_ptp.c:673:3: warning: The left operand of > '+' is a garbage value [core.UndefinedBinaryOperatorResult] > ktime_add_ns(shhwtstamps.hwtstamp, adjust); > ^ ~~~~~~~~~~~~~~~~~~~~ > > igc_ptp_systim_to_hwtstamp() silently returns without setting the hwtstamp > if the mac type is unknown. This should be treated as an error. > > Fixes: 81b055205e8b ("igc: Add support for RX timestamping") > Signed-off-by: Tom Rix <trix@redhat.com> Reviewed-by: Simon Horman <simon.horman@corigine.com>
© 2016 - 2025 Red Hat, Inc.