Re: [PATCH 5/5] coresight: Avoid casting void pointers

From: Joe Perches
Date: Sun Apr 26 2020 - 16:38:44 EST


On Sun, 2020-04-26 at 11:58 -0700, Stephen Boyd wrote:
> We don't need to cast void pointers, such as the amba_id data. Assign to
> a local variable to make the code prettier and also return NULL instead
> of 0 to make sparse happy.
[]
> diff --git a/drivers/hwtracing/coresight/coresight-priv.h b/drivers/hwtracing/coresight/coresight-priv.h
[]
> @@ -206,9 +206,12 @@ cti_remove_assoc_from_csdev(struct coresight_device *csdev) {}
> /* extract the data value from a UCI structure given amba_id pointer. */
> static inline void *coresight_get_uci_data(const struct amba_id *id)
> {
> - if (id->data)
> - return ((struct amba_cs_uci_id *)(id->data))->data;
> - return 0;
> + struct amba_cs_uci_id *uci_id = id->data;
> +
> + if (uci_id)
> + return id->data;

Missing one more level of indirection here yes?

return uci_id->data;

> +
> + return NULL;
> }

And this code would generally be written to return the expected
value at the bottom of the function and any unusual return
early like:

static inline void *coresight_get_uci_data(const struct amba_id *id)
{
struct amba_cs_uci_id *uci_id = id->data;

if (!uci_id)
return NULL;

return uci_id->data;
}