| From 1ee66e5f2201eecedd2ba858dbaca4495d556318 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 13 Mar 2024 09:34:54 -0400 |
| Subject: net: hns3: tracing: fix hclgevf trace event strings |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Steven Rostedt (Google) <rostedt@goodmis.org> |
| |
| [ Upstream commit 3f9952e8d80cca2da3b47ecd5ad9ec16cfd1a649 ] |
| |
| The __string() and __assign_str() helper macros of the TRACE_EVENT() macro |
| are going through some optimizations where only the source string of |
| __string() will be used and the __assign_str() source will be ignored and |
| later removed. |
| |
| To make sure that there's no issues, a new check is added between the |
| __string() src argument and the __assign_str() src argument that does a |
| strcmp() to make sure they are the same string. |
| |
| The hclgevf trace events have: |
| |
| __assign_str(devname, &hdev->nic.kinfo.netdev->name); |
| |
| Which triggers the warning: |
| |
| hclgevf_trace.h:34:39: error: passing argument 1 of ‘strcmp’ from incompatible pointer type [-Werror=incompatible-pointer-types] |
| 34 | __assign_str(devname, &hdev->nic.kinfo.netdev->name); |
| [..] |
| arch/x86/include/asm/string_64.h:75:24: note: expected ‘const char *’ but argument is of type ‘char (*)[16]’ |
| 75 | int strcmp(const char *cs, const char *ct); |
| | ~~~~~~~~~~~~^~ |
| |
| Because __assign_str() now has: |
| |
| WARN_ON_ONCE(__builtin_constant_p(src) ? \ |
| strcmp((src), __data_offsets.dst##_ptr_) : \ |
| (src) != __data_offsets.dst##_ptr_); \ |
| |
| The problem is the '&' on hdev->nic.kinfo.netdev->name. That's because |
| that name is: |
| |
| char name[IFNAMSIZ] |
| |
| Where passing an address '&' of a char array is not compatible with strcmp(). |
| |
| The '&' is not necessary, remove it. |
| |
| Link: https://lore.kernel.org/linux-trace-kernel/20240313093454.3909afe7@gandalf.local.home |
| |
| Cc: netdev <netdev@vger.kernel.org> |
| Cc: Yisen Zhuang <yisen.zhuang@huawei.com> |
| Cc: Salil Mehta <salil.mehta@huawei.com> |
| Cc: "David S. Miller" <davem@davemloft.net> |
| Cc: Eric Dumazet <edumazet@google.com> |
| Cc: Jakub Kicinski <kuba@kernel.org> |
| Cc: Yufeng Mo <moyufeng@huawei.com> |
| Cc: Huazhong Tan <tanhuazhong@huawei.com> |
| Cc: stable@vger.kernel.org |
| Acked-by: Paolo Abeni <pabeni@redhat.com> |
| Reviewed-by: Jijie Shao <shaojijie@huawei.com> |
| Fixes: d8355240cf8fb ("net: hns3: add trace event support for PF/VF mailbox") |
| Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h | 8 ++++---- |
| .../net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h | 8 ++++---- |
| 2 files changed, 8 insertions(+), 8 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h |
| index 8510b88d49820..f3cd5a376eca9 100644 |
| --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h |
| +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h |
| @@ -24,7 +24,7 @@ TRACE_EVENT(hclge_pf_mbx_get, |
| __field(u8, code) |
| __field(u8, subcode) |
| __string(pciname, pci_name(hdev->pdev)) |
| - __string(devname, &hdev->vport[0].nic.kinfo.netdev->name) |
| + __string(devname, hdev->vport[0].nic.kinfo.netdev->name) |
| __array(u32, mbx_data, PF_GET_MBX_LEN) |
| ), |
| |
| @@ -33,7 +33,7 @@ TRACE_EVENT(hclge_pf_mbx_get, |
| __entry->code = req->msg.code; |
| __entry->subcode = req->msg.subcode; |
| __assign_str(pciname, pci_name(hdev->pdev)); |
| - __assign_str(devname, &hdev->vport[0].nic.kinfo.netdev->name); |
| + __assign_str(devname, hdev->vport[0].nic.kinfo.netdev->name); |
| memcpy(__entry->mbx_data, req, |
| sizeof(struct hclge_mbx_vf_to_pf_cmd)); |
| ), |
| @@ -56,7 +56,7 @@ TRACE_EVENT(hclge_pf_mbx_send, |
| __field(u8, vfid) |
| __field(u16, code) |
| __string(pciname, pci_name(hdev->pdev)) |
| - __string(devname, &hdev->vport[0].nic.kinfo.netdev->name) |
| + __string(devname, hdev->vport[0].nic.kinfo.netdev->name) |
| __array(u32, mbx_data, PF_SEND_MBX_LEN) |
| ), |
| |
| @@ -64,7 +64,7 @@ TRACE_EVENT(hclge_pf_mbx_send, |
| __entry->vfid = req->dest_vfid; |
| __entry->code = le16_to_cpu(req->msg.code); |
| __assign_str(pciname, pci_name(hdev->pdev)); |
| - __assign_str(devname, &hdev->vport[0].nic.kinfo.netdev->name); |
| + __assign_str(devname, hdev->vport[0].nic.kinfo.netdev->name); |
| memcpy(__entry->mbx_data, req, |
| sizeof(struct hclge_mbx_pf_to_vf_cmd)); |
| ), |
| diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h |
| index 5d4895bb57a17..b259e95dd53c2 100644 |
| --- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h |
| +++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h |
| @@ -23,7 +23,7 @@ TRACE_EVENT(hclge_vf_mbx_get, |
| __field(u8, vfid) |
| __field(u16, code) |
| __string(pciname, pci_name(hdev->pdev)) |
| - __string(devname, &hdev->nic.kinfo.netdev->name) |
| + __string(devname, hdev->nic.kinfo.netdev->name) |
| __array(u32, mbx_data, VF_GET_MBX_LEN) |
| ), |
| |
| @@ -31,7 +31,7 @@ TRACE_EVENT(hclge_vf_mbx_get, |
| __entry->vfid = req->dest_vfid; |
| __entry->code = le16_to_cpu(req->msg.code); |
| __assign_str(pciname, pci_name(hdev->pdev)); |
| - __assign_str(devname, &hdev->nic.kinfo.netdev->name); |
| + __assign_str(devname, hdev->nic.kinfo.netdev->name); |
| memcpy(__entry->mbx_data, req, |
| sizeof(struct hclge_mbx_pf_to_vf_cmd)); |
| ), |
| @@ -55,7 +55,7 @@ TRACE_EVENT(hclge_vf_mbx_send, |
| __field(u8, code) |
| __field(u8, subcode) |
| __string(pciname, pci_name(hdev->pdev)) |
| - __string(devname, &hdev->nic.kinfo.netdev->name) |
| + __string(devname, hdev->nic.kinfo.netdev->name) |
| __array(u32, mbx_data, VF_SEND_MBX_LEN) |
| ), |
| |
| @@ -64,7 +64,7 @@ TRACE_EVENT(hclge_vf_mbx_send, |
| __entry->code = req->msg.code; |
| __entry->subcode = req->msg.subcode; |
| __assign_str(pciname, pci_name(hdev->pdev)); |
| - __assign_str(devname, &hdev->nic.kinfo.netdev->name); |
| + __assign_str(devname, hdev->nic.kinfo.netdev->name); |
| memcpy(__entry->mbx_data, req, |
| sizeof(struct hclge_mbx_vf_to_pf_cmd)); |
| ), |
| -- |
| 2.43.0 |
| |