| From: Hendrik Brueckner <brueckner@linux.ibm.com> |
| Date: Thu, 3 May 2018 15:56:15 +0200 |
| Subject: s390/cpum_sf: ensure sample frequency of perf event attributes is |
| non-zero |
| |
| commit 4bbaf2584b86b0772413edeac22ff448f36351b1 upstream. |
| |
| Correct a trinity finding for the perf_event_open() system call with |
| a perf event attribute structure that uses a frequency but has the |
| sampling frequency set to zero. This causes a FP divide exception during |
| the sample rate initialization for the hardware sampling facility. |
| |
| Fixes: 8c069ff4bd606 ("s390/perf: add support for the CPU-Measurement Sampling Facility") |
| Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> |
| Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com> |
| Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| arch/s390/kernel/perf_cpum_sf.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/arch/s390/kernel/perf_cpum_sf.c |
| +++ b/arch/s390/kernel/perf_cpum_sf.c |
| @@ -744,6 +744,10 @@ static int __hw_perf_event_init(struct p |
| */ |
| rate = 0; |
| if (attr->freq) { |
| + if (!attr->sample_freq) { |
| + err = -EINVAL; |
| + goto out; |
| + } |
| rate = freq_to_sample_rate(&si, attr->sample_freq); |
| rate = hw_limit_rate(&si, rate); |
| attr->freq = 0; |