diff mbox series

[mmc-utils] rpmb: Zero-init MMC_IOC_MULTI_CMD structures

Message ID 20201216093146.6218-1-john.ernberg@actia.se
State New
Headers show
Series [mmc-utils] rpmb: Zero-init MMC_IOC_MULTI_CMD structures | expand

Commit Message

John Ernberg Dec. 16, 2020, 9:31 a.m. UTC
On our board we would occationally see what looked like a
kernel hang while doing RPMB operations, some additional
printk debugging revealed that in the trouble case data
such as this was being sent to the kernel:

    [  109.076981] idata[0]->ic->opcode = 0x19
    [  109.077027] idata[0]->ic->arg = 0x0
    [  109.080954] idata[0]->ic->write_flag = 0x1
    [  109.084691] idata[0]->ic->is_acmd = 0x0
    [  109.089007] idata[0]->ic->flags = 0xb5
    [  109.092949] idata[0]->ic->blocks = 0x1
    [  109.096865] idata[0]->ic->blksz = 0x200
    [  109.100791] idata[0]->ic->postsleep_min_us = 0x7473696e
    [  109.104745] idata[0]->ic->postsleep_max_us = 0x34383370
    [  109.110167] idata[0]->ic->data_timeout_ns = 0x7265632d
    [  109.115494] idata[0]->ic->data_ptr = 00000000e7ddd4cd
    [  109.120832] idata[0]->rpmb = 00000000ffab5640
    [  109.126077] idata[1]->ic->opcode = 0x12
    [  109.130622] idata[1]->ic->arg = 0x0
    [  109.135451] idata[1]->ic->write_flag = 0x0
    [  109.139153] idata[1]->ic->is_acmd = 0x0
    [  109.143437] idata[1]->ic->flags = 0xb5
    [  109.147553] idata[1]->ic->blocks = 0x1
    [  109.151420] idata[1]->ic->blksz = 0x200
    [  109.155251] idata[1]->ic->postsleep_min_us = 0x652d6873
    [  109.159166] idata[1]->ic->postsleep_max_us = 0x35353264
    [  109.164561] idata[1]->ic->data_timeout_ns = 0x632d3931
    [  109.169915] idata[1]->ic->data_ptr = 00000000bc641ed4
    [  109.175152] idata[1]->rpmb = 00000000ffab5640

Therefor, zero-init the MMC_IOC_MULTI_CMD structures to
avoid the obscene sleep values.

Signed-off-by: John Ernberg <john.ernberg@actia.se>
---
 mmc_cmds.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ulf Hansson March 31, 2021, 9:40 a.m. UTC | #1
+ Avri

On Wed, 16 Dec 2020 at 10:48, John Ernberg <john.ernberg@actia.se> wrote:
>

> On our board we would occationally see what looked like a

> kernel hang while doing RPMB operations, some additional

> printk debugging revealed that in the trouble case data

> such as this was being sent to the kernel:

>

>     [  109.076981] idata[0]->ic->opcode = 0x19

>     [  109.077027] idata[0]->ic->arg = 0x0

>     [  109.080954] idata[0]->ic->write_flag = 0x1

>     [  109.084691] idata[0]->ic->is_acmd = 0x0

>     [  109.089007] idata[0]->ic->flags = 0xb5

>     [  109.092949] idata[0]->ic->blocks = 0x1

>     [  109.096865] idata[0]->ic->blksz = 0x200

>     [  109.100791] idata[0]->ic->postsleep_min_us = 0x7473696e

>     [  109.104745] idata[0]->ic->postsleep_max_us = 0x34383370

>     [  109.110167] idata[0]->ic->data_timeout_ns = 0x7265632d

>     [  109.115494] idata[0]->ic->data_ptr = 00000000e7ddd4cd

>     [  109.120832] idata[0]->rpmb = 00000000ffab5640

>     [  109.126077] idata[1]->ic->opcode = 0x12

>     [  109.130622] idata[1]->ic->arg = 0x0

>     [  109.135451] idata[1]->ic->write_flag = 0x0

>     [  109.139153] idata[1]->ic->is_acmd = 0x0

>     [  109.143437] idata[1]->ic->flags = 0xb5

>     [  109.147553] idata[1]->ic->blocks = 0x1

>     [  109.151420] idata[1]->ic->blksz = 0x200

>     [  109.155251] idata[1]->ic->postsleep_min_us = 0x652d6873

>     [  109.159166] idata[1]->ic->postsleep_max_us = 0x35353264

>     [  109.164561] idata[1]->ic->data_timeout_ns = 0x632d3931

>     [  109.169915] idata[1]->ic->data_ptr = 00000000bc641ed4

>     [  109.175152] idata[1]->rpmb = 00000000ffab5640

>

> Therefor, zero-init the MMC_IOC_MULTI_CMD structures to

> avoid the obscene sleep values.

>

> Signed-off-by: John Ernberg <john.ernberg@actia.se>


Applied to git.kernel.org/pub/scm/utils/mmc/mmc-utils.git master, thanks!

Kind regards
Uffe


> ---

>  mmc_cmds.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/mmc_cmds.c b/mmc_cmds.c

> index fb37189..884cdf8 100644

> --- a/mmc_cmds.c

> +++ b/mmc_cmds.c

> @@ -1922,7 +1922,7 @@ static int do_rpmb_op(int fd,

>

>         /* prepare arguments for MMC_IOC_MULTI_CMD ioctl */

>         mioc = (struct mmc_ioc_multi_cmd *)

> -               malloc(sizeof (struct mmc_ioc_multi_cmd) +

> +               calloc(1, sizeof (struct mmc_ioc_multi_cmd) +

>                        RPMB_MULTI_CMD_MAX_CMDS * sizeof (struct mmc_ioc_cmd));

>         if (!mioc) {

>                 return -ENOMEM;

> --

> 2.29.2
diff mbox series

Patch

diff --git a/mmc_cmds.c b/mmc_cmds.c
index fb37189..884cdf8 100644
--- a/mmc_cmds.c
+++ b/mmc_cmds.c
@@ -1922,7 +1922,7 @@  static int do_rpmb_op(int fd,
 
 	/* prepare arguments for MMC_IOC_MULTI_CMD ioctl */
 	mioc = (struct mmc_ioc_multi_cmd *)
-		malloc(sizeof (struct mmc_ioc_multi_cmd) +
+		calloc(1, sizeof (struct mmc_ioc_multi_cmd) +
 		       RPMB_MULTI_CMD_MAX_CMDS * sizeof (struct mmc_ioc_cmd));
 	if (!mioc) {
 		return -ENOMEM;