[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: nfblock vs udev


2) XHRead(16.0, recno=0, count=0, buf=$8) is called - it tries to read 0
sectors so the answer is OK - probably just a quick test from the linux
kernel if the device is inserted and readable.

ISTR the partition table code does check for presence of a device by reading in the first block, but that should still have count=1.

3) ARAnyM XHRead(16.0, recno=0, count=65280, buf=$8) is called - it
tries to read 65280 sectors to address $8, so it's going to overwrite
bottom 32 MB of memory with data from the disk drive.

Then it crashes with the double bus fault - I don't know where the PC is
but maybe the currect program code gets overwritten by the disk data -
that would explain the crash easily.

Damn sure the 64k sectors will overwrite the start of the kernel memory if the kernel is loaded into ST-RAM.

Question is how did the buffer addres of 0x8 get set up? The parameters make no sense whatsoever. Thanks for spotting this!

I can debug this further from the outside but I was wondering if it is
normal to read 65280 sectors blindly and store it to 0x00000008 address.
Why such an amount of data? And is the address 0x0008 OK as a disk

Nope, page zero is even explicitly unmapped in order to catch null pointers from user space :-)

buffer? I almost feel like the parameters are not passed in correctly
(65280 is 0xff00).

Compiler or binutils regression?


Reply to: