From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergei Shtylyov Subject: Re: Resource usages in Linux drivers Date: Thu, 23 Apr 2015 13:37:04 +0300 Message-ID: <5538CB50.3010601@cogentembedded.com> References: <5538950F.3040405@163.com> <5538B938.9060607@cogentembedded.com> <5538BB61.30907@163.com> <5538C4A3.6080302@163.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: Jeff Kirsher , netdev@vger.kernel.org, David Miller , stephen@networkplumber.org, Neil Horman To: Jia-Ju Bai Return-path: Received: from mail-la0-f52.google.com ([209.85.215.52]:34996 "EHLO mail-la0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933691AbbDWKhI (ORCPT ); Thu, 23 Apr 2015 06:37:08 -0400 Received: by labbd9 with SMTP id bd9so9500684lab.2 for ; Thu, 23 Apr 2015 03:37:06 -0700 (PDT) In-Reply-To: <5538C4A3.6080302@163.com> Sender: netdev-owner@vger.kernel.org List-ID: On 4/23/2015 1:08 PM, Jia-Ju Bai wrote: >>>> I am very sorry to trouble you. >>>> I find that resource management is error-prone when writing Linux drivers, >>>> and >>>> many problems may occur, such as resource leaks. >>>> Meanwhile, I find that many applied patches in the kernel mailing list focus >>>> on releasing allocated resources, especially in error-handling paths. >>>> Therefore, I have a question: is it possible to automatically release >>>> allocated resources in drivers before unloading and in error-handling paths? >>> Yes, there's managed device API, look for functions starting with devm_. >>> There's one limitation though: it can be used only in the driver's probe() >>> method, so can't be used when e.g. network device is being opened. >> I think many APIs, such as kmalloc, can also be managed like garbage >> collection in Java. >> Maybe the performance is a matter. >>>> I am looking forward to your reply, thanks! >>> Such questions should actually be asked on the mailing lists, not >>> personally. >> I am sorry for that, and I will cc to the mailing lists and other maintainers. > I find that some common APIs are not managed, such as napi_enable and > napi_start_queue. Is it possible to provide managed APIs for them? No, they're only called from ndo_open() method IIRC. The device managed APIs can only be called at the device probing time. > I also find many drivers do not use these managed APIs, especially in ethernet > card drivers (like e100, r8169). Is it possible to change them? Patches welcome. :-) > Best wishes, > Jia-Ju Bai WBR, Sergei