[PATCH] fixing sparse warnings about a dangerous cast and possible bad endianness.

From: arielsilver77
Date: Mon Jan 08 2024 - 15:38:17 EST


From: SilverPlate3 <arielsilver77@xxxxxxxxx>

---
drivers/staging/vt6655/card.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/vt6655/card.c b/drivers/staging/vt6655/card.c
index 350ab8f3778a..8290dc5a0398 100644
--- a/drivers/staging/vt6655/card.c
+++ b/drivers/staging/vt6655/card.c
@@ -292,14 +292,16 @@ bool card_update_tsf(struct vnt_private *priv, unsigned char rx_rate,
{
u64 local_tsf;
u64 qwTSFOffset = 0;
-
+ __le64 le_qwTSFOffset = 0;
+
local_tsf = vt6655_get_current_tsf(priv);

if (qwBSSTimestamp != local_tsf) {
qwTSFOffset = CARDqGetTSFOffset(rx_rate, qwBSSTimestamp,
local_tsf);
/* adjust TSF, HW's TSF add TSF Offset reg */
- qwTSFOffset = le64_to_cpu(qwTSFOffset);
+ le_qwTSFOffset = cpu_to_le64(qwTSFOffset);
+ qwTSFOffset = le64_to_cpu(le_qwTSFOffset);
iowrite32((u32)qwTSFOffset, priv->port_offset + MAC_REG_TSFOFST);
iowrite32((u32)(qwTSFOffset >> 32), priv->port_offset + MAC_REG_TSFOFST + 4);
vt6655_mac_reg_bits_on(priv->port_offset, MAC_REG_TFTCTL, TFTCTL_TSFSYNCEN);
@@ -324,6 +326,7 @@ bool CARDbSetBeaconPeriod(struct vnt_private *priv,
unsigned short wBeaconInterval)
{
u64 qwNextTBTT;
+ __le64 le_qwNextTBTT;

qwNextTBTT = vt6655_get_current_tsf(priv); /* Get Local TSF counter */

@@ -333,7 +336,8 @@ bool CARDbSetBeaconPeriod(struct vnt_private *priv,
iowrite16(wBeaconInterval, priv->port_offset + MAC_REG_BI);
priv->wBeaconInterval = wBeaconInterval;
/* Set NextTBTT */
- qwNextTBTT = le64_to_cpu(qwNextTBTT);
+ le_qwNextTBTT = cpu_to_le64(qwNextTBTT);
+ qwNextTBTT = le64_to_cpu(le_qwNextTBTT);
iowrite32((u32)qwNextTBTT, priv->port_offset + MAC_REG_NEXTTBTT);
iowrite32((u32)(qwNextTBTT >> 32), priv->port_offset + MAC_REG_NEXTTBTT + 4);
vt6655_mac_reg_bits_on(priv->port_offset, MAC_REG_TFTCTL, TFTCTL_TBTTSYNCEN);
@@ -796,12 +800,14 @@ void CARDvSetFirstNextTBTT(struct vnt_private *priv,
{
void __iomem *iobase = priv->port_offset;
u64 qwNextTBTT;
+ __le64 le_qwNextTBTT = 0;

qwNextTBTT = vt6655_get_current_tsf(priv); /* Get Local TSF counter */

qwNextTBTT = CARDqGetNextTBTT(qwNextTBTT, wBeaconInterval);
/* Set NextTBTT */
- qwNextTBTT = le64_to_cpu(qwNextTBTT);
+ le_qwNextTBTT = cpu_to_le64(qwNextTBTT);
+ qwNextTBTT = le64_to_cpu(le_qwNextTBTT);
iowrite32((u32)qwNextTBTT, iobase + MAC_REG_NEXTTBTT);
iowrite32((u32)(qwNextTBTT >> 32), iobase + MAC_REG_NEXTTBTT + 4);
vt6655_mac_reg_bits_on(iobase, MAC_REG_TFTCTL, TFTCTL_TBTTSYNCEN);
@@ -824,11 +830,13 @@ void CARDvSetFirstNextTBTT(struct vnt_private *priv,
void CARDvUpdateNextTBTT(struct vnt_private *priv, u64 qwTSF,
unsigned short wBeaconInterval)
{
+ __le64 le_qwTSF = 0;
void __iomem *iobase = priv->port_offset;

qwTSF = CARDqGetNextTBTT(qwTSF, wBeaconInterval);
/* Set NextTBTT */
- qwTSF = le64_to_cpu(qwTSF);
+ le_qwTSF = cpu_to_le64(qwTSF);
+ qwTSF = le64_to_cpu(le_qwTSF);
iowrite32((u32)qwTSF, iobase + MAC_REG_NEXTTBTT);
iowrite32((u32)(qwTSF >> 32), iobase + MAC_REG_NEXTTBTT + 4);
vt6655_mac_reg_bits_on(iobase, MAC_REG_TFTCTL, TFTCTL_TBTTSYNCEN);
--
2.25.1