Patch "bnx2x: fix possible overrun of VFPF multicast addresses array" has been added to the 4.9-stable tree
This is a note to let you know that I've just added the patch titled
bnx2x: fix possible overrun of VFPF multicast addresses array
to the 4.9-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:
bnx2x-fix-possible-overrun-of-vfpf-multicast-addresses-array.patch
and it can be found in the queue-4.9 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 foo@baz Tue Dec 12 13:26:17 CET 2017
From: Michal Schmidt <[email protected]>
Date: Fri, 3 Mar 2017 17:08:30 +0100
Subject: bnx2x: fix possible overrun of VFPF multicast addresses array
From: Michal Schmidt <[email protected]>
[ Upstream commit 22118d861cec5da6ed525aaf12a3de9bfeffc58f ]
It is too late to check for the limit of the number of VF multicast addresses after they have already been copied to the req->multicast[] array, possibly overflowing it.
Do the check before copying.
Also fix the error path to not skip unlocking vf2pf_mutex.
--- drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-)
drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c +11 -12
@@ -868,7 +868,7 @@ int bnx2x_vfpf_set_mcast(struct net_devistruct bnx2x *bp =netdev_priv (dev);struct vfpf_set_q_filters_tlv *req = &bp->vf2pf_mbox->req.set_q_filters;struct pfvf_general_resp_tlv *resp = &bp->vf2pf_mbox->resp.general_resp; -int rc, i =0 ; +int rc =0 , i =0 ;struct netdev_hw_addr *ha;if (bp->state !=BNX2X_STATE_OPEN ) {
@@ -883,6 +883,15 @@ int bnx2x_vfpf_set_mcast(struct net_devi/* Get Rx mode requested */ DP (NETIF_MSG_IFUP ,"dev->flags = %x\n" , dev->flags); +/* We support PFVF_MAX_MULTICAST_PER_VF mcast addresses tops */ +if (netdev_mc_count (dev) >PFVF_MAX_MULTICAST_PER_VF ) { +DP (NETIF_MSG_IFUP , +"VF supports not more than %d multicast MAC addresses\n" , +PFVF_MAX_MULTICAST_PER_VF ); + rc = -EINVAL ; + goto out; + } +netdev_for_each_mc_addr (ha, dev) {DP (NETIF_MSG_IFUP ,"Adding mcast MAC: %pM\n" ,bnx2x_mc_addr (ha));
@@ -890,16 +899,6 @@ int bnx2x_vfpf_set_mcast(struct net_devi i++; } -/* We support four PFVF_MAX_MULTICAST_PER_VF mcast -* addresses tops -*/ -if (i >=PFVF_MAX_MULTICAST_PER_VF ) { -DP (NETIF_MSG_IFUP , -"VF supports not more than %d multicast MAC addresses\n" , -PFVF_MAX_MULTICAST_PER_VF ); -return -EINVAL ; - } - req->n_multicast = i; req->flags |=VFPF_SET_Q_FILTERS_MULTICAST_CHANGED ; req->vf_qid =0 ;
@@ -924,7 +923,7 @@ int bnx2x_vfpf_set_mcast(struct net_devi out:bnx2x_vfpf_finalize (bp, &req->first_tlv); -return 0 ; +return rc; }/* request pf to add a vlan for the vf */
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/bnx2x-fix-detection-of-vlan-filtering-feature-for-vf.patch queue-4.9/bnx2x-fix-possible-overrun-of-vfpf-multicast-addresses-array.patch queue-4.9/bnx2x-do-not-rollback-vf-mac-vlan-filters-we-did-not-configure.patch queue-4.9/bnx2x-prevent-crash-when-accessing-ptp-with-interface-down.patch