lkml.org 
[lkml]   [2012]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRE: [PATCH] usb: phy: tegra: Using devm API for memory allocation
    > -----Original Message-----
    > From: Stephen Warren [mailto:swarren@wwwdotorg.org]
    > Sent: Wednesday, December 19, 2012 11:08 PM
    > To: Venu Byravarasu
    > Cc: balbi@ti.com; gregkh@linuxfoundation.org; linux-
    > kernel@vger.kernel.org; linux-usb@vger.kernel.org
    > Subject: Re: [PATCH] usb: phy: tegra: Using devm API for memory allocation
    >
    > On 12/18/2012 10:38 PM, Venu Byravarasu wrote:
    > >> -----Original Message-----
    > >> From: Stephen Warren [mailto:swarren@wwwdotorg.org]
    > >> Sent: Tuesday, December 18, 2012 10:03 PM
    > >> To: Venu Byravarasu
    > >> Cc: balbi@ti.com; gregkh@linuxfoundation.org; linux-
    > >> kernel@vger.kernel.org; linux-usb@vger.kernel.org
    > >> Subject: Re: [PATCH] usb: phy: tegra: Using devm API for memory
    > allocation
    > >>
    > >
    > > Stephen,
    > > As you mentioned I can replace kmalloc with kzalloc in the original code
    > > and push an updated patch.
    > > However, I just wanted to understand if there exists any issue
    > > in using devm_kzalloc instead of kzalloc?
    >
    > devm_* are intended for objects allocated during probe(), and free()d
    > during remove(). The object you're allocating here isn't that case.
    >
    > Now, once you convert the Tegra PHY driver to be a true device, perhaps
    > this object will be allocated/freed during probe/remove, so the devm_
    > functions will be useful then?
    >
    > The problem this may cause is a memory leak. Consider the Tegra EHCI and
    > PHY drivers being built as modules, the PHY driver module being inserted
    > and never removed, yet the EHCI driver being continually inserted and
    > removed. Since the PHY is never removed, the memory allocated by its
    > devm_kzalloc() call is never freed, but it's continually re-allocated
    > since tegra_usb_phy_open() is called whenever the EHCI driver module is
    > inserted. You need the explicit kfree() to avoid that, and since you're
    > kfree()ing somewhere other than remove(), using devm_* to make the
    > allocation isn't appropriate.

    Thanks Stephen for the detailed explanation.
    Sent updated patch for review: http://marc.info/?l=linux-usb&m=135599303216132&w=2 .



    \
     
     \ /
      Last update: 2012-12-20 10:41    [W:2.891 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site