Message ID | 3bfc5aab263cb65670d2b1d3400e557f4e8ab975.1527004073.git.joseph.salisbury@canonical.com |
---|---|
State | New |
Headers | show |
Series | s390/cpum_sf: ensure sample frequency of perf event attributes is non-zero | expand |
On 05/25/18 04:38, Joseph Salisbury wrote: > From: Hendrik Brueckner <brueckner@linux.ibm.com> > > BugLink: http://bugs.launchpad.net/bugs/1772593 > > 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") > Cc: stable@vger.kernel.org # 3.14+ > 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> > (cherry picked from commit 4bbaf2584b86b0772413edeac22ff448f36351b1) > Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com> Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> > --- > arch/s390/kernel/perf_cpum_sf.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c > index 3d8da1e..b79d514 100644 > --- 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 perf_event *event) > */ > 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; >
On 25.05.2018 04:38, Joseph Salisbury wrote: > From: Hendrik Brueckner <brueckner@linux.ibm.com> > > BugLink: http://bugs.launchpad.net/bugs/1772593 > > 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") > Cc: stable@vger.kernel.org # 3.14+ > 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> > (cherry picked from commit 4bbaf2584b86b0772413edeac22ff448f36351b1) > Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > arch/s390/kernel/perf_cpum_sf.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c > index 3d8da1e..b79d514 100644 > --- 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 perf_event *event) > */ > 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; >
diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c index 3d8da1e..b79d514 100644 --- 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 perf_event *event) */ 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;