From: Shengjiu Wang <shengjiu.wang@gmail.com>
To: David Laight <David.Laight@aculab.com>
Cc: "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
"Xiubo.Lee@gmail.com" <Xiubo.Lee@gmail.com>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
Shengjiu Wang <shengjiu.wang@nxp.com>,
"tiwai@suse.com" <tiwai@suse.com>,
"lgirdwood@gmail.com" <lgirdwood@gmail.com>,
"perex@perex.cz" <perex@perex.cz>,
"nicoleotsuka@gmail.com" <nicoleotsuka@gmail.com>,
Mark Brown <broonie@kernel.org>,
"festevam@gmail.com" <festevam@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH -next 2/5] ASoC: fsl_asrc: force cast the asrc_format type
Date: Tue, 19 Jul 2022 21:35:34 +0800 [thread overview]
Message-ID: <CAA+D8AMTrp3KXpDEtyJbqgbA8feYCvEcWc4CMYY8zYSMgrvW6w@mail.gmail.com> (raw)
In-Reply-To: <c9231becb2cd4e2999ec631f9d2171c3@AcuMS.aculab.com>
[-- Attachment #1: Type: text/plain, Size: 4465 bytes --]
On Tue, Jul 19, 2022 at 8:39 PM David Laight <David.Laight@aculab.com>
wrote:
> grrr... top-posting because outluck is really stupid :-(
>
>
>
> The definition seems to be:
>
> typedef int __bitwise
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/__bitwise>
> snd_pcm_format_t
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/snd_pcm_format_t>;
>
> #define SNDRV_PCM_FORMAT_S8
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/SNDRV_PCM_FORMAT_S8>
> ((__force <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/__force>
> snd_pcm_format_t
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/snd_pcm_format_t>) 0)
>
> #define SNDRV_PCM_FORMAT_U8
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/SNDRV_PCM_FORMAT_U8>
> ((__force <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/__force>
> snd_pcm_format_t
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/snd_pcm_format_t>) 1)
>
> #define SNDRV_PCM_FORMAT_S16_LE
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/SNDRV_PCM_FORMAT_S16_LE>
> ((__force <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/__force>
> snd_pcm_format_t
> <https://elixir.bootlin.com/linux/v5.19-rc7/C/ident/snd_pcm_format_t>) 2)
>
> ...
>
> (goes away and looks up __bitwIse)
>
>
>
> I think I’d add:
>
> #define snd_pcm_format(val) ((__force snd_pcm_format_t)(val))
>
Where is this definition? Which header file?
Thanks.
Best regards
Wang Shengjiu
> and use that to remove most of the casts.
>
But the ones where you have (u32 *)&xxx are only valid because u32 and int
> are the same size.
>
> That does sort of happen to be true, but someone might look at all the
> values and
>
> decide that u8 is big enough.
>
> After which the code will still compile, but the data areas get corrupted.
>
> So you really need to use a u32 ‘temp’ variable.
>
>
>
> It would all be slightly less problematic if the ‘force’ casts could be
> sparse only
>
> (ie not seen by the compiler) – so the compiler would do the type checking.
>
>
>
> David
>
>
>
> *From:* Shengjiu Wang <shengjiu.wang@gmail.com>
> *Sent:* 19 July 2022 12:07
> *To:* David Laight <David.Laight@ACULAB.COM>
> *Cc:* Mark Brown <broonie@kernel.org>; Shengjiu Wang <
> shengjiu.wang@nxp.com>; Xiubo.Lee@gmail.com; festevam@gmail.com;
> nicoleotsuka@gmail.com; lgirdwood@gmail.com; perex@perex.cz;
> tiwai@suse.com; alsa-devel@alsa-project.org; linuxppc-dev@lists.ozlabs.org;
> linux-kernel@vger.kernel.org
> *Subject:* Re: [PATCH -next 2/5] ASoC: fsl_asrc: force cast the
> asrc_format type
>
>
>
>
>
>
>
> On Tue, Jul 19, 2022 at 6:34 PM David Laight <David.Laight@aculab.com>
> wrote:
>
> From: Mark Brown
> > Sent: 19 July 2022 11:17
> >
> > On Tue, Jul 19, 2022 at 10:01:54AM +0000, David Laight wrote:
> > > From: Shengjiu Wang
> >
> > > > - ret = of_property_read_u32(np, "fsl,asrc-format",
> &asrc->asrc_format);
> > > > + ret = of_property_read_u32(np, "fsl,asrc-format", (u32
> *)&asrc->asrc_format);
> >
> > > Ugg, you really shouldn't need to do that.
> > > It means that something is badly wrong somewhere.
> > > Casting pointers to integer types is just asking for a bug.
> >
> > That's casting one pointer type to another pointer type.
>
> It is casting the address of some type to a 'u32 *'.
> This will then be dereferenced by the called function.
> So the original type better be 32 bits.
>
> I'm also guessing that sparse was complaining about endianness?
> It isn't at all clear that these casts actually fix it.
>
> The sparse is complaining about the snd_pcm_format_t cast to u32/int type.
>
>
>
> The code in include/sound/pcm.h also does such __force cast.
>
> #define _SNDRV_PCM_FMTBIT(fmt) (1ULL << (__force
> int)SNDRV_PCM_FORMAT_##fmt)
>
>
>
> The change I have made does not cause an issue.
>
>
>
> Best regards
>
> Wang shengjiu
>
>
>
> (Mark: You'll be glad to hear that the office aircon is
> broken again - two weeks lead time on the spare part.)
>
> David
>
> -
> Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1
> 1PT, UK
> Registration No: 1397386 (Wales)
>
>
>
> Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1
> 1PT, UK
> Registration No: 1397386 (Wales)
>
> P *Please consider the environment and don't print this e-mail unless you
> really need to*
>
[-- Attachment #2: Type: text/html, Size: 10204 bytes --]
next prev parent reply other threads:[~2022-07-20 1:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-19 9:27 [PATCH -next 0/5] ASoC: fsl: Fix sparse warning Shengjiu Wang
2022-07-19 9:27 ` [PATCH -next 1/5] ASoC: fsl_sai: Don't use plain integer as NULL pointer Shengjiu Wang
2022-07-19 9:27 ` [PATCH -next 2/5] ASoC: fsl_asrc: force cast the asrc_format type Shengjiu Wang
2022-07-19 10:01 ` David Laight
2022-07-19 10:17 ` Mark Brown
2022-07-19 10:34 ` David Laight
2022-07-19 11:07 ` Shengjiu Wang
2022-07-19 12:39 ` David Laight
2022-07-19 13:35 ` Shengjiu Wang [this message]
2022-07-20 5:42 ` Shengjiu Wang
2022-07-19 9:27 ` [PATCH -next 3/5] ASoC: fsl-asoc-card: " Shengjiu Wang
2022-07-19 9:27 ` [PATCH -next 4/5] ASoC: fsl_easrc: use snd_pcm_format_t type for sample_format Shengjiu Wang
2022-07-19 9:27 ` [PATCH -next 5/5] ASoC: imx-card: use snd_pcm_format_t type for asrc_format Shengjiu Wang
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=CAA+D8AMTrp3KXpDEtyJbqgbA8feYCvEcWc4CMYY8zYSMgrvW6w@mail.gmail.com \
--to=shengjiu.wang@gmail.com \
--cc=David.Laight@aculab.com \
--cc=Xiubo.Lee@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=festevam@gmail.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=nicoleotsuka@gmail.com \
--cc=perex@perex.cz \
--cc=shengjiu.wang@nxp.com \
--cc=tiwai@suse.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;
as well as URLs for NNTP newsgroup(s).