Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753266AbdLAOU6 (ORCPT ); Fri, 1 Dec 2017 09:20:58 -0500 Received: from sesbmg22.ericsson.net ([193.180.251.48]:61064 "EHLO sesbmg22.ericsson.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752864AbdLAOUx (ORCPT ); Fri, 1 Dec 2017 09:20:53 -0500 X-AuditID: c1b4fb30-cc1ff700000029e3-72-5a216543283f From: Jon Maloy To: Tommi Rantala , Ying Xue , "David S. Miller" , "netdev@vger.kernel.org" , "tipc-discussion@lists.sourceforge.net" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH net v2] tipc: call tipc_rcv() only if bearer is up in tipc_udp_recv() Thread-Topic: [PATCH net v2] tipc: call tipc_rcv() only if bearer is up in tipc_udp_recv() Thread-Index: AQHTaQAHc0u3EIYoAUSeGeIO/vyPGqMswf4AgAAalQCAAZ9IgIAADEaAgAADrMA= Date: Fri, 1 Dec 2017 14:20:49 +0000 Message-ID: References: <20171129104842.30781-1-tommi.t.rantala@nokia.com> <213f64e0-d5c3-511f-b83a-c468c399abc1@windriver.com> <840ce8d1-7271-5189-4cfa-e40f4a0a4172@windriver.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [192.75.88.130] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM4PR07MB1716;6:TAJ6EjtmvR5ZzdBT1cHUI6KHHe2V9rl5r91gPMhnh3HVJzD4tHTOsYuws9xIqu6FClk1+/blxXazeMHKoTP0MyoBiwNilQ7ML9KS75mOxA8pOqfq7NaPvIAifesjvRkcO/CbVHBR8OmzP+jZrB9NrXZdd7h0QmIH7ES3pLb7QUhTcXcZ2YaSwsRNezQKQG2mzvMWnm7YSsNWetWmwwzwKwjZ7wWpV0/nSu4VpDc9zFUFhj4cuJ2iC5TGV7gN1WA5gqVkOHfAst1xA0ySZdmXCgjpYWH7K2BK2uVI/PYJxzWILre+/1PorPipJ4Rei38McWSe0wzsjbr2GNyznJR0zxHwHZNyErNURuL/Zvs8Bn8=;5:FRxgMDm+UfGKXSgzykEb8ozlm4SIAsXNu6sGFAR7/MU0b5MUNPnrkMYpmP7eLcaaki4U0y2tuXLUr2U9W0l5prKYJVS3I6bcBZ5Y4J5Q8Vh2cXoik/vG8zmu7REvJkx9OV8rywJmvLhfxuoLkH0yyveZDdl5vQnSdtsIa9mdem4=;24:o2jjAEdPEKR29a4v11tiu4sVb3ZtwKuWH/ExG4GdoQ76vaUb8CIM+E4xehiPlNN/5q8RmHeXHqhQsFukPMzYoxLGXi5SgWK5GSsNMr6dMWI=;7:ER1C1qb1UjQI2xf4aVEP4WZ/bHOY8SnJIySIDAwpm2aunf2gAxp7iT5A2nyhxgBTuVTilow9chGcrc4/413pVGLBjNXErP9DIH6sr99cXTMAuy/ETrI95GZ41kXMwuOjW7SoEyZPe/43FKjux0tW7DAVzhhGRcOGy+sj+arenJvKO0CLr5n1RcgTMiCygGRX/WkmK9AoOlR2ZBXAE6DHsUDj0aheGYh8PYzQvekgEv+uyEEaQCeuyE1m2lG84oAz x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 72feb0bc-d2b1-49df-7319-08d538c6b885 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603286);SRVR:AM4PR07MB1716; x-ms-traffictypediagnostic: AM4PR07MB1716: x-ld-processed: 92e84ceb-fbfd-47ab-be52-080c6b87953f,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(37575265505322)(143289334528602)(9452136761055)(82608151540597)(42262312472803); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231022)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(20161123564025)(20161123555025)(6072148)(201708071742011);SRVR:AM4PR07MB1716;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AM4PR07MB1716; x-forefront-prvs: 05087F0C24 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(39860400002)(366004)(346002)(376002)(199003)(189002)(13464003)(24454002)(105586002)(316002)(53936002)(106356001)(54356011)(2950100002)(14454004)(86362001)(305945005)(74316002)(7736002)(9686003)(110136005)(53546010)(189998001)(76176011)(33656002)(2501003)(68736007)(25786009)(8656006)(2900100001)(8676002)(81156014)(6246003)(81166006)(7696005)(102836003)(3846002)(2201001)(99286004)(6116002)(6436002)(6506006)(5660300001)(101416001)(3280700002)(3660700001)(97736004)(478600001)(5250100002)(93886005)(8936002)(2906002)(55016002)(66066001)(229853002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM4PR07MB1716;H:AM4PR07MB1714.eurprd07.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; authentication-results: spf=none (sender IP is ) smtp.mailfrom=jon.maloy@ericsson.com; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 72feb0bc-d2b1-49df-7319-08d538c6b885 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Dec 2017 14:20:49.2289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR07MB1716 X-OriginatorOrg: ericsson.com X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDKsWRmVeSWpSXmKPExsUyM2K7n65zqmKUwd3v2hZzzrewWFzeNYfN 4tgCMYst57Msdhy4weLA6rFl5U0mj90LPjN53L11icnj8ya5AJYoLpuU1JzMstQifbsEroz7 D+0LnslX/F25mKmB8Y9cFyMnh4SAicSGla+Zuxi5OIQEDjNK/Pt+mB3COc4ocfzZATCHRaCX WWLrnfWMEJmpTBJ75vyC6nnAKDFv8T02kGFsAhoSL6d1gFWJCBxjkmj8cZepi5GDQ1ggWuLA DnGQGhGBGInDD34zQth+EjN332IBsVkEVCQ6380Bi/MC1dxduxFq2yQmiakNi1hBEpwCthK7 Z+wBsxkFxCS+n1rDBGIzC4hL3HoynwniIwGJJXvOM0PYohIvH/9jhbAVJQ7u2ABly0pcmt/N CGEfYpeY9tQbwtaT2DrxLVTcV+LV2hY2kCMkBJYwSrxesoQdIqElcW36djYI20ZiRvd0qGXZ Eo8XdUPVVEkcvjSbBaJ5AbPE8/kroDbLSFzftRcq8ZxVYt+kE0wTGPVmIfliFjDEmAU0Jdbv 0ocIK0pM6X7IPgscMoISJ2c+YVnAyLKKUbQ4tTgpN93ISC+1KDO5uDg/Ty8vtWQTIzDNHNzy 22AH48vnjocYBTgYlXh4V/sqRgmxJpYVV+YeYpTgYFYS4Y31AwrxpiRWVqUW5ccXleakFh9i lOZgURLnPenJGyUkkJ5YkpqdmlqQWgSTZeLglGpg3Ck6K833q4fa8rDm8wfKDk1US8zl1I0S 7Zvu8nFCzLdvv9ZMkft89X7yMtML3YbZy6fOkf5Usjpb9dU5o4b/LZrZYbt/85bnT5S53j6n WsHAcUnLRRXxiycj/kuFPJu8e9FcXg/bSbdtuuMnTvj08faFbR9zy/sCT8y9vWhGeoiUoE2g Pu9DPyWW4oxEQy3mouJEAGY1vMUvAwAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id vB1EL6n6025581 Content-Length: 2898 Lines: 75 Looks ok to me too. But I suggest we let David apply the pending patch as is to net, as that code is still wrong, and then post this improvement to net-next later. ///jon > -----Original Message----- > From: Tommi Rantala [mailto:tommi.t.rantala@nokia.com] > Sent: Friday, December 01, 2017 09:03 > To: Ying Xue ; Jon Maloy > ; David S. Miller ; > netdev@vger.kernel.org; tipc-discussion@lists.sourceforge.net; linux- > kernel@vger.kernel.org > Subject: Re: [PATCH net v2] tipc: call tipc_rcv() only if bearer is up in > tipc_udp_recv() > > 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); > >