diff options
author | Gang Wei <gang.wei@intel.com> | 2012-10-09 05:35:22 -0400 |
---|---|---|
committer | Kent Yoder <key@linux.vnet.ibm.com> | 2012-10-10 10:50:56 -0400 |
commit | 1631cfb7cee28388b04aef6c0a73050f6fd76e4d (patch) | |
tree | c3c5d069dedb5c1084a18ddb3be06c6e9a6aa9de /drivers/char/tpm/tpm.h | |
parent | ecefbd94b834fa32559d854646d777c56749ef1c (diff) |
driver/char/tpm: fix regression causesd by ppi
This patch try to fix the S3 regression https://lkml.org/lkml/2012/10/5/433,
which includes below line:
[ 1554.684638] sysfs: cannot create duplicate filename '/devices/pnp0/00:0c/ppi'
The root cause is that ppi sysfs teardown code is MIA, so while S3 resume,
the ppi kobject will be created again upon existing one.
To make the tear down code simple, change the ppi subfolder creation from
using kobject_create_and_add to just using a named ppi attribute_group. Then
ppi sysfs teardown could be done with a simple sysfs_remove_group call.
Adjusted the name & return type for ppi sysfs init function.
Reported-by: Ben Guthro <ben@guthro.net>
Signed-off-by: Gang Wei <gang.wei@intel.com>
Signed-off-by: Kent Yoder <key@linux.vnet.ibm.com>
Diffstat (limited to 'drivers/char/tpm/tpm.h')
-rw-r--r-- | drivers/char/tpm/tpm.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h index 02c266aa2bf7..8ef7649a50aa 100644 --- a/drivers/char/tpm/tpm.h +++ b/drivers/char/tpm/tpm.h | |||
@@ -329,10 +329,15 @@ extern int wait_for_tpm_stat(struct tpm_chip *, u8, unsigned long, | |||
329 | wait_queue_head_t *); | 329 | wait_queue_head_t *); |
330 | 330 | ||
331 | #ifdef CONFIG_ACPI | 331 | #ifdef CONFIG_ACPI |
332 | extern ssize_t sys_add_ppi(struct kobject *parent); | 332 | extern int tpm_add_ppi(struct kobject *); |
333 | extern void tpm_remove_ppi(struct kobject *); | ||
333 | #else | 334 | #else |
334 | static inline ssize_t sys_add_ppi(struct kobject *parent) | 335 | static inline int tpm_add_ppi(struct kobject *parent) |
335 | { | 336 | { |
336 | return 0; | 337 | return 0; |
337 | } | 338 | } |
339 | |||
340 | static inline void tpm_remove_ppi(struct kobject *parent) | ||
341 | { | ||
342 | } | ||
338 | #endif | 343 | #endif |