sbpcd bug in 2.4.0...

From: ismael ripoll (iripoll@disca.upv.es)
Date: Thu Sep 21 2000 - 08:58:20 EST


Hi!
        I have an old PC Pentium 100 with a CDROM x2
The CD driver used to work with:

modprobe sbpcd sbpcd=0x340,0

It works fine with all version of Linux but 2.3.?? and
above. Version 2.4.0-test5 also fails.

        I've tried to solve the bug... but no way.

The module gets loaded smoothly, and detects the real hardware.
The problem arises the firt (or the second) time the function
sbpcd_end_request is called.
This occurs whe I try to "mount".

The problem seems to be originatied by the new block devices
interface..

The bug Is that in the function sbpcd_end_request
the value of "req->q" is NULL.. and then:

list_add(&req->queue, &req->q->queue_head); << FAILS >>

I have managed to mount the unit by changing "req->q"
by the value of of "q" received by función:
static void DO_SBPCD_REQUEST(request_queue_t * q)

Here is that I did:

static inline void sbpcd_end_request(struct request *req,
request_queue_t * q, int uptodate) {
        list_add(&req->queue, &q->queue_head);
        end_request(uptodate);
}

And the call to this function is
---->>> Code from funcion DO_SBPCD_REQUEST <<<<----
 .....
        if (req->rq_status == RQ_INACTIVE)
                sbpcd_end_request(req, q, 0);
        if (req -> sector == -1)
                sbpcd_end_request(req, q, 0);
        spin_unlock_irq(&io_request_lock);
......

The problem now is that after a while the system gets
unstable and the kernel tries to "free unallocated pages"
or something like that. I don't remember the message.

Another test I did was to return inmediately from the
DO_SBPCD_REQUEST function... And even in this prety simple
code, the system hanged.... ¿May be the cdrom.c code is broken ?

Please answer this mail. It is the second time I mail it to you.

Regards.

-- 
Ismael Ripoll: Universitat Politecnica de Valencia;46071 Valencia,Spain
Tel: +34 96 3879 577  Fax: +34 96 3877 579
mailto:iripoll@disca.upv.es http://bernia.disca.upv.es/~iripoll
-----------------------------------------------------------------------
In an open world without walls and fences who needs Windows and Gates? 
-----------------
-
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/



This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 21:00:24 EST