char: tpm: cr50_i2c: Suppress duplicated error message in .remove()
Returning an error value in an i2c remove callback results in an error message being emitted by the i2c core, but otherwise it doesn't make a difference. The device goes away anyhow and the devm cleanups are called. As tpm_cr50_i2c_remove() emits an error message already and the additional error message by the i2c core doesn't add any useful information, change the return value to zero to suppress this error message. Note that if i2c_clientdata is NULL, there is something really fishy. Assuming no memory corruption happened (then all bets are lost anyhow), tpm_cr50_i2c_remove() is only called after tpm_cr50_i2c_probe() returned successfully. So there was a tpm chip registered before and after tpm_cr50_i2c_remove() its privdata is freed but the associated character device isn't removed. If after that happened userspace accesses the character device it's likely that the freed memory is accessed. For that reason the warning message is made a bit more frightening. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
This commit is contained in:
parent
9c438fdef8
commit
e0687fe958
|
@ -769,8 +769,8 @@ static int tpm_cr50_i2c_remove(struct i2c_client *client)
|
|||
struct device *dev = &client->dev;
|
||||
|
||||
if (!chip) {
|
||||
dev_err(dev, "Could not get client data at remove\n");
|
||||
return -ENODEV;
|
||||
dev_crit(dev, "Could not get client data at remove, memory corruption ahead\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
tpm_chip_unregister(chip);
|
||||
|
|
Loading…
Reference in New Issue