lkml.org 
[lkml]   [2009]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Subject[2.6.32-rc5-git5] synchronize_sched() inside spin_lock()?
    From
    Date
    Commit: 4ea7e38696c7e798c47ebbecadfd392f23f814f9

    tracepoint_synchronize_unregister() calls synchronize_sched(), but it is
    between spin_lock() and spin_unlock(). Is it OK?

    static int set_all_monitor_traces(int state)
    {
    int rc = 0;
    struct dm_hw_stat_delta *new_stat = NULL;
    struct dm_hw_stat_delta *temp;

    spin_lock(&trace_state_lock);

    switch (state) {
    case TRACE_ON:
    rc |= register_trace_kfree_skb(trace_kfree_skb_hit);
    rc |= register_trace_napi_poll(trace_napi_poll_hit);
    break;
    case TRACE_OFF:
    rc |= unregister_trace_kfree_skb(trace_kfree_skb_hit);
    rc |= unregister_trace_napi_poll(trace_napi_poll_hit);

    tracepoint_synchronize_unregister();

    /*
    * Clean the device list
    */
    list_for_each_entry_safe(new_stat, temp, &hw_stats_list, list) {
    if (new_stat->dev == NULL) {
    list_del_rcu(&new_stat->list);
    call_rcu(&new_stat->rcu, free_dm_hw_stat);
    }
    }
    break;
    default:
    rc = 1;
    break;
    }

    if (!rc)
    trace_state = state;

    spin_unlock(&trace_state_lock);

    if (rc)
    return -EINPROGRESS;
    return rc;
    }


    \
     
     \ /
      Last update: 2009-11-02 13:03    [W:4.755 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site