diff mbox

ASoC: fsl: fix fsl_spdif.c build errors

Message ID 7ea1cd5a-9215-18ed-2412-b6860a0b708f@infradead.org (mailing list archive)
State Accepted
Commit b3af6d3f966a86cc556f5048fe6fff4e8cf567bc
Headers show

Commit Message

Randy Dunlap Nov. 5, 2016, 11:16 p.m. UTC
From: Randy Dunlap <rdunlap@infradead.org>

Fix build errors in sound/soc/fsl/fsl_spdif.c by selecting BITREVERSE.
Fixes these build errors:

sound/built-in.o: In function `spdif_write_channel_status':
fsl_spdif.c:(.text+0xbe39d): undefined reference to `byte_rev_table'
fsl_spdif.c:(.text+0xbe3a8): undefined reference to `byte_rev_table'
fsl_spdif.c:(.text+0xbe3be): undefined reference to `byte_rev_table'
fsl_spdif.c:(.text+0xbe3d8): undefined reference to `byte_rev_table'

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Applies-to: all 3.x, all 4.x
---
 sound/soc/fsl/Kconfig |    1 +
 1 file changed, 1 insertion(+)

Comments

Fabio Estevam Nov. 6, 2016, 7:43 p.m. UTC | #1
Hi Randy,

On Sat, Nov 5, 2016 at 9:16 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
> From: Randy Dunlap <rdunlap@infradead.org>
>
> Fix build errors in sound/soc/fsl/fsl_spdif.c by selecting BITREVERSE.
> Fixes these build errors:

Care to explain why the error is happening?

> sound/built-in.o: In function `spdif_write_channel_status':
> fsl_spdif.c:(.text+0xbe39d): undefined reference to `byte_rev_table'
> fsl_spdif.c:(.text+0xbe3a8): undefined reference to `byte_rev_table'
> fsl_spdif.c:(.text+0xbe3be): undefined reference to `byte_rev_table'
> fsl_spdif.c:(.text+0xbe3d8): undefined reference to `byte_rev_table'
>
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Reported-by: kbuild test robot <fengguang.wu@intel.com>
> Applies-to: all 3.x, all 4.x

Not sure if this last line is correct. The kbuild report says this
error starts to happen with:
commit: 8cfc8ddc99df9509a46043b14af81f5c6a223eab pstore: add lzo/lz4
compression support

on a x86_64 randconfig.

Also, why only SND_SOC_FSL_SPDIF needs to have BITREVERSE selected?
Randy Dunlap Nov. 6, 2016, 9:40 p.m. UTC | #2
On 11/06/16 11:43, Fabio Estevam wrote:
> Hi Randy,
> 
> On Sat, Nov 5, 2016 at 9:16 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
>> From: Randy Dunlap <rdunlap@infradead.org>
>>
>> Fix build errors in sound/soc/fsl/fsl_spdif.c by selecting BITREVERSE.
>> Fixes these build errors:
> 
> Care to explain why the error is happening?

The driver uses bitreverse functions but does not select BITREVERSE
in its kconfig description, so the bitrev functions are not built
into the kernel.  In the kbuild robot supplied config file,
FSL_SPDIF=y and BITREVERSE=m, which causes the build error.
By having this driver select BITREVERSE, CONFIG_BITREVERSE=y so there
is no build error.

>> sound/built-in.o: In function `spdif_write_channel_status':
>> fsl_spdif.c:(.text+0xbe39d): undefined reference to `byte_rev_table'
>> fsl_spdif.c:(.text+0xbe3a8): undefined reference to `byte_rev_table'
>> fsl_spdif.c:(.text+0xbe3be): undefined reference to `byte_rev_table'
>> fsl_spdif.c:(.text+0xbe3d8): undefined reference to `byte_rev_table'
>>
>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>> Applies-to: all 3.x, all 4.x
> 
> Not sure if this last line is correct. The kbuild report says this
> error starts to happen with:
> commit: 8cfc8ddc99df9509a46043b14af81f5c6a223eab pstore: add lzo/lz4
> compression support

That commit makes no sense to me regarding this build error.

This driver uses bitrev functions even way back in 3.x so this
patch could be applied to many stable kernel versions.

> on a x86_64 randconfig.
> 
> Also, why only SND_SOC_FSL_SPDIF needs to have BITREVERSE selected?

It's the only source file in sound/soc/fsl/ that uses bitreverse functions.
Fabio Estevam Nov. 6, 2016, 10:05 p.m. UTC | #3
Hi Randy,

On Sun, Nov 6, 2016 at 7:40 PM, Randy Dunlap <rdunlap@infradead.org> wrote:

> The driver uses bitreverse functions but does not select BITREVERSE
> in its kconfig description, so the bitrev functions are not built
> into the kernel.  In the kbuild robot supplied config file,
> FSL_SPDIF=y and BITREVERSE=m, which causes the build error.
> By having this driver select BITREVERSE, CONFIG_BITREVERSE=y so there
> is no build error.

This makes sense, thanks:

Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
Kees Cook Nov. 8, 2016, 9:38 p.m. UTC | #4
On Sun, Nov 6, 2016 at 1:40 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 11/06/16 11:43, Fabio Estevam wrote:
>> Hi Randy,
>>
>> On Sat, Nov 5, 2016 at 9:16 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
>>> From: Randy Dunlap <rdunlap@infradead.org>
>>>
>>> Fix build errors in sound/soc/fsl/fsl_spdif.c by selecting BITREVERSE.
>>> Fixes these build errors:
>>
>> Care to explain why the error is happening?
>
> The driver uses bitreverse functions but does not select BITREVERSE
> in its kconfig description, so the bitrev functions are not built
> into the kernel.  In the kbuild robot supplied config file,
> FSL_SPDIF=y and BITREVERSE=m, which causes the build error.
> By having this driver select BITREVERSE, CONFIG_BITREVERSE=y so there
> is no build error.
>
>>> sound/built-in.o: In function `spdif_write_channel_status':
>>> fsl_spdif.c:(.text+0xbe39d): undefined reference to `byte_rev_table'
>>> fsl_spdif.c:(.text+0xbe3a8): undefined reference to `byte_rev_table'
>>> fsl_spdif.c:(.text+0xbe3be): undefined reference to `byte_rev_table'
>>> fsl_spdif.c:(.text+0xbe3d8): undefined reference to `byte_rev_table'
>>>
>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>>> Applies-to: all 3.x, all 4.x
>>
>> Not sure if this last line is correct. The kbuild report says this
>> error starts to happen with:
>> commit: 8cfc8ddc99df9509a46043b14af81f5c6a223eab pstore: add lzo/lz4
>> compression support
>
> That commit makes no sense to me regarding this build error.
>
> This driver uses bitrev functions even way back in 3.x so this
> patch could be applied to many stable kernel versions.

Yeah, I scratched my head on this too, but noted that the 0-day report
was from a 5 month old build, so I kind of assumed it was an 0-day
glitch.

-Kees

>
>> on a x86_64 randconfig.
>>
>> Also, why only SND_SOC_FSL_SPDIF needs to have BITREVERSE selected?
>
> It's the only source file in sound/soc/fsl/ that uses bitreverse functions.
>
>
> --
> ~Randy
diff mbox

Patch

--- lnx-49-rc3.orig/sound/soc/fsl/Kconfig
+++ lnx-49-rc3/sound/soc/fsl/Kconfig
@@ -40,6 +40,7 @@  config SND_SOC_FSL_SPDIF
 	select REGMAP_MMIO
 	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
 	select SND_SOC_IMX_PCM_FIQ if SND_IMX_SOC != n && (MXC_TZIC || MXC_AVIC)
+	select BITREVERSE
 	help
 	  Say Y if you want to add Sony/Philips Digital Interface (SPDIF)
 	  support for the Freescale CPUs.