Re: [BUG] 3ce1217d6cd5 ima patch causes s390 to crash on boot

From: Roberto Sassu
Date: Fri Nov 22 2013 - 11:25:34 EST


This is a multi-part message in MIME format.On 11/22/2013 03:13 PM, Heiko Carstens wrote:
On Fri, Nov 22, 2013 at 02:28:33PM +0100, Roberto Sassu wrote:
On 11/22/2013 12:48 PM, Heiko Carstens wrote:
Hi Roberto,

your patch 3ce1217d6cd5 "ima: define template fields library and new helpers"
causes s390 to crash on boot:


Hi Heiko

thanks for the information. I think this issue is related to the error
detected by the kbuild test robot. Please, try to apply the attached
patch to see if it solves the problem.

No, the patch doesn't fix the problem.

Ok, sorry for the delay. I was involved in another task.

The previous patch is not correct, as I allocate an
array of pointers, not structures. You can discard it.

Another problem that I found is that strsep()
modifies the source buffer by replacing the separator
character with '\0'. In particular, this function
modifies static data initialized at the beginning
of the ima_template.c file. Maybe, this is causing
the kernel panic. I already sent a patch to fix this
problem (attached to the email) even if it is not
supposed to land on the 3.13 kernel. Let me know
if this fixes the issue. Otherwise, I will check
the code more in depth.

Thanks

Roberto



From: Fengguang Wu <fengguang.wu@xxxxxxxxx>
Subject: [PATCH] ima: fix coccinelle warnings
TO: Mimi Zohar <zohar@xxxxxxxxxxxxxxxxxx>
CC: Roberto Sassu <roberto.sassu@xxxxxxxxx>
CC: linux-kernel@xxxxxxxxxxxxxxx

security/integrity/ima/ima_template.c:62:41-47: ERROR: application of sizeof to pointer

sizeof when applied to a pointer typed expression gives the size of
the pointer

Generated by: coccinelle/misc/noderef.cocci

CC: Roberto Sassu <roberto.sassu@xxxxxxxxx>
CC: Mimi Zohar <zohar@xxxxxxxxxxxxxxxxxx>
Signed-off-by: Fengguang Wu <fengguang.wu@xxxxxxxxx>
---

cocci-output-13142-271b5e-ima_template.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/security/integrity/ima/ima_template.c
+++ b/security/integrity/ima/ima_template.c
@@ -59,7 +59,7 @@ static int template_desc_init_fields(cha
if (template_num_fields > IMA_TEMPLATE_NUM_FIELDS_MAX)
return -EINVAL;

- *fields = kzalloc(template_num_fields * sizeof(*fields), GFP_KERNEL);
+ *fields = kzalloc(template_num_fields * sizeof(**fields), GFP_KERNEL);
if (*fields == NULL) {
result = -ENOMEM;
goto out;