From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1765604AbXJZRGJ (ORCPT ); Fri, 26 Oct 2007 13:06:09 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757844AbXJZRFz (ORCPT ); Fri, 26 Oct 2007 13:05:55 -0400 Received: from mtiwmhc12.worldnet.att.net ([204.127.131.116]:63183 "EHLO mtiwmhc12.worldnet.att.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750849AbXJZRFy (ORCPT ); Fri, 26 Oct 2007 13:05:54 -0400 Message-ID: <47221E6F.1090607@lwfinger.net> Date: Fri, 26 Oct 2007 12:05:51 -0500 From: Larry Finger User-Agent: Thunderbird 2.0.0.6 (X11/20070801) MIME-Version: 1.0 To: Greg Kroah-Hartman , Kay Sievers CC: LKML Subject: Re: linux-2.6.23-git3: Many sysfs-related warnings in dmesg Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On my openSUSE 10.3 x86_64 system running v2.6.24-rc1-281-g22d2aa1, I get the sysfs rename messages. Using Greg's patch, nothing changed. The log results are: sysfs: duplicate filename 'eth1' can not be created WARNING: at fs/sysfs/dir.c:424 sysfs_add_one() Call Trace: [] sysfs_add_one+0x5c/0xc9 [] sysfs_create_link+0xd3/0x12e [] device_rename+0x17a/0x1db [] dev_change_name+0x101/0x1fe [] dev_ifsioc+0x204/0x2bf [] dev_ioctl+0x539/0x644 [] __lock_acquire+0xd26/0xd47 [] fd_install+0x30/0x68 [] sock_ioctl+0x204/0x212 [] do_ioctl+0x2a/0x77 [] vfs_ioctl+0x251/0x26e [] trace_hardirqs_on_thunk+0x35/0x3a [] sys_ioctl+0x42/0x67 [] system_call+0x7e/0x83 net eth1: device_rename: sysfs_create_symlink failed (-17) udev: renamed network interface wlan0 to eth1 =========================================================== Kay's patch shows the following BUG, as well as the rename message: BUG: sleeping function called from invalid context at kernel/mutex.c:207 in_atomic():1, irqs_disabled():0 2 locks held by udevd/1965: #0: (rtnl_mutex){--..}, at: [] rtnl_lock+0x12/0x14 #1: (&dev_base_lock){-.--}, at: [] dev_change_name+0xff/0x1f0 Call Trace: [] debug_show_held_locks+0x22/0x24 [] __might_sleep+0x10a/0x10c [] mutex_lock_nested+0x28/0x2e1 [] kobject_rename+0x6b/0xea [] sysfs_rename_dir+0x2d/0x178 [] kobject_rename+0x6b/0xea [] kobject_rename+0x9e/0xea [] device_rename+0xc5/0x1db [] dev_change_name+0x10a/0x1f0 [] dev_ifsioc+0x204/0x2bf [] dev_ioctl+0x539/0x644 [] __lock_acquire+0xd26/0xd47 [] fd_install+0x30/0x68 [] sock_ioctl+0x204/0x212 [] do_ioctl+0x2a/0x77 [] vfs_ioctl+0x251/0x26e [] trace_hardirqs_on_thunk+0x35/0x3a [] sys_ioctl+0x42/0x67 [] system_call+0x7e/0x83 WARNING: at kernel/mutex.c:135 __mutex_lock_common() Call Trace: [] __might_sleep+0x10a/0x10c [] mutex_lock_nested+0x84/0x2e1 [] kobject_rename+0x6b/0xea [] sysfs_rename_dir+0x2d/0x178 [] kobject_rename+0x6b/0xea [] kobject_rename+0x9e/0xea [] device_rename+0xc5/0x1db [] dev_change_name+0x10a/0x1f0 [] dev_ifsioc+0x204/0x2bf [] dev_ioctl+0x539/0x644 [] __lock_acquire+0xd26/0xd47 [] fd_install+0x30/0x68 [] sock_ioctl+0x204/0x212 [] do_ioctl+0x2a/0x77 [] vfs_ioctl+0x251/0x26e [] trace_hardirqs_on_thunk+0x35/0x3a [] sys_ioctl+0x42/0x67 [] system_call+0x7e/0x83 sysfs: duplicate filename 'eth1' can not be created WARNING: at fs/sysfs/dir.c:424 sysfs_add_one() Call Trace: [] sysfs_add_one+0x5c/0xc9 [] sysfs_create_link+0xd3/0x12e [] device_rename+0x17a/0x1db [] dev_change_name+0x10a/0x1f0 [] dev_ifsioc+0x204/0x2bf [] dev_ioctl+0x539/0x644 [] __lock_acquire+0xd26/0xd47 [] fd_install+0x30/0x68 [] sock_ioctl+0x204/0x212 [] do_ioctl+0x2a/0x77 [] vfs_ioctl+0x251/0x26e [] trace_hardirqs_on_thunk+0x35/0x3a [] sys_ioctl+0x42/0x67 [] system_call+0x7e/0x83 net eth1: device_rename: sysfs_create_symlink failed (-17) ============================================================= The following patch logs the problem with a minimum of log output. Index: linux-2.6/fs/sysfs/dir.c =================================================================== --- linux-2.6.orig/fs/sysfs/dir.c +++ linux-2.6/fs/sysfs/dir.c @@ -418,12 +418,8 @@ void sysfs_addrm_start(struct sysfs_addr */ int sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd) { - if (sysfs_find_dirent(acxt->parent_sd, sd->s_name)) { - printk(KERN_WARNING "sysfs: duplicate filename '%s' " - "can not be created\n", sd->s_name); - WARN_ON(1); + if (sysfs_find_dirent(acxt->parent_sd, sd->s_name)) return -EEXIST; - } sd->s_parent = sysfs_get(acxt->parent_sd); Larry