mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
@ 2011-07-31 22:28 Jesper Juhl
  2011-07-31 22:33 ` Jesper Juhl
  2011-07-31 22:44 ` Joe Perches
  0 siblings, 2 replies; 7+ messages in thread
From: Jesper Juhl @ 2011-07-31 22:28 UTC (permalink / raw)
  To: Nicholas A. Bellinger
  Cc: Andy Grover, Roland Dreier, Christoph Hellwig, linux-scsi, linux-kernel

We leak memory if the allocations for 'new_param->name' or 'new_param->value' fail.
We also do a lot of variable assignments that are completely pointless
if the allocations fail.
So, let's move the allocations before the assignments and also make
sure that we free whatever was allocated to one if the allocation for
another fails.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
 drivers/target/iscsi/iscsi_target_parameters.c |   26 ++++++++++-------------
 1 files changed, 11 insertions(+), 15 deletions(-)

 compile tested only

diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
index 252e246..c708092 100644
--- a/drivers/target/iscsi/iscsi_target_parameters.c
+++ b/drivers/target/iscsi/iscsi_target_parameters.c
@@ -572,6 +572,17 @@ int iscsi_copy_param_list(
 			goto err_out;
 		}
 
+		new_param->name = kmalloc(strlen(param->name) + 1, GFP_KERNEL);
+		new_param->value = kmalloc(strlen(param->value) + 1, GFP_KERNEL);
+		if (!new_param->name || !new_param->value) {
+			kfree(new_param->value);
+			kfree(new_param->name);
+			kfree(new_param);
+			pr_err("Unable to allocate memory for parameter "
+				"name/value.\n");
+			goto err_out;
+		}
+
 		new_param->set_param = param->set_param;
 		new_param->phase = param->phase;
 		new_param->scope = param->scope;
@@ -580,21 +591,6 @@ int iscsi_copy_param_list(
 		new_param->use = param->use;
 		new_param->type_range = param->type_range;
 
-		new_param->name = kzalloc(strlen(param->name) + 1, GFP_KERNEL);
-		if (!new_param->name) {
-			pr_err("Unable to allocate memory for"
-				" parameter name.\n");
-			goto err_out;
-		}
-
-		new_param->value = kzalloc(strlen(param->value) + 1,
-				GFP_KERNEL);
-		if (!new_param->value) {
-			pr_err("Unable to allocate memory for"
-				" parameter value.\n");
-			goto err_out;
-		}
-
 		memcpy(new_param->name, param->name, strlen(param->name));
 		new_param->name[strlen(param->name)] = '\0';
 		memcpy(new_param->value, param->value, strlen(param->value));
-- 
1.7.6

-- 
Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
  2011-07-31 22:28 [PATCH] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list() Jesper Juhl
@ 2011-07-31 22:33 ` Jesper Juhl
  2011-07-31 22:44 ` Joe Perches
  1 sibling, 0 replies; 7+ messages in thread
From: Jesper Juhl @ 2011-07-31 22:33 UTC (permalink / raw)
  To: Nicholas A. Bellinger
  Cc: Andy Grover, Roland Dreier, Christoph Hellwig, linux-scsi, linux-kernel

On Mon, 1 Aug 2011, Jesper Juhl wrote:

> We leak memory if the allocations for 'new_param->name' or 'new_param->value' fail.
> We also do a lot of variable assignments that are completely pointless
> if the allocations fail.
> So, let's move the allocations before the assignments and also make
> sure that we free whatever was allocated to one if the allocation for
> another fails.
> 
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
> ---

Forgot to mention that I changed the kzalloc's to kmalloc since we 
overwrite all the allocaed memory anyway, so asking for zeroed memory is 
just pointless extra work..

-- 
Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
  2011-07-31 22:28 [PATCH] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list() Jesper Juhl
  2011-07-31 22:33 ` Jesper Juhl
@ 2011-07-31 22:44 ` Joe Perches
  2011-08-01 20:32   ` [PATCH v2] " Jesper Juhl
  1 sibling, 1 reply; 7+ messages in thread
From: Joe Perches @ 2011-07-31 22:44 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Nicholas A. Bellinger, Andy Grover, Roland Dreier,
	Christoph Hellwig, linux-scsi, linux-kernel

On Mon, 2011-08-01 at 00:28 +0200, Jesper Juhl wrote:
> We leak memory if the allocations for 'new_param->name' or 'new_param->value' fail.
> We also do a lot of variable assignments that are completely pointless
> if the allocations fail.
> So, let's move the allocations before the assignments and also make
> sure that we free whatever was allocated to one if the allocation for
> another fails.

> diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
[]
> +		new_param->name = kmalloc(strlen(param->name) + 1, GFP_KERNEL);
> +		new_param->value = kmalloc(strlen(param->value) + 1, GFP_KERNEL);
[]
>  		memcpy(new_param->name, param->name, strlen(param->name));
>  		new_param->name[strlen(param->name)] = '\0';
>  		memcpy(new_param->value, param->value, strlen(param->value));

kstrdup


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
  2011-07-31 22:44 ` Joe Perches
@ 2011-08-01 20:32   ` Jesper Juhl
  2011-08-01 23:32     ` Joe Perches
  0 siblings, 1 reply; 7+ messages in thread
From: Jesper Juhl @ 2011-08-01 20:32 UTC (permalink / raw)
  To: Joe Perches
  Cc: Nicholas A. Bellinger, Andy Grover, Roland Dreier,
	Christoph Hellwig, linux-scsi, linux-kernel

On Sun, 31 Jul 2011, Joe Perches wrote:

> On Mon, 2011-08-01 at 00:28 +0200, Jesper Juhl wrote:
> > We leak memory if the allocations for 'new_param->name' or 'new_param->value' fail.
> > We also do a lot of variable assignments that are completely pointless
> > if the allocations fail.
> > So, let's move the allocations before the assignments and also make
> > sure that we free whatever was allocated to one if the allocation for
> > another fails.
> 
> > diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
> []
> > +		new_param->name = kmalloc(strlen(param->name) + 1, GFP_KERNEL);
> > +		new_param->value = kmalloc(strlen(param->value) + 1, GFP_KERNEL);
> []
> >  		memcpy(new_param->name, param->name, strlen(param->name));
> >  		new_param->name[strlen(param->name)] = '\0';
> >  		memcpy(new_param->value, param->value, strlen(param->value));
> 
> kstrdup
> 
Right, now why didn't I think of that?  - thank you :)

Here's an updated version.


From: Jesper Juhl <jj@chaosbits.net>
Subject: Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()

We leak memory if the allocations for 'new_param->name' or 'new_param->value' fail.
We also do a lot of variable assignments that are completely pointless
if the allocations fail.
So, let's move the allocations before the assignments and also make
sure that we free whatever was allocated to one if the allocation fail.
There's also a small CodingStyle fixup in there (curly braces on both
branches of if statement) since I was in the area anyway.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
 drivers/target/iscsi/iscsi_target_parameters.c |   35 +++++++++---------------
 1 files changed, 13 insertions(+), 22 deletions(-)

  compile tested only.

diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
index 252e246..2ab955d 100644
--- a/drivers/target/iscsi/iscsi_target_parameters.c
+++ b/drivers/target/iscsi/iscsi_target_parameters.c
@@ -572,6 +572,17 @@ int iscsi_copy_param_list(
 			goto err_out;
 		}
 
+		new_param->name = kstrdup(param->name, GFP_KERNEL);
+		new_param->value = kstrdup(param->value, GFP_KERNEL);
+		if (!new_param->name || !new_param->value) {
+			kfree(new_param->value);
+			kfree(new_param->name);
+			kfree(new_param);
+			pr_err("Unable to allocate memory for parameter "
+				"name/value.\n");
+			goto err_out;
+		}
+
 		new_param->set_param = param->set_param;
 		new_param->phase = param->phase;
 		new_param->scope = param->scope;
@@ -580,32 +591,12 @@ int iscsi_copy_param_list(
 		new_param->use = param->use;
 		new_param->type_range = param->type_range;
 
-		new_param->name = kzalloc(strlen(param->name) + 1, GFP_KERNEL);
-		if (!new_param->name) {
-			pr_err("Unable to allocate memory for"
-				" parameter name.\n");
-			goto err_out;
-		}
-
-		new_param->value = kzalloc(strlen(param->value) + 1,
-				GFP_KERNEL);
-		if (!new_param->value) {
-			pr_err("Unable to allocate memory for"
-				" parameter value.\n");
-			goto err_out;
-		}
-
-		memcpy(new_param->name, param->name, strlen(param->name));
-		new_param->name[strlen(param->name)] = '\0';
-		memcpy(new_param->value, param->value, strlen(param->value));
-		new_param->value[strlen(param->value)] = '\0';
-
 		list_add_tail(&new_param->p_list, &param_list->param_list);
 	}
 
-	if (!list_empty(&param_list->param_list))
+	if (!list_empty(&param_list->param_list)) {
 		*dst_param_list = param_list;
-	else {
+	} else {
 		pr_err("No parameters allocated.\n");
 		goto err_out;
 	}
-- 
1.7.6


-- 
Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
  2011-08-01 20:32   ` [PATCH v2] " Jesper Juhl
@ 2011-08-01 23:32     ` Joe Perches
  2011-08-02  8:26       ` [PATCH v3] " Jesper Juhl
  0 siblings, 1 reply; 7+ messages in thread
From: Joe Perches @ 2011-08-01 23:32 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Nicholas A. Bellinger, Andy Grover, Roland Dreier,
	Christoph Hellwig, linux-scsi, linux-kernel

On Mon, 2011-08-01 at 22:32 +0200, Jesper Juhl wrote:
> diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
[]
> @@ -572,6 +572,17 @@ int iscsi_copy_param_list(
[]
> +		if (!new_param->name || !new_param->value) {
[]
> +			pr_err("Unable to allocate memory for parameter "
> +				"name/value.\n");

I know you didn't change these lines, but could you please
remember to coalesce formats to a single line next time?


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v3] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
  2011-08-01 23:32     ` Joe Perches
@ 2011-08-02  8:26       ` Jesper Juhl
  2011-08-04 18:04         ` Nicholas A. Bellinger
  0 siblings, 1 reply; 7+ messages in thread
From: Jesper Juhl @ 2011-08-02  8:26 UTC (permalink / raw)
  To: Joe Perches
  Cc: Nicholas A. Bellinger, Andy Grover, Roland Dreier,
	Christoph Hellwig, linux-scsi, linux-kernel

On Mon, 1 Aug 2011, Joe Perches wrote:

> On Mon, 2011-08-01 at 22:32 +0200, Jesper Juhl wrote:
> > diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
> []
> > @@ -572,6 +572,17 @@ int iscsi_copy_param_list(
> []
> > +		if (!new_param->name || !new_param->value) {
> []
> > +			pr_err("Unable to allocate memory for parameter "
> > +				"name/value.\n");
> 
> I know you didn't change these lines, but could you please
> remember to coalesce formats to a single line next time?
> 

Ok, let me try once more. I hope this is now acceptable.


From: Jesper Juhl <jj@chaosbits.net>
Subject: [PATCH v3] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()

We leak memory if the allocations for 'new_param->name' or
'new_param->value' fail.

We also do a lot of variable assignments that are completely pointless
if the allocations fail.

So, let's move the allocations before the assignments and also make
sure that we free whatever was allocated to one if the allocation fail.

There's also some small CodingStyle fixups in there (curly braces on
both branches of if statement, only one variable per line) since I was
in the area anyway. And finally, error messages in the function are
put on a single line for easy grep'abillity.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
 drivers/target/iscsi/iscsi_target_parameters.c |   43 +++++++++---------------
 1 files changed, 16 insertions(+), 27 deletions(-)

diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
index 252e246..497b2e7 100644
--- a/drivers/target/iscsi/iscsi_target_parameters.c
+++ b/drivers/target/iscsi/iscsi_target_parameters.c
@@ -545,13 +545,13 @@ int iscsi_copy_param_list(
 	struct iscsi_param_list *src_param_list,
 	int leading)
 {
-	struct iscsi_param *new_param = NULL, *param = NULL;
+	struct iscsi_param *param = NULL;
+	struct iscsi_param *new_param = NULL;
 	struct iscsi_param_list *param_list = NULL;
 
 	param_list = kzalloc(sizeof(struct iscsi_param_list), GFP_KERNEL);
 	if (!param_list) {
-		pr_err("Unable to allocate memory for"
-				" struct iscsi_param_list.\n");
+		pr_err("Unable to allocate memory for struct iscsi_param_list.\n");
 		goto err_out;
 	}
 	INIT_LIST_HEAD(&param_list->param_list);
@@ -567,8 +567,17 @@ int iscsi_copy_param_list(
 
 		new_param = kzalloc(sizeof(struct iscsi_param), GFP_KERNEL);
 		if (!new_param) {
-			pr_err("Unable to allocate memory for"
-				" struct iscsi_param.\n");
+			pr_err("Unable to allocate memory for struct iscsi_param.\n");
+			goto err_out;
+		}
+
+		new_param->name = kstrdup(param->name, GFP_KERNEL);
+		new_param->value = kstrdup(param->value, GFP_KERNEL);
+		if (!new_param->value || !new_param->name) {
+			kfree(new_param->value);
+			kfree(new_param->name);
+			kfree(new_param);
+			pr_err("Unable to allocate memory for parameter name/value.\n");
 			goto err_out;
 		}
 
@@ -580,32 +589,12 @@ int iscsi_copy_param_list(
 		new_param->use = param->use;
 		new_param->type_range = param->type_range;
 
-		new_param->name = kzalloc(strlen(param->name) + 1, GFP_KERNEL);
-		if (!new_param->name) {
-			pr_err("Unable to allocate memory for"
-				" parameter name.\n");
-			goto err_out;
-		}
-
-		new_param->value = kzalloc(strlen(param->value) + 1,
-				GFP_KERNEL);
-		if (!new_param->value) {
-			pr_err("Unable to allocate memory for"
-				" parameter value.\n");
-			goto err_out;
-		}
-
-		memcpy(new_param->name, param->name, strlen(param->name));
-		new_param->name[strlen(param->name)] = '\0';
-		memcpy(new_param->value, param->value, strlen(param->value));
-		new_param->value[strlen(param->value)] = '\0';
-
 		list_add_tail(&new_param->p_list, &param_list->param_list);
 	}
 
-	if (!list_empty(&param_list->param_list))
+	if (!list_empty(&param_list->param_list)) {
 		*dst_param_list = param_list;
-	else {
+	} else {
 		pr_err("No parameters allocated.\n");
 		goto err_out;
 	}
-- 
1.7.6


-- 
Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
  2011-08-02  8:26       ` [PATCH v3] " Jesper Juhl
@ 2011-08-04 18:04         ` Nicholas A. Bellinger
  0 siblings, 0 replies; 7+ messages in thread
From: Nicholas A. Bellinger @ 2011-08-04 18:04 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: Joe Perches, linux-scsi, linux-kernel, target-devel

On Tue, 2011-08-02 at 10:26 +0200, Jesper Juhl wrote:
> On Mon, 1 Aug 2011, Joe Perches wrote:
> 
> > On Mon, 2011-08-01 at 22:32 +0200, Jesper Juhl wrote:
> > > diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
> > []
> > > @@ -572,6 +572,17 @@ int iscsi_copy_param_list(
> > []
> > > +		if (!new_param->name || !new_param->value) {
> > []
> > > +			pr_err("Unable to allocate memory for parameter "
> > > +				"name/value.\n");
> > 
> > I know you didn't change these lines, but could you please
> > remember to coalesce formats to a single line next time?
> > 
> 
> Ok, let me try once more. I hope this is now acceptable.
> 
> 
> From: Jesper Juhl <jj@chaosbits.net>
> Subject: [PATCH v3] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list()
> 
> We leak memory if the allocations for 'new_param->name' or
> 'new_param->value' fail.
> 
> We also do a lot of variable assignments that are completely pointless
> if the allocations fail.
> 
> So, let's move the allocations before the assignments and also make
> sure that we free whatever was allocated to one if the allocation fail.
> 
> There's also some small CodingStyle fixups in there (curly braces on
> both branches of if statement, only one variable per line) since I was
> in the area anyway. And finally, error messages in the function are
> put on a single line for easy grep'abillity.
> 
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>

Hi Jesper,

This patch has been committed as 83f8b803171 into
lio-core-2.6.git/master, and will be queued into the next set of target
updates.

Thanks!

--nab

> ---
>  drivers/target/iscsi/iscsi_target_parameters.c |   43 +++++++++---------------
>  1 files changed, 16 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
> index 252e246..497b2e7 100644
> --- a/drivers/target/iscsi/iscsi_target_parameters.c
> +++ b/drivers/target/iscsi/iscsi_target_parameters.c
> @@ -545,13 +545,13 @@ int iscsi_copy_param_list(
>  	struct iscsi_param_list *src_param_list,
>  	int leading)
>  {
> -	struct iscsi_param *new_param = NULL, *param = NULL;
> +	struct iscsi_param *param = NULL;
> +	struct iscsi_param *new_param = NULL;
>  	struct iscsi_param_list *param_list = NULL;
>  
>  	param_list = kzalloc(sizeof(struct iscsi_param_list), GFP_KERNEL);
>  	if (!param_list) {
> -		pr_err("Unable to allocate memory for"
> -				" struct iscsi_param_list.\n");
> +		pr_err("Unable to allocate memory for struct iscsi_param_list.\n");
>  		goto err_out;
>  	}
>  	INIT_LIST_HEAD(&param_list->param_list);
> @@ -567,8 +567,17 @@ int iscsi_copy_param_list(
>  
>  		new_param = kzalloc(sizeof(struct iscsi_param), GFP_KERNEL);
>  		if (!new_param) {
> -			pr_err("Unable to allocate memory for"
> -				" struct iscsi_param.\n");
> +			pr_err("Unable to allocate memory for struct iscsi_param.\n");
> +			goto err_out;
> +		}
> +
> +		new_param->name = kstrdup(param->name, GFP_KERNEL);
> +		new_param->value = kstrdup(param->value, GFP_KERNEL);
> +		if (!new_param->value || !new_param->name) {
> +			kfree(new_param->value);
> +			kfree(new_param->name);
> +			kfree(new_param);
> +			pr_err("Unable to allocate memory for parameter name/value.\n");
>  			goto err_out;
>  		}
>  
> @@ -580,32 +589,12 @@ int iscsi_copy_param_list(
>  		new_param->use = param->use;
>  		new_param->type_range = param->type_range;
>  
> -		new_param->name = kzalloc(strlen(param->name) + 1, GFP_KERNEL);
> -		if (!new_param->name) {
> -			pr_err("Unable to allocate memory for"
> -				" parameter name.\n");
> -			goto err_out;
> -		}
> -
> -		new_param->value = kzalloc(strlen(param->value) + 1,
> -				GFP_KERNEL);
> -		if (!new_param->value) {
> -			pr_err("Unable to allocate memory for"
> -				" parameter value.\n");
> -			goto err_out;
> -		}
> -
> -		memcpy(new_param->name, param->name, strlen(param->name));
> -		new_param->name[strlen(param->name)] = '\0';
> -		memcpy(new_param->value, param->value, strlen(param->value));
> -		new_param->value[strlen(param->value)] = '\0';
> -
>  		list_add_tail(&new_param->p_list, &param_list->param_list);
>  	}
>  
> -	if (!list_empty(&param_list->param_list))
> +	if (!list_empty(&param_list->param_list)) {
>  		*dst_param_list = param_list;
> -	else {
> +	} else {
>  		pr_err("No parameters allocated.\n");
>  		goto err_out;
>  	}
> -- 
> 1.7.6
> 
> 
> -- 
> Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
> Don't top-post http://www.catb.org/jargon/html/T/top-post.html
> Plain text mails only, please.
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-08-04 18:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-31 22:28 [PATCH] Fix leak in drivers/target/iscsi/iscsi_target_parameters.c::iscsi_copy_param_list() Jesper Juhl
2011-07-31 22:33 ` Jesper Juhl
2011-07-31 22:44 ` Joe Perches
2011-08-01 20:32   ` [PATCH v2] " Jesper Juhl
2011-08-01 23:32     ` Joe Perches
2011-08-02  8:26       ` [PATCH v3] " Jesper Juhl
2011-08-04 18:04         ` Nicholas A. Bellinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®