From mboxrd@z Thu Jan 1 00:00:00 1970 From: Younger Liu Date: Tue, 18 Jun 2013 13:57:31 +0800 Subject: [Ocfs2-devel] [PATCH] ocfs2: Free sc->sc_page in sc_kref_release() In-Reply-To: <51BFE382.8010408@oracle.com> References: <51BFD6B0.2090106@huawei.com> <51BFDFF2.7010208@oracle.com> <51BFE213.6040700@huawei.com> <51BFE382.8010408@oracle.com> Message-ID: <51BFF6CB.5010901@huawei.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: ocfs2-devel@oss.oracle.com Thanks for your review comments. I will resend this patch. On 2013/6/18 12:35, Jeff Liu wrote: > On 06/18/2013 12:29 PM, Li Zefan wrote: > >> On 2013/6/18 12:20, Jeff Liu wrote: >>> On 06/18/2013 11:40 AM, Younger Liu wrote: >>> >>>> There is a memory leak in sc_kref_release(). >>>> When free struct o2net_sock_container (sc), >>>> we should release sc->sc_page. >>>> >>>> Signed-off-by: Younger Liu >>> >>> Looks fine to me, thanks! >>> >>> Reviewed-by: Jie Liu >>> >>>> --- >>>> fs/ocfs2/cluster/tcp.c | 5 +++++ >>>> 1 file changed, 5 insertions(+) >>>> >>>> diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c >>>> index aa88bd8..f0272b9 100644 >>>> --- a/fs/ocfs2/cluster/tcp.c >>>> +++ b/fs/ocfs2/cluster/tcp.c >>>> @@ -406,6 +406,11 @@ static void sc_kref_release(struct kref *kref) >>>> sc->sc_node = NULL; >>>> >>>> o2net_debug_del_sc(sc); >>>> + >>>> + if (sc->sc_page) { >>>> + __free_page(sc->sc_page); >>>> + sc->sc_page = NULL; >> >> But why set sc->sc_page to NULL, given sc is to be kfreed. > > Nice catch. I have not reacted from another thing in process at that time. > > Thanks, > -Jeff > >> >>>> + } >>>> kfree(sc); >>>> } >> > > > >