Re: General protection fault on rmmod cx8800

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

 



On Mon, 2009-03-02 at 13:39 +0100, Jean Delvare wrote:
> On Sun, 15 Feb 2009 21:41:08 +0100, Jean Delvare wrote:
> > Hi all,
> > 
> > Today I have hit the following general protection fault when removing
> > module cx8800:
> 
> This has just happened to me again today, with kernel 2.6.28.7. I have
> opened a bug in bugzilla:
> 
> http://bugzilla.kernel.org/show_bug.cgi?id=12802
> 

I'll try to look at it later today.  But right off the bat, I think
here's a problem:


void cx88_ir_stop(struct cx88_core *core, struct cx88_IR *ir)
{
[...]
        if (ir->polling) {
                del_timer_sync(&ir->timer);   <--- Wrong order?
                flush_scheduled_work();       <--- Wrong order?
        }
}

static void cx88_ir_work(struct work_struct *work)
{
        struct cx88_IR *ir = container_of(work, struct cx88_IR, work);

        cx88_ir_handle_key(ir);
        mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
}


mod_timer() acts like del_timer(); mumble; add_timer();  If there was
any work flushed when stopping the IR, a new timer gets added.  That
seems wrong.

Regards,
Andy

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux