diff mbox series

[-next,2/2] crypto: crc32c - add missing Kconfig option select

Message ID 20220825084138.1881954-3-cuigaosheng1@huawei.com (mailing list archive)
State Changes Requested
Delegated to: Herbert Xu
Headers show
Series A few fixup patches for crypto | expand

Commit Message

cuigaosheng Aug. 25, 2022, 8:41 a.m. UTC
The CRYPTO_CRC32C is using functions provided by CRYPTO_MANAGER,
otherwise the following error will occur:

    EXT4-fs (mmcblk0): Cannot load crc32c driver.

So select CRYPTO_MANAGER when enable CRYPTO_CRC32C.

Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
---
 crypto/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

Herbert Xu Aug. 25, 2022, 8:50 a.m. UTC | #1
On Thu, Aug 25, 2022 at 04:41:38PM +0800, Gaosheng Cui wrote:
> The CRYPTO_CRC32C is using functions provided by CRYPTO_MANAGER,
> otherwise the following error will occur:
> 
>     EXT4-fs (mmcblk0): Cannot load crc32c driver.
> 
> So select CRYPTO_MANAGER when enable CRYPTO_CRC32C.
> 
> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
> ---
>  crypto/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/crypto/Kconfig b/crypto/Kconfig
> index b1ccf873779d..7f124604323b 100644
> --- a/crypto/Kconfig
> +++ b/crypto/Kconfig
> @@ -641,6 +641,7 @@ config CRYPTO_CRC32C
>  	tristate "CRC32c CRC algorithm"
>  	select CRYPTO_HASH
>  	select CRC32
> +	select CRYPTO_MANAGER
>  	help
>  	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
>  	  by iSCSI for header and data digests and by others.

Why exactly does it need CRYPTO_MANAGER?

Cheers,
cuigaosheng Aug. 25, 2022, 12:55 p.m. UTC | #2
Thanks for your reply.

While I was debugging the kernel code of linux-next, I start the kernel
with qemu-system-arm with following commands:

     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_defconfig
     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j32
     qemu-system-arm -M vexpress-a9 -m 1024M -s -nographic -kernel arch/arm/boot/zImage \
                    -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -sd /home/rootfs.sd \
                    -append "root=/dev/mmcblk0 rw console=ttyAMA0"

But it failed, so I tried to locate the cause of the failure and finally found that
it failed from this patch(cad439fc040e crypto: api - Do not create test larvals if manager is disabled),
logs as follows:
> EXT4-fs (mmcblk0): Cannot load crc32c driver. VFS: Cannot open root 
> device "mmcblk0" or unknown-block(179,0): error -80 Please append a 
> correct "root=" boot option; here are the available partitions: 1f00 
> 131072 mtdblock0 (driver?) 1f01 32768 mtdblock1 (driver?) b300 32768 
> mmcblk0 driver: mmcblk Kernel panic - not syncing: VFS: Unable to 
> mount root fs on unknown-block(179,0) CPU: 0 PID: 1 Comm: swapper/0 
> Not tainted 5.15.0-rc1+ #1 Hardware name: ARM-Versatile Express 
> [<8010f334>] (unwind_backtrace) from [<8010b08c>] 
> (show_stack+0x10/0x14) [<8010b08c>] (show_stack) from [<8083f2a4>] 
> (dump_stack_lvl+0x40/0x4c) [<8083f2a4>] (dump_stack_lvl) from 
> [<8083b210>] (panic+0xf8/0x2f4) [<8083b210>] (panic) from [<80b0175c>] 
> (mount_block_root+0x178/0x200) [<80b0175c>] (mount_block_root) from 
> [<80b01bac>] (prepare_namespace+0x150/0x18c) [<80b01bac>] 
> (prepare_namespace) from [<8084384c>] (kernel_init+0x10/0x124) 
> [<8084384c>] (kernel_init) from [<80100130>] (ret_from_fork+0x14/0x24) 
> Exception stack(0x8108bfb0 to 0x8108bff8) bfa0: ???????? ???????? 
> ???????? ???????? bfc0: ???????? ???????? ???????? ???????? ???????? 
> ???????? ???????? ???????? bfe0: ???????? ???????? ???????? ???????? 
> ???????? ???????? ---[ end Kernel panic - not syncing: VFS: Unable to 
> mount root fs on unknown-block(179,0) ]---

In the patch, crypto_alloc_test_larval will return NULL if CONFIG_CRYPTO_MANAGER disabled, so
I checked to see if this change was the cause "EXT4-fs (mmcblk0): Cannot load crc32c driver
", the success logs does not have this error.

When I enabled CONFIG_CRYPTO_MANAGER, kernel can be boot successfully.

Could that be the reason? I would be very grateful if you could give me some advice.

Thanks very much!

在 2022/8/25 16:50, Herbert Xu 写道:
> On Thu, Aug 25, 2022 at 04:41:38PM +0800, Gaosheng Cui wrote:
>> The CRYPTO_CRC32C is using functions provided by CRYPTO_MANAGER,
>> otherwise the following error will occur:
>>
>>      EXT4-fs (mmcblk0): Cannot load crc32c driver.
>>
>> So select CRYPTO_MANAGER when enable CRYPTO_CRC32C.
>>
>> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
>> ---
>>   crypto/Kconfig | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/crypto/Kconfig b/crypto/Kconfig
>> index b1ccf873779d..7f124604323b 100644
>> --- a/crypto/Kconfig
>> +++ b/crypto/Kconfig
>> @@ -641,6 +641,7 @@ config CRYPTO_CRC32C
>>   	tristate "CRC32c CRC algorithm"
>>   	select CRYPTO_HASH
>>   	select CRC32
>> +	select CRYPTO_MANAGER
>>   	help
>>   	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
>>   	  by iSCSI for header and data digests and by others.
> Why exactly does it need CRYPTO_MANAGER?
>
> Cheers,
Herbert Xu Sept. 2, 2022, 10:23 a.m. UTC | #3
On Thu, Aug 25, 2022 at 08:55:12PM +0800, cuigaosheng wrote:
> Thanks for your reply.
> 
> While I was debugging the kernel code of linux-next, I start the kernel
> with qemu-system-arm with following commands:
> 
>     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_defconfig
>     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j32
>     qemu-system-arm -M vexpress-a9 -m 1024M -s -nographic -kernel arch/arm/boot/zImage \
>                    -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -sd /home/rootfs.sd \
>                    -append "root=/dev/mmcblk0 rw console=ttyAMA0"
> 
> But it failed, so I tried to locate the cause of the failure and finally found that
> it failed from this patch(cad439fc040e crypto: api - Do not create test larvals if manager is disabled),
> logs as follows:
> > EXT4-fs (mmcblk0): Cannot load crc32c driver. VFS: Cannot open root
> > device "mmcblk0" or unknown-block(179,0): error -80 Please append a
> > correct "root=" boot option; here are the available partitions: 1f00
> > 131072 mtdblock0 (driver?) 1f01 32768 mtdblock1 (driver?) b300 32768
> > mmcblk0 driver: mmcblk Kernel panic - not syncing: VFS: Unable to mount
> > root fs on unknown-block(179,0) CPU: 0 PID: 1 Comm: swapper/0 Not
> > tainted 5.15.0-rc1+ #1 Hardware name: ARM-Versatile Express [<8010f334>]
> > (unwind_backtrace) from [<8010b08c>] (show_stack+0x10/0x14) [<8010b08c>]
> > (show_stack) from [<8083f2a4>] (dump_stack_lvl+0x40/0x4c) [<8083f2a4>]
> > (dump_stack_lvl) from [<8083b210>] (panic+0xf8/0x2f4) [<8083b210>]
> > (panic) from [<80b0175c>] (mount_block_root+0x178/0x200) [<80b0175c>]
> > (mount_block_root) from [<80b01bac>] (prepare_namespace+0x150/0x18c)
> > [<80b01bac>] (prepare_namespace) from [<8084384c>]
> > (kernel_init+0x10/0x124) [<8084384c>] (kernel_init) from [<80100130>]
> > (ret_from_fork+0x14/0x24) Exception stack(0x8108bfb0 to 0x8108bff8)
> > bfa0: ???????? ???????? ???????? ???????? bfc0: ???????? ????????
> > ???????? ???????? ???????? ???????? ???????? ???????? bfe0: ????????
> > ???????? ???????? ???????? ???????? ???????? ---[ end Kernel panic - not
> > syncing: VFS: Unable to mount root fs on unknown-block(179,0) ]---
> 
> In the patch, crypto_alloc_test_larval will return NULL if CONFIG_CRYPTO_MANAGER disabled, so
> I checked to see if this change was the cause "EXT4-fs (mmcblk0): Cannot load crc32c driver
> ", the success logs does not have this error.
> 
> When I enabled CONFIG_CRYPTO_MANAGER, kernel can be boot successfully.
> 
> Could that be the reason? I would be very grateful if you could give me some advice.

Can you please provide the whole .config file?

Thanks,
diff mbox series

Patch

diff --git a/crypto/Kconfig b/crypto/Kconfig
index b1ccf873779d..7f124604323b 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -641,6 +641,7 @@  config CRYPTO_CRC32C
 	tristate "CRC32c CRC algorithm"
 	select CRYPTO_HASH
 	select CRC32
+	select CRYPTO_MANAGER
 	help
 	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
 	  by iSCSI for header and data digests and by others.