On 05/17/2013 01:50 AM, Tejun Heo wrote: > Hey, > > On Thu, May 16, 2013 at 12:48:43PM +0800, Chen Gang wrote: >> __sysfs_remove_dir() remove all related things, but not deref the count. >> >> For __sysfs_remove_dir() -> >> ... >> sysfs_addrm_start() >> ... >> while() { >> ... >> sysfs_remove_one() (not deref the related file) >> } >> sysfs_addrm_finish() (will deref current dir) >> >> For device_remove_file() -> >> sysfs_remove_file() -> >> sysfs_hash_and_remove() -> >> ... >> sysfs_addrm_start() >> ... >> sysfs_remove_one() (not deref the current file) >> sysfs_addrm_finish() (will deref current file) >> >> >> So if not call device_remove_file() firstly, the all files under the >> directory are removed, but the related resources are not released which >> will cause resource leak. > > Can you please be more specific on what gets leaked and if possible > fix it from sysfs side? >
Oh, it is my fault. It is not the correct reason. But I will continue to analyse why it should be add device_remove_file() before device_unregister() in all 'drivers/*' and 'arch/*' source files. Thanks. -- Chen Gang Asianux Corporation -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/