Skip to content

Commit

Permalink
tpm: vtpm_proxy: conditionally call tpm_chip_unregister
Browse files Browse the repository at this point in the history
If tpm_chip_register fails vtpm must not call tpm_chip_unregister:

> [   58.271017]  [<ffffffff8155bd32>] dpm_sysfs_remove+0x22/0x60
> [   58.271017]  [<ffffffff8154e438>] device_del+0x58/0x280
> [   58.271017]  [<ffffffffa024c020>] tpm_chip_unregister+0x40/0xb0 [tpm]
> [   58.271017]  [<ffffffffa0292360>] vtpm_proxy_fops_release+0x40/0x60 [tpm_vtpm_proxy]

[[email protected]: cleaned up unneeded goto away]

Signed-off-by: Jason Gunthorpe <[email protected]>
Tested-by: Stefan Berger <[email protected]>
Reviewed-by: Jarkko Sakkinen <[email protected]>
Tested-by: Jarkko Sakkinen <[email protected]>
Signed-off-by: Jarkko Sakkinen <[email protected]>
  • Loading branch information
jgunthorpe authored and Jarkko Sakkinen committed Nov 27, 2016
1 parent 0cf577a commit c4484f7
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions drivers/char/tpm/tpm_vtpm_proxy.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ struct proxy_dev {
long state; /* internal state */
#define STATE_OPENED_FLAG BIT(0)
#define STATE_WAIT_RESPONSE_FLAG BIT(1) /* waiting for emulator response */
#define STATE_REGISTERED_FLAG BIT(2)

size_t req_len; /* length of queued TPM request */
size_t resp_len; /* length of queued TPM response */
Expand Down Expand Up @@ -370,12 +371,9 @@ static void vtpm_proxy_work(struct work_struct *work)

rc = tpm_chip_register(proxy_dev->chip);
if (rc)
goto err;

return;

err:
vtpm_proxy_fops_undo_open(proxy_dev);
vtpm_proxy_fops_undo_open(proxy_dev);
else
proxy_dev->state |= STATE_REGISTERED_FLAG;
}

/*
Expand Down Expand Up @@ -516,7 +514,8 @@ static void vtpm_proxy_delete_device(struct proxy_dev *proxy_dev)
*/
vtpm_proxy_fops_undo_open(proxy_dev);

tpm_chip_unregister(proxy_dev->chip);
if (proxy_dev->state & STATE_REGISTERED_FLAG)
tpm_chip_unregister(proxy_dev->chip);

vtpm_proxy_delete_proxy_dev(proxy_dev);
}
Expand Down

0 comments on commit c4484f7

Please sign in to comment.