All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Kirti Wankhede <kwankhede@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	Zhi Wang <zhi.a.wang@intel.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	intel-gvt-dev@lists.freedesktop.org, Neo Jia <cjia@nvidia.com>,
	Dheeraj Nigam <dnigam@nvidia.com>,
	Tarun Gupta <targupta@nvidia.com>
Subject: Re: [PATCH 02/13] vfio/mdev: embedd struct mdev_parent in the parent data structure
Date: Fri, 24 Jun 2022 10:05:10 -0300	[thread overview]
Message-ID: <20220624130510.GA124353@nvidia.com> (raw)
In-Reply-To: <b158ee0d-d7bf-c827-637b-3cd98c66b193@nvidia.com>

On Fri, Jun 24, 2022 at 06:23:48PM +0530, Kirti Wankhede wrote:
> 
> 
> On 6/24/2022 6:03 PM, Jason Gunthorpe wrote:
> > On Fri, Jun 24, 2022 at 05:59:58PM +0530, Kirti Wankhede wrote:
> > 
> > > > The reason this is here is because the type->parent is used in a few
> > > > places and is put back in release:
> > > > 
> > > > @@ -81,7 +81,7 @@ static void mdev_type_release(struct kobject *kobj)
> > > > 
> > > >           pr_debug("Releasing group %s\n", kobj->name);
> > > >           /* Pairs with the get in add_mdev_supported_type() */
> > > > -       mdev_put_parent(type->parent);
> > > > +       put_device(type->parent->dev);
> > > >           kfree(type);
> > > >    }
> > > > 
> > > > If this was a simple sysfs kobj with only a show/store we wouldn't
> > > > need to do anything as the natural kobj parentage holds a ref up to
> > > > the struct device - but this kobj is used internally, ie dependent
> > > > from mdev_device_create(), independently of the normal sysfs
> > > > life-cycle so that doesn't protect enough either.
> > > > 
> > > 
> > > 
> > > Life span of 'type' is from mdev_register_device to mdev_unregister_device.
> > > If device/parent is being unregistered then only types are removed, so
> > > referencing 'type' from mdev_device_create() is still safe. Therefore,
> > > parent device's reference should be held and release from
> > > register-unregister call.
> > 
> > No, I've already explained this.
> 
> Its not correct.
> 
> kobject_init_and_add(&type->kobj, ...) which called from
> mdev_register_parent()
>     -> parent_create_sysfs_files() holds reference for type->kobj
          -> add_mdev_supported_type_groups()
               -> add_mdev_supported_type()
                   -> kobject_init_and_add(&type->kobj)

> This is released from
>  mdev_unregister_parent()
>      -> parent_remove_sysfs_files()
>          -> kset_unregister()

It is not kset_unregister() that puts back.
           -> remove_mdev_supported_type()
	       -> kobject_put(&type->kobj) // pairs with kobject_init_and_add

So what is the issue? This is a properly paired usage of the ref.

> In the next patch [3/13] of this series, these calltraces are changed as
> mdev_register_parent()
>     -> mdev_type_add()
>         -> kobject_init_and_add(&type->kobj, ...) holds reference for
> type->kobj
> 
> which is released from
> 
> mdev_unregister_parent()
>     -> mdev_type_remove()
>         -> kobject_put(&type->kobj)

This is the same logic? What is the problem?

Jason

  reply	other threads:[~2022-06-24 13:05 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-14  4:54 simplify the mdev interface v2 Christoph Hellwig
2022-06-14  4:54 ` [PATCH 01/13] vfio/mdev: make mdev.h standalone includable Christoph Hellwig
2022-06-14  9:50   ` Tian, Kevin
2022-06-15 19:12   ` Kirti Wankhede
2022-06-23 19:39   ` [PATCH 1/13] " Jason Gunthorpe
2022-06-14  4:54 ` [PATCH 02/13] vfio/mdev: embedd struct mdev_parent in the parent data structure Christoph Hellwig
2022-06-14  9:54   ` Tian, Kevin
2022-06-15 19:29   ` Kirti Wankhede
2022-06-23 20:18     ` Jason Gunthorpe
2022-06-24 12:29       ` Kirti Wankhede
2022-06-24 12:33         ` Jason Gunthorpe
2022-06-24 12:53           ` Kirti Wankhede
2022-06-24 13:05             ` Jason Gunthorpe [this message]
2022-06-24 13:14               ` Kirti Wankhede
2022-06-23 20:59   ` [PATCH 2/13] " Jason Gunthorpe
2022-06-14  4:54 ` [PATCH 03/13] vfio/mdev: simplify mdev_type handling Christoph Hellwig
2022-06-14  6:14   ` Yi Liu
2022-06-14 10:06   ` Tian, Kevin
2022-06-15  6:28     ` Christoph Hellwig
2022-06-15  6:11       ` Zhenyu Wang
2022-06-15 19:55   ` Kirti Wankhede
2022-06-19  7:42     ` Christoph Hellwig
2022-06-23 21:27   ` [PATCH 3/13] " Jason Gunthorpe
2022-06-24 12:32     ` Kirti Wankhede
2022-06-14  4:54 ` [PATCH 04/13] vfio/mdev: remove mdev_{create,remove}_sysfs_files Christoph Hellwig
2022-06-15 20:03   ` Kirti Wankhede
2022-06-19  7:37     ` Christoph Hellwig
2022-06-14  4:54 ` [PATCH 05/13] vfio/mdev: remove mdev_from_dev Christoph Hellwig
2022-06-15 20:06   ` Kirti Wankhede
2022-06-14  4:54 ` [PATCH 06/13] vfio/mdev: unexport mdev_bus_type Christoph Hellwig
2022-06-15 20:08   ` Kirti Wankhede
2022-06-14  4:54 ` [PATCH 07/13] vfio/mdev: remove mdev_parent_dev Christoph Hellwig
2022-06-15 20:11   ` Kirti Wankhede
2022-06-14  4:54 ` [PATCH 08/13] vfio/mdev: remove mtype_get_parent_dev Christoph Hellwig
2022-06-15 20:13   ` Kirti Wankhede
2022-06-14  4:54 ` [PATCH 09/13] vfio/mdev: consolidate all the device_api sysfs into the core code Christoph Hellwig
2022-06-14 10:10   ` Tian, Kevin
2022-06-15 20:24   ` Kirti Wankhede
2022-06-23 21:30   ` [PATCH 9/13] " Jason Gunthorpe
2022-06-14  4:54 ` [PATCH 10/13] vfio/mdev: consolidate all the name " Christoph Hellwig
2022-06-14 10:11   ` Tian, Kevin
2022-06-15 20:31   ` Kirti Wankhede
2022-06-23 21:32   ` Jason Gunthorpe
2022-06-14  4:54 ` [PATCH 11/13] vfio/mdev: consolidate all the available_instance " Christoph Hellwig
2022-06-14 10:14   ` Tian, Kevin
2022-06-14 10:29     ` Tian, Kevin
2022-06-15 20:37   ` Kirti Wankhede
2022-06-23 21:36   ` Jason Gunthorpe
2022-06-14  4:54 ` [PATCH 12/13] vfio/mdev: consolidate all the description " Christoph Hellwig
2022-06-15 20:52   ` Kirti Wankhede
2022-06-23 21:37   ` Jason Gunthorpe
2022-06-14  4:54 ` [PATCH 13/13] vfio/mdev: add mdev available instance checking to the core Christoph Hellwig
2022-06-14 10:32   ` Tian, Kevin
2022-06-15  6:29     ` Christoph Hellwig
2022-06-14  5:03 ` simplify the mdev interface v2 Yi Liu
2022-06-14  5:17   ` Christoph Hellwig
2022-06-14  5:30     ` Yi Liu
2022-06-14  5:44       ` Christoph Hellwig
2022-06-14  5:47         ` Yi Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220624130510.GA124353@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=akrowiak@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=cjia@nvidia.com \
    --cc=dnigam@nvidia.com \
    --cc=farman@linux.ibm.com \
    --cc=hch@lst.de \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jjherne@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-s390@vger.kernel.org \
    --cc=mjrosato@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=targupta@nvidia.com \
    --cc=zhenyuw@linux.intel.com \
    --cc=zhi.a.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.