Thread (10 messages) flat view 10 messages, 2 authors, 2016-07-27

RE: [net-next PATCH 4/4] be2net: replace polling with sleeping in the FW completion path

From: Sathya Perla <hidden>
Date: 2016-07-26 08:10:56

-----Original Message-----
From: Sathya Perla [mailto:sathya.perla@broadcom.com]
quoted
-----Original Message-----
From: David Miller [mailto:davem@davemloft.net]
quoted
@@ -4477,6 +4551,22 @@ static int be_if_create(struct be_adapter
*adapter)
quoted
quoted
 	u32 cap_flags = be_if_cap_flags(adapter);
 	int status;

+	/* alloc required memory for other filtering fields */
+	adapter->pmac_id = kcalloc(be_max_uc(adapter),
+				   sizeof(*adapter->pmac_id), GFP_KERNEL);
+	if (!adapter->pmac_id)
+		return -ENOMEM;
+
+	adapter->mc_list = kcalloc(be_max_mc(adapter),
+				   sizeof(*adapter->mc_list), GFP_KERNEL);
+	if (!adapter->mc_list)
+		return -ENOMEM;
+
+	adapter->uc_list = kcalloc(be_max_uc(adapter),
+				   sizeof(*adapter->uc_list), GFP_KERNEL);
+	if (!adapter->uc_list)
+		return -ENOMEM;
These error paths are leaking memory, please audit this in the rest of
your change as well.

David, thanks for catching this; will fix this (and others if any) and
send out a v2.
David, actually, when be_if_create() returns an error, it falls back into
the error path of
be_setup() (the caller) and be_clear() is called. be_clear() calls
be_if_destroy() which frees the allocated memory.
So, this code will not leak memory in the error path.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help