[bug report] wifi: ath12k: strange memcpy()
Dan Carpenter
error27 at gmail.com
Thu Feb 16 06:00:48 PST 2023
Hello Kalle Valo,
The patch d889913205cf: "wifi: ath12k: driver for Qualcomm Wi-Fi 7
devices" from Nov 28, 2022, leads to the following Smatch static
checker warning:
drivers/net/wireless/ath/ath12k/wmi.c:2737 ath12k_wmi_send_init_country_cmd()
warn: not copying enough bytes for '&cmd->cc_info.alpha2' (4 vs 3 bytes)
drivers/net/wireless/ath/ath12k/wmi.c
2715 int ath12k_wmi_send_init_country_cmd(struct ath12k *ar,
2716 struct ath12k_wmi_init_country_arg *arg)
2717 {
2718 struct ath12k_wmi_pdev *wmi = ar->wmi;
2719 struct wmi_init_country_cmd *cmd;
2720 struct sk_buff *skb;
2721 int ret;
2722
2723 skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, sizeof(*cmd));
2724 if (!skb)
2725 return -ENOMEM;
2726
2727 cmd = (struct wmi_init_country_cmd *)skb->data;
2728 cmd->tlv_header =
2729 ath12k_wmi_tlv_cmd_hdr(WMI_TAG_SET_INIT_COUNTRY_CMD,
2730 sizeof(*cmd));
2731
2732 cmd->pdev_id = cpu_to_le32(ar->pdev->pdev_id);
2733
2734 switch (arg->flags) {
2735 case ALPHA_IS_SET:
2736 cmd->init_cc_type = WMI_COUNTRY_INFO_TYPE_ALPHA;
--> 2737 memcpy(&cmd->cc_info.alpha2, arg->cc_info.alpha2, 3);
These are u32s, so it's strange to only copy 3 bytes. It looks
intentional because of the 3, but it's still strange.
2738 break;
2739 case CC_IS_SET:
2740 cmd->init_cc_type = cpu_to_le32(WMI_COUNTRY_INFO_TYPE_COUNTRY_CODE);
2741 cmd->cc_info.country_code =
2742 cpu_to_le32(arg->cc_info.country_code);
2743 break;
2744 case REGDMN_IS_SET:
2745 cmd->init_cc_type = cpu_to_le32(WMI_COUNTRY_INFO_TYPE_REGDOMAIN);
2746 cmd->cc_info.regdom_id = cpu_to_le32(arg->cc_info.regdom_id);
2747 break;
2748 default:
2749 ret = -EINVAL;
2750 goto out;
2751 }
2752
2753 ret = ath12k_wmi_cmd_send(wmi, skb,
2754 WMI_SET_INIT_COUNTRY_CMDID);
2755
2756 out:
2757 if (ret) {
2758 ath12k_warn(ar->ab,
2759 "failed to send WMI_SET_INIT_COUNTRY CMD :%d\n",
2760 ret);
2761 dev_kfree_skb(skb);
2762 }
2763
2764 return ret;
2765 }
regards,
dan carpenter
More information about the ath12k
mailing list