aboutsummaryrefslogtreecommitdiff
path: root/include/linux/debugobjects.h
diff options
context:
space:
mode:
authorLai Jiangshan <[email protected]>2008-09-29 16:00:05 +0800
committerIngo Molnar <[email protected]>2008-10-14 10:38:19 +0200
commitd74185ed27651ad8d920b37d7851306ad01f7d6f (patch)
treed3eab74f08808e9596641cd2dcc66f02df060705 /include/linux/debugobjects.h
parentac2b86fdef5b44f194eefaa6b7b6aea9423d1bc2 (diff)
markers: fix unregister bug and reenter bug
unregister bug: codes using makers are typically calling marker_probe_unregister() and then destroying the data that marker_probe_func needs(or unloading this module). This is bug when the corresponding marker_probe_func is still running(on other cpus), it is using the destroying/ed data. we should call synchronize_sched() after marker_update_probes(). reenter bug: marker_probe_register(), marker_probe_unregister() and marker_probe_unregister_private_data() are not reentrant safe functions. these 3 functions release markers_mutex and then require it again and do "entry->oldptr = old; ...", but entry->oldptr maybe is using now for these 3 functions may reenter when markers_mutex is released. we use synchronize_sched() instead of call_rcu_sched() to fix this bug. actually we can do: " if (entry->rcu_pending) rcu_barrier_sched(); " after require markers_mutex again. but synchronize_sched() is better and simpler. For these 3 functions are not critical path. Signed-off-by: Lai Jiangshan <[email protected]> Cc: Mathieu Desnoyers <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'include/linux/debugobjects.h')
0 files changed, 0 insertions, 0 deletions