Skip to content

Commit 1fbad30

Browse files
Winkler, TomasJarkko Sakkinen
authored andcommitted
tpm: tpm_crb: relinquish locality on error path.
In crb_map_io() function, __crb_request_locality() is called prior to crb_cmd_ready(), but if one of the consecutive function fails the flow bails out instead of trying to relinquish locality. This patch adds goto jump to __crb_relinquish_locality() on the error path. Fixes: 888d867 (tpm: cmd_ready command can be issued only after granting locality) Signed-off-by: Tomas Winkler <[email protected]> Tested-by: Jarkko Sakkinen <[email protected]> Reviewed-by: Jarkko Sakkinen <[email protected]> Signed-off-by: Jarkko Sakkinen <[email protected]>
1 parent c922ff8 commit 1fbad30

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

drivers/char/tpm/tpm_crb.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -511,16 +511,18 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
511511

512512
priv->regs_t = crb_map_res(dev, priv, &io_res, buf->control_address,
513513
sizeof(struct crb_regs_tail));
514-
if (IS_ERR(priv->regs_t))
515-
return PTR_ERR(priv->regs_t);
514+
if (IS_ERR(priv->regs_t)) {
515+
ret = PTR_ERR(priv->regs_t);
516+
goto out_relinquish_locality;
517+
}
516518

517519
/*
518520
* PTT HW bug w/a: wake up the device to access
519521
* possibly not retained registers.
520522
*/
521523
ret = crb_cmd_ready(dev, priv);
522524
if (ret)
523-
return ret;
525+
goto out_relinquish_locality;
524526

525527
pa_high = ioread32(&priv->regs_t->ctrl_cmd_pa_high);
526528
pa_low = ioread32(&priv->regs_t->ctrl_cmd_pa_low);
@@ -565,6 +567,8 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
565567

566568
crb_go_idle(dev, priv);
567569

570+
out_relinquish_locality:
571+
568572
__crb_relinquish_locality(dev, priv, 0);
569573

570574
return ret;

0 commit comments

Comments
 (0)