Re: [PATCH v8 08/11] tpm, tpm: Implement usage counter for locality

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 25, 2022 at 02:25:39AM +0200, Lino Sanfilippo wrote:
> 
> 
> On 23.10.22 07:26, Jarkko Sakkinen wrote:
> > On Tue, Oct 18, 2022 at 08:25:08AM +0200, Lukas Wunner wrote:
> >> On Tue, Oct 18, 2022 at 01:57:29AM +0200, Lino Sanfilippo wrote:
> >>> Implement a usage counter for the (default) locality used by the TPM TIS
> >>> driver:
> >>> Request the locality from the TPM if it has not been claimed yet, otherwise
> >>> only increment the counter. Also release the locality if the counter is 0
> >>> otherwise only decrement the counter. Ensure thread-safety by protecting
> >>> the counter with a mutex.
> >>>
> >>> This allows to request and release the locality from a thread and the
> >>> interrupt handler at the same time without the danger to interfere with
> >>> each other.
> >> [...]
> >>> +static int tpm_tis_release_locality(struct tpm_chip *chip, int l)
> >>>  {
> >>>  	struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev);
> >>>
> >>> -	tpm_tis_write8(priv, TPM_ACCESS(l), TPM_ACCESS_ACTIVE_LOCALITY);
> >>> +	mutex_lock(&priv->locality_count_mutex);
> >>> +	priv->locality_count--;
> >>> +	if (priv->locality_count == 0)
> >>> +		tpm_tis_release_locality_locked(priv, l);
> >>> +	mutex_unlock(&priv->locality_count_mutex);
> >>>
> >>>  	return 0;
> >>>  }
> >>
> >> Hm, any reason not to use struct kref for the locality counter?
> >> Provides correct memory ordering (no mutex needed) and allows for
> >> calling a release function too upon reaching 0.
> >
> > I proposed for last version kref. I have no idea why this is still
> > using mutex. And now I apparently have proposed rcu for the whole
> > struct (forgot what I had put my feedback for earlier version).
> >
> > This keeps being confusing patch as the commit message does not
> > really go to the bottom line why mutex is really the best possible
> > choice here.
> >
> 
> 
> I actually tried to implement this via kref but then came to the
> conclusion it is rather not a good choice for our case. Please
> see my response to your former request to implement this via kref:
> 
> https://lore.kernel.org/all/09eefdab-f677-864a-99f7-869d7a8744c2@xxxxxx/

OK, my bad I missed this, sorry.

BR, Jarkko



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux Kernel Hardening]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux