[3585] in linux-scsi channel archive

home help back first fref pref prev next nref lref last post

Oops when insmod(8)ing ppa.o in 2.0.33

daemon@ATHENA.MIT.EDU (James H Cloos Jr)
Thu Mar 26 04:20:30 1998

To: linux-kernel@vger.rutgers.edu, linux-scsi@vger.rutgers.edu
From: James H Cloos Jr <cloos@io.com>
Date: 	26 Mar 1998 03:16:29 -0600

I just upgraded my laptop to 2.0.33 and tried the PPA driver for the
first time.  I configured it -- and all of the SCSI system -- as a
module.

I have no problems using either of my SCSI PCMCIA cards (a ZIP card --
aha152x0 -- and a New Media card -- SYM53C500), but every time I try
to insmod ppa.o, it complains that it cannot find any devices and then
I get a null pointer dereference in scsi_mod.o's scsi_unregister_host,
at the movzwl:

 000040e0 <scsi_unregister_host+300> movl   %edx,%ecx
 000040e2 <scsi_unregister_host+302> movl   (%edx),%edx
 000040e4 <scsi_unregister_host+304> testl  %edx,%edx
 000040e6 <scsi_unregister_host+306> jne    000040bc <scsi_unregister_host+2dc>
 000040e8 <scsi_unregister_host+308> movl   0x8(%ebp),%eax
 000040eb <scsi_unregister_host+30b> movl   %eax,%ecx

 000040ed <scsi_unregister_host+30d> movzwl (%ecx),%edx   <== *HERE*

 000040f0 <scsi_unregister_host+310> cmpl   $0x125,%edx
 000040f6 <scsi_unregister_host+316> jg     00004130 <scsi_unregister_host+350>
 000040f8 <scsi_unregister_host+318> pushl  %edx
 000040f9 <scsi_unregister_host+319> pushl  $0x0
 000040fe <scsi_unregister_host+31e> call   000040ff <scsi_unregister_host+31f>
 00004103 <scsi_unregister_host+323> addl   $0x8,%esp
 00004106 <scsi_unregister_host+326> jmp    00004158 <scsi_unregister_host+378>
 00004108 <scsi_unregister_host+328> nop

Once insmod(8) crashes lsmod(8) reports:

 ppa                1  (uninitialized)

any any attempts to rmmod(8) it fail with an EBUSY.  Additional
attempts to insmod(8) or modprobe(8) it fail w/ `A module named ppa
already exists'.

Across reboots the dereference always happens at the same address.
Also, the fatal call the scsi_unregister_host() is made from w/in
scsi_register_host(), so the dereference seems to be a bug (trusting
that the args are valid) in scsi.c that is triggered by one in ppa.c,
since the deref doesn't occur when the PCMCIA cards are inserted sans
devices.

I couldn't find any posts on point, so must ask whether there are any
known problems in 2.0.33's PPA driver when modularized?  If it is not
a known problem, I can spend the time to put together a more detailed
bug report.  If it is a well known problem, though, I have other ways
to spend the programming/debugging time....

TIA,

-JimC
-- 
cloos at io dot com

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.rutgers.edu

home help back first fref pref prev next nref lref last post