mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-19 12:06:52 +07:00
iwlwifi: mvm: fix the type we use in the PPAG table validity checks
[ Upstream commit 5a6842455c113920001df83cffa28accceeb0927 ] The value we receive from ACPI is a long long unsigned integer but the values should be treated as signed char. When comparing the received value with ACPI_PPAG_MIN_LB/HB, we were doing an unsigned comparison, so the negative value would actually be treated as a very high number. To solve this issue, assign the value to our table of s8's before making the comparison, so the value is already converted when we do so. Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20210210135352.b0ec69f312bc.If77fd9c61a96aa7ef2ac96d935b7efd7df502399@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
d195e314e8
commit
39d8f5db9c
@ -999,16 +999,23 @@ static int iwl_mvm_get_ppag_table(struct iwl_mvm *mvm)
|
||||
union acpi_object *ent;
|
||||
|
||||
ent = &wifi_pkg->package.elements[idx++];
|
||||
if (ent->type != ACPI_TYPE_INTEGER ||
|
||||
(j == 0 && ent->integer.value > ACPI_PPAG_MAX_LB) ||
|
||||
(j == 0 && ent->integer.value < ACPI_PPAG_MIN_LB) ||
|
||||
(j != 0 && ent->integer.value > ACPI_PPAG_MAX_HB) ||
|
||||
(j != 0 && ent->integer.value < ACPI_PPAG_MIN_HB)) {
|
||||
if (ent->type != ACPI_TYPE_INTEGER) {
|
||||
ret = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
gain[i * num_sub_bands + j] = ent->integer.value;
|
||||
|
||||
if ((j == 0 &&
|
||||
(gain[i * num_sub_bands + j] > ACPI_PPAG_MAX_LB ||
|
||||
gain[i * num_sub_bands + j] < ACPI_PPAG_MIN_LB)) ||
|
||||
(j != 0 &&
|
||||
(gain[i * num_sub_bands + j] > ACPI_PPAG_MAX_HB ||
|
||||
gain[i * num_sub_bands + j] < ACPI_PPAG_MIN_HB))) {
|
||||
ppag_table.v1.enabled = cpu_to_le32(0);
|
||||
ret = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
gain[i * num_sub_bands + j] = ent->integer.value;
|
||||
}
|
||||
}
|
||||
ret = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user