Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Banajit Goswami" <bgoswami@codeaurora.org>
To: Vinod Koul <vinod.koul@intel.com>,
	Mark Brown <broonie@kernel.org>, Liam <lgirdwood@gmail.com>
Cc: alsa-devel@alsa-project.org, gsantosh@codeaurora.org
Subject: Re: Question on compress offload framework memory corruption
Date: Tue, 4 Mar 2014 22:19:20 -0000	[thread overview]
Message-ID: <f7340ae1f345dc53c799ff8c02321ed1.squirrel@www.codeaurora.org> (raw)

Hi Liam,

> On Thu, Dec 19, 2013 at 10:55:08AM +0000, Mark Brown wrote:
> > On Wed, Dec 18, 2013 at 01:17:51PM -0000, gsantosh@codeaurora.org wrote:
> > > Hi,
> > >
> > > I have following questions in the compressed offload framework API.
> > >
> > > static int soc_compr_set_params_fe(struct snd_compr_stream *cstream,
> > > 					struct snd_compr_params *params) { ...
> > > 	hw_params = kzalloc(sizeof(*hw_params), GFP_KERNEL);
> > > 	if (hw_params == NULL)
> > > 		return -ENOMEM;
> > > /*1st question is, what is the use of above allocated memory I do
> > > not see this being used in this function*/
> >
> > The code you're quoting there isn't in mainline.  I've also added
> > Vinod to the CCs, you probably want to include him in any discussion
> > of the compressed API.
>
> That's right, this is from DPCM compressed updated done by Liam, so he
is > the best person to comment on this bit, and somehow his address in
CC has > gone bad, i have added him in to list

> But yes looking at the source, i agree that two are interlinked.
> I guess we need to poupulate the hw_params and then use that to copy, that
> would be the right thing to do here and yes this is not correct and not
> sure how this is working...


Continuing the discussion on the "memcpy" function in Santosh's 2nd question-

> > >        memcpy(&fe->dpcm[fe_substream->stream].hw_params, params,
> > >                       sizeof(struct snd_pcm_hw_params));
> > >
> > > /* 2nd question is
> > > in above memcpy there is parameter mismatch
> > > &fe->dpcm[fe_substream->stream].hw_params is of structure type struct
> > > snd_pcm_hw_params
> > >
> > > params argument is of the structure type struct snd_compr_params
> > > the definition of the two structures are different, how this is
> > > working?
> > > this will over right the destination with junk value which will return
> > > in error when this memory is accessed, after memcpy this cpu_dai
> > > hw_params
> > > returing with EINVAL error, please explain why this is done this way.
> > > */

I can see that a later version of the patch adds the function
soc_compr_set_params_fe() at-
    http://permalink.gmane.org/gmane.linux.alsa.devel/117716

with the below code replaces the "memcpy" function with a "memset"-
+	/*
+	 * Create an empty hw_params for the BE as the machine driver must
+	 * fix this up to match DSP decoder and ASRC configuration.
+	 * I.e. machine driver fixup for compressed BE is mandatory.
+	 */
+	memset(&fe->dpcm[fe_substream->stream].hw_params, 0,
+		sizeof(struct snd_pcm_hw_params));

It's evident that the code relies on machine driver fixup function to
populate the parameters of hw_params before propagating those to back-end.
I think rather than that, like Vinod also mentioned, the hw_params should
have been populated with individual parameters which are relevant.

Let me know your comment on this.

Thanks,
Banajit

The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

             reply	other threads:[~2014-03-04 22:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-04 22:19 Banajit Goswami [this message]
2014-03-05  7:51 ` Question on compress offload framework memory corruption Vinod Koul
  -- strict thread matches above, loose matches on Subject: below --
2013-12-18 13:17 gsantosh
2013-12-19  7:59 ` gsantosh
2013-12-19 10:42 ` Clemens Ladisch
2013-12-19 10:55 ` Mark Brown
2014-01-05 14:04   ` Vinod Koul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f7340ae1f345dc53c799ff8c02321ed1.squirrel@www.codeaurora.org \
    --to=bgoswami@codeaurora.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=gsantosh@codeaurora.org \
    --cc=lgirdwood@gmail.com \
    --cc=vinod.koul@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox