Re: [PATCH] tpm_crb: fix mapping of the buffers

From: Jason Gunthorpe
Date: Tue Apr 19 2016 - 13:10:09 EST


On Tue, Apr 19, 2016 at 12:54:18PM +0300, Jarkko Sakkinen wrote:
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: 1bd047be37d9 ("tpm_crb: Use devm_ioremap_resource")
> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx>
> drivers/char/tpm/tpm_crb.c | 39 ++++++++++++++++++++++++++++-----------
> 1 file changed, 28 insertions(+), 11 deletions(-)

This looks OK

Reviewed-by: Jason Gunthorpe <jgunthorpe@xxxxxxxxxxxxxxxxxxxx>

> + if (cmd_pa != rsp_pa) {
> + priv->rsp = crb_map_res(dev, priv, &io_res, rsp_pa, rsp_size);
> + return PTR_ERR_OR_ZERO(priv->rsp);
> + }

I would use an else here, 'exit on success' is considered an
anti-pattern.

Eg:

if (cmd_pa == rsp_pa) {
/* According to the PTP specification, overlapping command and response
* buffer sizes must be identical.
*/
if (cmd_size != rsp_size) {
dev_err(dev, FW_BUG "overlapping command and response buffer sizes are not identical");
return -EINVAL;
}
priv->rsp = priv->cmd;
}
else {
priv->rsp = crb_map_res(dev, priv, &io_res, rsp_pa, rsp_size);
if (IS_ERR(priv->rsp))
return PTR_ERR(priv->rsp);
}

return 0;


Jason