Benjamin Thery <benjamin.thery@bull.net> writes:Ok so we are dealing with fallout from: commit 34358c26a2c96b2a068dc44e0ac602106a466bce Author: Greg Kroah-Hartman <gregkh@suse.de> Date: Wed Oct 24 16:52:31 2007 -0700 kobject: check for duplicate names in kobject_rename This should catch any duplicate names before we try to tell sysfs to rename the object. This happens a lot with older versions of udev and the network rename scripts. Cc: David Miller <davem@davemloft.net> Cc: Kay Sievers <kay.sievers@vrfy.org> Cc: Rafael J. Wysocki <rjw@sisk.pl> Cc: Tejun Heo <htejun@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Which added the check in kobject_rename to prevent problems, and seems to be causing a few. I believe this earlier? patch addresses the problem: commit c8d90dca3211966ba5189e0f3d4bccd558d9ae08 Author: Stephen Hemminger <shemminger@linux-foundation.org> Date: Fri Oct 26 03:53:42 2007 -0700 [NET] dev_change_name: ignore changes to same name Prevent error/backtrace from dev_rename() when changing name of network device to the same name. This is a common situation with udev and other scripts that bind addr to device. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net> And the challenge is that we are getting false positives in the check to see if renames will fail. /* see if this name is already in use */ if (kobj->kset) { struct kobject *temp_kobj; temp_kobj = kset_find_obj(kobj->kset, new_name); if (temp_kobj) { printk(KERN_WARNING "kobject '%s' can not be renamed "to '%s' as '%s' is already in existance.\n", kobject_name(kobj), new_name, new_name); kobject_put(temp_kobj); return -EINVAL; } } If the kobject layer wants to perform the test above how do we support it by giving it enough information to perform the test without false positives. Certainly we can go to the sysfs layer but that has the problem of being a layering violation and not working when sysfs is not compiled in. Ouch! I believe what the sanity check should look like is: /* see if this name is already in use */ if (kobj->kset) { struct kobject *temp_kobj; * void *tag; * tag = kobject_tag(kobj); * temp_kobj = kset_find_tagged_obj(kobj->kset, tag, new_name); * if (temp_kobj && (temp_kobj != kobj)) { printk(KERN_WARNING "kobject '%s' can not be renamed "to '%s' as '%s' is already in existance.\n", kobject_name(kobj), new_name, new_name); kobject_put(temp_kobj); return -EINVAL; } } The tricky part is how do we get to kobject_tag (from the sysfs_tagged_dir_operations). Unless there is another path I think placing an additional pointer in kobj_type so we can find it through ktype is the simplest solution. Although using the kset is also sane. The easiest and most trivially correct thing to do would be to simply remove the unnecessary check from kobject_rename. We perform the check at the upper levels in the network anyway. And kobject_rename is only used by the network stack. .... As for the actual patch itself I have two nits to pick. The new name should be compared with sysfs_creation_tag in case we are dealing with the case of renaming across network namespaces. We could use sysfs_creation_tag for both as the only time the dirent_tag and creation_tag should differ is during a rename operation. Either I am blind or this implementation breaks when we are using kobjects and sysfs support is not compiled in. It might be that we don't do this work but still in principle this is a small bug. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Greg KH | Og dreams of kernels |
| Jens Axboe | [PATCH 31/33] Fusion: sg chaining support |
| Arnd Bergmann | Re: finding your own dead "CONFIG_" variables |
| Mark Brown | [PATCH 2/2] Subject: natsemi: Allow users to disable workaround for DspCfg reset |
| Tony Breeds | [LGUEST] Look in object dir for .config |
git: | |
| Brian Downing | Re: Git in a Nutshell guide |
| John Benes | Re: master has some toys |
| Matthias Lederhofer | [PATCH 4/7] introduce GIT_WORK_TREE to specify the work tree |
| Alexander Sulfrian | [RFC/PATCH] RE: git calls SSH_ASKPASS even if DISPLAY is not set |
| Junio C Hamano | Re: Rss produced by git is not valid xml? |
| Linux Kernel Mailing List | iSeries: fix section mismatch in iseries_veth |
| Linux Kernel Mailing List | ixbge: remove TX lock and redo TX accounting. |
| Linux Kernel Mailing List | ixgbe: fix several counter register errata |
| Linux Kernel Mailing List | b43: fix build with CONFIG_SSB_PCIHOST=n |
| Linux Kernel Mailing List | 9p: bl |
