Re: why can't I access to *s->async->data?

Hmm I can't really help you except to suggest that it might be helpful to
post an oops message that has been run through ksymoops.  Oops messages
are specific to your particular kernel and ksymoops helps a bit with this
in that it looks at the kernel symbol table and is able to figure out in
which bits of kernel code the crash occured (sometimes this helps).

-Calin

On Sun, 15 Dec 2002, Edwin wrote:

> Dear all:
> 	I was trying to write a driver for DI interrupt service,
> following structures as comedi_parport.c.
> 	The problem is when I access to the s->async->data, system would
> break down with a Oops message print out when the interrupt comes.
> 	I wrote the interrupt service like this:
> ------------------------------------------------------------------------
> ---------
> static void interrupt_service_pci1761(int irq, void *d, struct pt_regs
> *regs)
> {
> comedi_device *dev = d;
> comedi_subdevice *s = dev->subdevices + 5;
> *(sampl_t *)(s->async->data+s->async->buf_int_ptr)=0;	// this would
> cause kernel dump
>
>   s->async->buf_int_ptr+=sizeof(sampl_t);
>   s->async->buf_int_count+=sizeof(sampl_t);
>   if(s->async->buf_int_ptr>=s->async->data_len){
>           s->async->buf_int_ptr=0;
>           s->async->events |= COMEDI_CB_EOBUF;
>   }
>   s->async->events |= COMEDI_CB_EOS;
>   comedi_event(dev,s,s->async->events);
> }
> ------------------------------------------------------------------------
> ---------
> Here is the oops message:
> ------------------------------------------------------------------------
> ---------
> Unable to handle kernel  NULL pointer dereference at virtual address
> 00000000
> printing eip:
> c98a1568
> *pde = 00000000
> Oops:	0002
> CPU:		  0
> EIP:		  0010:[<c98a1568>]
> EFLAGS:	00010202
> eax: 00000000		ebx: c42f6400		ecx: c42f6610
> edx: 00000000
> esi: c42f0000		edi: 0000000b		ebp: c0257fa8
> esp: c0257f58
> ds:	0018			es:	0018			ss: 0018
> Process swapper	(pid: 0, stackpage = c0257000)
> Stack:	0000000b c4106e80	04000001	c010833a	0000000b
> c42f6000	c0257fa8	c0257fa8
> 	 	0000000b	c028fa60	c41ebe80	c01083a8
> 0000000b	c025fa8	c41ebe80	c0105390
> 		c0256000	c0256000	c0105390	c020f180
> c0105390	0000032	00000019	c0256000
> Call Trace: 	[<c010822a>]	[<c01083a8>]	[<c0105390>]
> [<c0105390>]	[<c020f180>]
> 			[<c0105390>]	[<c0105390>]	[<c01053b3>]
> [<c0105432>]	[<c0105000>]
> Code:	66 c7 04 10 00 00 8b 93 30 02 00 00 8b 42 10 83 c0 02 89 42
> <0> Kernel panic: Aiee, killing interrupt handler!
> In interrupt handler	-not syncing
> ------------------------------------------------------------------------
> ---------
>
> System discription:
> Redhat 7.2 _at_ 2.4.7
>
>
>
> _______________________________________________
> comedi mailing list
> comedi_at_comedi.org
> https://cvs.comedi.org/cgi-bin/mailman/listinfo/comedi
>

Received on 2002-12-17Z20:54:10