Re: [PATCH 2/4] mdev: Make mdev alias unique among all mdevs

From: Alex Williamson
Date: Tue Aug 27 2019 - 11:23:54 EST


On Tue, 27 Aug 2019 04:28:37 +0000
Parav Pandit <parav@xxxxxxxxxxxx> wrote:

> Hi Mark,
>
> > -----Original Message-----
> > From: Mark Bloch <markb@xxxxxxxxxxxx>
> > Sent: Tuesday, August 27, 2019 4:32 AM
> > To: Parav Pandit <parav@xxxxxxxxxxxx>; alex.williamson@xxxxxxxxxx; Jiri
> > Pirko <jiri@xxxxxxxxxxxx>; kwankhede@xxxxxxxxxx; cohuck@xxxxxxxxxx;
> > davem@xxxxxxxxxxxxx
> > Cc: kvm@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> > netdev@xxxxxxxxxxxxxxx
> > Subject: Re: [PATCH 2/4] mdev: Make mdev alias unique among all mdevs
> >
> >
> >
> > On 8/26/19 1:41 PM, Parav Pandit wrote:
> > > Mdev alias should be unique among all the mdevs, so that when such
> > > alias is used by the mdev users to derive other objects, there is no
> > > collision in a given system.
> > >
> > > Signed-off-by: Parav Pandit <parav@xxxxxxxxxxxx>
> > > ---
> > > drivers/vfio/mdev/mdev_core.c | 5 +++++
> > > 1 file changed, 5 insertions(+)
> > >
> > > diff --git a/drivers/vfio/mdev/mdev_core.c
> > > b/drivers/vfio/mdev/mdev_core.c index e825ff38b037..6eb37f0c6369
> > > 100644
> > > --- a/drivers/vfio/mdev/mdev_core.c
> > > +++ b/drivers/vfio/mdev/mdev_core.c
> > > @@ -375,6 +375,11 @@ int mdev_device_create(struct kobject *kobj,
> > struct device *dev,
> > > ret = -EEXIST;
> > > goto mdev_fail;
> > > }
> > > + if (tmp->alias && strcmp(tmp->alias, alias) == 0) {
> >
> > alias can be NULL here no?
> >
> If alias is NULL, tmp->alias would also be null because for given parent either we have alias or we donât.
> So its not possible to have tmp->alias as null and alias as non null.
> But it may be good/defensive to add check for both.

mdev_list is a global list of all mdev devices, how can we make any
assumptions that an element has the same parent? Thanks,

Alex

> > > + mutex_unlock(&mdev_list_lock);
> > > + ret = -EEXIST;
> > > + goto mdev_fail;
> > > + }
> > > }
> > >
> > > mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
> > >
> >
> > Mark