iwlwifi: mvm: make iwl_mvm_update_mcc() easier to follow
authorJohannes Berg <johannes.berg@intel.com>
Wed, 19 Apr 2017 08:17:57 +0000 (10:17 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 22 Jun 2017 21:13:01 +0000 (00:13 +0300)
Some static checkers (e.g. smatch) complain about the logic, saying that
resp_cp might be leaked. Clearly that isn't true, but making the logic
easier to follow does not result in any significant code changes and makes
the code more readable by moving the NULL check closer to its source.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c

index beead0bc08c9dfcf576d1e279dbbce4375888286..ad8bd90deed290afe2c0898fa21c7b9396851fdd 100644 (file)
@@ -779,6 +779,10 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2,
                resp_len = sizeof(struct iwl_mcc_update_resp) +
                           n_channels * sizeof(__le32);
                resp_cp = kmemdup(mcc_resp, resp_len, GFP_KERNEL);
+               if (!resp_cp) {
+                       resp_cp = ERR_PTR(-ENOMEM);
+                       goto exit;
+               }
        } else {
                struct iwl_mcc_update_resp_v1 *mcc_resp_v1 = (void *)pkt->data;
 
@@ -786,21 +790,18 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2,
                resp_len = sizeof(struct iwl_mcc_update_resp) +
                           n_channels * sizeof(__le32);
                resp_cp = kzalloc(resp_len, GFP_KERNEL);
-
-               if (resp_cp) {
-                       resp_cp->status = mcc_resp_v1->status;
-                       resp_cp->mcc = mcc_resp_v1->mcc;
-                       resp_cp->cap = mcc_resp_v1->cap;
-                       resp_cp->source_id = mcc_resp_v1->source_id;
-                       resp_cp->n_channels = mcc_resp_v1->n_channels;
-                       memcpy(resp_cp->channels, mcc_resp_v1->channels,
-                              n_channels * sizeof(__le32));
+               if (!resp_cp) {
+                       resp_cp = ERR_PTR(-ENOMEM);
+                       goto exit;
                }
-       }
 
-       if (!resp_cp) {
-               ret = -ENOMEM;
-               goto exit;
+               resp_cp->status = mcc_resp_v1->status;
+               resp_cp->mcc = mcc_resp_v1->mcc;
+               resp_cp->cap = mcc_resp_v1->cap;
+               resp_cp->source_id = mcc_resp_v1->source_id;
+               resp_cp->n_channels = mcc_resp_v1->n_channels;
+               memcpy(resp_cp->channels, mcc_resp_v1->channels,
+                      n_channels * sizeof(__le32));
        }
 
        status = le32_to_cpu(resp_cp->status);
@@ -820,8 +821,6 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2,
 
 exit:
        iwl_free_resp(&cmd);
-       if (ret)
-               return ERR_PTR(ret);
        return resp_cp;
 }