public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Vladislav Bolkhovitine <vlls@hotbox.ru>
To: linux-scsi@vger.kernel.org
Subject: [PATCH] SCSI host ID assigment overoptimization removal in 2.4.18
Date: Thu, 18 Jul 2002 15:22:42 +0400	[thread overview]
Message-ID: <20020718152242.B4026@j4.msk.systemsix.com> (raw)

There is an overoptimization in SCSI host ID assigment algorithm in 2.4.18 
and possibly others, which lead to appearance of SCSI hosts with the same IDs. 

Simple scenario:
1. Add one adapter, host_id=0
2. Remove it
3. Add another adapter, its host_id=0
4. Add the adapter 1 again, it reuses its original scsi_host_no_list entry
	and gets host_id=0 as well. Oops.

When the adapter was being unregistered on step 2, max_scsi_hosts gets 
decremented to 0. During registration of the new host, it received 
host_id=max_scsi_hosts. On the step 4, the old entry in scsi_host_no_list 
was found and reused, thus we have two hosts with the same host_id 0.

So, it is impossible to use simultaneously scsi_host_no_list and host IDs 
reusing (i.e. max_scsi_hosts decrementing). I chose to remove the last one. 
Here is the patch against 2.4.18.

I was not able to find who is the maintainer of SCSI subsistem at the moment. 
Who is doing so, please consider the idea of this patch to include in the 
mainstream kernel.

Vlad

diff -urdN linux-2.4.18.orig/drivers/scsi/hosts.c linux-2.4.18.host_fix/drivers/scsi/hosts.c
--- linux-2.4.18.orig/drivers/scsi/hosts.c      Mon Feb 25 22:38:04 2002
+++ linux-2.4.18.host_fix/drivers/scsi/hosts.c  Wed Jul 17 17:08:47 2002
@@ -107,6 +107,17 @@
     if (shn) shn->host_registered = 0;
     /* else {} : This should not happen, we should panic here... */

+    /*
+     * With this algorithm together with scsi_host_no_list entry reusage
+     * from scsi_register() it is possible really easy to get two
+     * hosts with the same host_id. Simple scenario:
+     *  - add one adapter, host_id=0
+     *  - remove it
+     *  - add another adapter, its host_id=0
+     *  - add the adapter 1 again, it reuses its scsi_host_no_list entry
+     *     and gets host_id=0 as well. Oops.
+     */
+#if 0
     /* If we are removing the last host registered, it is safe to reuse
      * its host number (this avoids "holes" at boot time) (DB)
      * It is also safe to reuse those of numbers directly below which have
@@ -121,6 +132,7 @@
                break;
        }
     }
+#endif

             reply	other threads:[~2002-07-18 11:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-18 11:22 Vladislav Bolkhovitine [this message]
2002-07-18 19:45 ` [PATCH] SCSI host ID assigment overoptimization removal in 2.4.18 Luben Tuikov
2002-07-21  1:02 ` Itai Nahshon
  -- strict thread matches above, loose matches on Subject: below --
2002-07-19  7:09 Aron Zeh
2002-07-19  7:42 ` Vladislav Bolkhovitine
2002-07-20 23:49 Pete Zaitcev
2002-07-22 12:15 Aron Zeh

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=20020718152242.B4026@j4.msk.systemsix.com \
    --to=vlls@hotbox.ru \
    --cc=linux-scsi@vger.kernel.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