crypto: iaa - Fix nr_cpus < nr_iaa case
BugLink: https://bugs.launchpad.net/bugs/2060531 commit 5a7e89d3315d1be86aff8a8bf849023cda6547f7 upstream. If nr_cpus < nr_iaa, the calculated cpus_per_iaa will be 0, which causes a divide-by-0 in rebalance_wq_table(). Make sure cpus_per_iaa is 1 in that case, and also in the nr_iaa == 0 case, even though cpus_per_iaa is never used if nr_iaa == 0, for paranoia. Cc: <stable@vger.kernel.org> # v6.8+ Reported-by: Jerry Snitselaar <jsnitsel@redhat.com> Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
This commit is contained in:
committed by
Roxana Nicolescu
parent
d02bcf8f2f
commit
48a23e8537
@@ -908,6 +908,8 @@ static int save_iaa_wq(struct idxd_wq *wq)
|
||||
return -EINVAL;
|
||||
|
||||
cpus_per_iaa = (nr_nodes * nr_cpus_per_node) / nr_iaa;
|
||||
if (!cpus_per_iaa)
|
||||
cpus_per_iaa = 1;
|
||||
out:
|
||||
return 0;
|
||||
}
|
||||
@@ -923,10 +925,12 @@ static void remove_iaa_wq(struct idxd_wq *wq)
|
||||
}
|
||||
}
|
||||
|
||||
if (nr_iaa)
|
||||
if (nr_iaa) {
|
||||
cpus_per_iaa = (nr_nodes * nr_cpus_per_node) / nr_iaa;
|
||||
else
|
||||
cpus_per_iaa = 0;
|
||||
if (!cpus_per_iaa)
|
||||
cpus_per_iaa = 1;
|
||||
} else
|
||||
cpus_per_iaa = 1;
|
||||
}
|
||||
|
||||
static int wq_table_add_wqs(int iaa, int cpu)
|
||||
|
||||
Reference in New Issue
Block a user