Actions
Bug #754
openRerouting does not work for static functions
Start date:
01/31/2011
Due date:
% Done:
0%
Estimated time:
Detected in build:
d1a476a
Platform:
Published in build:
Description
When template function is defined with static modifier
like:
static int mutex_is_locked_TEMPLATE(struct mutex *lock) {
then rerouting to it does not work, function body is undefined (the definition and the use in the same file).
res_misc_open_0 = misc_open(var_misc_open_0_p0 /* inode */, var_misc_open_0_p1 /* file */); { tmp = mutex_is_locked_i_mutex(&(i_mutex)) { /* The function body is undefined. */ }; is_locked = tmp; assert(is_locked != 0); mutex_unlock_i_mutex(&(i_mutex) /* lock */); { assert(ldv_mutex_i_mutex != 2); __blast_assert(); } }
See tests-model-32_7--test-mutexislocked.tar.bz2 from small tests and kernel-rules/files/model0032-double.c.
For the bug #635 I removed static modifier.
Updated by Evgeny Novikov about 12 years ago
- Status changed from New to Open
- Assignee changed from Pavel Shved to Evgeny Novikov
I investigated the problem and found out some strangenesses. First of all mutex_is_locked function is static inline for all configurations for all Linux kernels we have tested with. Now in 32_7 plain rerouting model there is such the model for mutex_is_locked function:
int mutex_is_locked_TEMPLATE(struct mutex *lock) { ... }
And it's successfully applied! For instance, see unsafe for specially broken driver tests-model-32_7--test-mutexislocked.tar.bz2 here for example.
So, the issue looks to be resolved but the behavior of plain rerouter is strange... Why we had to hack Rule Instrumentor for 39_7 model if plain rerouter ignores static and inline?..
Actions