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]] -=-=-=-=-=-=-=-=-=-=-=-
