Thread (1 message) 1 message, 1 author, 2015-01-12

Re: [PATCH v1 08/10] tpm/tpm_i2c_stm_st33: Split tpm_i2c_tpm_st33 in 2 layers (core + phy)

From: Jason Gunthorpe <hidden>
Date: 2015-01-12 20:26:53

On Sat, Jan 10, 2015 at 12:20:29PM +0100, Christophe Ricard wrote:

For reference:
-static int tpm_stm_i2c_remove(struct i2c_client *client)
-{
-       struct tpm_chip *chip =
-               (struct tpm_chip *) i2c_get_clientdata(client);
-
-       if (chip)
-                tpm_chip_unregister(chip);
-
-       return 0;
-}
Became:
+static int st33zp24_i2c_remove(struct i2c_client *client)
+{
+	void *tpm_data = i2c_get_clientdata(client);
+
+	if (tpm_data)
+		st33zp24_remove(tpm_data);
+
+	return 0;
+}
The value of i2c_get_clientdata hasn't/can't be changed, it must be
the tpm_chip, so tpm_data should be tpm_chip *, not void *.

The 'if (tpm_data)' is an anti-pattern, please remove it

Same comment applies to patch 9
+int st33zp24_remove(void *tpm_data)
+{
+	struct st33zp24_dev *tpm_dev = (struct st33zp24_dev *)tpm_data;
+	struct tpm_chip *chip = tpm_dev->chip;
+
+	if (chip)
+		tpm_chip_unregister(chip);
+
+	return 0;
+}
Now this looks wrong. st33zp24_dev is the TPM_VPRIV of the chip, but
tpm_data is the tpm_chip already, so that cast is surely wrong.

Again, remove the 'if (chip)' anti-pattern.
+static struct st33zp24_phy_ops i2c_phy_ops = {
+       .send = st33zp24_i2c_send,
+       .recv = st33zp24_i2c_recv,
+};
Should be 'static const struct', same comment for patch 9
+       tpm_dev = devm_kzalloc(dev, sizeof(struct st33zp24_dev),
+                              GFP_KERNEL);
+       if (!tpm_dev)
+               return -ENOMEM;
+
+       chip = tpmm_chip_alloc(dev, &st33zp24_tpm);
+       if (IS_ERR(chip))
+               return PTR_ERR(chip);
It is idomatic in the TPM drivers for the tpmm_chip_alloc to be first,
then the priv allocation to be second. Someday we might merge the two
calls.

Jason
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help