Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755193AbZFGJVO (ORCPT ); Sun, 7 Jun 2009 05:21:14 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751038AbZFGJU6 (ORCPT ); Sun, 7 Jun 2009 05:20:58 -0400 Received: from fg-out-1718.google.com ([72.14.220.158]:40558 "EHLO fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750784AbZFGJU5 (ORCPT ); Sun, 7 Jun 2009 05:20:57 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=date:from:to:cc:subject:message-id:mail-followup-to:mime-version :content-type:content-disposition:user-agent; b=KP64q0d8Zjef8wj5BoA44enKhevlZxtZxnkfEK0LkiLXP4nGXj3ccDxQeVCyoG7ou5 uTUvO6DQrRECiE3CHXJGzsNNNDHpgE6wQselGPOnzo7nNMzUOhC7sNtmm2DQSe4UvbaE 8eLOhcs50ySKnX/rg4u+ElDugsK6oV3DVPTnE= Date: Sun, 7 Jun 2009 11:20:54 +0200 From: Borislav Petkov To: bzolnier@gmail.com Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] ide-tape: fix proc warning Message-ID: <20090607092054.GA26408@liondog.tnic> Mail-Followup-To: Borislav Petkov , bzolnier@gmail.com, linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3656 Lines: 91 Hi, this is yet another ide-tape fix against ide-2.6.git/for-next. -- From: Borislav Petkov Date: Sun, 7 Jun 2009 11:05:53 +0200 Subject: [PATCH] ide-tape: fix proc warning When accessing ide-tape over the chrdev interface, I get [ 278.147906] ------------[ cut here ]------------ [ 278.152685] WARNING: at fs/proc/generic.c:847 remove_proc_entry+0x199/0x1b8() [ 278.160070] Hardware name: P4I45PE 1.00 [ 278.160076] remove_proc_entry: removing non-empty directory 'ide0/hdb', leaking at least 'name' [ 278.160080] Modules linked in: rtc intel_agp pcspkr thermal processor thermal_sys parport_pc parport agpgart button [ 278.160100] Pid: 2312, comm: mt Not tainted 2.6.30-rc2 #3 [ 278.160105] Call Trace: [ 278.160117] [] warn_slowpath+0x71/0xa0 [ 278.160126] [] ? _spin_unlock_irqrestore+0x29/0x2c [ 278.160132] [] ? try_to_wake_up+0x1b6/0x1c0 [ 278.160141] [] ? default_wake_function+0xb/0xd [ 278.160149] [] ? pollwake+0x4a/0x55 [ 278.160156] [] ? _spin_unlock+0x24/0x26 [ 278.160163] [] ? add_partial+0x44/0x49 [ 278.160169] [] ? __slab_free+0xba/0x29c [ 278.160177] [] ? sysfs_delete_inode+0x0/0x3c [ 278.160184] [] remove_proc_entry+0x199/0x1b8 [ 278.160191] [] ? remove_dir+0x27/0x2e [ 278.160199] [] ide_proc_unregister_device+0x40/0x4c [ 278.160207] [] drive_release_dev+0x14/0x47 [ 278.160214] [] device_release+0x35/0x5a [ 278.160221] [] kobject_release+0x40/0x50 [ 278.160226] [] ? kobject_release+0x0/0x50 [ 278.160232] [] kref_put+0x3c/0x4a [ 278.160238] [] kobject_put+0x37/0x3c [ 278.160243] [] put_device+0xf/0x11 [ 278.160249] [] ide_device_put+0x2d/0x30 [ 278.160255] [] ide_tape_put+0x24/0x32 [ 278.160261] [] idetape_chrdev_release+0x17f/0x18e [ 278.160269] [] __fput+0xca/0x175 [ 278.160275] [] fput+0x19/0x1b [ 278.160280] [] filp_close+0x51/0x5b [ 278.160286] [] sys_close+0x73/0xad [ 278.160293] [] syscall_call+0x7/0xb [ 278.160298] ---[ end trace f16d907ea1f89336 ]--- because it tries to free its proc entry in drive_release_dev() in the call chain resulting from ide_tape_put() but it chokes on /proc/ide/ide[01]/hd?/name which is added during driver registration and should go only at driver removal time. Add/remove those proc entries everytime the device is accessed. Signed-off-by: Borislav Petkov --- drivers/ide/ide-tape.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index 055f52e..9d9d771 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c @@ -252,6 +252,7 @@ static struct ide_tape_obj *ide_tape_get(struct gendisk *disk) else get_device(&tape->dev); } + ide_proc_register_driver(tape->drive, tape->driver); mutex_unlock(&idetape_ref_mutex); return tape; } @@ -261,6 +262,7 @@ static void ide_tape_put(struct ide_tape_obj *tape) ide_drive_t *drive = tape->drive; mutex_lock(&idetape_ref_mutex); + ide_proc_unregister_driver(drive, tape->driver); put_device(&tape->dev); ide_device_put(drive); mutex_unlock(&idetape_ref_mutex); -- 1.6.3.1 -- Regards/Gruss, Boris. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/