[openib-general] [PATCH] IB/SRP: check memory allocation

ishai ishai at dev.mellanox.co.il
Tue Jan 16 07:20:25 PST 2007


This patch checks if the kmalloc in match_strdup was successful.

Signed-off-by: Ishai Rabinovitz <ishai at mellanox.co.il> 
---
Index: gen2_devel_kernel/drivers/infiniband/ulp/srp/ib_srp.c
===================================================================
--- gen2_devel_kernel.orig/drivers/infiniband/ulp/srp/ib_srp.c	2007-01-16 16:12:02.000000000 +0200
+++ gen2_devel_kernel/drivers/infiniband/ulp/srp/ib_srp.c	2007-01-16 16:48:24.000000000 +0200
@@ -1627,18 +1627,30 @@ static int srp_parse_options(const char 
 		switch (token) {
 		case SRP_OPT_ID_EXT:
 			p = match_strdup(args);
+			if (!p) {
+				ret = -ENOMEM;
+				goto out;
+			}
 			target->id_ext = cpu_to_be64(simple_strtoull(p, NULL, 16));
 			kfree(p);
 			break;
 
 		case SRP_OPT_IOC_GUID:
 			p = match_strdup(args);
+			if (!p) {
+				ret = -ENOMEM;
+				goto out;
+			}
 			target->ioc_guid = cpu_to_be64(simple_strtoull(p, NULL, 16));
 			kfree(p);
 			break;
 
 		case SRP_OPT_DGID:
 			p = match_strdup(args);
+			if (!p) {
+				ret = -ENOMEM;
+				goto out;
+			}
 			if (strlen(p) != 32) {
 				printk(KERN_WARNING PFX "bad dest GID parameter '%s'\n", p);
 				kfree(p);
@@ -1662,6 +1674,10 @@ static int srp_parse_options(const char 
 
 		case SRP_OPT_SERVICE_ID:
 			p = match_strdup(args);
+			if (!p) {
+				ret = -ENOMEM;
+				goto out;
+			}
 			target->service_id = cpu_to_be64(simple_strtoull(p, NULL, 16));
 			kfree(p);
 			break;
@@ -1699,6 +1715,10 @@ static int srp_parse_options(const char 
 
 		case SRP_OPT_INITIATOR_EXT:
 			p = match_strdup(args);
+			if (!p) {
+				ret = -ENOMEM;
+				goto out;
+			}
 			target->initiator_ext = cpu_to_be64(simple_strtoull(p, NULL, 16));
 			kfree(p);
 			break;




More information about the general mailing list