From owner-freebsd-net@freebsd.org Thu May 19 21:18:02 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ACFE8B41866 for ; Thu, 19 May 2016 21:18:02 +0000 (UTC) (envelope-from stevek@juniper.net) Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0128.outbound.protection.outlook.com [65.55.169.128]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "Microsoft IT SSL SHA2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EBEB31EB6; Thu, 19 May 2016 21:18:00 +0000 (UTC) (envelope-from stevek@juniper.net) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=junipernetworks.onmicrosoft.com; s=selector1-juniper-net; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=D3e9rg6noZr6mFO8LvP7oag5UKa1HvenFGj+weC3W64=; b=Pnbi650uJgd7wnU7KlfwMfzUOcUSxTRxqnCK8PoGKvAlFV3OjYJriMvk7SB9Ur8yGEtahLT7jKsSBkotODAhM5n28Jt6+uqTl4686d3nLl9fIAuGzoVkJYG1gKaEPBw+w5LKISl5XkKEcXerL50KG+yzO2vm5mTMwfe+yQmaLDM= Received: from BLUPR05CA0048.namprd05.prod.outlook.com (10.141.20.18) by CO2PR05MB2487.namprd05.prod.outlook.com (10.166.95.145) with Microsoft SMTP Server (TLS) id 15.1.497.12; Thu, 19 May 2016 21:17:58 +0000 Received: from BY2FFO11OLC002.protection.gbl (2a01:111:f400:7c0c::188) by BLUPR05CA0048.outlook.office365.com (2a01:111:e400:855::18) with Microsoft SMTP Server (TLS) id 15.1.501.7 via Frontend Transport; Thu, 19 May 2016 21:17:58 +0000 Authentication-Results: spf=softfail (sender IP is 66.129.239.19) smtp.mailfrom=juniper.net; freebsd.org; dkim=none (message not signed) header.d=none;freebsd.org; dmarc=none action=none header.from=juniper.net; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.19 as permitted sender) Received: from P-EMFE01C-SAC.jnpr.net (66.129.239.19) by BY2FFO11OLC002.mail.protection.outlook.com (10.1.15.178) with Microsoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport; Thu, 19 May 2016 21:17:58 +0000 Received: from stevek-ubuntu.jnpr.net (172.25.4.171) by P-EMFE01C-SAC.jnpr.net (172.24.192.21) with Microsoft SMTP Server id 14.3.123.3; Thu, 19 May 2016 14:16:16 -0700 Date: Thu, 19 May 2016 17:16:13 -0400 From: Steve Kiernan To: Raviprakash Darbha CC: "freebsd-net@freebsd.org" , "andre@freebsd.org" Subject: Re: Double lock issue of unp_link_rwlock in usrreq.c observed Message-ID: <20160519171613.2da53612@stevek-ubuntu.jnpr.net> In-Reply-To: <948AD75B-BF6E-4672-8B50-9CF9E25667EA@juniper.net> References: <948AD75B-BF6E-4672-8B50-9CF9E25667EA@juniper.net> Organization: Juniper Networks Inc. X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.27; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:66.129.239.19; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(24454002)(9170700003)(4001450100002)(47776003)(6806005)(104016004)(53416004)(23676002)(5008740100001)(2950100001)(77096005)(87936001)(86362001)(50466002)(50226002)(92566002)(76176999)(50986999)(33646002)(189998001)(106466001)(9686002)(8676002)(5820100001)(2906002)(5003600100002)(5890100001)(11100500001)(8936002)(19580405001)(81166006)(4326007)(450100001)(8746002)(1076002)(105596002)(19580395003)(1220700001)(586003)(110136002)(39210200001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO2PR05MB2487; H:P-EMFE01C-SAC.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC002; 1:FTfc0/Ijou8Of96PACkUTCoKgqvCKmR2s9Cfo5uKLplp9yoMet0lMp0D9ErRXmePXEy+FspI7NT8kv+3rNqflLB1UYj7a5ULmL/L7UQPc79R3pfqvMjxYcOpohopfG/O1MWeN9xexgw1Szno6/Sx2qYhHGXO5CckMjL9BdYAmEEC/+wdfUt1p8C/hM6QQez3OgkYCT4jGpxaX7gmnWmz+gHJD8GfSB1t3lR1WMI0pcfMlbNZ4I5sn8oXxMXkRy8dhuzLDnfGdAT+FjSv/lHmsnJVbzBPGqkYKdHSnuAiyFCSvUuq1hNNKk7Fgb3jNz+ioy98xbbga1ZqBXCDpqvOJ6FPud5qc2byD5UXSD9GbsClmwVrxJb9e/Pkk0Z3RpqL8eAD81QwviKmWJTqFTEY+pNaJVKsKBnqY1/SyNEMXK4zqVI7ouWhp7sr19UoN+ryy+qksv2pxrokQN00kivb4RS8fCrocAGGPMojRXXkTTILUBA+yUQ99FLomIJIXg0k X-MS-Office365-Filtering-Correlation-Id: b43da063-9fc8-4a39-b299-08d3802b0d73 X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB2487; 2:tij70J+hXMQPXcoEb1y+EWBLYRqwdo/84V7p2+In4QISqlZfa1yF1gvEkf6tmVOU6OAkkQYJN3S/Hw3JKcof17uBPgo3I8tt0b4ELvhJGGuK07FJFP5yd3rTBFEg4nWP28SLH8n4Dq3I61FDBmvhXIvRdfifeqFSF8lkxsuhEAxBNPkpWBSpjQrQGPxbMYXj; 3:WCMoUwgPD5gDtWz9CjCGMMqbSMeJxz1xj09agGdWm/JXwPhPT8p+TTrFGmyyOJgeG26nF5vgovM2Lb5m5UHhA4jAPq9kRshlnWxGaEiQ8J6UZna5sZDCtoo7h9K7DZj4LIDg18SxrC++9uK1xzlghTpk9ygxg5xbpk0Fywv/HPSalPftX7egqDKY+BIR+lR1w5SYSASo2tZLE6OCFYF2estfh2vDQ+fu31XF0FVdvXU=; 25:7f751/d9Eb/tMOptivWsW5Mkm5S/y/q9fqTQbc0toCD+BGGiIVSuYATPxQTE8nPaikQVJnfGhBVMnCUgfv5F2MNjDSzN5s/C7oUj3kENSoL6m7bWPBKVTRohvIMgmydZYg2JGp6ZXtgupyKy0G0NKvWIgT/batwKVphg6/OHca5MVTlhytXfStvKrdHiv3LFpAnBfm/O2IDkhnTip+EH+sz7RqX6E4Wsg9rZ0gvARRhhhaWV1vk1WerxGHxa47wfuiYxpwYhUiA+HW6zovSxZfeKWF0oUVDOQOk1dXM9JW/PkjC2/IVbi3+LPVpGHrPyaeKG3EL9P8JhRXXPeCyeBK5FAqeDnls/Tr9IjPvd9aobAcQh0shgVBak/gdxxdb2qXI0L4QB8S/p6mfJRG9GF8ddnWCu28d0QSyHqOWMpEo= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO2PR05MB2487; X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB2487; 20:z/9pyQIOBzGAsrWNWwOCEa8qEFcZxUHjsEa0ziiD0Nj3M+UISdiVLpypDYP+XFMA0nTEB4Bp3x92sjEimDhfeLpu9kKH6OCcgQWnMX1/oEOMwxTnDh4F5Uv5dMuNEtXfyiNvXG72Gg5V3nfPTY86CM6BUcbal0P0mWiM482NP1hv1julobHsux70UCmnqQ78IWjuyWjSGG+lMOCcTNghtfVpRgjV823mj99NfTwbNfVHlVkOe0YVy1f2zsLcaUN7Dw/JyVjwCZtQbvrA1XRcsVmiZTaeSDySCRvwKdUvEN2y4BeqjnHvLG07w6ExRhxT/4c2OZyth5n0ivLiW3U+6+dBJPsCIGUefpvpZJafdR5Y1/lwW7KqHbFbdvSekequbZd7JF6mM2K9fDn+Oo3+eAjQVoHS2jgbrvq8Sv1s3iIH9nlzmkOrd9+m8CmsKGm1UUWq3bTMzkyNNsM+RNfu1k5fq1GbXQvLtUnBCB1vmWyf1MRtzkXLhIPz7bM4xzM/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(138986009662008); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13024025)(13023025)(13018025)(13017025)(13015025)(5005006)(8121501046)(10201501046)(3002001)(6055026); SRVR:CO2PR05MB2487; BCL:0; PCL:0; RULEID:; SRVR:CO2PR05MB2487; X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB2487; 4:Jdj6BxDKYUr9jp53zvPXZaZfRqSz4Qjvf4XXMHDk/5uaHWdeDfKpve5bXzCQmbcTbLC+3/EHqBn0nKMgBVNNnKfORuQjq/m8LfdCoB881RzRXR8Yax5Xn0JD+F3W4r5kA/XG8R3npqygiN3ofRPhKVd1JzhbaCLJOWhTKxbgEYiLUlIlWGDyGmYcwebldUdiFNqrfZAKXuxcNmNupMtzeKetmnWyQgcHFv0j5cAIEFUAUvzKiXR0Rrbhr1KO3UNy0oDySGadoCNfy8BhsMn5VfRIKLzUGRSfN9IAynzh3CUafn2h1N9XQdvpNyXO3BVUdZ05UhjC5rzhpILZdEeFD+DbkTM1gGdF8TdgkOFPgS3fickiOQHln/NtIC61A4pADjg/UXO874XmlZdv6GxgEoGPOzPeVDqoI9FVMAHNfhU7prl9xlZAlXnFxZVpmx0p2WVLXuaFG0EGeEAhd8KgUtUZd1VIEr8mwoFWwkRgR0qLUxFU8g/wN3nojoMCp1gk27kB+fhJHWAxY9URV7nACg== X-Forefront-PRVS: 094700CA91 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDTzJQUjA1TUIyNDg3OzIzOkR0dXh2dEI1bnRqYUZtR1VWRGUwSWNtTysw?= =?utf-8?B?dFg2bnNydlRWL293S25FQmtYVXhxYkhscnZkTnNMYlNIY012VmxENnlFc3k4?= =?utf-8?B?WW5yUGs1dFR5TWFUQlNjaGFZWmhvOWNrUHV6clRXSFBhaVIrYVZsdFA5akYw?= =?utf-8?B?U3RtUy9qWThadTNKTjhvVnQvazV2SVVvQ3hZOFpiejFRMDNvaWZNc3BJQ3M2?= =?utf-8?B?eGtNdjMrUzBJYXNYTVRDbXprc3dUTEh5NFVKVGFLVGxMeURpelpiVkh1aGh2?= =?utf-8?B?SWNMRElmOXBGQVY4UjR5WkZxWnVmeTdZd2t1VGVvQy9aV3RnUk1vTll1c1Fy?= =?utf-8?B?Q2pZVUZxbE5sYmExYlpjbVgyQ01XVGtsQ2lYcU5NYUNka3FFLzVrNEJ2Ty8y?= =?utf-8?B?cWIvdmpVWnR0TVJGbEd3R2JwcDAranhVQkJkVlNCMnZpY21KT08rZTR6TU4r?= =?utf-8?B?Q2V0L291d0R5MkRYQkU4ZlRqSVdNZFJMbFpZR0JnTTVzN1BTbDlTZ1crNlN2?= =?utf-8?B?azR1Q2ZONHhCRnRIdEgvazhvRUNhYXl0aTAyYWJNbWxUc2o1NmdydjAzV2x5?= =?utf-8?B?bmRHQWNzWE4yMTc5aVZ3YmpCdS9ITU5rSmFSYjk2THpRcHpoY2QzWHJJcjJq?= =?utf-8?B?RVlIR3h1ZDZSMEtYOXJEcjZaalBHa3RaT3pXUzQ3SkV2aDByYkNXNGJyUkZZ?= =?utf-8?B?Z1pQZVRYVk9MOUJWNkhncWdtbFA0cmtKWlpBRnJCcHhZb01PUTRIWHc1R3Ir?= =?utf-8?B?Q0tJbEcxdEZBWjgwMllCVW5vdUFnNG5BeVNjM1ZhZFhjOU9ERGU0ckR2N1RF?= =?utf-8?B?eE5WWjRTcmdEY3pQOWtjbTdxdGFSS0s4ZnFWdk01SDY2aEJiM2dNTDB6OCsw?= =?utf-8?B?eDloaHR2YTNNa0VTaC9TVTVWQ09xUitWRDdXVGMxUFhSVFZoSWZTNHVqaEx0?= =?utf-8?B?dnZnQnpNYW83QVdYWHRkVXdKMjJub0pvSlRpUkV1OU9yZjBWSUROaUkwV2hL?= =?utf-8?B?a3NSNkRUYWZvaDZtR1ZlZ1hhVEJFbFFaNC9BRi9wUVVtS3FGUVhndXA4Q3Y0?= =?utf-8?B?VjNYYkQvemlvbHhQN2tYN0c4bWhtbzU5ZjVVaHFpVmM5ckxmcjJ1Y2ZWOEpE?= =?utf-8?B?cUdHYnE2enFBUGxMcTk3ZStzVFZRbVU4N0tYVzhWeno5NTcxNHdOdVZySVdB?= =?utf-8?B?R25FWEwwTnRDUTh1UlpGR2NlUm5sUmlYKytqQjI1TkRrYVQ3V0xaRHZFS1Rt?= =?utf-8?B?U05xTTN1cjNJaDdueUE0eCtLdmw1cmxpbnRwcmdySkxKSjcwMG1qaVBsMjFw?= =?utf-8?B?NDUydFdTai9xaElJWWlGMWdOL0p2ZWZxT3NySitQT2N5OUJIeWFseWVta3FO?= =?utf-8?B?eGE3TmkzcGdudXVLRlNWVTVxanM5VkN6NWc2MkVrN3RiZEtkTXBnN0QzbmVo?= =?utf-8?B?N2hsY3dZN050T1M3T1FLWnI5dDRqQzk2bkZBQTFyQ0piTWs4d3B1NzJrWm51?= =?utf-8?Q?CAuv/nZ5H3RZXqMH3uAawXYedpvmbL4Wyh+amhcfpRGTns?= X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB2487; 5:fUr4EFNYzaEYjfMugqKElc/gSky23XGmymHFp7ud2dn72XpHv6mhvqH58U7uqk6xaYUQZL/SA9/XLxP2Ti5cBZZ7fmKKupAnJuwDQp1eW3VgH39gz4XdNIIHqiJfrU8bx00HGCa+rRPNWPBwSMEiQA==; 24:MjwvJigIrnbJilXoznwcehq50epaPnn452bYW9duXmvTwTHn3KTL+7dsypAlJ1oZq6gEZV/GuoOc+OpVIHWCIvi4XxSqQ7/T00HY4e/ZzXo=; 7:liTuDYqAOOlQAfjjtlwE6cQGxhFjg5OOKbpEHL2YdIvwKCEnGwVluHC1FRL4f3hQPM5ZFWcVU143Coq0TrQTcckx+mZalYqz+myzus7mcULKvMEAH1DSGc7TkFQw5v3bXzv9kNoVkC0sOhA99lZy4JDFsmFPHIAbqQutjXwP/JwFvbPIdhM8HtpP/AHK0OBM SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: juniper.net X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2016 21:17:58.4667 (UTC) X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.19]; Helo=[P-EMFE01C-SAC.jnpr.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR05MB2487 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 May 2016 21:18:02 -0000 On Thu, 19 May 2016 17:06:34 -0400 Raviprakash Darbha wrote: > Hello Andre=20 >=20 > I encountered a double lock issue in unp_connectat function. After lookin= g at the code , I think the unp_link_rwlock is being locked once unp_connec= tat and once again in unp_detach (called from sofree ). Would like to get = your opinion on the issue and the fix. Below is the exact call stack. >=20 >=20 Just to clarify, this is uipc_connect() at this point... > UNP_LINK_WLOCK(); <=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94= =E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94 1 st call=20 > =E2=80=A6.. > =E2=80=A6.. ...and unp_connectat() at this point. > if (so->so_proto->pr_flags & PR_CONNREQUIRED) { > if (so2->so_options & SO_ACCEPTCONN > CURVNET_SET(so2->so_vnet);=20 > so3 =3D sonewconn(so2, 0); > // Expanding sonewconn=20 > {=20 > sonewconn=20 > { > =E2=80=A6=E2=80=A6 > soalloc > =E2=80=A6=E2=80=A6. > pru_attach=20 > =E2=80=A6=E2=80=A6. > if (!(head->so_options & SO_ACCEPTCONN) && > ((head->so_proto->pr_protocol !=3D IPPROTO_SCTP) || > (head->so_type !=3D SOCK_SEQPACKET))) { > =E2=80=A6=E2=80=A6=E2=80=A6. > sofree(so); /* NB: returns ACCEPT_UNLO= CK'ed. */ >=20 > // Expanding sofree=20 >=20 > { =20 >=20 > =E2=80=A6=E2=80=A6. >=20 > pru_detach >=20 > // expanding pru_detach=20 >=20 > { >=20 > // Recursive wlock acquiring.=20 >=20 > UNP_LINK_WLOCK() <=E2=80=94=E2=80=94=E2= =80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94 2nd = Call=20 >=20 > Let me know your thoughts or if you need more information. Thanks ! =20 I suspect that this UNP_LINK_WLOCK() should become an assert. However, I'm not clear on the implications of removing the UNP_LINK_WUNLOCK= () farther down in pru_detach, then. Considering there's potentially a taskqueue call and vn_rele, depending on = what is set in the unpcb structure. --=20 Steve Kiernan Principal Engineer, Core OS/Kernel Group Juniper Networks, Inc.