diff options
Diffstat (limited to 'drivers/char/tpm/tpm.c')
-rw-r--r-- | drivers/char/tpm/tpm.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index 4f18f84b498a..02a495c2e068 100644 --- a/drivers/char/tpm/tpm.c +++ b/drivers/char/tpm/tpm.c | |||
@@ -1133,23 +1133,33 @@ int tpm_pm_resume(struct device *dev) | |||
1133 | } | 1133 | } |
1134 | EXPORT_SYMBOL_GPL(tpm_pm_resume); | 1134 | EXPORT_SYMBOL_GPL(tpm_pm_resume); |
1135 | 1135 | ||
1136 | /* In case vendor provided release function, call it too.*/ | ||
1137 | |||
1138 | void tpm_dev_vendor_release(struct tpm_chip *chip) | ||
1139 | { | ||
1140 | if (chip->vendor.release) | ||
1141 | chip->vendor.release(chip->dev); | ||
1142 | |||
1143 | clear_bit(chip->dev_num, dev_mask); | ||
1144 | kfree(chip->vendor.miscdev.name); | ||
1145 | } | ||
1146 | EXPORT_SYMBOL_GPL(tpm_dev_vendor_release); | ||
1147 | |||
1148 | |||
1136 | /* | 1149 | /* |
1137 | * Once all references to platform device are down to 0, | 1150 | * Once all references to platform device are down to 0, |
1138 | * release all allocated structures. | 1151 | * release all allocated structures. |
1139 | * In case vendor provided release function, call it too. | ||
1140 | */ | 1152 | */ |
1141 | static void tpm_dev_release(struct device *dev) | 1153 | static void tpm_dev_release(struct device *dev) |
1142 | { | 1154 | { |
1143 | struct tpm_chip *chip = dev_get_drvdata(dev); | 1155 | struct tpm_chip *chip = dev_get_drvdata(dev); |
1144 | 1156 | ||
1145 | if (chip->vendor.release) | 1157 | tpm_dev_vendor_release(chip); |
1146 | chip->vendor.release(dev); | ||
1147 | chip->release(dev); | ||
1148 | 1158 | ||
1149 | clear_bit(chip->dev_num, dev_mask); | 1159 | chip->release(dev); |
1150 | kfree(chip->vendor.miscdev.name); | ||
1151 | kfree(chip); | 1160 | kfree(chip); |
1152 | } | 1161 | } |
1162 | EXPORT_SYMBOL_GPL(tpm_dev_release); | ||
1153 | 1163 | ||
1154 | /* | 1164 | /* |
1155 | * Called from tpm_<specific>.c probe function only for devices | 1165 | * Called from tpm_<specific>.c probe function only for devices |