[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YZYFvIK9mkP107tD@unreal>
Date: Thu, 18 Nov 2021 09:50:20 +0200
From: Leon Romanovsky <leon@...nel.org>
To: Jakub Kicinski <kuba@...nel.org>
Cc: "David S . Miller" <davem@...emloft.net>,
Alexandre Belloni <alexandre.belloni@...tlin.com>,
Andrew Lunn <andrew@...n.ch>, Aya Levin <ayal@...lanox.com>,
Claudiu Manoil <claudiu.manoil@....com>, drivers@...sando.io,
Florian Fainelli <f.fainelli@...il.com>,
Ido Schimmel <idosch@...dia.com>,
intel-wired-lan@...ts.osuosl.org,
Ioana Ciornei <ioana.ciornei@....com>,
Jesse Brandeburg <jesse.brandeburg@...el.com>,
Jiri Pirko <jiri@...dia.com>, linux-kernel@...r.kernel.org,
linux-rdma@...r.kernel.org,
Michael Chan <michael.chan@...adcom.com>,
netdev@...r.kernel.org, oss-drivers@...igine.com,
Saeed Mahameed <saeedm@...dia.com>,
Shannon Nelson <snelson@...sando.io>,
Simon Horman <simon.horman@...igine.com>,
Taras Chornyi <tchornyi@...vell.com>,
Tariq Toukan <tariqt@...dia.com>,
Tony Nguyen <anthony.l.nguyen@...el.com>,
UNGLinuxDriver@...rochip.com,
Vivien Didelot <vivien.didelot@...il.com>,
Vladimir Oltean <vladimir.oltean@....com>
Subject: Re: [PATCH net-next 5/6] devlink: Reshuffle resource registration
logic
On Wed, Nov 17, 2021 at 08:49:56PM -0800, Jakub Kicinski wrote:
> On Wed, 17 Nov 2021 20:26:21 +0200 Leon Romanovsky wrote:
> > - top_hierarchy = parent_resource_id == DEVLINK_RESOURCE_ID_PARENT_TOP;
> > -
> > - mutex_lock(&devlink->lock);
> > - resource = devlink_resource_find(devlink, NULL, resource_id);
> > - if (resource) {
> > - err = -EINVAL;
> > - goto out;
> > - }
> > + WARN_ON(devlink_resource_find(devlink, NULL, resource_id));
>
> This is not atomic with the add now.
And it shouldn't. devlink_resource_find() will return valid resource only
if there driver is completely bogus with races or incorrect allocations of
resource_id.
devlink_*_register(..)
mutex_lock(&devlink->lock);
if (devlink_*_find(...)) {
mutex_unlock(&devlink->lock);
return ....;
}
.....
It is almost always wrong from locking and layering perspective the pattern above,
as it is racy by definition if not protected by top layer.
There are exceptions from the rule above, but devlink is clearly not the
one of such exceptions.
Thanks
Powered by blists - more mailing lists