Patch "net: dsa: bcm_sf2: Do not clobber b53_switch_ops" 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
net: dsa: bcm_sf2: Do not clobber b53_switch_ops
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:
net-dsa-bcm_sf2-do-not-clobber-b53_switch_ops.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 Thu Jan 12 21:37:26 CET 2017
From: Florian Fainelli <[email protected]>
Date: Sat, 7 Jan 2017 21:01:56 -0800
Subject: net: dsa: bcm_sf2: Do not clobber b53_switch_ops
From: Florian Fainelli <[email protected]>
[ Upstream commit a4c61b92b3a4cbda35bb0251a5063a68f0861b2c ]
We make the bcm_sf2 driver override ds->ops which points to b53_switch_ops since b53_switch_alloc() did the assignent. This is all well and good until a second b53 switch comes in, and ends up using the bcm_sf2 operations. Make a proper local copy, substitute the ds->ops pointer and then override the operations.
--- drivers/net/dsa/bcm_sf2.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/net/dsa/bcm_sf2.c +7 -0
@@ -982,6 +982,7 @@ static int bcm_sf2_sw_probe(struct platfconst char *reg_names[BCM_SF2_REGS_NUM ] =BCM_SF2_REGS_NAME ;struct device_node *dn = pdev->dev.of_node;struct b53_platform_data *pdata; +struct dsa_switch_ops *ops;struct bcm_sf2_priv *priv;struct b53_device *dev;struct dsa_switch *ds;
@@ -995,6 +996,10 @@ static int bcm_sf2_sw_probe(struct platfif (!priv)return -ENOMEM ; + ops =devm_kzalloc (&pdev->dev,sizeof (*ops),GFP_KERNEL ); +if (!ops) +return -ENOMEM ; + dev =b53_switch_alloc (&pdev->dev, &bcm_sf2_io_ops, priv);if (!dev)return -ENOMEM ;
@@ -1014,6 +1019,8 @@ static int bcm_sf2_sw_probe(struct platf ds = dev->ds;/* Override the parts that are non-standard wrt. normal b53 devices */ +memcpy (ops, ds->ops,sizeof (*ops)); + ds->ops = ops; ds->ops->get_tag_protocol = bcm_sf2_sw_get_tag_protocol; ds->ops->setup = bcm_sf2_sw_setup; ds->ops->get_phy_flags = bcm_sf2_sw_get_phy_flags;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/net-dsa-ensure-validity-of-dst-ds.patch queue-4.9/net-stmmac-fix-race-between-stmmac_drv_probe-and-stmmac_open.patch queue-4.9/net-dsa-bcm_sf2-utilize-nested-mdio-read-write.patch queue-4.9/net-dsa-bcm_sf2-do-not-clobber-b53_switch_ops.patch