drivers/hwtracing/coresight/coresight.c On 18 March 2018 at 01:38, Arvind Yadav <arvind.yadav...@gmail.com> wrote: > Never directly free @dev after calling device_register(), even > if it returned an error. Always use put_device() to give up the > reference initialized. > > Signed-off-by: Arvind Yadav <arvind.yadav...@gmail.com> > --- > drivers/hwtracing/coresight/coresight.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight.c > b/drivers/hwtracing/coresight/coresight.c > index 389c4ba..132dfbc 100644 > --- a/drivers/hwtracing/coresight/coresight.c > +++ b/drivers/hwtracing/coresight/coresight.c > @@ -1026,8 +1026,10 @@ struct coresight_device *coresight_register(struct > coresight_desc *desc) > dev_set_name(&csdev->dev, "%s", desc->pdata->name); > > ret = device_register(&csdev->dev); > - if (ret) > - goto err_device_register; > + if (ret) { > + put_device(&csdev->dev); > + goto err_kzalloc_csdev; > + } > > mutex_lock(&coresight_mutex); > > @@ -1038,8 +1040,6 @@ struct coresight_device *coresight_register(struct > coresight_desc *desc) > > return csdev; > > -err_device_register: > - kfree(conns);
Apologies for the late reply, I was travelling. I suggest to simply replace kfree() with put_device() in order to concentrate the error handling code in the same area and make sure that memory allocated for @conns and @refcnts is freed. Thanks, Mathieu > err_kzalloc_conns: > kfree(refcnts); > err_kzalloc_refcnts: > -- > 2.7.4 >