提交 3d8dcb3c 编写于 作者: M Martin Schwidefsky 提交者: Martin Schwidefsky

[S390] oprofile: fix min/max interval query checks

oprofile_min_interval and oprofile_max_interval are unsigned, checking
for negative values doesn't work. Change hwsampler_query_min_interval
and hwsampler_query_max_interval to return an unsigned long and
check for a zero value instead.
Reported-by: NNicolas Kaiser <nikai@nikai.net>
Acked-by: NRobert Richter <robert.richter@amd.com>
Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
上级 83ace270
...@@ -1021,20 +1021,14 @@ int hwsampler_deallocate() ...@@ -1021,20 +1021,14 @@ int hwsampler_deallocate()
return rc; return rc;
} }
long hwsampler_query_min_interval(void) unsigned long hwsampler_query_min_interval(void)
{ {
if (min_sampler_rate) return min_sampler_rate;
return min_sampler_rate;
else
return -EINVAL;
} }
long hwsampler_query_max_interval(void) unsigned long hwsampler_query_max_interval(void)
{ {
if (max_sampler_rate) return max_sampler_rate;
return max_sampler_rate;
else
return -EINVAL;
} }
unsigned long hwsampler_get_sample_overflow_count(unsigned int cpu) unsigned long hwsampler_get_sample_overflow_count(unsigned int cpu)
......
...@@ -102,8 +102,8 @@ int hwsampler_setup(void); ...@@ -102,8 +102,8 @@ int hwsampler_setup(void);
int hwsampler_shutdown(void); int hwsampler_shutdown(void);
int hwsampler_allocate(unsigned long sdbt, unsigned long sdb); int hwsampler_allocate(unsigned long sdbt, unsigned long sdb);
int hwsampler_deallocate(void); int hwsampler_deallocate(void);
long hwsampler_query_min_interval(void); unsigned long hwsampler_query_min_interval(void);
long hwsampler_query_max_interval(void); unsigned long hwsampler_query_max_interval(void);
int hwsampler_start_all(unsigned long interval); int hwsampler_start_all(unsigned long interval);
int hwsampler_stop_all(void); int hwsampler_stop_all(void);
int hwsampler_deactivate(unsigned int cpu); int hwsampler_deactivate(unsigned int cpu);
......
...@@ -145,15 +145,11 @@ static int oprofile_hwsampler_init(struct oprofile_operations *ops) ...@@ -145,15 +145,11 @@ static int oprofile_hwsampler_init(struct oprofile_operations *ops)
* create hwsampler files only if hwsampler_setup() succeeds. * create hwsampler files only if hwsampler_setup() succeeds.
*/ */
oprofile_min_interval = hwsampler_query_min_interval(); oprofile_min_interval = hwsampler_query_min_interval();
if (oprofile_min_interval < 0) { if (oprofile_min_interval == 0)
oprofile_min_interval = 0;
return -ENODEV; return -ENODEV;
}
oprofile_max_interval = hwsampler_query_max_interval(); oprofile_max_interval = hwsampler_query_max_interval();
if (oprofile_max_interval < 0) { if (oprofile_max_interval == 0)
oprofile_max_interval = 0;
return -ENODEV; return -ENODEV;
}
if (oprofile_timer_init(ops)) if (oprofile_timer_init(ops))
return -ENODEV; return -ENODEV;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册