On 07/02/2014 03:47 PM, Takashi Iwai wrote:
[...]
+       /*
+        * Prepare formats mask for valid/allowed sample types. If the dma does
+        * not have support for the given physical word size, it needs to be
+        * masked out so user space can not use the format which produces
+        * corrupted audio.
+        * In case the dma driver does not implement the slave_caps the default
+        * assumption is that it supports 1, 2 and 4 bytes widths.
+        */
+       for (i = 0; i <= SNDRV_PCM_FORMAT_LAST; i++) {
+               int bits = snd_pcm_format_physical_width(i);

Better to add a negative value check.  Some formats return -EINVAL.


So what should we do with those formats? Not support them?

+
+               /* Enable only samples with DMA supported physical widths */
+               if (addr_widths & BIT(bits / 8))

Just nitpicking: Using BIT() for 32bit int isn't always a wise choice
since BIT() is defined as unsigned long.  This is a generic problem,
though, as we see many codes using BIT() wrongly (and thus get
compiler warnings on 64bit machines).  We should introduce a new macro
for 32bit int...

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to