Patch "net: dsa: microchip: provide a list of valid protocols for xmit handler" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: dsa: microchip: provide a list of valid protocols for xmit handler

to the 6.6-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-microchip-provide-a-list-of-valid-protocols-.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 16ef2ec6ffbf217c6a72fe1393b3f8b80e9122d1
Author: Sean Nyekjaer <sean@xxxxxxxxxx>
Date:   Wed Dec 6 08:16:54 2023 +0100

    net: dsa: microchip: provide a list of valid protocols for xmit handler
    
    [ Upstream commit 1499b89289bf272fd83cb296c82fb5519d0fe93f ]
    
    Provide a list of valid protocols for which the driver will provide
    it's deferred xmit handler.
    
    When using DSA_TAG_PROTO_KSZ8795 protocol, it does not provide a
    "connect" method, therefor ksz_connect() is not allocating ksz_tagger_data.
    
    This avoids the following null pointer dereference:
     ksz_connect_tag_protocol from dsa_register_switch+0x9ac/0xee0
     dsa_register_switch from ksz_switch_register+0x65c/0x828
     ksz_switch_register from ksz_spi_probe+0x11c/0x168
     ksz_spi_probe from spi_probe+0x84/0xa8
     spi_probe from really_probe+0xc8/0x2d8
    
    Fixes: ab32f56a4100 ("net: dsa: microchip: ptp: add packet transmission timestamping")
    Signed-off-by: Sean Nyekjaer <sean@xxxxxxxxxx>
    Reviewed-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>
    Reviewed-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>
    Link: https://lore.kernel.org/r/20231206071655.1626479-1-sean@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index 42db7679c3606..286e20f340e5c 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -2624,10 +2624,18 @@ static int ksz_connect_tag_protocol(struct dsa_switch *ds,
 {
 	struct ksz_tagger_data *tagger_data;
 
-	tagger_data = ksz_tagger_data(ds);
-	tagger_data->xmit_work_fn = ksz_port_deferred_xmit;
-
-	return 0;
+	switch (proto) {
+	case DSA_TAG_PROTO_KSZ8795:
+		return 0;
+	case DSA_TAG_PROTO_KSZ9893:
+	case DSA_TAG_PROTO_KSZ9477:
+	case DSA_TAG_PROTO_LAN937X:
+		tagger_data = ksz_tagger_data(ds);
+		tagger_data->xmit_work_fn = ksz_port_deferred_xmit;
+		return 0;
+	default:
+		return -EPROTONOSUPPORT;
+	}
 }
 
 static int ksz_port_vlan_filtering(struct dsa_switch *ds, int port,




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux