Message ID | 20210708122754.555846-2-i.mikhaylov@yadro.com |
---|---|
State | New |
Headers | show |
Series | net/ncsi: Add NCSI Intel OEM command to keep PHY link up | expand |
On Thu, 8 Jul 2021 at 12:27, Ivan Mikhaylov <i.mikhaylov@yadro.com> wrote: > > Sparse reports: > net/ncsi/ncsi-rsp.c:406:24: warning: cast to restricted __be32 > net/ncsi/ncsi-manage.c:732:33: warning: cast to restricted __be32 > net/ncsi/ncsi-manage.c:756:25: warning: cast to restricted __be32 > net/ncsi/ncsi-manage.c:779:25: warning: cast to restricted __be32 Strange, I don't get these warnings from sparse on my system. $ sparse --version 0.6.3 (Debian: 0.6.3-2) > > Signed-off-by: Ivan Mikhaylov <i.mikhaylov@yadro.com> > --- > net/ncsi/ncsi-manage.c | 6 +++--- > net/ncsi/ncsi-rsp.c | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c > index ca04b6df1341..42b54a3da2e6 100644 > --- a/net/ncsi/ncsi-manage.c > +++ b/net/ncsi/ncsi-manage.c > @@ -700,7 +700,7 @@ static int ncsi_oem_gma_handler_bcm(struct ncsi_cmd_arg *nca) > nca->payload = NCSI_OEM_BCM_CMD_GMA_LEN; > > memset(data, 0, NCSI_OEM_BCM_CMD_GMA_LEN); > - *(unsigned int *)data = ntohl(NCSI_OEM_MFR_BCM_ID); > + *(unsigned int *)data = ntohl((__force __be32)NCSI_OEM_MFR_BCM_ID); This looks wrong, the value you're passing isn't big endian. It would make more sense if the byte swap was ntohl, as it's coming from the cpu and going into the NCSI packet. > data[5] = NCSI_OEM_BCM_CMD_GMA; > > nca->data = data; > @@ -724,7 +724,7 @@ static int ncsi_oem_gma_handler_mlx(struct ncsi_cmd_arg *nca) > nca->payload = NCSI_OEM_MLX_CMD_GMA_LEN; > > memset(&u, 0, sizeof(u)); > - u.data_u32[0] = ntohl(NCSI_OEM_MFR_MLX_ID); > + u.data_u32[0] = ntohl((__force __be32)NCSI_OEM_MFR_MLX_ID); > u.data_u8[5] = NCSI_OEM_MLX_CMD_GMA; > u.data_u8[6] = NCSI_OEM_MLX_CMD_GMA_PARAM; > > @@ -747,7 +747,7 @@ static int ncsi_oem_smaf_mlx(struct ncsi_cmd_arg *nca) > int ret = 0; > > memset(&u, 0, sizeof(u)); > - u.data_u32[0] = ntohl(NCSI_OEM_MFR_MLX_ID); > + u.data_u32[0] = ntohl((__force __be32)NCSI_OEM_MFR_MLX_ID); > u.data_u8[5] = NCSI_OEM_MLX_CMD_SMAF; > u.data_u8[6] = NCSI_OEM_MLX_CMD_SMAF_PARAM; > memcpy(&u.data_u8[MLX_SMAF_MAC_ADDR_OFFSET], > diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c > index 888ccc2d4e34..04bc50be5c01 100644 > --- a/net/ncsi/ncsi-rsp.c > +++ b/net/ncsi/ncsi-rsp.c > @@ -403,7 +403,7 @@ static int ncsi_rsp_handler_ev(struct ncsi_request *nr) > /* Update to VLAN mode */ > cmd = (struct ncsi_cmd_ev_pkt *)skb_network_header(nr->cmd); > ncm->enable = 1; > - ncm->data[0] = ntohl(cmd->mode); > + ncm->data[0] = ntohl((__force __be32)cmd->mode); > > return 0; > } > -- > 2.31.1 >
On Mon, 2021-07-12 at 09:09 +0000, Joel Stanley wrote: > On Thu, 8 Jul 2021 at 12:27, Ivan Mikhaylov <i.mikhaylov@yadro.com> wrote: > > > > Sparse reports: > > net/ncsi/ncsi-rsp.c:406:24: warning: cast to restricted __be32 > > net/ncsi/ncsi-manage.c:732:33: warning: cast to restricted __be32 > > net/ncsi/ncsi-manage.c:756:25: warning: cast to restricted __be32 > > net/ncsi/ncsi-manage.c:779:25: warning: cast to restricted __be32 > > Strange, I don't get these warnings from sparse on my system. https://patchwork.hopto.org/static/nipa/510079/12355969/build_32bit/stderr All those errors from ntohl. David linked this one in first series of patches. > > $ sparse --version > 0.6.3 (Debian: 0.6.3-2) > > > > > Signed-off-by: Ivan Mikhaylov <i.mikhaylov@yadro.com> > > --- > > net/ncsi/ncsi-manage.c | 6 +++--- > > net/ncsi/ncsi-rsp.c | 2 +- > > 2 files changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c > > index ca04b6df1341..42b54a3da2e6 100644 > > --- a/net/ncsi/ncsi-manage.c > > +++ b/net/ncsi/ncsi-manage.c > > @@ -700,7 +700,7 @@ static int ncsi_oem_gma_handler_bcm(struct ncsi_cmd_arg > > *nca) > > nca->payload = NCSI_OEM_BCM_CMD_GMA_LEN; > > > > memset(data, 0, NCSI_OEM_BCM_CMD_GMA_LEN); > > - *(unsigned int *)data = ntohl(NCSI_OEM_MFR_BCM_ID); > > + *(unsigned int *)data = ntohl((__force __be32)NCSI_OEM_MFR_BCM_ID); > > This looks wrong, the value you're passing isn't big endian. It would > make more sense if the byte swap was ntohl, as it's coming from the > cpu and going into the NCSI packet. Is there any other ways to deal with those sparse errors? Thanks.
diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c index ca04b6df1341..42b54a3da2e6 100644 --- a/net/ncsi/ncsi-manage.c +++ b/net/ncsi/ncsi-manage.c @@ -700,7 +700,7 @@ static int ncsi_oem_gma_handler_bcm(struct ncsi_cmd_arg *nca) nca->payload = NCSI_OEM_BCM_CMD_GMA_LEN; memset(data, 0, NCSI_OEM_BCM_CMD_GMA_LEN); - *(unsigned int *)data = ntohl(NCSI_OEM_MFR_BCM_ID); + *(unsigned int *)data = ntohl((__force __be32)NCSI_OEM_MFR_BCM_ID); data[5] = NCSI_OEM_BCM_CMD_GMA; nca->data = data; @@ -724,7 +724,7 @@ static int ncsi_oem_gma_handler_mlx(struct ncsi_cmd_arg *nca) nca->payload = NCSI_OEM_MLX_CMD_GMA_LEN; memset(&u, 0, sizeof(u)); - u.data_u32[0] = ntohl(NCSI_OEM_MFR_MLX_ID); + u.data_u32[0] = ntohl((__force __be32)NCSI_OEM_MFR_MLX_ID); u.data_u8[5] = NCSI_OEM_MLX_CMD_GMA; u.data_u8[6] = NCSI_OEM_MLX_CMD_GMA_PARAM; @@ -747,7 +747,7 @@ static int ncsi_oem_smaf_mlx(struct ncsi_cmd_arg *nca) int ret = 0; memset(&u, 0, sizeof(u)); - u.data_u32[0] = ntohl(NCSI_OEM_MFR_MLX_ID); + u.data_u32[0] = ntohl((__force __be32)NCSI_OEM_MFR_MLX_ID); u.data_u8[5] = NCSI_OEM_MLX_CMD_SMAF; u.data_u8[6] = NCSI_OEM_MLX_CMD_SMAF_PARAM; memcpy(&u.data_u8[MLX_SMAF_MAC_ADDR_OFFSET], diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c index 888ccc2d4e34..04bc50be5c01 100644 --- a/net/ncsi/ncsi-rsp.c +++ b/net/ncsi/ncsi-rsp.c @@ -403,7 +403,7 @@ static int ncsi_rsp_handler_ev(struct ncsi_request *nr) /* Update to VLAN mode */ cmd = (struct ncsi_cmd_ev_pkt *)skb_network_header(nr->cmd); ncm->enable = 1; - ncm->data[0] = ntohl(cmd->mode); + ncm->data[0] = ntohl((__force __be32)cmd->mode); return 0; }
Sparse reports: net/ncsi/ncsi-rsp.c:406:24: warning: cast to restricted __be32 net/ncsi/ncsi-manage.c:732:33: warning: cast to restricted __be32 net/ncsi/ncsi-manage.c:756:25: warning: cast to restricted __be32 net/ncsi/ncsi-manage.c:779:25: warning: cast to restricted __be32 Signed-off-by: Ivan Mikhaylov <i.mikhaylov@yadro.com> --- net/ncsi/ncsi-manage.c | 6 +++--- net/ncsi/ncsi-rsp.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-)