Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752838AbdLAOC7 (ORCPT ); Fri, 1 Dec 2017 09:02:59 -0500 Received: from mail-ve1eur01on0119.outbound.protection.outlook.com ([104.47.1.119]:45081 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750932AbdLAOC5 (ORCPT ); Fri, 1 Dec 2017 09:02:57 -0500 Subject: Re: [PATCH net v2] tipc: call tipc_rcv() only if bearer is up in tipc_udp_recv() To: Ying Xue , Jon Maloy , "David S. Miller" , netdev@vger.kernel.org, tipc-discussion@lists.sourceforge.net, linux-kernel@vger.kernel.org References: <20171129104842.30781-1-tommi.t.rantala@nokia.com> <213f64e0-d5c3-511f-b83a-c468c399abc1@windriver.com> <840ce8d1-7271-5189-4cfa-e40f4a0a4172@windriver.com> From: Tommi Rantala Message-ID: Date: Fri, 1 Dec 2017 16:02:47 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <840ce8d1-7271-5189-4cfa-e40f4a0a4172@windriver.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [131.228.32.186] X-ClientProxiedBy: HE1P191CA0006.EURP191.PROD.OUTLOOK.COM (2603:10a6:3:cf::16) To VI1PR07MB1325.eurprd07.prod.outlook.com (2a01:111:e400:5a03::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7f6f3a07-731a-4d97-6e59-08d538c43774 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(48565401081)(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603286);SRVR:VI1PR07MB1325; X-Microsoft-Exchange-Diagnostics: 1;VI1PR07MB1325;3:3LxwezOQ0C/CLNBjq/khZMAF0yi8j7uwALCznzEz3ZSVVMFSVMB62oLJggwFwNKOtkec01ZfPEnmwobgbJyl9rVtZx1WW9NhIJJiRCzcCOwbPNwg8eBLUAjdCL2g04ssxozCHVsjEZX/SGxeBNY9qqrSEtdNxk8HHebBTMqNgup19VbrnUo3GurjLLLy94/sY6YXcCXPGCc3HR4HKiy2LyLZ2Yt1E1lfi5PB9Lqw5WkLPWslxaWYxxNFrorPDI4F;25:hm6x3UTxL0OfB/AV0hCd2amVN/4tiJfngmYXv3EpwXCS9Md2g7NEiA/Z7sTQmvyTAx6gVE9XoN2TqwpTNDPH0t30C6ksrg4EdE4GtMJ8viXzXw4lenvi/6lGkpwVPrZfjLHbdeSBDC8kw1mJBKFEVZoK5LhRyQGgAECKv2Uj/Zi4zLh/psyJDJkBkZzrFjP7lLPt78UXWarrnCRJpmgNh0ZmSrMYvYDJX4IPstE08j7plJUfAHxfVMugrigBnGBXtqW3mAH7v0df9hD8VVQWq9vpGMhMdqb7YEN8TR5/294OAPm+I4YCJqLkN/E4fdjOvGRiOIWlQ4+4dSgElQExkA==;31:f7h/ecUBQyB+s0gxpusBCyJpajGEgu68zPsQlt5SR9zCw5hd4GIvJhcAu8hyzIfjFmYjO5Hm53KElDcHNBsyp/dISfJhH3IGsilfglWMslqf+LxmE7/+kasSO0OqqWxcyfcgR6lqFJQkzWosqgvU1td4FzCaQ0hj2zMeXtCfySdu0g7FCyW8ReLiIRsTIQs/AYSZ/CPi3Iqx+eaaVRZeXqTg3F//5MF1R5b6NzJsJKE= X-MS-TrafficTypeDiagnostic: VI1PR07MB1325: X-Microsoft-Exchange-Diagnostics: 1;VI1PR07MB1325;20:IoLRJk5rtnQN7CgUd7xJ0tOKRMe7NMo+3c4PeQ/vwMZ5MK07eAAvPRoHdVbmJC2OpiKli3jVMJbojrlG7i3BxHdCxzNEC+nrOSWBj2hJdvqTEbNcSC/E58E44I+Edfw2wT577aYm7oPciO9p4RlAwI05U6T2WqcpRSW3BrSX2F8QLgWwGMcw/n8Eug5DS1sDroDUCiHa6PhXFfOOHxfjx7h2inyvqCW+pXVUvH7YF5RB+U9nuamp+VLXtfSEdLDq3+wWrZY6O/rUBW6HcPfU7xv8n323nsaFShuPdxTphMBeF6DaytcvIp+o4ZYXA0ExvJy14gZ5Phh9I71ziLL5FWrjrD6Kgh1PzfOo4HuNjXIi0uUMgtq9fZ5WRpioVSF0EBr3vm1s0od0c5s10uBEARPXB4e4XC+nFT7SIx3d47Ytn3WL2lEnSpE9ltdDn/u7aKAj9Tc4qpFE/08xO3/5b94xnC1GW2PMSEtbrQVSo+JDpGgZH1KSojAdPWizzAdF;4:hm6x5W82CvpjkhCyEkzggBYWqOK2wsKvnP1/GldF21b7JEerdyDwQVarg2PWR9keKM6pxPjDTGddgbCJH3dVMSoaGXhVGRM/guQgAOMeZP0E8vldsat1iAcZ0tDX8BssL75+kQZC0x8u5dF5uPjX5ySRcVgrVZHtMc0VJcuDSMYKlYIy9jNULy0Et6A8B5HyMW1iBoPbGcAXrEkmwqFNHk+k5W8Z+xfriifR6xlG0L9UCFBeSvfC1i1gnEyJGYbDR9p/s/DZcaOdlEt0nBLFtQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041248)(20161123558100)(20161123564025)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(6072148)(201708071742011);SRVR:VI1PR07MB1325;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:VI1PR07MB1325; X-Forefront-PRVS: 05087F0C24 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(6009001)(376002)(346002)(39860400002)(366004)(199003)(24454002)(189002)(6486002)(81156014)(83506002)(8936002)(33646002)(81166006)(86362001)(2906002)(101416001)(6666003)(31696002)(54356011)(53546010)(76176011)(2950100002)(64126003)(7736002)(5660300001)(105586002)(305945005)(106356001)(65826007)(8676002)(478600001)(53936002)(6246003)(58126008)(25786009)(230700001)(229853002)(316002)(3846002)(52116002)(6116002)(16576012)(31686004)(52146003)(2486003)(65956001)(67846002)(93886005)(23676004)(47776003)(189998001)(65806001)(16526018)(110136005)(50466002)(66066001)(77096006)(36756003)(97736004)(68736007);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR07MB1325;H:[10.145.140.58];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=tommi.t.rantala@nokia.com; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA3TUIxMzI1OzIzOng0amg3bHdRb2xRZ0RwaUZzUFo0bjJHa2Vu?= =?utf-8?B?aXAxUVg3QTh2d1h5SEFyVmc4NmFEZ2ZNdWY4RG5zSGc3WDhiQ2pybUkvanBj?= =?utf-8?B?T3c0cVdlUW1DcUEvUE41VitGdy9lM1g5WEZwSzRmcVdiWGJnRXl4RDRuTWVX?= =?utf-8?B?R09JbFJWNGlPV3Z2Y0N5KzBhV0g5YTFUbklGRE4vZlBPL1BtVXpJUElSSEpu?= =?utf-8?B?SW5aM2ZLeTFVL0FUeGlraFNORmhRWVdaSGg5RTVvZCtvSGRPZ0JVeHdEcjZY?= =?utf-8?B?M2o3SmgwSmFNQVUzMkdCVXFSaUtCdnF6UUJoSXNXdXJYOTJ6YXFXWUtDMUd1?= =?utf-8?B?NzB6RVlveE12eU53YVRFOTk4UkdZS3ZOMXl1K1BWT3V6ZWtmUWRhbkN4OHN0?= =?utf-8?B?M0VLdmhDbi9lVmZ1TXY1bys1S0lQOE54TzI1TlVabWs3a1hnd2tyb01aMXNk?= =?utf-8?B?ZFZ0TC9CTnN2WWNUdEJJUTFEcEVFMjVSTUlORWhTZlQwelBuYWd3V1VXV2Vz?= =?utf-8?B?UEZjcFl4am9yMmkxVFA3a2c3R2JZV0RJejlZcmZaMUNmcDBuZU1wYlRRdlR6?= =?utf-8?B?UkVFMEtVMTZOaHMrVFlaM1VXMndMOW5adVFaUCt2QkFFc1V1S3hQZmxvRDJG?= =?utf-8?B?UEN5NU5RQW9Jd2E1VDhHT0dSVTgwZklpU1JTUmtQeDVFRGRvWk91TkhEVFA0?= =?utf-8?B?RGlqZHNqamg0SzY5YmVRaXVYc3BxVkhtZjJ3eXBRazVqQUw2K1BnUHA1WWt1?= =?utf-8?B?RDdOQW9VeFpwN01uY3l2THo1SDVJOGpWelpFQVZ5bWNYeHJKOXNXRHU2cXow?= =?utf-8?B?NmdUeWdvZHIwVlhzZGU4Q0g3U2s0TDJEVVZCZnQzbGZ0MmlxQWdOWTB4QkJy?= =?utf-8?B?SWtjS2NSbkkzYWE4ck92RzZLNUw3S2lraWd4RWNxOHM4c3pTZnBYdkdIWHRn?= =?utf-8?B?TjVXWUdIM3RMTjBNVDkvYnN2U1VvT1lwbnJCb1J5TzZjSFFRL085S09iV1dF?= =?utf-8?B?R2htc2MybnNsL01JeHdaZkxJVmhySlhJNkJRU3B5bDhnL3R3d0FMTlNMQURE?= =?utf-8?B?ajRKZ0NPd0NqOU5iZXloY1hCbGh3eG9iWG1oMi9LQnh1Z2ltTFVidGhzVjZq?= =?utf-8?B?anVidmxFQ3BaUzVIVUh2Ui9zNXFIc29vNjFIQ2VobjhiRWxQN2oyN2lkUTJq?= =?utf-8?B?NjFpQnFEME9hV0cvYnV2bDEvekV1NTJRYlJoZjNPMThCOVh4bzA1SmVhaEdT?= =?utf-8?B?YnVmdXZ0bjh1eVVMbDFXNWpFazBJN0h0T2VWb0FCTVdEQmVmMk4wWUhQUXAy?= =?utf-8?B?bmZjWHRqSWFiQmdwK29EclE4WDNtclYxUUpGbWIzV3pBeC9BM1VSRGhJejBk?= =?utf-8?B?OU1vbFM3VlFQM3ltSDVWbkhiNU1uY1VMUzc5dVFOa1F2QjMzYzU0U1J5aHgz?= =?utf-8?B?NCtGOE4zOFVIRWpIcU1Sd3hEaGkyYXpnYWxCUWhKN1NVTlhmM0N2ZldqbW5o?= =?utf-8?B?VGlUemJ6WDNxNUkrK3JSVFlnR0ZMdFpyVjgvZC80bThNVUo3RzY1QUxNd2J2?= =?utf-8?B?aEFJR3dCaFJPVnNEL2JMa0M4S1JyODZEdTFIM2tyUmpzOFprLzlYWTFxNW1M?= =?utf-8?B?TVYvRGs4anJLRUlXTkMrYm1sODNNN1pqa2gwSnRpNGtiejZtUytCMzRsNnJ1?= =?utf-8?B?NTZzVGxQM0RENEJyTGdLTGpOU3o0aWlWc2JpMXkySjBNZ3VzZ3ZLSkZ5YWh5?= =?utf-8?B?cjFyV29ONkRjVTlva3NlZC9qV3gybjlKdGJXWHBzcnlFRVFLZ05SUk9ncVc0?= =?utf-8?B?NkNVcGlxTVM2MWxndFIvSUoxc3BoZWJvejlLMS9NOGh3RDAyZjlBK09ORjFu?= =?utf-8?B?eUJMUUZtMTJHTHY0ZTI0ZEhPdDBtaXdpcUM2cEN3NXpJak4vdmdNSnBwL3Ez?= =?utf-8?B?SExURzdFaElnPT0=?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR07MB1325;6:5TdS6QA2y9+vTv+SzzYZFLX+GJO3pBlNM2oH+LIJ+YhkWbRxq/lc164xUCuVLksLyefjHDa2bD5KEdPGAMra04bBaz+W8pIOdhB7RhJ3ASn85NZw/GQbDIUKgzC3mxH3+U0f3UFWSU4RNfinhPt9d8ch9OLEZx6UGh17SnuIsMlQm1EM84kEinWr743Oum/Lc8lcEDVOG9L1JMrHeQJ7IB9K6jT1y72m9SAcAIBZIeynkLfwtQM9+BuWRoR20rhrK/N2BwFBQznVWQcA8q6Hqz6JctThbTUGgW9hD9kK12x/QXeCPzYXhmFcJsHdTFz+oz6vGnLGh1Y8ZRzPJRHq4o4Tdvf6X/0msmu6JXYa+NA=;5:Ug65Ci2m1k97pKFK4Qsr1CbNNOyuomBK5U8RkKeb1mgPcRMwWr1JTh3NDEAeNiip9Y3Q36XJ8N+EtEvnVXln9sMbxttdho3a5b5ezr55YRc/rxU4NI5akW55C6clpxAP616GeCFCRBB+sQugzQu9yLGbhfnId0N9/y8tpXDUPF8=;24:AntU8GLJGUNQWOjE43qRGE4nHOQtUD+JzG+Cqm1FuZHB7052LdK8d4jnXacoVqiFCHXNRZLJdPz0sYJeMtTgU/6sgmUWQqQnrgEui+LzDq0=;7:PWVwQDVaQRXAFHK3lDG97RU7X9QJHMHhJaFUu0i3E0YkW+4IEkH5lowxltHmNTODYbH9x4ckecT4QmwV/ciG6lw4CL9b+Us/Ol/GUVRVGiuKEhwScDN2rJrx5KDNnoDYlLXqjiz7bgz41EvKeoGBTI9O7DcM0TDiHVl4Ydo4jGlLK4oj/9pLKE777Ko3gvR/a+5PmJzfzST2jeBkQCR+e7ZUfAFnga4ywe85uIqo0mVqXH5h51PjjqjG1bxafJml SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2017 14:02:52.8696 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7f6f3a07-731a-4d97-6e59-08d538c43774 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB1325 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2171 Lines: 60 On 01.12.2017 15:18, Ying Xue wrote: > On 11/30/2017 08:32 PM, Tommi Rantala wrote: >>> In my opinion, the real root cause of the issue is because we too early >>> set a not-yet-initialized bearer instance to ub->bearer through >>> rcu_assign_pointer(ub->bearer, b) in tipc_udp_enable(). Instead if we >>> assign the bearer pointer at the end of tipc_udp_enable() where the >>> bearer has been completed the initialization, the issue would be avoided. >> Hi, sorry, I fail to see how that helps. >> >> bearer->tolerance is only initialized in tipc_enable_bearer() after >> calling m->enable_media() ie. tipc_udp_enable(). >> >> So even if we do "rcu_assign_pointer(ub->bearer, b)" later in >> tipc_udp_enable(), bearer->tolerance will still be uninitialized, and >> the crash can happen. > > Sorry, I missed the point that b->tolerance is not uninitialized when we > assign bearer pointer to ub->bearer later. > > But in my view the issue happened is because we enable media too early. > So it's better to change the code as belows: Thanks, looks good to me! Tested in 4.4 (which does not have b->up), and this fixes the oops also there. -Tommi > diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c > index 47ec121..ec6f02a 100644 > --- a/net/tipc/bearer.c > +++ b/net/tipc/bearer.c > @@ -320,19 +320,18 @@ static int tipc_enable_bearer(struct net *net, > const char *name, > > strcpy(b->name, name); > b->media = m; > - res = m->enable_media(net, b, attr); > - if (res) { > - pr_warn("Bearer <%s> rejected, enable failure (%d)\n", > - name, -res); > - return -EINVAL; > - } > - > b->identity = bearer_id; > b->tolerance = m->tolerance; > b->window = m->window; > b->domain = disc_domain; > b->net_plane = bearer_id + 'A'; > b->priority = priority; > + res = m->enable_media(net, b, attr); > + if (res) { > + pr_warn("Bearer <%s> rejected, enable failure (%d)\n", > + name, -res); > + return -EINVAL; > + } > test_and_set_bit_lock(0, &b->up); >