Re: [PATCH RESEND 2/3] tpm-chip: Return TPM error codes from auto_startup functions
<Alexander.Steffen-d0qZbvYSIPpWk0Htik3J/[email protected]>
| Newsgroups | net.sourceforge.lists.tpmdd-devel |
|---|---|
| Message-ID | <[email protected]> |
> > diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c
> > index a353b7a..f20fcb7 100644
> > --- a/drivers/char/tpm/tpm-chip.c
> > +++ b/drivers/char/tpm/tpm-chip.c
> > @@ -404,8 +404,10 @@ int tpm_chip_register(struct tpm_chip *chip)
> > rc = tpm2_auto_startup(chip);
> > else
> > rc = tpm1_auto_startup(chip);
> > - if (rc)
> > + if (rc < 0)
> > return rc;
> > + else if (rc > 0)
> > + return -ENODEV;
>
> So what good this change makes in the end? I'm not sure I'm following.
This is just refactoring the code without changing the functionality. Before this change, tpm*_auto_startup could only return negative error codes (or 0 for success). With this change, tpm*_auto_startup can also return positive errors codes for TPM errors (but still 0 for success). Therefore, tpm_chip_register, the only caller of tpm*_auto_startup, now needs to convert positive error codes to -ENODEV, so that the external behavior is unchanged.
> > }
> >
> > tpm_sysfs_add_device(chip);
> > diff --git a/drivers/char/tpm/tpm-interface.c
> > b/drivers/char/tpm/tpm-interface.c
> > index 78fb41d..fe11f2a 100644
> > --- a/drivers/char/tpm/tpm-interface.c
> > +++ b/drivers/char/tpm/tpm-interface.c
> > @@ -1000,7 +1000,8 @@ EXPORT_SYMBOL_GPL(tpm_do_selftest);
> > * sequence
> > * @chip: TPM chip to use
> > *
> > - * Returns 0 on success, < 0 in case of fatal error.
> > + * Returns 0 on success, < 0 in case of fatal error or a value > 0
> > + representing
> > + * a TPM error code.
> > */
>
> A nitpick.
>
> According to https://www.kernel.org/doc/Documentation/kernel-doc-nano-
> HOWTO.txt
> you ought to use "Return:" keyword ;-)
>
> I would favor here:
>
> "Return: same as with tpm_transmit_cmd()"
Agreed. I will fix that together with the rest, once the discussions for the other patches in the series have come to a conclusion.
> > int tpm1_auto_startup(struct tpm_chip *chip) { @@ -1015,10 +1016,7
> > @@ int tpm1_auto_startup(struct tpm_chip *chip)
> > goto out;
> > }
> >
> > - return rc;
> > out:
> > - if (rc > 0)
> > - rc = -ENODEV;
> > return rc;
> > }
> >
> > diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
> > index e1a41b7..54a3123 100644
> > --- a/drivers/char/tpm/tpm2-cmd.c
> > +++ b/drivers/char/tpm/tpm2-cmd.c
> > @@ -1074,7 +1074,8 @@ static int tpm2_get_cc_attrs_tbl(struct tpm_chip
> *chip)
> > * sequence
> > * @chip: TPM chip to use
> > *
> > - * Returns 0 on success, < 0 in case of fatal error.
> > + * Returns 0 on success, < 0 in case of fatal error or a value > 0
> > + representing
> > + * a TPM error code.
> > */
> > int tpm2_auto_startup(struct tpm_chip *chip) { @@ -1109,8 +1110,6 @@
> > int tpm2_auto_startup(struct tpm_chip *chip)
> > rc = tpm2_get_cc_attrs_tbl(chip);
> >
> > out:
> > - if (rc > 0)
> > - rc = -ENODEV;
> > return rc;
> > }
> >
> > --
> > 2.7.4
> >
>
> At this point I can only see aero improvement how the driver works and a
> very minor clean up.
>
> /Jarkko
Alexander
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot