Skip to contentSkip to conversation

staging: bcm2835-camera: fix coding style issues

PATCH Superseded Aishwarya Pant 2 participants 6 messages Mar 9, 2017

Subsystems (3)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover staging: bcm2835-camera: fix coding style issues

This patchset fixes the following issues:

[1] Added null check after memory allocation to avoid a possible null pointer dereference
[2] Replaced instances of kmalloc and memset with a kzalloc
[3] Replaced null error return values with kernel preferred error return values i.e. return ERR_PTR(-ENOMEM) instead of NULL

Aishwarya Pant (3):
staging: bcm2835-camera: add check to avoid null pointer dereference
staging: bcm2835-camera: replace kmalloc with kzalloc
staging: bcm2835-camera: use kernel preferred style for handling
errors

 .../vc04_services/bcm2835-camera/mmal-vchiq.c      | 24 +++++++++++++---------
 1 file changed, 14 insertions(+), 10 deletions(-)
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/3 staging: bcm2835-camera: add check to avoid null pointer dereference

This patch adds checks after memory allocation to avoid possible null pointer dereferences.

---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +6 -0
index 6126919..a258a72 100644
@@ -263,6 +263,9 @@ get_msg_context(struct vchiq_mmal_instance *instance)
 	msg_context = kmalloc(sizeof(*msg_context), GFP_KERNEL);
 	memset(msg_context, 0, sizeof(*msg_context));
 
+	if (!msg_context)
+		return NULL;
+
 	msg_context->instance = instance;
 	msg_context->handle =
 		mmal_context_map_create_handle(&instance->context_map,
@@ -2008,6 +2011,9 @@ int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
 	instance = kmalloc(sizeof(*instance), GFP_KERNEL);
 	memset(instance, 0, sizeof(*instance));
 
+	if (!instance)
+		return -ENOMEM;
+
 	mutex_init(&instance->vchiq_mutex);
 	mutex_init(&instance->bulk_mutex);
 
Signature · 1 line
2.7.4
maintainer
#2 lore raw

Re: [PATCH 1/3] staging: bcm2835-camera: add check to avoid null pointer dereference

Quoted 13 lines · Aishwarya Pant

This patch adds checks after memory allocation to avoid possible null pointer dereferences.

---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +0 -0
index 6126919..a258a72 100644

drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c get_msg_context(struct vchiq_mmal_instance *instance) · line 267

Quoted 5 lines
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +2 -0
@@ -263,6 +263,9 @@ get_msg_context(struct vchiq_mmal_instance *instance)
 	msg_context = kmalloc(sizeof(*msg_context), GFP_KERNEL);
 	memset(msg_context, 0, sizeof(*msg_context));
 
+	if (!msg_context)
+		return NULL;

But you just crashed one line above!

not good :(

greg k-h

#3 lore raw

PATCH 2/3 staging: bcm2835-camera: replace kmalloc with kzalloc

In reply to Aishwarya Pant

This patch replaces kmalloc and memset with kzalloc

---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +3 -5
index a258a72..f795137 100644
@@ -259,9 +259,8 @@ get_msg_context(struct vchiq_mmal_instance *instance)
 {
 	struct mmal_msg_context *msg_context;
 
-	/* todo: should this be allocated from a pool to avoid kmalloc */
-	msg_context = kmalloc(sizeof(*msg_context), GFP_KERNEL);
-	memset(msg_context, 0, sizeof(*msg_context));
+	/* todo: should this be allocated from a pool to avoid kzalloc */
+	msg_context = kzalloc(sizeof(*msg_context), GFP_KERNEL);
 
 	if (!msg_context)
 		return NULL;
@@ -2008,8 +2007,7 @@ int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
 		return -EIO;
 	}
 
-	instance = kmalloc(sizeof(*instance), GFP_KERNEL);
-	memset(instance, 0, sizeof(*instance));
+	instance = kzalloc(sizeof(*instance), GFP_KERNEL);
 
 	if (!instance)
 		return -ENOMEM;
Signature · 1 line
2.7.4
maintainer
#4 lore raw

Re: [PATCH 2/3] staging: bcm2835-camera: replace kmalloc with kzalloc

Quoted 24 lines · Aishwarya Pant

This patch replaces kmalloc and memset with kzalloc

---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +2 -3
index a258a72..f795137 100644
@@ -259,9 +259,8 @@ get_msg_context(struct vchiq_mmal_instance *instance)
 {
 	struct mmal_msg_context *msg_context;
 
-	/* todo: should this be allocated from a pool to avoid kmalloc */
-	msg_context = kmalloc(sizeof(*msg_context), GFP_KERNEL);
-	memset(msg_context, 0, sizeof(*msg_context));
+	/* todo: should this be allocated from a pool to avoid kzalloc */
+	msg_context = kzalloc(sizeof(*msg_context), GFP_KERNEL);
 
 	if (!msg_context)
 		return NULL;

drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance) · line 2013

Quoted 9 lines
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +1 -2
@@ -2008,8 +2007,7 @@ int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
 		return -EIO;
 	}
 
-	instance = kmalloc(sizeof(*instance), GFP_KERNEL);
-	memset(instance, 0, sizeof(*instance));
+	instance = kzalloc(sizeof(*instance), GFP_KERNEL);
 
 	if (!instance)
 		return -ENOMEM;

Does not apply to my tree :(

Please rebase and resend.

thanks,

greg k-h

#5 lore raw

PATCH 3/3 staging: bcm2835-camera: use kernel preferred style for handling errors

In reply to Aishwarya Pant

This patch replaces NULL error values with error pointer values.

---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +6 -6
index f795137..d87e2df 100644
@@ -263,7 +263,7 @@ get_msg_context(struct vchiq_mmal_instance *instance)
 	msg_context = kzalloc(sizeof(*msg_context), GFP_KERNEL);
 
 	if (!msg_context)
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 
 	msg_context->instance = instance;
 	msg_context->handle =
@@ -273,7 +273,7 @@ get_msg_context(struct vchiq_mmal_instance *instance)
 
 	if (!msg_context->handle) {
 		kfree(msg_context);
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 	}
 
 	return msg_context;
@@ -508,8 +508,8 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
 
 	/* get context */
 	msg_context = get_msg_context(instance);
-	if (!msg_context) {
-		ret = -ENOMEM;
+	if (IS_ERR(msg_context)) {
+		ret = PTR_ERR(msg_context);
 		goto unlock;
 	}
 
@@ -836,8 +836,8 @@ static int send_synchronous_mmal_msg(struct vchiq_mmal_instance *instance,
 	}
 
 	msg_context = get_msg_context(instance);
-	if (!msg_context)
-		return -ENOMEM;
+	if (IS_ERR(msg_context))
+		return PTR_ERR(msg_context);
 
 	init_completion(&msg_context->u.sync.cmplt);
 
Signature · 1 line
2.7.4