From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755994Ab0JKTaF (ORCPT ); Mon, 11 Oct 2010 15:30:05 -0400 Received: from moutng.kundenserver.de ([212.227.126.187]:65255 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754692Ab0JKTaD (ORCPT ); Mon, 11 Oct 2010 15:30:03 -0400 Message-ID: <4CB36592.6060909@vlnb.net> Date: Mon, 11 Oct 2010 23:29:22 +0400 From: Vladislav Bolkhovitin User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.10) Gecko/20100527 Thunderbird/3.0.5 MIME-Version: 1.0 To: Greg KH CC: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, scst-devel , James Bottomley , Andrew Morton , FUJITA Tomonori , Mike Christie , Vu Pham , Bart Van Assche , James Smart , Joe Eykholt , Andy Yan , Chetan Loke , Dmitry Torokhov , Hannes Reinecke , Richard Sharpe , Daniel Henrique Debonzi Subject: Re: [PATCH 8/19]: SCST SYSFS interface implementation References: <4CA653F0.1010008@vlnb.net> <4CA656AD.8020408@vlnb.net> <20101009212047.GB27180@kroah.com> In-Reply-To: <20101009212047.GB27180@kroah.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Provags-ID: V02:K0:mMb8UjIFZt8o1IIKgCC+SFBg9bCVL94Vg6N1PfJC6ch NerD6TnZi2SxsqjXP7UnDZDIBtGNv+2BCjb7JN6qfjpLHAMR2s 4rufsB62WpwhKyyF/wQNA4nkED9ofVNCMsR+4DMwJVwoYN6QXg m+WA4Q2Q+HZGaBn1rKMeDBKeYZnlKFYXkroPOfwvNKIkHIfUHl CHMLfxny19iKn1LxDcIJQ== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Greg KH, on 10/10/2010 01:20 AM wrote: > On Sat, Oct 02, 2010 at 01:46:21AM +0400, Vladislav Bolkhovitin wrote: >> This patch contains SYSFS interface implementation. > > Nice, but you forgot to document it. All sysfs changes need to be > documented in Documentation/ABI/ > > Please add a file to this patch that does so. I'll do. I didn't know about this. Thanks for pointing on it. >> +static void scst_tgtt_release(struct kobject *kobj) >> +{ >> + struct scst_tgt_template *tgtt; >> + >> + tgtt = container_of(kobj, struct scst_tgt_template, tgtt_kobj); >> + complete_all(&tgtt->tgtt_kobj_release_cmpl); >> + return; > > Don't you also need to free the memory of your kobject here? > >> +static void scst_tgt_release(struct kobject *kobj) >> +{ >> + struct scst_tgt *tgt; >> + >> + tgt = container_of(kobj, struct scst_tgt, tgt_kobj); >> + complete_all(&tgt->tgt_kobj_release_cmpl); >> + return; > > Same here, no kfree? > >> +static void scst_acg_release(struct kobject *kobj) >> +{ >> + struct scst_acg *acg; >> + >> + acg = container_of(kobj, struct scst_acg, acg_kobj); >> + complete_all(&acg->acg_kobj_release_cmpl); > > And here. Thanks for the review. In all those functions kobjects for simplicity are embedded into the outer objects, so they will be freed as part of the outer objects free. Hence, kfree() for the kobjects in the release functions are not needed. Thanks again, Vlad