From: Stefan Berger <stefanb@linux.vnet.ibm.com> To: tpmdd-devel@lists.sourceforge.net Cc: jarkko.sakkinen@linux.intel.com, jgunthorpe@obsidianresearch.com, linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, Stefan Berger <stefanb@linux.vnet.ibm.com> Subject: [PATCH v8 04/10] tpm: Get rid of module locking Date: Sun, 13 Mar 2016 18:54:34 -0400 [thread overview] Message-ID: <1457909680-14085-5-git-send-email-stefanb@linux.vnet.ibm.com> (raw) In-Reply-To: <1457909680-14085-1-git-send-email-stefanb@linux.vnet.ibm.com> Now that the tpm core has strong locking around 'ops' it is possible to remove a TPM driver, module and all, even while user space still has things like /dev/tpmX open. For consistency and simplicity, drop the module locking entirely. The module lock can be dropped since /dev/tpmX holds the reader lock on 'ops' while using 'ops' and this prevents the module from un- registering, which needs the writer lock. Once the module unregistered the 'ops' cannot be found anymore. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> --- drivers/char/tpm/tpm-chip.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index 5793ea1..6636728 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -57,9 +57,6 @@ int tpm_try_get_ops(struct tpm_chip *chip) if (!chip->ops) goto out_lock; - if (!try_module_get(chip->dev.parent->driver->owner)) - goto out_lock; - return 0; out_lock: up_read(&chip->ops_sem); @@ -77,7 +74,6 @@ EXPORT_SYMBOL_GPL(tpm_try_get_ops); */ void tpm_put_ops(struct tpm_chip *chip) { - module_put(chip->dev.parent->driver->owner); up_read(&chip->ops_sem); put_device(&chip->dev); } @@ -183,7 +179,7 @@ struct tpm_chip *tpmm_chip_alloc(struct device *dev, goto out; cdev_init(&chip->cdev, &tpm_fops); - chip->cdev.owner = dev->driver->owner; + chip->cdev.owner = THIS_MODULE; chip->cdev.kobj.parent = &chip->dev.kobj; rc = devm_add_action(dev, (void (*)(void *)) put_device, &chip->dev); -- 2.4.3
WARNING: multiple messages have this Message-ID (diff)
From: Stefan Berger <stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> To: tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Cc: linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Subject: [PATCH v8 04/10] tpm: Get rid of module locking Date: Sun, 13 Mar 2016 18:54:34 -0400 [thread overview] Message-ID: <1457909680-14085-5-git-send-email-stefanb@linux.vnet.ibm.com> (raw) In-Reply-To: <1457909680-14085-1-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> Now that the tpm core has strong locking around 'ops' it is possible to remove a TPM driver, module and all, even while user space still has things like /dev/tpmX open. For consistency and simplicity, drop the module locking entirely. The module lock can be dropped since /dev/tpmX holds the reader lock on 'ops' while using 'ops' and this prevents the module from un- registering, which needs the writer lock. Once the module unregistered the 'ops' cannot be found anymore. Signed-off-by: Stefan Berger <stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> Reviewed-by: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> --- drivers/char/tpm/tpm-chip.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index 5793ea1..6636728 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -57,9 +57,6 @@ int tpm_try_get_ops(struct tpm_chip *chip) if (!chip->ops) goto out_lock; - if (!try_module_get(chip->dev.parent->driver->owner)) - goto out_lock; - return 0; out_lock: up_read(&chip->ops_sem); @@ -77,7 +74,6 @@ EXPORT_SYMBOL_GPL(tpm_try_get_ops); */ void tpm_put_ops(struct tpm_chip *chip) { - module_put(chip->dev.parent->driver->owner); up_read(&chip->ops_sem); put_device(&chip->dev); } @@ -183,7 +179,7 @@ struct tpm_chip *tpmm_chip_alloc(struct device *dev, goto out; cdev_init(&chip->cdev, &tpm_fops); - chip->cdev.owner = dev->driver->owner; + chip->cdev.owner = THIS_MODULE; chip->cdev.kobj.parent = &chip->dev.kobj; rc = devm_add_action(dev, (void (*)(void *)) put_device, &chip->dev); -- 2.4.3 ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
next prev parent reply other threads:[~2016-03-13 22:56 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-03-13 22:54 [PATCH v8 00/10] Multi-instance vTPM proxy driver Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-13 22:54 ` [PATCH v8 01/10] tpm: Get rid of chip->pdev Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-13 22:54 ` [PATCH v8 02/10] tpm: Get rid of devname Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-13 22:54 ` [PATCH v8 03/10] tpm: Provide strong locking for device removal Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-13 22:54 ` Stefan Berger [this message] 2016-03-13 22:54 ` [PATCH v8 04/10] tpm: Get rid of module locking Stefan Berger 2016-03-13 22:54 ` [PATCH v8 05/10] tpm: Split out the devm stuff from tpmm_chip_alloc Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-13 22:54 ` [PATCH v8 06/10] tpm: Replace device number bitmap with IDR Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-15 5:58 ` Jarkko Sakkinen 2016-03-13 22:54 ` [PATCH v8 07/10] tpm: Introduce TPM_CHIP_FLAG_VIRTUAL Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-13 22:54 ` [PATCH v8 08/10] tpm: Proxy driver for supporting multiple emulated TPMs Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-14 16:26 ` Jarkko Sakkinen 2016-03-16 12:09 ` Jarkko Sakkinen 2016-03-16 12:09 ` Jarkko Sakkinen 2016-03-16 13:49 ` Stefan Berger 2016-03-16 13:49 ` Stefan Berger 2016-03-16 17:49 ` Jason Gunthorpe 2016-03-16 20:37 ` Jarkko Sakkinen 2016-03-16 20:37 ` Jarkko Sakkinen 2016-03-16 20:42 ` Jarkko Sakkinen 2016-03-17 17:45 ` Stefan Berger 2016-03-17 17:45 ` Stefan Berger 2016-03-18 8:52 ` Jarkko Sakkinen [not found] ` <20160318085200.GA5604-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2016-03-18 11:58 ` Stefan Berger 2016-03-18 13:06 ` Jarkko Sakkinen 2016-03-13 22:54 ` [PATCH v8 09/10] tpm: Initialize TPM and get durations and timeouts Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-22 6:34 ` [v8,09/10] " Jarkko Sakkinen 2016-03-22 10:54 ` Stefan Berger 2016-03-29 15:31 ` [v8,09/10] tpm: Initialize TPM and get durations and timeoutsg Jarkko Sakkinen 2016-03-29 15:53 ` Stefan Berger 2016-03-29 15:53 ` Stefan Berger 2016-03-13 22:54 ` [PATCH v8 10/10] tpm: Add documentation for the tpm_vtpm device driver Stefan Berger 2016-03-13 22:54 ` Stefan Berger 2016-03-29 16:24 ` [PATCH v8 00/10] Multi-instance vTPM proxy driver Jarkko Sakkinen [not found] ` <20160329162433.GB24833-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2016-03-29 16:31 ` Stefan Berger
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=1457909680-14085-5-git-send-email-stefanb@linux.vnet.ibm.com \ --to=stefanb@linux.vnet.ibm.com \ --cc=jarkko.sakkinen@linux.intel.com \ --cc=jgunthorpe@obsidianresearch.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-security-module@vger.kernel.org \ --cc=tpmdd-devel@lists.sourceforge.net \ /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: linkBe 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.