|
6 | 6 | */
|
7 | 7 |
|
8 | 8 | #include <linux/slab.h>
|
9 |
| -#include <linux/vmalloc.h> |
10 | 9 | #include <linux/interrupt.h>
|
11 | 10 |
|
12 | 11 | #include "qlcnic.h"
|
@@ -927,38 +926,35 @@ static ssize_t qlcnic_sysfs_read_pci_config(struct file *file,
|
927 | 926 | u32 pci_func_count = qlcnic_get_pci_func_count(adapter);
|
928 | 927 | struct qlcnic_pci_func_cfg *pci_cfg;
|
929 | 928 | struct qlcnic_pci_info *pci_info;
|
930 |
| - size_t pci_info_sz, pci_cfg_sz; |
| 929 | + size_t pci_cfg_sz; |
931 | 930 | int i, ret;
|
932 | 931 |
|
933 | 932 | pci_cfg_sz = pci_func_count * sizeof(*pci_cfg);
|
934 | 933 | if (size != pci_cfg_sz)
|
935 | 934 | return QL_STATUS_INVALID_PARAM;
|
936 | 935 |
|
937 |
| - pci_info_sz = pci_func_count * sizeof(*pci_info); |
938 |
| - pci_info = vmalloc(pci_info_sz); |
| 936 | + pci_info = kcalloc(pci_func_count, sizeof(*pci_info), GFP_KERNEL); |
939 | 937 | if (!pci_info)
|
940 | 938 | return -ENOMEM;
|
941 | 939 |
|
942 |
| - memset(pci_info, 0, pci_info_sz); |
943 |
| - memset(buf, 0, pci_cfg_sz); |
944 |
| - pci_cfg = (struct qlcnic_pci_func_cfg *)buf; |
945 |
| - |
946 | 940 | ret = qlcnic_get_pci_info(adapter, pci_info);
|
947 | 941 | if (ret) {
|
948 |
| - vfree(pci_info); |
| 942 | + kfree(pci_info); |
949 | 943 | return ret;
|
950 | 944 | }
|
951 | 945 |
|
| 946 | + pci_cfg = (struct qlcnic_pci_func_cfg *)buf; |
952 | 947 | for (i = 0; i < pci_func_count; i++) {
|
953 | 948 | pci_cfg[i].pci_func = pci_info[i].id;
|
954 | 949 | pci_cfg[i].func_type = pci_info[i].type;
|
| 950 | + pci_cfg[i].func_state = 0; |
955 | 951 | pci_cfg[i].port_num = pci_info[i].default_port;
|
956 | 952 | pci_cfg[i].min_bw = pci_info[i].tx_min_bw;
|
957 | 953 | pci_cfg[i].max_bw = pci_info[i].tx_max_bw;
|
958 | 954 | memcpy(&pci_cfg[i].def_mac_addr, &pci_info[i].mac, ETH_ALEN);
|
959 | 955 | }
|
960 | 956 |
|
961 |
| - vfree(pci_info); |
| 957 | + kfree(pci_info); |
962 | 958 | return size;
|
963 | 959 | }
|
964 | 960 |
|
|
0 commit comments