linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: Linus Torvalds <torvalds@osdl.org>, Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org,
	linux-usb-devel@lists.sourceforge.net, notting@redhat.com
Subject: [patch 03/18] fix class symlinks in sysfs
Date: Thu, 22 Sep 2005 00:47:36 -0700	[thread overview]
Message-ID: <20050922074736.GD15053@kroah.com> (raw)
In-Reply-To: <20050922074643.GA15053@kroah.com>

[-- Attachment #1: driver-fix-class-symlinks.patch --]
[-- Type: text/plain, Size: 1693 bytes --]

From: Bill Nottingham <notting@redhat.com>

The class symlinks in sysfs don't properly handle changing device names.

To demonstrate, rename your network device from eth0 to eth1. Your
pci (or usb, or whatever) device will still have a 'net:eth0' link,
except now it points to /sys/class/net/eth1.

The attached patch makes sure the class symlink name changes when
the class device name changes. It isn't 100% correct, it should be
using sysfs_rename_link. Unfortunately, sysfs_rename_link doesn't exist.

Signed-off-by: Bill Nottingham <notting@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/base/class.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

--- scsi-2.6.orig/drivers/base/class.c	2005-09-20 05:59:41.000000000 -0700
+++ scsi-2.6/drivers/base/class.c	2005-09-21 17:29:22.000000000 -0700
@@ -669,6 +669,7 @@
 int class_device_rename(struct class_device *class_dev, char *new_name)
 {
 	int error = 0;
+	char *old_class_name = NULL, *new_class_name = NULL;
 
 	class_dev = class_device_get(class_dev);
 	if (!class_dev)
@@ -677,12 +678,24 @@
 	pr_debug("CLASS: renaming '%s' to '%s'\n", class_dev->class_id,
 		 new_name);
 
+	if (class_dev->dev)
+		old_class_name = make_class_name(class_dev);
+
 	strlcpy(class_dev->class_id, new_name, KOBJ_NAME_LEN);
 
 	error = kobject_rename(&class_dev->kobj, new_name);
 
+	if (class_dev->dev) {
+		new_class_name = make_class_name(class_dev);
+		sysfs_create_link(&class_dev->dev->kobj, &class_dev->kobj,
+				  new_class_name);
+		sysfs_remove_link(&class_dev->dev->kobj, old_class_name);
+	}
 	class_device_put(class_dev);
 
+	kfree(old_class_name);
+	kfree(new_class_name);
+
 	return error;
 }
 

--

  parent reply	other threads:[~2005-09-22  7:48 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20050922003901.814147000@echidna.kroah.org>
2005-09-22  7:46 ` [patch 00/18] USB and PCI Fixes for 2.6.14-rc2 Greg KH
2005-09-22  7:47   ` [patch 01/18] Driver Core: fis bus rescan devices race Greg KH
2005-09-22  7:47   ` [patch 02/18] Driver Core: add helper device_is_registered() Greg KH
2005-09-22  7:47   ` Greg KH [this message]
2005-09-22  7:47   ` [patch 04/18] I2C: remove me from the MAINTAINERS file for i2c Greg Kroah-Hartman
2005-09-22  7:48   ` [patch 05/18] PCI: remove unused "scratch" Greg KH
2005-09-22  7:48   ` [patch 06/18] PCI: convert kcalloc to kzalloc Greg KH
2005-09-22  7:48   ` [patch 07/18] fix drivers/pci/probe.c warning Greg KH
2005-09-22  7:48   ` [patch 08/18] PCI Hotplug: Fix buffer overrun in rpadlpar_sysfs.c Greg KH
2005-09-22  7:48   ` [patch 09/18] ub: fix burning cds Greg KH
2005-09-22  7:48   ` [patch 10/18] USB: more device IDs for Option card driver Greg KH
2005-09-22  7:48   ` [patch 11/18] USB: ftdi_sio: allow baud rate to be changed without raising RTS and DTR Greg KH
2005-09-22  7:48   ` [patch 12/18] USB: fix pxa2xx_udc compile warnings Greg KH
2005-09-22  7:49   ` [patch 13/18] USB: sl811-hcd minor fixes Greg KH
2005-09-22  7:49   ` [patch 14/18] USB: fix pegasus driver Greg KH
2005-09-22  7:49   ` [patch 15/18] usb/serial/option.c: Increase input buffer size Greg KH
2005-09-22  7:49   ` [patch 16/18] USB: Add Novatel CDMA Wireless PC card IDs to airprime Greg KH
2005-09-22  7:49   ` [patch 17/18] ub: Comment out unconditional stall clear Greg KH
2005-09-22  7:49   ` [patch 18/18] USB: Update Documentation/usb/URB.txt Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050922074736.GD15053@kroah.com \
    --to=gregkh@suse.de \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=notting@redhat.com \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).