diff mbox series

[SRU,Xenial,Artful,Bionic,1/1] s390/cpum_sf: ensure sample frequency of perf event attributes is non-zero

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

Commit Message

Joseph Salisbury May 25, 2018, 11:38 a.m. UTC
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>
---
 arch/s390/kernel/perf_cpum_sf.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Kleber Sacilotto de Souza June 4, 2018, 10:59 p.m. UTC | #1
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;
>
Stefan Bader June 5, 2018, 12:41 a.m. UTC | #2
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 mbox series

Patch

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;