iwlwifi: dbg: in sync mode don't call schedule
authorMordechay Goodstein <mordechay.goodstein@intel.com>
Fri, 4 Mar 2022 11:21:26 +0000 (13:21 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 10 Mar 2022 07:23:29 +0000 (09:23 +0200)
Today in the code we have two options for collecting data sync/schedule,
the two options call the same function and can lead to racing in free
resources after done.

So we call only one of two sync/schedule, and in case of sync only
call sync function without also schedule to immediately run as a side
job.

Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20220304131517.88574097ce1b.I1b42297619d638d677a2300ed9a95105c1262101@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/dbg.c

index 53f0fe77aa1020e1dddde03f9aa32d703057ac27..d3ac8ea049a43be02fe55018806c3d37f7b149d2 100644 (file)
@@ -2992,10 +2992,10 @@ int iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt,
                 "WRT: Collecting data: ini trigger %d fired (delay=%dms).\n",
                 tp_id, (u32)(delay / USEC_PER_MSEC));
 
-       schedule_delayed_work(&fwrt->dump.wks[idx].wk, usecs_to_jiffies(delay));
-
        if (sync)
                iwl_fw_dbg_collect_sync(fwrt, idx);
+       else
+               schedule_delayed_work(&fwrt->dump.wks[idx].wk, usecs_to_jiffies(delay));
 
        return 0;
 }