Skip to content

Commit ca58982

Browse files
vsyrjalajmberg-intel
authored andcommitted
wifi: iwlwifi: Fix firmware version handling
On my system the arithmetic done on the firmware numbers results in a negative number, but since the types are unsigned it gets interpreted as a large positive number. The end result is that the firmware gets rejected and wifi is defunct. Switch to signed types to handle this case correctly. iwlwifi 0000:0c:00.0: Driver unable to support your firmware API. Driver supports FW core 4294967294..2, firmware is 2. iwlwifi 0000:0c:00.0: Direct firmware load for iwlwifi-5000-4.ucode failed with error -2 iwlwifi 0000:0c:00.0: Direct firmware load for iwlwifi-5000-3.ucode failed with error -2 iwlwifi 0000:0c:00.0: Direct firmware load for iwlwifi-5000-2.ucode failed with error -2 iwlwifi 0000:0c:00.0: Direct firmware load for iwlwifi-5000-1.ucode failed with error -2 iwlwifi 0000:0c:00.0: no suitable firmware found! iwlwifi 0000:0c:00.0: minimum version required: iwlwifi-5000-1 iwlwifi 0000:0c:00.0: maximum version supported: iwlwifi-5000-5 iwlwifi 0000:0c:00.0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git Cc: stable@vger.kernel.org Fixes: 5f708cc ("wifi: iwlwifi: add a new FW file numbering scheme") Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220805 Link: https://patch.msgid.link/20251113222852.15896-1-ville.syrjala@linux.intel.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
1 parent ff4071c commit ca58982

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/net/wireless/intel/iwlwifi/iwl-drv.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1597,7 +1597,7 @@ static void _iwl_op_mode_stop(struct iwl_drv *drv)
15971597
*/
15981598
static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
15991599
{
1600-
unsigned int min_core, max_core, loaded_core;
1600+
int min_core, max_core, loaded_core;
16011601
struct iwl_drv *drv = context;
16021602
struct iwl_fw *fw = &drv->fw;
16031603
const struct iwl_ucode_header *ucode;
@@ -1676,7 +1676,7 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
16761676
if (loaded_core < min_core || loaded_core > max_core) {
16771677
IWL_ERR(drv,
16781678
"Driver unable to support your firmware API. "
1679-
"Driver supports FW core %u..%u, firmware is %u.\n",
1679+
"Driver supports FW core %d..%d, firmware is %d.\n",
16801680
min_core, max_core, loaded_core);
16811681
goto try_again;
16821682
}

0 commit comments

Comments
 (0)