Hi Partha, Thanks for the new patches. I have tested them and had a kernel warning as per below. This is running on a SMP system with 4 cores. The warning reads as though one thread has gone to free the item while another thread has gotten a reference to it. The suggestion is to use kref_get_unless_zero() instead of kref_get().
------------[ cut here ]------------ WARNING: at /home/johnt/views/main/linux/include/linux/kref.h:46 Modules linked in: tipc jitterentropy_rng echainiv drbg platform_driver(O) CPU: 1 PID: 1527 Comm: intrTokenReset Tainted: P O task: a52c8600 ti: a4c98000 task.ti: a4c98000 NIP: c161809c LR: c1618120 CTR: 80695270 REGS: a4c99b30 TRAP: 0700 Tainted: P O MSR: 00029002 <CE,EE,ME> CR: 28002482 XER: 00000000 GPR00: c1618694 a4c99be0 a52c8600 a4c4e840 a2763aa0 00000000 a4ab623c 00000030 GPR08: 01001005 00000001 c1620000 00000005 80695270 107d12f0 6c23e000 00000009 GPR16: 00000000 808e0000 808e0000 00040100 00040006 807c9428 808f0000 a2e39ac0 GPR24: 808dba00 01001005 a4ab623c a50fb300 00000030 a50fb31c a50fb300 a4c4e840 NIP [c161809c] tipc_nl_publ_dump+0x93c/0xf10 [tipc] LR [c1618120] tipc_nl_publ_dump+0x9c0/0xf10 [tipc] Call Trace: [a4c99be0] [800b9e2c] free_pages_prepare+0x18c/0x2a0 (unreliable) [a4c99c00] [c1618694] tipc_conn_sendmsg+0x24/0x150 [tipc] [a4c99c30] [c160ad5c] tipc_subscrp_report_overlap+0xbc/0xd0 [tipc] [a4c99c70] [c160b31c] tipc_topsrv_stop+0x45c/0x4f0 [tipc] [a4c99ca0] [c160b848] tipc_nametbl_remove_publ+0x58/0x110 [tipc] [a4c99cd0] [c160bd08] tipc_nametbl_withdraw+0x68/0x140 [tipc] [a4c99d00] [c1613ce4] tipc_nl_node_dump_link+0x1904/0x45d0 [tipc] [a4c99d30] [c16148f8] tipc_nl_node_dump_link+0x2518/0x45d0 [tipc] [a4c99d70] [804f5a40] sock_release+0x30/0xf0 [a4c99d80] [804f5b14] sock_close+0x14/0x30 [a4c99d90] [80105844] __fput+0x94/0x200 [a4c99db0] [8003dca4] task_work_run+0xd4/0x100 [a4c99dd0] [80023620] do_exit+0x280/0x980 [a4c99e10] [80024c48] do_group_exit+0x48/0xb0 [a4c99e30] [80030344] get_signal+0x244/0x4f0 [a4c99e80] [80007734] do_signal+0x34/0x1c0 [a4c99f30] [800079a8] do_notify_resume+0x68/0x80 [a4c99f40] [8000fa1c] do_user_signal+0x74/0xc4 --- interrupt: c00 at 0xf5b0cfc LR = 0xf5b0ce8 Instruction dump: 4bffffa8 7c0004ac 7d201828 31290001 7d20192d 40a2fff4 7c0004ac 2f890001 4dbd0020 3d40c162 892ac11e 69290001 <0f090000> 2f890000 4dbe0020 39200001 ---[ end trace 544bc785f9258108 ]--- JT On Thu, Jan 12, 2017 at 1:19 AM, Parthasarathy Bhuvaragan < parthasarathy.bhuvara...@ericsson.com> wrote: > In this series, we revert the commit 333f796235a527 ("tipc: fix a > race condition leading to subscriber refcnt bug") and provide an > alternate solution to fix the race conditions in commits 2-4. > > We have to do this as the above commit introduced a nametbl soft > lockup at module exit as described by patch#4. > > --- > v3: introduce cleanup workqueue to fix nametbl soft lockup. > > Parthasarathy Bhuvaragan (6): > tipc: fix nametbl_lock soft lockup at node/link events > tipc: add subscription refcount > tipc: fix connection refcount error > tipc: fix nametbl_lock soft lockup at module exit > tipc: ignore requests when the connection state is not CONNECTED > tipc: fix cleanup at module unload > > net/tipc/node.c | 9 ++++- > net/tipc/server.c | 44 +++++++++------------ > net/tipc/subscr.c | 116 ++++++++++++++++++++++++++++++ > ++---------------------- > net/tipc/subscr.h | 1 + > 4 files changed, 94 insertions(+), 76 deletions(-) > > -- > 2.1.4 > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ tipc-discussion mailing list tipc-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tipc-discussion