All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: Vojtech Pavlik <vojtech@suse.cz>
Cc: Torrey Hoffman <thoffman@arnor.net>,
	vojtech@ucw.cz, Linux Kernel <linux-kernel@vger.kernel.org>,
	linux-usb-devel@lists.sourceforge.net
Subject: Re: depmod problem for 2.5.2-dj4
Date: Wed, 23 Jan 2002 13:24:36 -0800	[thread overview]
Message-ID: <20020123212435.GB15259@kroah.com> (raw)
In-Reply-To: <1011744752.2440.0.camel@shire.arnor.net> <20020123045405.GA12060@kroah.com> <20020123094414.D5170@suse.cz>
In-Reply-To: <20020123094414.D5170@suse.cz>

On Wed, Jan 23, 2002 at 09:44:14AM +0100, Vojtech Pavlik wrote:
> On Tue, Jan 22, 2002 at 08:54:05PM -0800, Greg KH wrote:
> > Vojtech, is this a USB function that you want added to usb.c?
> 
> Yes, please. This will change later when Pat Mochels devicefs kicks in,
> but for the time being, it'd be very useful.

Here's a patch against 2.5.3-pre3, does it look ok to you (I fixed the
potential memory leak in the second kmalloc call from what was in
2.5.2-dj4)?

greg k-h

diff -Nru a/drivers/usb/usb.c b/drivers/usb/usb.c
--- a/drivers/usb/usb.c	Wed Jan 23 13:20:28 2002
+++ b/drivers/usb/usb.c	Wed Jan 23 13:20:28 2002
@@ -2513,6 +2513,49 @@
 	return err;
 }
 
+/**
+ * usb_make_path - returns device path in the hub tree
+ * @dev: the device whose path is being constructed
+ * @buf: where to put the string
+ * @size: how big is "buf"?
+ *
+ * Returns length of the string (>= 0) or out of memory status (< 0).
+ */
+int usb_make_path(struct usb_device *dev, char *buf, size_t size)
+{
+	struct usb_device *pdev = dev->parent;
+	char *tmp;
+	char *port;
+	int i;
+
+	if (!(port = kmalloc(size, GFP_KERNEL)))
+		return -ENOMEM;
+	if (!(tmp = kmalloc(size, GFP_KERNEL))) {
+		kfree(port);
+		return -ENOMEM;
+	}
+
+	*port = 0;
+
+	while (pdev) {
+		for (i = 0; i < pdev->maxchild; i++)
+			if (pdev->children[i] == dev)
+				break;
+
+		if (pdev->children[i] != dev)
+			return -1;
+
+		strcpy(tmp, port);
+		snprintf(port, size, strlen(port) ? "%d.%s" : "%d", i + 1, tmp);
+
+		dev = pdev;
+		pdev = dev->parent;
+	}
+
+	snprintf(buf, size, "usb%d:%s", dev->bus->busnum, port);
+	return strlen(buf);
+}
+
 /*
  * By the time we get here, the device has gotten a new device ID
  * and is in the default state. We need to identify the thing and
@@ -2762,5 +2805,6 @@
 EXPORT_SYMBOL(usb_set_configuration);
 EXPORT_SYMBOL(usb_set_interface);
 
+EXPORT_SYMBOL(usb_make_path);
 EXPORT_SYMBOL(usb_devfs_handle);
 MODULE_LICENSE("GPL");
diff -Nru a/include/linux/usb.h b/include/linux/usb.h
--- a/include/linux/usb.h	Wed Jan 23 13:20:28 2002
+++ b/include/linux/usb.h	Wed Jan 23 13:20:28 2002
@@ -881,6 +881,7 @@
 	char *buf, size_t size);
 extern int usb_set_configuration(struct usb_device *dev, int configuration);
 extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
+extern int usb_make_path(struct usb_device *dev, char *buf, size_t size);
 
 /*
  * timeouts, in seconds, used for sending/receiving control messages

  reply	other threads:[~2002-01-23 21:29 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-23  0:12 depmod problem for 2.5.2-dj4 Torrey Hoffman
2002-01-23  4:54 ` Greg KH
2002-01-23  8:44   ` Vojtech Pavlik
2002-01-23 21:24     ` Greg KH [this message]
2002-01-23 22:22       ` Greg KH
2002-01-23 22:47         ` Vojtech Pavlik
2002-01-23 23:00           ` Greg KH
2002-01-24  0:46       ` [linux-usb-devel] " David Brownell
2002-01-24  9:01         ` Vojtech Pavlik
2002-01-24  9:20           ` Dave Jones
2002-01-24 15:27           ` [linux-usb-devel] Re: usb+driverfs [was depmod problem for 2.5.2-dj4] David Brownell
2002-01-24 15:32             ` Vojtech Pavlik

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=20020123212435.GB15259@kroah.com \
    --to=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=thoffman@arnor.net \
    --cc=vojtech@suse.cz \
    --cc=vojtech@ucw.cz \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.