From: "Stefan Berger" <stefanb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Jason Gunthorpe
<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
Cc: tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [PATCH v3 07/11] tpm: Replace device number bitmap with IDR
Date: Mon, 22 Feb 2016 21:16:53 -0500 [thread overview]
Message-ID: <201602230217.u1N2HIL0014602@d03av03.boulder.ibm.com> (raw)
In-Reply-To: <20160222190629.GE22088-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 2300 bytes --]
Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> wrote on 02/22/2016
02:06:29 PM:
>
> On Fri, Feb 19, 2016 at 07:42:04AM -0500, Stefan Berger wrote:
> > + if (chip_num == TPM_ANY_NUM)
> > + chip_next = 0;
> > +
> > + mutex_lock(&idr_lock);
> > +
> > + do {
> > + if (chip_num == TPM_ANY_NUM) {
> > + chip_prev = chip_next;
> > + chip = idr_get_next(&dev_nums_idr, &chip_next);
> > + } else
> > + chip = idr_find_slowpath(&dev_nums_idr, chip_num);
> > +
> > + if (chip && !tpm_try_get_ops(chip))
> > + break;
> > + } while (chip_num == TPM_ANY_NUM && chip_prev != chip_next);
>
> This while loop doesn't look very good if tpm_try_get_ops fails?
>
> Maybe like this?
>
> struct tpm_chip *tpm_chip_find_get(int chip_num)
> {
> struct tpm_chip *res = NULL;
>
> mutex_lock(&idr_lock);
>
> if (chip_num == TPM_ANY_NUM) {
> struct tpm_chip *chip;
>
> chip_num = 0;
> do {
> chip = idr_get_next(&dev_nums_idr, &chip_num);
> if (res && !tpm_try_get_ops(chip)) {
> res = chip;
> break;
> }
> }
> while (chip);
> } else {
> res = idr_find_slowpath(&dev_nums_idr, chip_num);
> if (res && tpm_try_get_ops(chip))
> res = NULL;
> }
>
> mutex_unlock(&idr_lock);
>
> return res;
> }
mutex_lock(&idr_lock);
if (chip_num == TPM_ANY_NUM) {
chip_num = 0;
do {
chip_prev = chip_num;
chip = idr_get_next(&dev_nums_idr, &chip_num);
if (chip && !tpm_try_get_ops(chip)) {
res = chip;
break;
}
} while (chip_prev != chip_num);
} else {
chip = idr_find_slowpath(&dev_nums_idr, chip_num);
if (chip && !tpm_try_get_ops(chip))
res = chip;
}
mutex_unlock(&idr_lock);
FYI: idr_get_next will return NULL for a chip->dev_num that has nothing
(NULL) registered; we *may* find something after that again.
Stefan
[-- Attachment #1.2: Type: text/html, Size: 5557 bytes --]
[-- Attachment #2: Type: text/plain, Size: 413 bytes --]
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
[-- Attachment #3: Type: text/plain, Size: 192 bytes --]
_______________________________________________
tpmdd-devel mailing list
tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/tpmdd-devel
next prev parent reply other threads:[~2016-02-23 2:16 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-19 12:41 [PATCH v3 00/11] Multi-instance vTPM driver Stefan Berger
2016-02-19 12:41 ` [PATCH v3 01/11] tpm: fix the cleanup of struct tpm_chip Stefan Berger
[not found] ` <1455885728-10315-1-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-19 12:41 ` [PATCH v3 02/11] tpm: Get rid of chip->pdev Stefan Berger
[not found] ` <1455885728-10315-3-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 19:25 ` Jarkko Sakkinen
2016-02-19 12:42 ` [PATCH v3 03/11] tpm: Get rid of devname Stefan Berger
[not found] ` <1455885728-10315-4-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 18:19 ` Jason Gunthorpe
[not found] ` <20160222181929.GB22088-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-22 19:42 ` Jarkko Sakkinen
[not found] ` <20160222194202.GC32667-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-22 19:58 ` Jason Gunthorpe
[not found] ` <20160222195816.GL22088-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-22 20:34 ` Jason Gunthorpe
2016-02-23 0:22 ` Stefan Berger
2016-02-19 12:42 ` [PATCH v3 04/11] tpm: Provide strong locking for device removal Stefan Berger
[not found] ` <1455885728-10315-5-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 21:08 ` Jarkko Sakkinen
[not found] ` <20160222210844.GA3310-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-22 22:20 ` Jason Gunthorpe
[not found] ` <20160222222017.GC27228-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 19:40 ` Jarkko Sakkinen
[not found] ` <20160223194014.GA5241-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-23 19:52 ` Jason Gunthorpe
[not found] ` <20160223195246.GC389-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 20:36 ` Jarkko Sakkinen
2016-02-23 20:43 ` Jarkko Sakkinen
2016-02-19 12:42 ` [PATCH v3 05/11] tpm: Get rid of module locking Stefan Berger
[not found] ` <1455885728-10315-6-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 18:22 ` Jason Gunthorpe
[not found] ` <20160222182245.GC22088-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 0:26 ` Stefan Berger
2016-02-22 21:11 ` Jarkko Sakkinen
[not found] ` <20160222211141.GB3310-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-22 22:15 ` Jason Gunthorpe
2016-02-19 12:42 ` [PATCH v3 06/11] tpm: Split out the devm stuff from tpmm_chip_alloc Stefan Berger
[not found] ` <1455885728-10315-7-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 18:24 ` Jason Gunthorpe
2016-02-22 21:14 ` Jarkko Sakkinen
[not found] ` <20160222211414.GC3310-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-22 22:13 ` Jason Gunthorpe
[not found] ` <20160222221328.GA27228-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 0:45 ` Stefan Berger
2016-02-23 11:31 ` Jarkko Sakkinen
2016-02-19 12:42 ` [PATCH v3 07/11] tpm: Replace device number bitmap with IDR Stefan Berger
[not found] ` <1455885728-10315-8-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 19:06 ` Jason Gunthorpe
[not found] ` <20160222190629.GE22088-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 1:15 ` Stefan Berger
2016-02-23 2:16 ` Stefan Berger [this message]
[not found] ` <201602230116.u1N1G4iu012263@d03av02.boulder.ibm.com>
[not found] ` <201602230116.u1N1G4iu012263-nNA/7dmquNI+UXBhvPuGgqsjOiXwFzmk@public.gmane.org>
2016-02-23 2:16 ` Jason Gunthorpe
[not found] ` <20160223021606.GC26177-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 23:04 ` Stefan Berger
[not found] ` <201602232305.u1NN521L020589@d03av01.boulder.ibm.com>
[not found] ` <201602232305.u1NN521L020589-Rn83F4s8Lwc+UXBhvPuGgqsjOiXwFzmk@public.gmane.org>
2016-02-23 23:18 ` Jason Gunthorpe
[not found] ` <201602230217.u1N2HIJT003183@d03av05.boulder.ibm.com>
[not found] ` <201602230217.u1N2HIJT003183-3MP/CPU4Muo+UXBhvPuGgqsjOiXwFzmk@public.gmane.org>
2016-02-23 2:18 ` Jason Gunthorpe
2016-02-19 12:42 ` [PATCH v3 08/11] tpm: Introduce TPM_CHIP_FLAG_VIRTUAL Stefan Berger
[not found] ` <1455885728-10315-9-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 19:19 ` Jason Gunthorpe
[not found] ` <20160222191922.GH22088-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 1:20 ` [PATCH v3 08/11] tpm: IntroduceTPM_CHIP_FLAG_VIRTUAL Stefan Berger
2016-02-23 1:21 ` Stefan Berger
[not found] ` <201602230121.u1N1LYk2024786@d01av01.pok.ibm.com>
[not found] ` <201602230121.u1N1LYk2024786-4ZtxiNBBw+3ImUpY6SP3GEEOCMrvLtNR@public.gmane.org>
2016-02-23 2:05 ` Jason Gunthorpe
[not found] ` <20160223020515.GA26177-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 3:40 ` Stefan Berger
[not found] ` <201602230116.u1N1Ghac006778@d01av05.pok.ibm.com>
[not found] ` <201602230116.u1N1Ghac006778-8DuMPbUlb4HImUpY6SP3GEEOCMrvLtNR@public.gmane.org>
2016-02-23 2:06 ` Jason Gunthorpe
2016-02-19 12:42 ` [PATCH v3 09/11] tpm: Driver for supporting multiple emulated TPMs Stefan Berger
[not found] ` <1455885728-10315-10-git-send-email-stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-22 19:27 ` Jason Gunthorpe
[not found] ` <20160222192741.GI22088-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-23 1:45 ` Stefan Berger
[not found] ` <201602230142.u1N1gSuF029481@d01av05.pok.ibm.com>
[not found] ` <201602230142.u1N1gSuF029481-8DuMPbUlb4HImUpY6SP3GEEOCMrvLtNR@public.gmane.org>
2016-02-23 2:17 ` Jason Gunthorpe
[not found] ` <20160223021730.GD26177-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-24 23:10 ` Stefan Berger
[not found] ` <201602242306.u1ON6qGP030251-8DuMPbUlb4HImUpY6SP3GEEOCMrvLtNR@public.gmane.org>
2016-02-25 13:17 ` Jarkko Sakkinen
[not found] ` <20160225131732.GA20860-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-25 14:12 ` Stefan Berger
[not found] ` <201602251409.u1PE98LH012367@d01av05.pok.ibm.com>
[not found] ` <201602251409.u1PE98LH012367-8DuMPbUlb4HImUpY6SP3GEEOCMrvLtNR@public.gmane.org>
2016-02-25 17:39 ` Jason Gunthorpe
[not found] ` <20160225173956.GA1407-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-25 18:42 ` Stefan Berger
[not found] ` <201602251842.u1PIgEuL014249@d03av03.boulder.ibm.com>
[not found] ` <201602251842.u1PIgEuL014249-MijUUJkLaQs+UXBhvPuGgqsjOiXwFzmk@public.gmane.org>
2016-02-25 20:31 ` Jason Gunthorpe
[not found] ` <20160225203117.GA22984-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-02-25 22:11 ` Stefan Berger
2016-02-23 10:22 ` Jarkko Sakkinen
[not found] ` <20160223102211.GA9474-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-02-23 12:09 ` Stefan Berger
[not found] ` <201602231210.u1NCAD6D017196@d01av03.pok.ibm.com>
[not found] ` <201602231210.u1NCAD6D017196-CUdSWdNILC7ImUpY6SP3GEEOCMrvLtNR@public.gmane.org>
2016-02-23 18:36 ` Jarkko Sakkinen
2016-02-19 12:42 ` [PATCH v3 10/11] tpm: Initialize TPM and get durations and timeouts Stefan Berger
2016-02-19 12:42 ` [PATCH v3 11/11] A test program for vTPM device creation Stefan Berger
2016-02-22 19:20 ` [PATCH v3 00/11] Multi-instance vTPM driver Jarkko Sakkinen
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=201602230217.u1N2HIL0014602@d03av03.boulder.ibm.com \
--to=stefanb-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
--cc=tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).