[alsa-devel] [PATCH v2 8/8] ASoC: Intel: Allocate for the mailbox with max size

Vinod Koul vinod.koul at intel.com
Tue May 19 13:07:50 CEST 2015


On Tue, May 19, 2015 at 12:42:03PM +0200, Takashi Iwai wrote:
> At Tue, 19 May 2015 15:00:40 +0530,
> Vinod Koul wrote:
> > 
> > From: "Subhransu S. Prusty" <subhransu.s.prusty at intel.com>
> > 
> > Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty at intel.com>
> > Signed-off-by: Vinod Koul <vinod.koul at intel.com>
> > ---
> >  sound/soc/intel/common/sst-ipc.c | 29 ++++++++++++++++++++++++++++-
> >  sound/soc/intel/common/sst-ipc.h |  4 ++--
> >  2 files changed, 30 insertions(+), 3 deletions(-)
> > 
> > diff --git a/sound/soc/intel/common/sst-ipc.c b/sound/soc/intel/common/sst-ipc.c
> > index a7699f35a8d2..a12c7bb08d3b 100644
> > --- a/sound/soc/intel/common/sst-ipc.c
> > +++ b/sound/soc/intel/common/sst-ipc.c
> > @@ -129,11 +129,31 @@ static int msg_empty_list_init(struct sst_generic_ipc *ipc)
> >  		return -ENOMEM;
> >  
> >  	for (i = 0; i < IPC_EMPTY_LIST_SIZE; i++) {
> > +		ipc->msg[i].tx_data = kzalloc(ipc->tx_data_max_size, GFP_KERNEL);
> > +		if (ipc->msg[i].tx_data == NULL)
> > +			goto free_mem;
> > +
> > +		ipc->msg[i].rx_data = kzalloc(ipc->rx_data_max_size, GFP_KERNEL);
> > +		if (ipc->msg[i].rx_data == NULL) {
> > +			kfree(ipc->msg[i].tx_data);
> > +			goto free_mem;
> > +		}
> > +
> >  		init_waitqueue_head(&ipc->msg[i].waitq);
> >  		list_add(&ipc->msg[i].list, &ipc->empty_list);
> 
> Wouldn't this leave stale linked list entries at error?
Yes it will, but this is happening at device probe, so the probe will fail
and device will no longer be usable. We do free the memory so shouldn't
leak.

-- 
~Vinod


More information about the Alsa-devel mailing list