diff options
author | Kylene Hall <kjhall@us.ibm.com> | 2005-06-24 01:02:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-24 03:05:26 -0400 |
commit | 6659ca2ab6730c3bbb9fa495f2327b95b955decd (patch) | |
tree | 1b8a9a09a830b0a5233c6e9f073c53260dbef819 /drivers/char/tpm/tpm_atmel.c | |
parent | 81179bb6a54c2c626b4cbcc084ca974bb2d7f2a3 (diff) |
[PATCH] tpm: sysfs owernship changes
In the current driver all sysfs files end up owned by the base driver module
rather than the module that actually owns the device this is a problem if the
module is unloaded and the file is open. This patch fixes all that and lumps
the files into an attribute_group.
Signed-off-by: Kylene Hall <kjhall@us.ibm.com>
Signed-off-by: Yani Ioannou <yani.ioannou@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char/tpm/tpm_atmel.c')
-rw-r--r-- | drivers/char/tpm/tpm_atmel.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/char/tpm/tpm_atmel.c b/drivers/char/tpm/tpm_atmel.c index 3271391892e8..07abfb7143b1 100644 --- a/drivers/char/tpm/tpm_atmel.c +++ b/drivers/char/tpm/tpm_atmel.c | |||
@@ -126,6 +126,21 @@ static struct file_operations atmel_ops = { | |||
126 | .release = tpm_release, | 126 | .release = tpm_release, |
127 | }; | 127 | }; |
128 | 128 | ||
129 | static DEVICE_ATTR(pubek, S_IRUGO, tpm_show_pubek, NULL); | ||
130 | static DEVICE_ATTR(pcrs, S_IRUGO, tpm_show_pcrs, NULL); | ||
131 | static DEVICE_ATTR(caps, S_IRUGO, tpm_show_caps, NULL); | ||
132 | static DEVICE_ATTR(cancel, S_IWUSR |S_IWGRP, NULL, tpm_store_cancel); | ||
133 | |||
134 | static struct attribute* atmel_attrs[] = { | ||
135 | &dev_attr_pubek.attr, | ||
136 | &dev_attr_pcrs.attr, | ||
137 | &dev_attr_caps.attr, | ||
138 | &dev_attr_cancel.attr, | ||
139 | 0, | ||
140 | }; | ||
141 | |||
142 | static struct attribute_group atmel_attr_grp = { .attrs = atmel_attrs }; | ||
143 | |||
129 | static struct tpm_vendor_specific tpm_atmel = { | 144 | static struct tpm_vendor_specific tpm_atmel = { |
130 | .recv = tpm_atml_recv, | 145 | .recv = tpm_atml_recv, |
131 | .send = tpm_atml_send, | 146 | .send = tpm_atml_send, |
@@ -133,6 +148,7 @@ static struct tpm_vendor_specific tpm_atmel = { | |||
133 | .req_complete_mask = ATML_STATUS_BUSY | ATML_STATUS_DATA_AVAIL, | 148 | .req_complete_mask = ATML_STATUS_BUSY | ATML_STATUS_DATA_AVAIL, |
134 | .req_complete_val = ATML_STATUS_DATA_AVAIL, | 149 | .req_complete_val = ATML_STATUS_DATA_AVAIL, |
135 | .base = TPM_ATML_BASE, | 150 | .base = TPM_ATML_BASE, |
151 | .attr_group = &atmel_attr_grp, | ||
136 | .miscdev = { .fops = &atmel_ops, }, | 152 | .miscdev = { .fops = &atmel_ops, }, |
137 | }; | 153 | }; |
138 | 154 | ||