lkml.org 
[lkml]   [2000]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] Fix SCSI proc oops
   Date: Sat, 14 Oct 2000 11:43:09 +0200
From: Torben Mathiasen <torben@kernel.dk>

David, why is tpnt->proc_name NULL on sparc for devices not
existing? Every driver has this as part of their tpnt struct, so
it doesn't matter if the underlying device really exists.

In the mentioned case it would be NULL on all architectures, not just
Sparc ;-) (it happens on ix86 too, ix86 is different only because it
does not trap kernel NULL pointer derefences during bootup for some
odd reason)

Here is what happens:

scsi_register_host()
tpnt->present = tpnt->detect(tpnt);
/* tpnt->present is zero since no such adapters were found */
If no hosts are detected the driver is under no obligation to
initialize the tpnt->proc_name field. For example,
sym53c8xx.c:sym53c8xx_detect() does not if PCI is not present and this
is the specific case hit on my SBUS-only workstation :-)

Subsequently scsi_unregister_host() is called for this TPNT and
this is where the NULL pointer is hit.

If you included this same driver on x86 and ran that kernel on
an x86 machine without PCI, the NULL pointer would occur there
too. (it just wouldn't oops on ix86, because, for the millionth time
:->, x86 does not trap kernel NULL pointer derefences which occur
during early bootup)

If we want to create the requirement that XXX_detect() in a scsi
driver must initialize tpnt->proc_name to a non-NULL value no matter
what when it is invoked, that would be a seperate issue.

Later,
David S. Miller
davem@redhat.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:41    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site