lkml.org 
[lkml]   [2002]   [Nov]   [22]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
From"dan carpenter" <>
DateFri, 22 Nov 2002 03:54:41 -0500
Subjectcalling schedule() from interupt context
I was running a script to find which functions call schedule() and I across something 
strange.  

In drivers/net/tokenring/3c359.c xl_interrupt() calls schedule().
The path from xl_interupt to schedule is:
xl_rx ==> netif_rx ==> 
kfree_skb ==> __kfree_skb ==> 
secpath_put ==> __secpath_destroy ==> 
xfrm_state_put ==> __xfrm_state_destroy ==> xfrm_put_type ==> 
module_put ==> put_cpu ==> preempt_schedule ==> schedule
The problem is that xl_interrupt is the interrupt handler for the 3c359 driver and
I did not think it was legal to call shedule() from interrupt context.

The second thing is that module_put() has a line that looks like it's decrementing
the module reference count (Is it supposed to do that?):
176                  local_dec(&module->ref[cpu].count);

The third thing I was wondering is:  xl_interupt is holding a 
spin_lock(&xl_priv->xl_lock).   I know that you're not supposed to call shedule()
while holding a spin lock, but is it ok to call preempt_schedule()?

thanks,
dan carpenter

-- 
_______________________________________________
Sign-up for your own FREE Personalized E-mail at Mail.com
http://www.mail.com/?sr=signup
One click access to the Top Search Engines
http://www.exactsearchbar.com/mailcom

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:31    [from the cache]
©2003-2008