public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH]mempool.c : clean up type-casting twice
@ 2009-07-05  2:48 Figo.zhang
  2009-07-05  3:01 ` Ingo Molnar
  2009-07-05  4:04 ` [PATCH v2]mempool.c " Figo.zhang
  0 siblings, 2 replies; 9+ messages in thread
From: Figo.zhang @ 2009-07-05  2:48 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: lkml

clean up type-casting twice

Signed-off-by: Figo.zhang <figo1802@gmail.com>
---   
mm/mempool.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/mm/mempool.c b/mm/mempool.c
index a46eb1b..0aec628 100644
--- a/mm/mempool.c
+++ b/mm/mempool.c
@@ -303,7 +303,7 @@ EXPORT_SYMBOL(mempool_free_slab);
  */
 void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
 {
-	size_t size = (size_t)(long)pool_data;
+	size_t size = (size_t)pool_data;
 	return kmalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kmalloc);
@@ -327,14 +327,14 @@ EXPORT_SYMBOL(mempool_kfree);
  */
 void *mempool_alloc_pages(gfp_t gfp_mask, void *pool_data)
 {
-	int order = (int)(long)pool_data;
+	int order = (int)pool_data;
 	return alloc_pages(gfp_mask, order);
 }
 EXPORT_SYMBOL(mempool_alloc_pages);
 
 void mempool_free_pages(void *element, void *pool_data)
 {
-	int order = (int)(long)pool_data;
+	int order = (int)pool_data;
 	__free_pages(element, order);
 }
 EXPORT_SYMBOL(mempool_free_pages);



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

* Re: [PATCH]mempool.c : clean up type-casting twice
  2009-07-05  2:48 [PATCH]mempool.c : clean up type-casting twice Figo.zhang
@ 2009-07-05  3:01 ` Ingo Molnar
  2009-07-05  3:11   ` Figo.zhang
  2009-07-05  4:04 ` [PATCH v2]mempool.c " Figo.zhang
  1 sibling, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2009-07-05  3:01 UTC (permalink / raw)
  To: Figo.zhang; +Cc: Linus Torvalds, Andrew Morton, lkml


* Figo.zhang <figo1802@gmail.com> wrote:

> clean up type-casting twice
> 
> Signed-off-by: Figo.zhang <figo1802@gmail.com>
> ---   
> mm/mempool.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/mempool.c b/mm/mempool.c
> index a46eb1b..0aec628 100644
> --- a/mm/mempool.c
> +++ b/mm/mempool.c
> @@ -303,7 +303,7 @@ EXPORT_SYMBOL(mempool_free_slab);
>   */
>  void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
>  {
> -	size_t size = (size_t)(long)pool_data;
> +	size_t size = (size_t)pool_data;
>  	return kmalloc(size, gfp_mask);
>  }
>  EXPORT_SYMBOL(mempool_kmalloc);
> @@ -327,14 +327,14 @@ EXPORT_SYMBOL(mempool_kfree);
>   */
>  void *mempool_alloc_pages(gfp_t gfp_mask, void *pool_data)
>  {
> -	int order = (int)(long)pool_data;
> +	int order = (int)pool_data;
>  	return alloc_pages(gfp_mask, order);
>  }
>  EXPORT_SYMBOL(mempool_alloc_pages);
>  
>  void mempool_free_pages(void *element, void *pool_data)
>  {
> -	int order = (int)(long)pool_data;
> +	int order = (int)pool_data;
>  	__free_pages(element, order);

What's the motivation?

On 64-bit platforms, casting from a pointer (64-bit) straight to int 
(32-bit) can lose information and is thus a potential source of 
bugs, so certain compilers will warn about it with:

   warning: cast from pointer to integer of different size

The double cast is a "I know what I'm doing" signal.

	Ingo

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

* Re: [PATCH]mempool.c : clean up type-casting twice
  2009-07-05  3:01 ` Ingo Molnar
@ 2009-07-05  3:11   ` Figo.zhang
  0 siblings, 0 replies; 9+ messages in thread
From: Figo.zhang @ 2009-07-05  3:11 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Linus Torvalds, Andrew Morton, lkml

On Sun, 2009-07-05 at 05:01 +0200, Ingo Molnar wrote:
> * Figo.zhang <figo1802@gmail.com> wrote:
> 
> > clean up type-casting twice
> > 
> > Signed-off-by: Figo.zhang <figo1802@gmail.com>
> > ---   
> > mm/mempool.c |    6 +++---
> >  1 files changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/mm/mempool.c b/mm/mempool.c
> > index a46eb1b..0aec628 100644
> > --- a/mm/mempool.c
> > +++ b/mm/mempool.c
> > @@ -303,7 +303,7 @@ EXPORT_SYMBOL(mempool_free_slab);
> >   */
> >  void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
> >  {
> > -	size_t size = (size_t)(long)pool_data;
> > +	size_t size = (size_t)pool_data;
> >  	return kmalloc(size, gfp_mask);
> >  }
> >  EXPORT_SYMBOL(mempool_kmalloc);
> > @@ -327,14 +327,14 @@ EXPORT_SYMBOL(mempool_kfree);
> >   */
> >  void *mempool_alloc_pages(gfp_t gfp_mask, void *pool_data)
> >  {
> > -	int order = (int)(long)pool_data;
> > +	int order = (int)pool_data;
> >  	return alloc_pages(gfp_mask, order);
> >  }
> >  EXPORT_SYMBOL(mempool_alloc_pages);
> >  
> >  void mempool_free_pages(void *element, void *pool_data)
> >  {
> > -	int order = (int)(long)pool_data;
> > +	int order = (int)pool_data;
> >  	__free_pages(element, order);
> 
> What's the motivation?
> 
> On 64-bit platforms, casting from a pointer (64-bit) straight to int 
> (32-bit) can lose information and is thus a potential source of 
> bugs, so certain compilers will warn about it with:
> 
>    warning: cast from pointer to integer of different size
> 
> The double cast is a "I know what I'm doing" signal.
> 

thanks.


void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
{
	size_t size = (size_t)(long)pool_data;
	return kmalloc(size, gfp_mask);
}

void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data)
{
	size_t size = (size_t) pool_data;
	return kzalloc(size, gfp_mask);
}

at this point, is it no need for type-casting twice ? because size_t is
typedef "unsigned int" in x86_32, "unsigned long " in x86_64.

Best,
Figo.zhang


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

* [PATCH v2]mempool.c : clean up type-casting twice
  2009-07-05  2:48 [PATCH]mempool.c : clean up type-casting twice Figo.zhang
  2009-07-05  3:01 ` Ingo Molnar
@ 2009-07-05  4:04 ` Figo.zhang
  2009-07-05  8:48   ` Ingo Molnar
  2009-07-05  9:01   ` [PATCH v3]mempool.c " Figo.zhang
  1 sibling, 2 replies; 9+ messages in thread
From: Figo.zhang @ 2009-07-05  4:04 UTC (permalink / raw)
  To: Linus Torvalds, Ingo Molnar; +Cc: Andrew Morton, lkml

clean up type-casting twice. "size_t" typedef as "unsigned long" in 64-bit system,
and "unsigned int" in 32-bit system.

Signed-off-by: Figo.zhang <figo1802@gmail.com>
---   
mm/mempool.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/mm/mempool.c b/mm/mempool.c
index a46eb1b..bd22982 100644
--- a/mm/mempool.c
+++ b/mm/mempool.c
@@ -303,7 +303,7 @@ EXPORT_SYMBOL(mempool_free_slab);
  */
 void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
 {
-	size_t size = (size_t)(long)pool_data;
+	size_t size = (size_t) pool_data;
 	return kmalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kmalloc);



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

* Re: [PATCH v2]mempool.c : clean up type-casting twice
  2009-07-05  4:04 ` [PATCH v2]mempool.c " Figo.zhang
@ 2009-07-05  8:48   ` Ingo Molnar
  2009-07-05  9:01   ` [PATCH v3]mempool.c " Figo.zhang
  1 sibling, 0 replies; 9+ messages in thread
From: Ingo Molnar @ 2009-07-05  8:48 UTC (permalink / raw)
  To: Figo.zhang; +Cc: Linus Torvalds, Andrew Morton, lkml


* Figo.zhang <figo1802@gmail.com> wrote:

> clean up type-casting twice. "size_t" typedef as "unsigned long" in 64-bit system,
> and "unsigned int" in 32-bit system.
> 
> Signed-off-by: Figo.zhang <figo1802@gmail.com>
> ---   
> mm/mempool.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/mm/mempool.c b/mm/mempool.c
> index a46eb1b..bd22982 100644
> --- a/mm/mempool.c
> +++ b/mm/mempool.c
> @@ -303,7 +303,7 @@ EXPORT_SYMBOL(mempool_free_slab);
>   */
>  void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
>  {
> -	size_t size = (size_t)(long)pool_data;
> +	size_t size = (size_t) pool_data;
>  	return kmalloc(size, gfp_mask);
>  }
>  EXPORT_SYMBOL(mempool_kmalloc);

(Style detail: please dont add spaces to casts. That should be fixed 
in mempool_kzalloc() too btw.)

Looks good otherwise - size_t ought to be long on all 64-bit 
architectures.

	Ingo

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

* [PATCH v3]mempool.c : clean up type-casting twice
  2009-07-05  4:04 ` [PATCH v2]mempool.c " Figo.zhang
  2009-07-05  8:48   ` Ingo Molnar
@ 2009-07-05  9:01   ` Figo.zhang
  2009-07-05  9:04     ` Ingo Molnar
  2009-07-05  9:20     ` [PATCH v4]mempool.c " Figo.zhang
  1 sibling, 2 replies; 9+ messages in thread
From: Figo.zhang @ 2009-07-05  9:01 UTC (permalink / raw)
  To: Linus Torvalds, Ingo Molnar; +Cc: Andrew Morton, lkml

clean up type-casting twice. "size_t" typedef as "unsigned long" in 64-bit system,
and "unsigned int" in 32-bit system.

in v3, remove the space to casts.

Signed-off-by: Figo.zhang <figo1802@gmail.com>
---    
mm/mempool.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/mempool.c b/mm/mempool.c
index a46eb1b..32e75d4 100644
--- a/mm/mempool.c
+++ b/mm/mempool.c
@@ -303,14 +303,14 @@ EXPORT_SYMBOL(mempool_free_slab);
  */
 void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
 {
-	size_t size = (size_t)(long)pool_data;
+	size_t size = (size_t)pool_data;
 	return kmalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kmalloc);
 
 void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data)
 {
-	size_t size = (size_t) pool_data;
+	size_t size = (size_t)pool_data;
 	return kzalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kzalloc);



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

* Re: [PATCH v3]mempool.c : clean up type-casting twice
  2009-07-05  9:01   ` [PATCH v3]mempool.c " Figo.zhang
@ 2009-07-05  9:04     ` Ingo Molnar
  2009-07-05  9:13       ` Figo.zhang
  2009-07-05  9:20     ` [PATCH v4]mempool.c " Figo.zhang
  1 sibling, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2009-07-05  9:04 UTC (permalink / raw)
  To: Figo.zhang; +Cc: Linus Torvalds, Andrew Morton, lkml


* Figo.zhang <figo1802@gmail.com> wrote:

> clean up type-casting twice. "size_t" typedef as "unsigned long" in 64-bit system,
> and "unsigned int" in 32-bit system.

[
  You should line-length limit your changelogs btw., to 60 
  characters or so. git log will add another 4 characters. The 
  ~/.vimrc magic for this is:

  autocmd BufNewFile,BufRead *.patch setlocal textwidth=60
]

> 
> in v3, remove the space to casts.
> 
> Signed-off-by: Figo.zhang <figo1802@gmail.com>
> ---    
> mm/mempool.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/mempool.c b/mm/mempool.c
> index a46eb1b..32e75d4 100644
> --- a/mm/mempool.c
> +++ b/mm/mempool.c
> @@ -303,14 +303,14 @@ EXPORT_SYMBOL(mempool_free_slab);
>   */
>  void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
>  {
> -	size_t size = (size_t)(long)pool_data;
> +	size_t size = (size_t)pool_data;
>  	return kmalloc(size, gfp_mask);
>  }
>  EXPORT_SYMBOL(mempool_kmalloc);
>  
>  void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data)
>  {
> -	size_t size = (size_t) pool_data;
> +	size_t size = (size_t)pool_data;
>  	return kzalloc(size, gfp_mask);
>  }
>  EXPORT_SYMBOL(mempool_kzalloc);

Acked-by: Ingo Molnar <mingo@elte.hu>

	Ingo

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

* Re: [PATCH v3]mempool.c : clean up type-casting twice
  2009-07-05  9:04     ` Ingo Molnar
@ 2009-07-05  9:13       ` Figo.zhang
  0 siblings, 0 replies; 9+ messages in thread
From: Figo.zhang @ 2009-07-05  9:13 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Linus Torvalds, Andrew Morton, lkml

On Sun, 2009-07-05 at 11:04 +0200, Ingo Molnar wrote:
> * Figo.zhang <figo1802@gmail.com> wrote:
> 
> > clean up type-casting twice. "size_t" typedef as "unsigned long" in 64-bit system,
> > and "unsigned int" in 32-bit system.
> 
> [
>   You should line-length limit your changelogs btw., to 60 
>   characters or so. git log will add another 4 characters. The 
>   ~/.vimrc magic for this is:
> 
>   autocmd BufNewFile,BufRead *.patch setlocal textwidth=60
> ]

hi,Ingo,

Thanks a lot.

should i motify the log, and send it again?

Best,
Figo.zhang


> 
> > 
> > in v3, remove the space to casts.
> > 
> > Signed-off-by: Figo.zhang <figo1802@gmail.com>
> > ---    
> > mm/mempool.c |    4 ++--
> >  1 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/mm/mempool.c b/mm/mempool.c
> > index a46eb1b..32e75d4 100644
> > --- a/mm/mempool.c
> > +++ b/mm/mempool.c
> > @@ -303,14 +303,14 @@ EXPORT_SYMBOL(mempool_free_slab);
> >   */
> >  void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
> >  {
> > -	size_t size = (size_t)(long)pool_data;
> > +	size_t size = (size_t)pool_data;
> >  	return kmalloc(size, gfp_mask);
> >  }
> >  EXPORT_SYMBOL(mempool_kmalloc);
> >  
> >  void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data)
> >  {
> > -	size_t size = (size_t) pool_data;
> > +	size_t size = (size_t)pool_data;
> >  	return kzalloc(size, gfp_mask);
> >  }
> >  EXPORT_SYMBOL(mempool_kzalloc);
> 
> Acked-by: Ingo Molnar <mingo@elte.hu>
> 
> 	Ingo


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

* [PATCH v4]mempool.c : clean up type-casting twice
  2009-07-05  9:01   ` [PATCH v3]mempool.c " Figo.zhang
  2009-07-05  9:04     ` Ingo Molnar
@ 2009-07-05  9:20     ` Figo.zhang
  1 sibling, 0 replies; 9+ messages in thread
From: Figo.zhang @ 2009-07-05  9:20 UTC (permalink / raw)
  To: Linus Torvalds, Ingo Molnar; +Cc: Andrew Morton, lkml


clean up type-casting twice. "size_t" typedef as "unsigned
long" in 64-bit system, and "unsigned int" in 32-bit system.

in v3, remove the space to casts.

in v4, change the line-length limit for git log.

Signed-off-by: Figo.zhang <figo1802@gmail.com>
---
 
mm/mempool.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/mempool.c b/mm/mempool.c
index a46eb1b..32e75d4 100644
--- a/mm/mempool.c
+++ b/mm/mempool.c
@@ -303,14 +303,14 @@ EXPORT_SYMBOL(mempool_free_slab);
  */
 void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
 {
-	size_t size = (size_t)(long)pool_data;
+	size_t size = (size_t)pool_data;
 	return kmalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kmalloc);
 
 void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data)
 {
-	size_t size = (size_t) pool_data;
+	size_t size = (size_t)pool_data;
 	return kzalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kzalloc);



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

end of thread, other threads:[~2009-07-05  9:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-05  2:48 [PATCH]mempool.c : clean up type-casting twice Figo.zhang
2009-07-05  3:01 ` Ingo Molnar
2009-07-05  3:11   ` Figo.zhang
2009-07-05  4:04 ` [PATCH v2]mempool.c " Figo.zhang
2009-07-05  8:48   ` Ingo Molnar
2009-07-05  9:01   ` [PATCH v3]mempool.c " Figo.zhang
2009-07-05  9:04     ` Ingo Molnar
2009-07-05  9:13       ` Figo.zhang
2009-07-05  9:20     ` [PATCH v4]mempool.c " Figo.zhang

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