On Wed, Jan 22, 2003 at 08:43:06PM -0800, Greg KH wrote:
> On Sun, Jan 19, 2003 at 05:16:02PM -0800, Matthew Dharm wrote:
> > This patch goes on top of the last one.  It fixes a typo in the test for
> > scsi_register() failure.
> 
> With these two patches applied, when plugging in a usb-storage device I
> get the following oops.  So I've backed the changes out :)

Try this patch on top of the other two.  It should fix the OOPS on attach.

This fixes a silly error where I fail to initialize a pointer early enough
for the scanning code.  If this isn't a perfect example of why
scsi_register() and scsi_add_host() aren't two separate functions, I don't
know what is.  :)

Oh, and I added a couple of comments, too.

Testing and comments are welcome, as always.

Matt

# This is a BitKeeper generated patch for the following project:
# Project Name: greg k-h's linux 2.5 USB kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.668   -> 1.669  
#       drivers/usb/storage/usb.c       1.69    -> 1.70   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/01/25      [EMAIL PROTECTED]       1.669
# Fix an OOPS by moving the setting of the hostdata[] pointer to _before_
# the device scan starts.
# --------------------------------------------
#
diff -Nru a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
--- a/drivers/usb/storage/usb.c Sat Jan 25 10:07:43 2003
+++ b/drivers/usb/storage/usb.c Sat Jan 25 10:07:43 2003
@@ -926,6 +926,12 @@
                goto BadDevice;
        }
 
+       /* set the hostdata to prepare for scanning */
+       ss->host->hostdata[0] = (unsigned long)ss;
+
+       /* associate this host with our interface */
+       scsi_set_device(ss->host, &intf->dev);
+
        /* now add the host */
        result = scsi_add_host(ss->host, NULL);
        if (result) {
@@ -941,9 +947,6 @@
                down(&ss->dev_semaphore);
                goto BadDevice;
        }
-
-       ss->host->hostdata[0] = (unsigned long)ss;
-       scsi_set_device(ss->host, &intf->dev);
 
        printk(KERN_DEBUG 
               "WARNING: USB Mass Storage data integrity not assured\n");
-- 
Matthew Dharm                              Home: [EMAIL PROTECTED] 
Maintainer, Linux USB Mass Storage Driver

I need a computer?
                                        -- Customer
User Friendly, 2/19/1998

Attachment: msg11085/pgp00000.pgp
Description: PGP signature

Reply via email to