]> err.no Git - linux-2.6/blobdiff - drivers/char/tpm/tpm.c
Merge ../to-linus-stable/
[linux-2.6] / drivers / char / tpm / tpm.c
index 785dce67942fe03f86c14b3705c4ea231b1c00fe..049d128ae7f07de2605cd5cd2e3d4c4efdba26ac 100644 (file)
@@ -147,7 +147,7 @@ ssize_t tpm_show_pcrs(struct device *dev, struct device_attribute *attr,
        memcpy(data, cap_pcr, sizeof(cap_pcr));
        if ((len = tpm_transmit(chip, data, sizeof(data)))
            < CAP_PCR_RESULT_SIZE) {
-               dev_err(&chip->pci_dev->dev, "A TPM error (%d) occurred "
+               dev_dbg(&chip->pci_dev->dev, "A TPM error (%d) occurred "
                                "attempting to determine the number of PCRS\n",
                        be32_to_cpu(*((__be32 *) (data + 6))));
                return 0;
@@ -161,7 +161,7 @@ ssize_t tpm_show_pcrs(struct device *dev, struct device_attribute *attr,
                memcpy(data + 10, &index, 4);
                if ((len = tpm_transmit(chip, data, sizeof(data)))
                    < READ_PCR_RESULT_SIZE){
-                       dev_err(&chip->pci_dev->dev, "A TPM error (%d) occurred"
+                       dev_dbg(&chip->pci_dev->dev, "A TPM error (%d) occurred"
                                " attempting to read PCR %d of %d\n",
                                be32_to_cpu(*((__be32 *) (data + 6))), i, num_pcrs);
                        goto out;
@@ -205,10 +205,11 @@ ssize_t tpm_show_pubek(struct device *dev, struct device_attribute *attr,
 
        if ((len = tpm_transmit(chip, data, READ_PUBEK_RESULT_SIZE)) <
            READ_PUBEK_RESULT_SIZE) {
-               dev_err(&chip->pci_dev->dev, "A TPM error (%d) occurred "
+               dev_dbg(&chip->pci_dev->dev, "A TPM error (%d) occurred "
                                "attempting to read the PUBEK\n",
                            be32_to_cpu(*((__be32 *) (data + 6))));
-               return 0;
+               rc = 0;
+               goto out;
        }
 
        /* 
@@ -232,14 +233,15 @@ ssize_t tpm_show_pubek(struct device *dev, struct device_attribute *attr,
                    data[15], data[16], data[17], data[22], data[23],
                    data[24], data[25], data[26], data[27], data[28],
                    data[29], data[30], data[31], data[32], data[33],
-                   be32_to_cpu(*((__be32 *) (data + 32))));
+                   be32_to_cpu(*((__be32 *) (data + 34))));
 
        for (i = 0; i < 256; i++) {
-               str += sprintf(str, "%02X ", data[i + 39]);
+               str += sprintf(str, "%02X ", data[i + 38]);
                if ((i + 1) % 16 == 0)
                        str += sprintf(str, "\n");
        }
        rc = str - buf;
+out:
        kfree(data);
        return rc;
 }
@@ -462,6 +464,7 @@ void __devexit tpm_remove(struct pci_dev *pci_dev)
 
        pci_set_drvdata(pci_dev, NULL);
        misc_deregister(&chip->vendor->miscdev);
+       kfree(chip->vendor->miscdev.name);
 
        sysfs_remove_group(&pci_dev->dev.kobj, chip->vendor->attr_group);
 
@@ -524,7 +527,9 @@ EXPORT_SYMBOL_GPL(tpm_pm_resume);
 int tpm_register_hardware(struct pci_dev *pci_dev,
                          struct tpm_vendor_specific *entry)
 {
-       char devname[7];
+#define DEVNAME_SIZE 7
+
+       char *devname;
        struct tpm_chip *chip;
        int i, j;
 
@@ -567,7 +572,8 @@ dev_num_search_complete:
        else
                chip->vendor->miscdev.minor = MISC_DYNAMIC_MINOR;
 
-       snprintf(devname, sizeof(devname), "%s%d", "tpm", chip->dev_num);
+       devname = kmalloc(DEVNAME_SIZE, GFP_KERNEL);
+       scnprintf(devname, DEVNAME_SIZE, "%s%d", "tpm", chip->dev_num);
        chip->vendor->miscdev.name = devname;
 
        chip->vendor->miscdev.dev = &(pci_dev->dev);