To fix below call trace:
[ 5748.193968] list_add double add: new=ffffff886ba61010, 
prev=ffffff886ba60060, next=ffffff886ba61010.
[ 5748.203102] WARNING: CPU: 3 PID: 20775 at lib/list_debug.c:29 
__list_add_valid+0x94/0xa0
[ 5748.210900] Modules linked in: xt_nat xt_tcpudp xt_conntrack xt_MASQUERADE
[ 5748.238942] CPU: 3 PID: 20775 Comm: ip Tainted: G        W         
5.4.78-yocto-standard #1
[ 5748.247268] Hardware name: Freescale S32G274 (DT)
[ 5748.251958] pstate: 20000005 (nzCv daif -PAN -UAO)
[ 5748.256732] pc : __list_add_valid+0x94/0xa0
[ 5748.260898] lr : __list_add_valid+0x94/0xa0
[ 5748.265061] sp : ffffffc0173232d0
[ 5748.268359] x29: ffffffc0173232d0 x28: ffffffc010ffb8c8
[ 5748.273654] x27: ffffff8855b34a10 x26: 000000000000000c
[ 5748.278949] x25: 000000000000000c x24: 0000000000000030
[ 5748.284243] x23: ffffff886ba60060 x22: ffffff886ba61010
[ 5748.289539] x21: ffffff886ba61010 x20: ffffff886ba60000
[ 5748.294833] x19: ffffff886ba60eb0 x18: 0000000000000030
[ 5748.300128] x17: 0000000000000000 x16: 0000000000000000
[ 5748.305423] x15: ffffff885c172270 x14: 3036303036616236
[ 5748.310717] x13: 3838666666666666 x12: 3d76657270202c30
[ 5748.316013] x11: 3130313661623638 x10: 0000000000001720
[ 5748.321307] x9 : 0000000000000000 x8 : ffffffc011702000
[ 5748.326601] x7 : 0000000000000000 x6 : ffffffc011701000
[ 5748.331897] x5 : ffffffc011701558 x4 : 0000000000000000
[ 5748.337191] x3 : 0000000000000000 x2 : ffffff885c171d40
[ 5748.342486] x1 : ff4d4c22b9328000 x0 : 0000000000000000
[ 5748.347782] Call trace:
[ 5748.350216]  __list_add_valid+0x94/0xa0
[ 5748.354036]  netif_napi_add+0x100/0x164
[ 5748.357855]  can_rx_offload_init_queue+0x90/0xf0
[ 5748.362452]  can_rx_offload_add_timestamp+0x60/0x80
[ 5748.367315]  flexcan_open+0x234/0x3d0
[ 5748.370962]  __dev_open+0x108/0x1b0
[ 5748.374432]  __dev_change_flags+0x1b4/0x220
[ 5748.378598]  dev_change_flags+0x40/0x80
[ 5748.382419]  do_setlink+0x1f8/0x930
[ 5748.385888]  __rtnl_newlink+0x51c/0x7c4
[ 5748.389708]  rtnl_newlink+0x58/0x80
[ 5748.393179]  rtnetlink_rcv_msg+0x18c/0x490
[ 5748.397263]  netlink_rcv_skb+0x60/0x120
[ 5748.401082]  rtnetlink_rcv+0x2c/0x3c
[ 5748.404638]  netlink_unicast+0x184/0x224
[ 5748.408544]  netlink_sendmsg+0x1a0/0x340
[ 5748.412453]  ____sys_sendmsg+0x1c8/0x214
[ 5748.416356]  ___sys_sendmsg+0x94/0xec
[ 5748.420001]  __sys_sendmsg+0x7c/0xd0
[ 5748.423559]  __arm64_sys_sendmsg+0x30/0x3c
[ 5748.427643]  el0_svc_common.constprop.0+0x78/0x13c
[ 5748.432413]  el0_svc_handler+0x54/0xc0
[ 5748.436148]  el0_svc+0x8/0x208
[ 5748.439183] irq event stamp: 0
[ 5748.442224] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
[ 5748.448476] hardirqs last disabled at (0): [<ffffffc0100b23e4>] 
copy_process+0x2e4/0x1000
[ 5748.456633] softirqs last  enabled at (0): [<ffffffc0100b23e4>] 
copy_process+0x2e4/0x1000
[ 5748.464790] softirqs last disabled at (0): [<0000000000000000>] 0x0
[ 5748.471038] ---[ end trace 790f7c34ea6cae43 ]---

In the function flexcan_open(), can_rx_offload_add_timestamp() and others code 
are called
two times and caused the above call trace, keeping one time is enough.

Signed-off-by: Xulin Sun <[email protected]>
---
 drivers/net/can/flexcan.c | 39 ---------------------------------------
 1 file changed, 39 deletions(-)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 650165745fbe..540a43e666e0 100755
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -1635,45 +1635,6 @@ static int flexcan_open(struct net_device *dev)
                                              FLEXCAN_NAPI_WEIGHT);
        }
 
-       if (err)
-               goto out_free_irq;
-
-       priv->mb_size = sizeof(struct flexcan_mb) + CAN_MAX_DLEN;
-       priv->mb_count = (sizeof(priv->regs->mb[0]) / priv->mb_size) +
-                        (sizeof(priv->regs->mb[1]) / priv->mb_size);
-
-       if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP)
-               priv->tx_mb_reserved =
-                       flexcan_get_mb(priv, 
FLEXCAN_TX_MB_RESERVED_OFF_TIMESTAMP);
-       else
-               priv->tx_mb_reserved =
-                       flexcan_get_mb(priv, FLEXCAN_TX_MB_RESERVED_OFF_FIFO);
-       priv->tx_mb_idx = priv->mb_count - 1;
-       priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx);
-
-       priv->reg_imask1_default = 0;
-       priv->reg_imask2_default = FLEXCAN_IFLAG_MB(priv->tx_mb_idx);
-
-       priv->offload.mailbox_read = flexcan_mailbox_read;
-
-       if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) {
-               u64 imask;
-
-               priv->offload.mb_first = FLEXCAN_RX_MB_OFF_TIMESTAMP_FIRST;
-               priv->offload.mb_last = priv->mb_count - 2;
-
-               imask = GENMASK_ULL(priv->offload.mb_last,
-                                   priv->offload.mb_first);
-               priv->reg_imask1_default |= imask;
-               priv->reg_imask2_default |= imask >> 32;
-
-               err = can_rx_offload_add_timestamp(dev, &priv->offload);
-       } else {
-               priv->reg_imask1_default |= FLEXCAN_IFLAG_RX_FIFO_OVERFLOW |
-                       FLEXCAN_IFLAG_RX_FIFO_AVAILABLE;
-               err = can_rx_offload_add_fifo(dev, &priv->offload,
-                                             FLEXCAN_NAPI_WEIGHT);
-       }
        if (err)
                goto out_free_irq;
 
-- 
2.17.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#9216): 
https://lists.yoctoproject.org/g/linux-yocto/message/9216
Mute This Topic: https://lists.yoctoproject.org/mt/78676223/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to