diff mbox series

[1/1] rpmsg: virtio_rpmsg_bus: Fix rpmsg_create_channel memory leak

Message ID 1532552916-30111-1-git-send-email-loic.pallardy@st.com
State New
Headers show
Series [1/1] rpmsg: virtio_rpmsg_bus: Fix rpmsg_create_channel memory leak | expand

Commit Message

Loic Pallardy July 25, 2018, 9:08 p.m. UTC
In case of rpmsg_register_device() failure, vch previously
allocated must be free.

fixes: 6eed598a0491 ("rpmsg: Split off generic tail of create_channel()")

Signed-off-by: Loic Pallardy <loic.pallardy@st.com>

---
 drivers/rpmsg/virtio_rpmsg_bus.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

-- 
1.9.1

Comments

Suman Anna July 25, 2018, 10:36 p.m. UTC | #1
Hi Loic,

On 07/25/2018 04:08 PM, Loic Pallardy wrote:
> In case of rpmsg_register_device() failure, vch previously

> allocated must be free.

> 


Isn't this already handled through the virtio_rpmsg_release_device()
callback as part of the put_device() in rpmsg_register_device() failure.

regards
Suman

> fixes: 6eed598a0491 ("rpmsg: Split off generic tail of create_channel()")

> 

> Signed-off-by: Loic Pallardy <loic.pallardy@st.com>

> ---

>  drivers/rpmsg/virtio_rpmsg_bus.c | 4 +++-

>  1 file changed, 3 insertions(+), 1 deletion(-)

> 

> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c

> index 664f957..10f927e 100644

> --- a/drivers/rpmsg/virtio_rpmsg_bus.c

> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c

> @@ -431,8 +431,10 @@ static struct rpmsg_device *rpmsg_create_channel(struct virtproc_info *vrp,

>  	rpdev->dev.parent = &vrp->vdev->dev;

>  	rpdev->dev.release = virtio_rpmsg_release_device;

>  	ret = rpmsg_register_device(rpdev);

> -	if (ret)

> +	if (ret) {

> +		kfree(vch);

>  		return NULL;

> +	}

>  

>  	return rpdev;

>  }

>
Loic Pallardy July 26, 2018, 7:04 a.m. UTC | #2
Hi Suman,

> -----Original Message-----

> From: Suman Anna <s-anna@ti.com>

> Sent: Thursday, July 26, 2018 12:37 AM

> To: Loic PALLARDY <loic.pallardy@st.com>; bjorn.andersson@linaro.org;

> ohad@wizery.com

> Cc: linux-remoteproc@vger.kernel.org; linux-kernel@vger.kernel.org;

> Arnaud POULIQUEN <arnaud.pouliquen@st.com>;

> benjamin.gaignard@linaro.org

> Subject: Re: [PATCH 1/1] rpmsg: virtio_rpmsg_bus: Fix

> rpmsg_create_channel memory leak

> 

> Hi Loic,

> 

> On 07/25/2018 04:08 PM, Loic Pallardy wrote:

> > In case of rpmsg_register_device() failure, vch previously

> > allocated must be free.

> >

> 

> Isn't this already handled through the virtio_rpmsg_release_device()

> callback as part of the put_device() in rpmsg_register_device() failure.


Yes you're right, put_device() is doing the job.
Please forget this patch.

Regards,
Loic 

> 

> regards

> Suman

> 

> > fixes: 6eed598a0491 ("rpmsg: Split off generic tail of create_channel()")

> >

> > Signed-off-by: Loic Pallardy <loic.pallardy@st.com>

> > ---

> >  drivers/rpmsg/virtio_rpmsg_bus.c | 4 +++-

> >  1 file changed, 3 insertions(+), 1 deletion(-)

> >

> > diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c

> b/drivers/rpmsg/virtio_rpmsg_bus.c

> > index 664f957..10f927e 100644

> > --- a/drivers/rpmsg/virtio_rpmsg_bus.c

> > +++ b/drivers/rpmsg/virtio_rpmsg_bus.c

> > @@ -431,8 +431,10 @@ static struct rpmsg_device

> *rpmsg_create_channel(struct virtproc_info *vrp,

> >  	rpdev->dev.parent = &vrp->vdev->dev;

> >  	rpdev->dev.release = virtio_rpmsg_release_device;

> >  	ret = rpmsg_register_device(rpdev);

> > -	if (ret)

> > +	if (ret) {

> > +		kfree(vch);

> >  		return NULL;

> > +	}

> >

> >  	return rpdev;

> >  }

> >
diff mbox series

Patch

diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
index 664f957..10f927e 100644
--- a/drivers/rpmsg/virtio_rpmsg_bus.c
+++ b/drivers/rpmsg/virtio_rpmsg_bus.c
@@ -431,8 +431,10 @@  static struct rpmsg_device *rpmsg_create_channel(struct virtproc_info *vrp,
 	rpdev->dev.parent = &vrp->vdev->dev;
 	rpdev->dev.release = virtio_rpmsg_release_device;
 	ret = rpmsg_register_device(rpdev);
-	if (ret)
+	if (ret) {
+		kfree(vch);
 		return NULL;
+	}
 
 	return rpdev;
 }