hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/net/ethernet/intel/i40e/i40e_client.c
....@@ -3,10 +3,10 @@
33
44 #include <linux/list.h>
55 #include <linux/errno.h>
6
+#include <linux/net/intel/i40e_client.h>
67
78 #include "i40e.h"
89 #include "i40e_prototype.h"
9
-#include "i40e_client.h"
1010
1111 static const char i40e_client_interface_version_str[] = I40E_CLIENT_VERSION_STR;
1212 static struct i40e_client *registered_client;
....@@ -178,6 +178,10 @@
178178 "Cannot locate client instance close routine\n");
179179 return;
180180 }
181
+ if (!test_bit(__I40E_CLIENT_INSTANCE_OPENED, &cdev->state)) {
182
+ dev_dbg(&pf->pdev->dev, "Client is not open, abort close\n");
183
+ return;
184
+ }
181185 cdev->client->ops->close(&cdev->lan_info, cdev->client, reset);
182186 clear_bit(__I40E_CLIENT_INSTANCE_OPENED, &cdev->state);
183187 i40e_client_release_qvlist(&cdev->lan_info);
....@@ -278,8 +282,6 @@
278282 /**
279283 * i40e_client_add_instance - add a client instance struct to the instance list
280284 * @pf: pointer to the board struct
281
- * @client: pointer to a client struct in the client list.
282
- * @existing: if there was already an existing instance
283285 *
284286 **/
285287 static void i40e_client_add_instance(struct i40e_pf *pf)
....@@ -376,7 +378,6 @@
376378 /* Remove failed client instance */
377379 clear_bit(__I40E_CLIENT_INSTANCE_OPENED,
378380 &cdev->state);
379
- i40e_client_del_instance(pf);
380381 return;
381382 }
382383 }
....@@ -579,11 +580,9 @@
579580 struct i40e_hw *hw = &pf->hw;
580581 struct i40e_qv_info *qv_info;
581582 u32 v_idx, i, reg_idx, reg;
582
- u32 size;
583583
584
- size = sizeof(struct i40e_qvlist_info) +
585
- (sizeof(struct i40e_qv_info) * (qvlist_info->num_vectors - 1));
586
- ldev->qvlist_info = kzalloc(size, GFP_KERNEL);
584
+ ldev->qvlist_info = kzalloc(struct_size(ldev->qvlist_info, qv_info,
585
+ qvlist_info->num_vectors - 1), GFP_KERNEL);
587586 if (!ldev->qvlist_info)
588587 return -ENOMEM;
589588 ldev->qvlist_info->num_vectors = qvlist_info->num_vectors;