Patch "[PATCH 009/135] i40e: clean whole mac filter list" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
[PATCH 009/135] i40e: clean whole mac filter list
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
0009-i40e-clean-whole-mac-filter-list.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
83c8f9244cde13960583de6bc8666d8e87fc6995Mon Sep 17 00:00:00 2001
From: Shannon Nelson <[email protected]>
Date: Thu, 19 Nov 2015 11:34:23 -0800
Subject: [PATCH 009/135] i40e: clean whole mac filter list
[ Upstream commit f11999987bc0b5559ab56dedc6f4ca32fab5438a ]
Clean the whole mac filter list when resetting after an intermediate add or delete push to the firmware. The code had evolved from using a list from the stack to a heap allocation, but the memset() didn't follow the change correctly. This now cleans the whole list rather that just part of the first element.
--- drivers/net/ethernet/intel/i40e/i40e_main.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
drivers/net/ethernet/intel/i40e/i40e_main.c +11 -8
@@ -1973,11 +1973,13 @@ int i40e_sync_vsi_filters(struct i40e_vs/* Now process 'del_list' outside the lock */ if (!list_empty (&tmp_del_list)) { +int del_list_size; + filter_list_len = pf->hw.aq.asq_buf_size /sizeof (struct i40e_aqc_remove_macvlan_element_data ); - del_list =kcalloc (filter_list_len, -sizeof (struct i40e_aqc_remove_macvlan_element_data ), -GFP_KERNEL ); + del_list_size = filter_list_len * +sizeof (struct i40e_aqc_remove_macvlan_element_data ); + del_list =kzalloc (del_list_size,GFP_KERNEL );if (!del_list) {i40e_cleanup_add_list (&tmp_add_list);
@@ -2009,7 +2011,7 @@ int i40e_sync_vsi_filters(struct i40e_vs NULL); aq_err = pf->hw.aq.asq_last_status; num_del =0 ; -memset (del_list,0 ,sizeof (*del_list)); +memset (del_list,0 , del_list_size);if (ret && aq_err !=I40E_AQ_RC_ENOENT ) dev_err(&pf->pdev->dev,
@@ -2042,13 +2044,14 @@ int i40e_sync_vsi_filters(struct i40e_vs }if (!list_empty (&tmp_add_list)) { +int add_list_size;/* do all the adds now */ filter_list_len = pf->hw.aq.asq_buf_size /sizeof (struct i40e_aqc_add_macvlan_element_data ), - add_list =kcalloc (filter_list_len, -sizeof (struct i40e_aqc_add_macvlan_element_data ), -GFP_KERNEL ); + add_list_size = filter_list_len * +sizeof (struct i40e_aqc_add_macvlan_element_data ); + add_list =kzalloc (add_list_size,GFP_KERNEL );if (!add_list) {/* Purge element from temporary lists */ i40e_cleanup_add_list (&tmp_add_list);
@@ -2086,7 +2089,7 @@ int i40e_sync_vsi_filters(struct i40e_vsif (ret)break ; -memset (add_list,0 ,sizeof (*add_list)); +memset (add_list,0 , add_list_size); }/* Entries from tmp_add_list were cloned from MAC * filter list, hence clean those cloned entries
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/0009-i40e-clean-whole-mac-filter-list.patch