Patch "net: stmmac: enable all safety features by default" has been added to the 5.15-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: stmmac: enable all safety features by default

to the 5.15-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-stmmac-enable-all-safety-features-by-default.patch
and it can be found in the queue-5.15 subdirectory.

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



commit c336e409a26ce7a237113913fb305ddd052ddb27
Author: Andrew Halaney <ahalaney@xxxxxxxxxx>
Date:   Wed Jan 18 10:56:38 2023 -0600

    net: stmmac: enable all safety features by default
    
    [ Upstream commit fdfc76a116b5e9d3e98e6c96fe83b42d011d21d4 ]
    
    In the original implementation of dwmac5
    commit 8bf993a5877e ("net: stmmac: Add support for DWMAC5 and implement Safety Features")
    all safety features were enabled by default.
    
    Later it seems some implementations didn't have support for all the
    features, so in
    commit 5ac712dcdfef ("net: stmmac: enable platform specific safety features")
    the safety_feat_cfg structure was added to the callback and defined for
    some platforms to selectively enable these safety features.
    
    The problem is that only certain platforms were given that software
    support. If the automotive safety package bit is set in the hardware
    features register the safety feature callback is called for the platform,
    and for platforms that didn't get a safety_feat_cfg defined this results
    in the following NULL pointer dereference:
    
    [    7.933303] Call trace:
    [    7.935812]  dwmac5_safety_feat_config+0x20/0x170 [stmmac]
    [    7.941455]  __stmmac_open+0x16c/0x474 [stmmac]
    [    7.946117]  stmmac_open+0x38/0x70 [stmmac]
    [    7.950414]  __dev_open+0x100/0x1dc
    [    7.954006]  __dev_change_flags+0x18c/0x204
    [    7.958297]  dev_change_flags+0x24/0x6c
    [    7.962237]  do_setlink+0x2b8/0xfa4
    [    7.965827]  __rtnl_newlink+0x4ec/0x840
    [    7.969766]  rtnl_newlink+0x50/0x80
    [    7.973353]  rtnetlink_rcv_msg+0x12c/0x374
    [    7.977557]  netlink_rcv_skb+0x5c/0x130
    [    7.981500]  rtnetlink_rcv+0x18/0x2c
    [    7.985172]  netlink_unicast+0x2e8/0x340
    [    7.989197]  netlink_sendmsg+0x1a8/0x420
    [    7.993222]  ____sys_sendmsg+0x218/0x280
    [    7.997249]  ___sys_sendmsg+0xac/0x100
    [    8.001103]  __sys_sendmsg+0x84/0xe0
    [    8.004776]  __arm64_sys_sendmsg+0x24/0x30
    [    8.008983]  invoke_syscall+0x48/0x114
    [    8.012840]  el0_svc_common.constprop.0+0xcc/0xec
    [    8.017665]  do_el0_svc+0x38/0xb0
    [    8.021071]  el0_svc+0x2c/0x84
    [    8.024212]  el0t_64_sync_handler+0xf4/0x120
    [    8.028598]  el0t_64_sync+0x190/0x194
    
    Go back to the original behavior, if the automotive safety package
    is found to be supported in hardware enable all the features unless
    safety_feat_cfg is passed in saying this particular platform only
    supports a subset of the features.
    
    Fixes: 5ac712dcdfef ("net: stmmac: enable platform specific safety features")
    Reported-by: Ning Cai <ncai@xxxxxxxxxxx>
    Signed-off-by: Andrew Halaney <ahalaney@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac5.c b/drivers/net/ethernet/stmicro/stmmac/dwmac5.c
index 9c2d40f853ed..413f66017219 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac5.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac5.c
@@ -186,11 +186,25 @@ static void dwmac5_handle_dma_err(struct net_device *ndev,
 int dwmac5_safety_feat_config(void __iomem *ioaddr, unsigned int asp,
 			      struct stmmac_safety_feature_cfg *safety_feat_cfg)
 {
+	struct stmmac_safety_feature_cfg all_safety_feats = {
+		.tsoee = 1,
+		.mrxpee = 1,
+		.mestee = 1,
+		.mrxee = 1,
+		.mtxee = 1,
+		.epsi = 1,
+		.edpp = 1,
+		.prtyen = 1,
+		.tmouten = 1,
+	};
 	u32 value;
 
 	if (!asp)
 		return -EINVAL;
 
+	if (!safety_feat_cfg)
+		safety_feat_cfg = &all_safety_feats;
+
 	/* 1. Enable Safety Features */
 	value = readl(ioaddr + MTL_ECC_CONTROL);
 	value |= MEEAO; /* MTL ECC Error Addr Status Override */



[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