aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-15 15:46:16 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-15 15:46:16 -0400
commitc596cc46ba1c5769866efe586daff3422bc31afe (patch)
tree080f0fc2fc91d6b37f1cf2992bab3d6720c748e1 /drivers/scsi
parentf4921aff5b174349bc36551f142a5dbac782ea3f (diff)
scsi/gdth: fix crash in gdth_timeout if no gdth controllers found
If the gdth module is loaded (or compiled in), the gdth_timeout function gets started even if no actual gdth controllers are found b the probing. That ends up not only being unnecessary, but also causes a crash due to the function blindly just trying to pick the first entry off the "gdth_instances" list, and accessing it - which obviously doesn't work if the list is empty! Noticed by Ingo Molnar. Tested-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/gdth.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index e8010a702e73..3ac080ee6e2f 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -5213,6 +5213,10 @@ static int __init gdth_init(void)
5213#endif /* CONFIG_PCI */ 5213#endif /* CONFIG_PCI */
5214 5214
5215 TRACE2(("gdth_detect() %d controller detected\n", gdth_ctr_count)); 5215 TRACE2(("gdth_detect() %d controller detected\n", gdth_ctr_count));
5216
5217 if (list_empty(&gdth_instances))
5218 return -ENODEV;
5219
5216#ifdef GDTH_STATISTICS 5220#ifdef GDTH_STATISTICS
5217 TRACE2(("gdth_detect(): Initializing timer !\n")); 5221 TRACE2(("gdth_detect(): Initializing timer !\n"));
5218 init_timer(&gdth_timer); 5222 init_timer(&gdth_timer);