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

Commit febf4856 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: 997059
Change-Id: I44925240705608510266a51225cc02611637c571
Signed-off-by: default avatarWalter Yang <yandongy@codeaurora.org>
parent 956d9b1a
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013-2015, Linux Foundation. All rights reserved.
 * Copyright (c) 2013-2016, Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -1209,6 +1209,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;
@@ -1220,6 +1221,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;
		}

@@ -1231,6 +1234,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;
		}

@@ -1244,6 +1249,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;
		}

+3 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
 * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -467,7 +467,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;
	}
}

+2 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013-2015, Linux Foundation. All rights reserved.
 * Copyright (c) 2013-2016, Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -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;
}

/*