Re: 2.1.118 PCMCIA Oops

John Kennedy (jk@csuchico.edu)
Thu, 27 Aug 1998 16:35:21 -0700


[Russell Coker]
> On the advice of Chris Wedgwood and Mitchell Blank Jr I have
> created the attached patch for the pcmcia-source to make it work with
> 2.1.118. It still Oops's. Now the pcmcia modules compile with no
> warnings that seem relevant, but don't work any better than before.

I made a similar patch, except I figured the NULL pointer dereference
was something trying to call the ->flush() even if it didn't point to
anything. Still Oopses.

I'll note that once it gets done Oopsing, it seems to work fine.
Certainly well enough to telnet in and pull the Oops out of the syslog.

Looks like it is time to find out how to backtrack an Oops.
--- john
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
cardmgr[131]: starting, version is 3.0.5
cardmgr[131]: watching 2 sockets
kernel: <6>cs: IO port probe 0x0c00-0x0cff: excluding 0xcf8-0xcff
kernel: <6>cs: IO port probe 0x0800-0x08ff: clean.
kernel: <6>cs: IO port probe 0x0100-0x04ff: excluding 0x170-0x177 0x200-0x207 0x220-0x22f 0x330-0x337 0x370-0x37f 0x388-0x38f 0x398-0x39f 0x4d0-0x4d7
kernel: <6>cs: IO port probe 0x0a00-0x0aff: clean.
kernel: <6>cs: memory probe 0xa0000000-0xa0ffffff: clean.
cardmgr[131]: initializing socket 0
cardmgr[131]: socket 0: 3Com 3c589D Ethernet
cardmgr[131]: executing: 'insmod /lib/modules/2.1.118/pcmcia/3c589_cs.o'
kernel: <1>Unable to handle kernel NULL pointer dereference at virtual address 00000048
kernel: <1>current->tss.cr3 = 00101000, %cr3 = 00101000
kernel: <1>*pde = 00000000
kernel: <4>Oops: 0000
kernel: <4>CPU: 0
kernel: <4>EIP: 0010:[<c68db884>]
kernel: <4>EFLAGS: 00010202
kernel: <4>eax: 00000000 ebx: 00000004 ecx: c5d01c00 edx: c5c2b860
kernel: <4>esi: c5af63e0 edi: 00000000 ebp: c5a4bf7c esp: c5a4bf80
kernel: <4>ds: 0018 es: 0018 ss: 0018
kernel: <4>Process insmod (pid: 141, process nr: 17, stackpage=c5a4b000)
kernel: <4>Stack: c0124719 c5af63e0 00000004 00000003 c5f7dec0 c0117d1c c5af63e0 c5f7dec0
kernel: <4> c5a4a000 400ee69c 00000000 bffffd54 00000003 c5a4a000 c0117e27 00000000
kernel: <4> c010ab18 00000000 080503e0 400eeebc 400ee69c 00000000 bffffd54 00000001
kernel: <4>Call Trace: [<c0124719>] [<c0117d1c>] [<c0117e27>] [<c010ab18>]
kernel: <4>Code: 8b 4b 44 8d 04 82 85 c9 74 61 81 39 a4 7e 00 00 75 59 f6 43
...

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
--- ./clients/memory_cs.c.OLD Mon Jun 29 11:51:44 1998
+++ ./clients/memory_cs.c Thu Aug 27 16:15:14 1998
@@ -165,6 +165,9 @@
struct file *file);
static FS_RELEASE_T memory_blk_close(struct inode *inode,
struct file *file);
+#if (LINUX_VERSION_CODE >= VERSION(2,1,118))
+static int memory_flush(struct file *);
+#endif

static struct file_operations memory_chr_fops = {
NULL, /* lseek */
@@ -175,6 +178,9 @@
memory_ioctl, /* ioctl */
NULL, /* mmap */
memory_open, /* open */
+#if (LINUX_VERSION_CODE >= VERSION(2,1,118))
+ memory_flush, /* flush */
+#endif
memory_close, /* release */
NULL /* fsync */
};
@@ -188,6 +194,9 @@
memory_ioctl, /* ioctl */
NULL, /* mmap */
memory_open, /* open */
+#if (LINUX_VERSION_CODE >= VERSION(2,1,118))
+ memory_flush, /* flush */
+#endif
memory_blk_close, /* release */
block_fsync /* fsync */
};
@@ -1142,3 +1151,7 @@
}
}
}
+
+#if (LINUX_VERSION_CODE >= VERSION(2,1,118))
+static int memory_flush(struct file *fp) { return 0; }
+#endif
--- ./clients/ftl_cs.c.OLD Thu Jul 30 16:13:22 1998
+++ ./clients/ftl_cs.c Thu Aug 27 16:14:56 1998
@@ -198,6 +198,9 @@
static int ftl_open(struct inode *inode, struct file *file);
static FS_RELEASE_T ftl_close(struct inode *inode, struct file *file);
static int ftl_reread_partitions(int minor);
+#if (LINUX_VERSION_CODE >= VERSION(2,1,118))
+static int ftl_flush(struct file *);
+#endif

static struct file_operations ftl_blk_fops = {
NULL, /* lseek */
@@ -208,6 +211,9 @@
ftl_ioctl, /* ioctl */
NULL, /* mmap */
ftl_open, /* open */
+#if (LINUX_VERSION_CODE >= VERSION(2,1,118))
+ ftl_flush, /* flush */
+#endif
ftl_close, /* release */
block_fsync /* fsync */
};
@@ -1546,3 +1552,7 @@
break;
}
}
+
+#if (LINUX_VERSION_CODE >= VERSION(2,1,118))
+static int ftl_flush(struct file *fp) { return 0; }
+#endif
--- ./debug-tools/dump_i365.c.OLD Sun Jul 26 16:10:51 1998
+++ ./debug-tools/dump_i365.c Thu Aug 27 15:36:52 1998
@@ -587,7 +587,7 @@

/*====================================================================*/

-void main(int argc, char *argv[])
+int main(int argc, char *argv[])
{
int sock, i;

@@ -596,4 +596,6 @@
printf("Socket %d:\n", i);
dump_sock(i);
}
+
+ return 0;
}

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