Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7bcbb30 authored by Walter Yang's avatar Walter Yang
Browse files

ASoC: msm: set pointers to NULL after kfree



In lsm-related driver files, some pointers are not set as NULL
after the memory is freed, which will leave many dangling pointers.
Set them to NULL explicitly to avoid potential risk.

CRs-Fixed: 880388
Change-Id: I44925240705608510266a51225cc02611637c571
Signed-off-by: default avatarWalter Yang <yandongy@codeaurora.org>
parent a19f5688
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1219,6 +1219,7 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
			dev_err(rtd->dev, "%s: No memory for sound model\n",
				__func__);
			kfree(session->conf_levels);
			session->conf_levels = NULL;
			return -ENOMEM;
		}
		session->snd_model_size = snd_model.data_size;
@@ -1230,6 +1231,8 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
				__func__);
			kfree(session->conf_levels);
			kfree(session->snd_model_data);
			session->conf_levels = NULL;
			session->snd_model_data = NULL;
			return -EFAULT;
		}

@@ -1241,6 +1244,8 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
			       __func__, rc);
			kfree(session->snd_model_data);
			kfree(session->conf_levels);
			session->snd_model_data = NULL;
			session->conf_levels = NULL;
			return rc;
		}

@@ -1254,6 +1259,8 @@ static int msm_cpe_lsm_ioctl_shared(struct snd_pcm_substream *substream,
			lsm_ops->lsm_shmem_dealloc(cpe->core_handle, session);
			kfree(session->snd_model_data);
			kfree(session->conf_levels);
			session->snd_model_data = NULL;
			session->conf_levels = NULL;
			return rc;
		}

+2 −0
Original line number Diff line number Diff line
@@ -482,7 +482,9 @@ static void msm_dai_slim_remove_dai_data(
		dai_data_t = &drv_data->slim_dai_data[i];

		kfree(dai_data_t->chan_h);
		dai_data_t->chan_h = NULL;
		kfree(dai_data_t->sh_ch);
		dai_data_t->sh_ch = NULL;
	}
}

+1 −0
Original line number Diff line number Diff line
@@ -348,6 +348,7 @@ void q6lsm_client_free(struct lsm_client *client)
	q6lsm_mmap_apr_dereg();
	mutex_destroy(&client->cmd_lock);
	kfree(client);
	client = NULL;
}

/*