diff options
author | Arnd Bergmann <arnd@arndb.de> | 2011-10-20 09:14:25 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2011-10-20 09:14:25 -0400 |
commit | b4cbb8a4e602ea77b0525d06eff89c6a6070dab3 (patch) | |
tree | a5dd723679582505ef3905c90f0c2c032d191b94 /drivers/char | |
parent | 526b264163068f77c5f2409031f5e25caf3900a9 (diff) | |
parent | c5d7a9230e5e277f262b6806b7f4d6b35de5a3fb (diff) |
Merge branch 'imx-features-for-arnd' of git://git.pengutronix.de/git/imx/linux-2.6 into imx/devel
Conflicts:
arch/arm/mach-mx5/clock-mx51-mx53.c
arch/arm/mach-mx5/devices-imx53.h
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/msm_smd_pkt.c | 5 | ||||
-rw-r--r-- | drivers/char/tpm/Kconfig | 1 | ||||
-rw-r--r-- | drivers/char/tpm/tpm.c | 9 | ||||
-rw-r--r-- | drivers/char/tpm/tpm_nsc.c | 2 |
4 files changed, 11 insertions, 6 deletions
diff --git a/drivers/char/msm_smd_pkt.c b/drivers/char/msm_smd_pkt.c index b6f8a65c9960..8eca55deb3a3 100644 --- a/drivers/char/msm_smd_pkt.c +++ b/drivers/char/msm_smd_pkt.c | |||
@@ -379,9 +379,8 @@ static int __init smd_pkt_init(void) | |||
379 | for (i = 0; i < NUM_SMD_PKT_PORTS; ++i) { | 379 | for (i = 0; i < NUM_SMD_PKT_PORTS; ++i) { |
380 | smd_pkt_devp[i] = kzalloc(sizeof(struct smd_pkt_dev), | 380 | smd_pkt_devp[i] = kzalloc(sizeof(struct smd_pkt_dev), |
381 | GFP_KERNEL); | 381 | GFP_KERNEL); |
382 | if (IS_ERR(smd_pkt_devp[i])) { | 382 | if (!smd_pkt_devp[i]) { |
383 | r = PTR_ERR(smd_pkt_devp[i]); | 383 | pr_err("kmalloc() failed\n"); |
384 | pr_err("kmalloc() failed %d\n", r); | ||
385 | goto clean_cdevs; | 384 | goto clean_cdevs; |
386 | } | 385 | } |
387 | 386 | ||
diff --git a/drivers/char/tpm/Kconfig b/drivers/char/tpm/Kconfig index f6595aba4f0f..fa567f1158c2 100644 --- a/drivers/char/tpm/Kconfig +++ b/drivers/char/tpm/Kconfig | |||
@@ -43,6 +43,7 @@ config TCG_NSC | |||
43 | 43 | ||
44 | config TCG_ATMEL | 44 | config TCG_ATMEL |
45 | tristate "Atmel TPM Interface" | 45 | tristate "Atmel TPM Interface" |
46 | depends on PPC64 || HAS_IOPORT | ||
46 | ---help--- | 47 | ---help--- |
47 | If you have a TPM security chip from Atmel say Yes and it | 48 | If you have a TPM security chip from Atmel say Yes and it |
48 | will be accessible from within Linux. To compile this driver | 49 | will be accessible from within Linux. To compile this driver |
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index caf8012ef47c..9ca5c021d0b6 100644 --- a/drivers/char/tpm/tpm.c +++ b/drivers/char/tpm/tpm.c | |||
@@ -383,6 +383,9 @@ static ssize_t tpm_transmit(struct tpm_chip *chip, const char *buf, | |||
383 | u32 count, ordinal; | 383 | u32 count, ordinal; |
384 | unsigned long stop; | 384 | unsigned long stop; |
385 | 385 | ||
386 | if (bufsiz > TPM_BUFSIZE) | ||
387 | bufsiz = TPM_BUFSIZE; | ||
388 | |||
386 | count = be32_to_cpu(*((__be32 *) (buf + 2))); | 389 | count = be32_to_cpu(*((__be32 *) (buf + 2))); |
387 | ordinal = be32_to_cpu(*((__be32 *) (buf + 6))); | 390 | ordinal = be32_to_cpu(*((__be32 *) (buf + 6))); |
388 | if (count == 0) | 391 | if (count == 0) |
@@ -1102,6 +1105,7 @@ ssize_t tpm_read(struct file *file, char __user *buf, | |||
1102 | { | 1105 | { |
1103 | struct tpm_chip *chip = file->private_data; | 1106 | struct tpm_chip *chip = file->private_data; |
1104 | ssize_t ret_size; | 1107 | ssize_t ret_size; |
1108 | int rc; | ||
1105 | 1109 | ||
1106 | del_singleshot_timer_sync(&chip->user_read_timer); | 1110 | del_singleshot_timer_sync(&chip->user_read_timer); |
1107 | flush_work_sync(&chip->work); | 1111 | flush_work_sync(&chip->work); |
@@ -1112,8 +1116,11 @@ ssize_t tpm_read(struct file *file, char __user *buf, | |||
1112 | ret_size = size; | 1116 | ret_size = size; |
1113 | 1117 | ||
1114 | mutex_lock(&chip->buffer_mutex); | 1118 | mutex_lock(&chip->buffer_mutex); |
1115 | if (copy_to_user(buf, chip->data_buffer, ret_size)) | 1119 | rc = copy_to_user(buf, chip->data_buffer, ret_size); |
1120 | memset(chip->data_buffer, 0, ret_size); | ||
1121 | if (rc) | ||
1116 | ret_size = -EFAULT; | 1122 | ret_size = -EFAULT; |
1123 | |||
1117 | mutex_unlock(&chip->buffer_mutex); | 1124 | mutex_unlock(&chip->buffer_mutex); |
1118 | } | 1125 | } |
1119 | 1126 | ||
diff --git a/drivers/char/tpm/tpm_nsc.c b/drivers/char/tpm/tpm_nsc.c index 82facc9104c7..4d2464871ada 100644 --- a/drivers/char/tpm/tpm_nsc.c +++ b/drivers/char/tpm/tpm_nsc.c | |||
@@ -396,8 +396,6 @@ static void __exit cleanup_nsc(void) | |||
396 | if (pdev) { | 396 | if (pdev) { |
397 | tpm_nsc_remove(&pdev->dev); | 397 | tpm_nsc_remove(&pdev->dev); |
398 | platform_device_unregister(pdev); | 398 | platform_device_unregister(pdev); |
399 | kfree(pdev); | ||
400 | pdev = NULL; | ||
401 | } | 399 | } |
402 | 400 | ||
403 | platform_driver_unregister(&nsc_drv); | 401 | platform_driver_unregister(&nsc_drv); |