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 |
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; > } >
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 --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; }
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