Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d8dcb3c authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Martin Schwidefsky
Browse files

[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: default avatarNicolas Kaiser <nikai@nikai.net>
Acked-by: default avatarRobert Richter <robert.richter@amd.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 83ace270
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -1021,20 +1021,14 @@ int hwsampler_deallocate()
	return rc;
}

long hwsampler_query_min_interval(void)
unsigned long hwsampler_query_min_interval(void)
{
	if (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;
	else
		return -EINVAL;
}

unsigned long hwsampler_get_sample_overflow_count(unsigned int cpu)
+2 −2
Original line number Diff line number Diff line
@@ -102,8 +102,8 @@ int hwsampler_setup(void);
int hwsampler_shutdown(void);
int hwsampler_allocate(unsigned long sdbt, unsigned long sdb);
int hwsampler_deallocate(void);
long hwsampler_query_min_interval(void);
long hwsampler_query_max_interval(void);
unsigned long hwsampler_query_min_interval(void);
unsigned long hwsampler_query_max_interval(void);
int hwsampler_start_all(unsigned long interval);
int hwsampler_stop_all(void);
int hwsampler_deactivate(unsigned int cpu);
+2 −6
Original line number Diff line number Diff line
@@ -145,15 +145,11 @@ static int oprofile_hwsampler_init(struct oprofile_operations *ops)
	 * create hwsampler files only if hwsampler_setup() succeeds.
	 */
	oprofile_min_interval = hwsampler_query_min_interval();
	if (oprofile_min_interval < 0) {
		oprofile_min_interval = 0;
	if (oprofile_min_interval == 0)
		return -ENODEV;
	}
	oprofile_max_interval = hwsampler_query_max_interval();
	if (oprofile_max_interval < 0) {
		oprofile_max_interval = 0;
	if (oprofile_max_interval == 0)
		return -ENODEV;
	}

	if (oprofile_timer_init(ops))
		return -ENODEV;