On 10/10/2016 04:55 AM, Jason Gunthorpe wrote:
> On Sun, Oct 09, 2016 at 09:47:08AM +0530, Nayna wrote:
>
>>>> + const struct tpm_securityfs_data *sfs_data =
>>>> + (const struct tpm_securityfs_data *)inode->i_private;
>>>> + const struct seq_operations *seqops = sfs_data->seqops;
>>>
>>> You need a get_device(&chip->dev) here, and the matching put_device in
>>> fops->release().
>>>
>>>> + seq->private = sfs_data->log;
>>>
>>> So store the chip here
>
>> Sorry, I think I didn't understand the purpose of storing chip here.
>
> Since we need to do get_device in open() you need to do put_device
> in release()
>
> How will you reliably do put_device if you do not store chip in the
> seq_private?
We are storing tpm_securityfs_data in inode->private.
Currently, tpm_securityfs_data is
struct tpm_securityfs_data {
struct tpm_bios_log *log;
const struct seq_operations *seqops;
};
This, I am changing in new version to
struct tpm_securityfs_data {
struct tpm_bios_log *chip;
const struct seq_operations *seqops;
};
And we pass this as private data to i_node in tpm_bios_log_setup.
So, we are referring chip as i_node->i_private->chip.
And both open() and release() gets i_node as input parameter.
Thanks & Regards,
- Nayna
>
> Jason
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
tpmdd-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tpmdd-devel