Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-02 Thread Takashi Iwai
At Tue, 01 Feb 2005 17:15:56 +,
Paulo Marques wrote:
> 
> [1  ]
> Takashi Iwai wrote:
> > [...]
> > 
> > Thanks, that looks almost fine except:
> > 
> > 
> >>diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/sound.c 
> >>linux-2.6.11-rc2-bk9/sound/core/sound.c
> >>--- vanilla-2.6.11-rc2-bk9/sound/core/sound.c   2005-01-31 
> >>20:05:34.0 +
> >>+++ linux-2.6.11-rc2-bk9/sound/core/sound.c 2005-02-01 15:02:04.0 
> >>+
> >>@@ -401,7 +401,6 @@ EXPORT_SYMBOL(snd_hidden_kfree);
> >> EXPORT_SYMBOL(snd_hidden_vmalloc);
> >> EXPORT_SYMBOL(snd_hidden_vfree);
> >> #endif
> >>-EXPORT_SYMBOL(snd_kmalloc_strdup);
> >> EXPORT_SYMBOL(copy_to_user_fromio);
> >> EXPORT_SYMBOL(copy_from_user_toio);
> >>   /* init.c */
> > 
> > 
> > I guess here missing EXPORT(snd_hidden_kstrdup)?
> 
> Good catch.
> 
> Here is the revised patch... I hope this time everything is ok

That's perfect :)

thanks,

Takashi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-02 Thread Takashi Iwai
At Tue, 01 Feb 2005 17:15:56 +,
Paulo Marques wrote:
 
 [1  text/plain; us-ascii (7bit)]
 Takashi Iwai wrote:
  [...]
  
  Thanks, that looks almost fine except:
  
  
 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/sound.c 
 linux-2.6.11-rc2-bk9/sound/core/sound.c
 --- vanilla-2.6.11-rc2-bk9/sound/core/sound.c   2005-01-31 
 20:05:34.0 +
 +++ linux-2.6.11-rc2-bk9/sound/core/sound.c 2005-02-01 15:02:04.0 
 +
 @@ -401,7 +401,6 @@ EXPORT_SYMBOL(snd_hidden_kfree);
  EXPORT_SYMBOL(snd_hidden_vmalloc);
  EXPORT_SYMBOL(snd_hidden_vfree);
  #endif
 -EXPORT_SYMBOL(snd_kmalloc_strdup);
  EXPORT_SYMBOL(copy_to_user_fromio);
  EXPORT_SYMBOL(copy_from_user_toio);
/* init.c */
  
  
  I guess here missing EXPORT(snd_hidden_kstrdup)?
 
 Good catch.
 
 Here is the revised patch... I hope this time everything is ok

That's perfect :)

thanks,

Takashi
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
[...]
Thanks, that looks almost fine except:

diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/sound.c 
linux-2.6.11-rc2-bk9/sound/core/sound.c
--- vanilla-2.6.11-rc2-bk9/sound/core/sound.c   2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/sound.c 2005-02-01 15:02:04.0 
+
@@ -401,7 +401,6 @@ EXPORT_SYMBOL(snd_hidden_kfree);
EXPORT_SYMBOL(snd_hidden_vmalloc);
EXPORT_SYMBOL(snd_hidden_vfree);
#endif
-EXPORT_SYMBOL(snd_kmalloc_strdup);
EXPORT_SYMBOL(copy_to_user_fromio);
EXPORT_SYMBOL(copy_from_user_toio);
  /* init.c */

I guess here missing EXPORT(snd_hidden_kstrdup)?
Good catch.
Here is the revised patch... I hope this time everything is ok
--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h 
linux-2.6.11-rc2-bk9/include/sound/core.h
--- vanilla-2.6.11-rc2-bk9/include/sound/core.h 2005-01-31 20:05:33.0 
+
+++ linux-2.6.11-rc2-bk9/include/sound/core.h   2005-02-01 15:02:04.0 
+
@@ -291,6 +291,7 @@ void *snd_hidden_kcalloc(size_t n, size_
 void snd_hidden_kfree(const void *obj);
 void *snd_hidden_vmalloc(unsigned long size);
 void snd_hidden_vfree(void *obj);
+char *snd_hidden_kstrdup(const char *s, int flags);
 #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags)
 #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags)
 #define kfree(obj) snd_hidden_kfree(obj)
@@ -300,6 +301,7 @@ void snd_hidden_vfree(void *obj);
 #define vmalloc_nocheck(size) snd_wrapper_vmalloc(size)
 #define kfree_nocheck(obj) snd_wrapper_kfree(obj)
 #define vfree_nocheck(obj) snd_wrapper_vfree(obj)
+#define kstrdup(s, flags)  snd_hidden_kstrdup(s, flags)
 #else
 #define snd_memory_init() /*NOP*/
 #define snd_memory_done() /*NOP*/
@@ -310,7 +312,6 @@ void snd_hidden_vfree(void *obj);
 #define kfree_nocheck(obj) kfree(obj)
 #define vfree_nocheck(obj) vfree(obj)
 #endif
-char *snd_kmalloc_strdup(const char *string, int flags);
 int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, 
size_t count);
 int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, 
size_t count);
 
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c 
linux-2.6.11-rc2-bk9/sound/core/info.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info.c2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/info.c  2005-02-01 15:02:04.0 
+
@@ -24,6 +24,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
if (entry == NULL)
return NULL;
-   entry->name = snd_kmalloc_strdup(name, GFP_KERNEL);
+   entry->name = kstrdup(name, GFP_KERNEL);
if (entry->name == NULL) {
kfree(entry);
return NULL;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c 
linux-2.6.11-rc2-bk9/sound/core/info_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c2004-12-24 
21:34:01.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c  2005-02-01 15:27:43.0 
+
@@ -22,6 +22,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
x = NULL;
}
} else {
-   x = snd_kmalloc_strdup(string, GFP_KERNEL);
+   x = kstrdup(string, GFP_KERNEL);
if (x == NULL) {
up();
return -ENOMEM;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c 
linux-2.6.11-rc2-bk9/sound/core/memory.c
--- vanilla-2.6.11-rc2-bk9/sound/core/memory.c  2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/memory.c2005-02-01 15:02:04.0 
+
@@ -184,6 +184,20 @@ void snd_hidden_vfree(void *obj)
snd_wrapper_vfree(obj);
 }
 
+char *snd_hidden_kstrdup(const char *s, int flags)
+{
+   int len;
+   char *buf;
+   
+   if (!s) return NULL;
+   
+   len = strlen(s) + 1;
+   buf = _snd_kmalloc(len, flags);
+   if (buf)
+   memcpy(buf, s, len);
+   return buf;
+}
+
 static void snd_memory_info_read(snd_info_entry_t *entry, snd_info_buffer_t * 
buffer)
 {
snd_iprintf(buffer, "kmalloc: %li bytes\n", snd_alloc_kmalloc);
@@ -214,36 +228,9 @@ int __exit snd_memory_info_done(void)
return 0;
 }
 
-#else
-
-#define _snd_kmalloc kmalloc
-
 #endif /* CONFIG_SND_DEBUG_MEMORY */
 
 /**
- * snd_kmalloc_strdup - copy the string
- * @string: the original string
- * @flags: allocation conditions, GFP_XXX
- *
- * Allocates a memory chunk via kmalloc() and copies the string to it.
- *
- * Returns the pointer, or NULL if no enoguh memory.
- */
-char 

Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue, 01 Feb 2005 15:39:25 +,
Paulo Marques wrote:
> 
> [1  ]
> Takashi Iwai wrote:
> > At Tue, 01 Feb 2005 13:07:25 +,
> > Paulo Marques wrote:
> > 
> >>I thought of going all the way and changing the callers of kstrdup in 
> >>sound to use kfree, so that it would work without debugging memory 
> >>allocated for strdup'ed strings.
> >>
> >>However the code there already uses kfree, just not the standard kfree 
> >>because it might have been defined to something else in core.h if 
> >>CONFIG_SND_DEBUG_MEMORY is set.
> >>
> >>We could still go all the way and carry on with this approach: use the 
> >>standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
> >>kstrdup to be an internal sound function in sound/core/memory.c when 
> >>CONFIG_SND_DEBUG_MEMORY is set.
> > 
> > 
> > This sounds good.  We can do just like normal kmalloc:
> > 
> > #ifdef CONFIG_SND_DEBUG_MEMORY
> > ...
> > #define kstrdup(s) my_kstrdup_wrapper(s)
> > #endif
> > 
> > 
> >>Do you prefer that I do another patch to do this, or that I just drop 
> >>the patch and leave snd_kmalloc_strdup alone?
> > 
> > 
> > Heh, it's up to you ;)  Using kstrdup() in normal cases would be
> > better, of course.
> 
> Ok, how about this patch, then?

Thanks, that looks almost fine except:

> diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/sound.c 
> linux-2.6.11-rc2-bk9/sound/core/sound.c
> --- vanilla-2.6.11-rc2-bk9/sound/core/sound.c 2005-01-31 20:05:34.0 
> +
> +++ linux-2.6.11-rc2-bk9/sound/core/sound.c   2005-02-01 15:02:04.0 
> +
> @@ -401,7 +401,6 @@ EXPORT_SYMBOL(snd_hidden_kfree);
>  EXPORT_SYMBOL(snd_hidden_vmalloc);
>  EXPORT_SYMBOL(snd_hidden_vfree);
>  #endif
> -EXPORT_SYMBOL(snd_kmalloc_strdup);
>  EXPORT_SYMBOL(copy_to_user_fromio);
>  EXPORT_SYMBOL(copy_from_user_toio);
>/* init.c */

I guess here missing EXPORT(snd_hidden_kstrdup)?


Takashi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
At Tue, 01 Feb 2005 13:07:25 +,
Paulo Marques wrote:
I thought of going all the way and changing the callers of kstrdup in 
sound to use kfree, so that it would work without debugging memory 
allocated for strdup'ed strings.

However the code there already uses kfree, just not the standard kfree 
because it might have been defined to something else in core.h if 
CONFIG_SND_DEBUG_MEMORY is set.

We could still go all the way and carry on with this approach: use the 
standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
kstrdup to be an internal sound function in sound/core/memory.c when 
CONFIG_SND_DEBUG_MEMORY is set.

This sounds good.  We can do just like normal kmalloc:
#ifdef CONFIG_SND_DEBUG_MEMORY
...
#define kstrdup(s) my_kstrdup_wrapper(s)
#endif

Do you prefer that I do another patch to do this, or that I just drop 
the patch and leave snd_kmalloc_strdup alone?

Heh, it's up to you ;)  Using kstrdup() in normal cases would be
better, of course.
Ok, how about this patch, then?
This was just compile-tested (with and without CONFIG_SND_DEBUG_MEMORY), 
but it seems correct...

--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h 
linux-2.6.11-rc2-bk9/include/sound/core.h
--- vanilla-2.6.11-rc2-bk9/include/sound/core.h 2005-01-31 20:05:33.0 
+
+++ linux-2.6.11-rc2-bk9/include/sound/core.h   2005-02-01 15:02:04.0 
+
@@ -291,6 +291,7 @@ void *snd_hidden_kcalloc(size_t n, size_
 void snd_hidden_kfree(const void *obj);
 void *snd_hidden_vmalloc(unsigned long size);
 void snd_hidden_vfree(void *obj);
+char *snd_hidden_kstrdup(const char *s, int flags);
 #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags)
 #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags)
 #define kfree(obj) snd_hidden_kfree(obj)
@@ -300,6 +301,7 @@ void snd_hidden_vfree(void *obj);
 #define vmalloc_nocheck(size) snd_wrapper_vmalloc(size)
 #define kfree_nocheck(obj) snd_wrapper_kfree(obj)
 #define vfree_nocheck(obj) snd_wrapper_vfree(obj)
+#define kstrdup(s, flags)  snd_hidden_kstrdup(s, flags)
 #else
 #define snd_memory_init() /*NOP*/
 #define snd_memory_done() /*NOP*/
@@ -310,7 +312,6 @@ void snd_hidden_vfree(void *obj);
 #define kfree_nocheck(obj) kfree(obj)
 #define vfree_nocheck(obj) vfree(obj)
 #endif
-char *snd_kmalloc_strdup(const char *string, int flags);
 int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, 
size_t count);
 int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, 
size_t count);
 
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c 
linux-2.6.11-rc2-bk9/sound/core/info.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info.c2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/info.c  2005-02-01 15:02:04.0 
+
@@ -24,6 +24,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
if (entry == NULL)
return NULL;
-   entry->name = snd_kmalloc_strdup(name, GFP_KERNEL);
+   entry->name = kstrdup(name, GFP_KERNEL);
if (entry->name == NULL) {
kfree(entry);
return NULL;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c 
linux-2.6.11-rc2-bk9/sound/core/info_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c2004-12-24 
21:34:01.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c  2005-02-01 15:27:43.0 
+
@@ -22,6 +22,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
x = NULL;
}
} else {
-   x = snd_kmalloc_strdup(string, GFP_KERNEL);
+   x = kstrdup(string, GFP_KERNEL);
if (x == NULL) {
up();
return -ENOMEM;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c 
linux-2.6.11-rc2-bk9/sound/core/memory.c
--- vanilla-2.6.11-rc2-bk9/sound/core/memory.c  2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/memory.c2005-02-01 15:02:04.0 
+
@@ -184,6 +184,20 @@ void snd_hidden_vfree(void *obj)
snd_wrapper_vfree(obj);
 }
 
+char *snd_hidden_kstrdup(const char *s, int flags)
+{
+   int len;
+   char *buf;
+   
+   if (!s) return NULL;
+   
+   len = strlen(s) + 1;
+   buf = _snd_kmalloc(len, flags);
+   if (buf)
+   memcpy(buf, s, len);
+   return buf;
+}
+
 static void snd_memory_info_read(snd_info_entry_t *entry, snd_info_buffer_t * 
buffer)
 {
snd_iprintf(buffer, "kmalloc: %li bytes\n", snd_alloc_kmalloc);
@@ -214,36 

Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue, 01 Feb 2005 13:07:25 +,
Paulo Marques wrote:
> 
> I thought of going all the way and changing the callers of kstrdup in 
> sound to use kfree, so that it would work without debugging memory 
> allocated for strdup'ed strings.
> 
> However the code there already uses kfree, just not the standard kfree 
> because it might have been defined to something else in core.h if 
> CONFIG_SND_DEBUG_MEMORY is set.
> 
> We could still go all the way and carry on with this approach: use the 
> standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
> kstrdup to be an internal sound function in sound/core/memory.c when 
> CONFIG_SND_DEBUG_MEMORY is set.

This sounds good.  We can do just like normal kmalloc:

#ifdef CONFIG_SND_DEBUG_MEMORY
...
#define kstrdup(s) my_kstrdup_wrapper(s)
#endif

> Do you prefer that I do another patch to do this, or that I just drop 
> the patch and leave snd_kmalloc_strdup alone?

Heh, it's up to you ;)  Using kstrdup() in normal cases would be
better, of course.


Takashi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
[...]
The compile should be fine but it may result in memory corruption
since kmalloc/kfree become wrappers when CONFIG_SND_DEBUG_MEMORY is
set.  See include/sound/core.h.
Ok, I see what you mean. I'm sorry I've missed this, but you must admit 
that code like this:

#define kmalloc(size, flags) snd_hidden_kmalloc(size, flags)
#define kfree(obj) snd_hidden_kfree(obj)
in sound/core.h make the code really hard to read :P
I thought of going all the way and changing the callers of kstrdup in 
sound to use kfree, so that it would work without debugging memory 
allocated for strdup'ed strings.

However the code there already uses kfree, just not the standard kfree 
because it might have been defined to something else in core.h if 
CONFIG_SND_DEBUG_MEMORY is set.

We could still go all the way and carry on with this approach: use the 
standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
kstrdup to be an internal sound function in sound/core/memory.c when 
CONFIG_SND_DEBUG_MEMORY is set.

Do you prefer that I do another patch to do this, or that I just drop 
the patch and leave snd_kmalloc_strdup alone?

--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue, 01 Feb 2005 12:27:44 +,
Paulo Marques wrote:
> 
> Takashi Iwai wrote:
> > At Tue,  1 Feb 2005 03:28:46 +,
> > "" <[EMAIL PROTECTED]> wrote:
> > 
> >>[1  ]
> >>
> >>This patch removes the strdup implementation from the sound core
> >>(snd_kmalloc_strdup), and updates it to use the kstrdup library function.
> >>
> >>Signed-off-by: Paulo Marques <[EMAIL PROTECTED]>
> > 
> > 
> > This patch won't work properly if CONFIG_SND_DEBUG_MEMORY is set...
> 
> Humm.. compiles ok here.
> 
> I just rebuilt a vanilla 2.6.11-rc2-bk9 tree, applied the patches, 
> selected CONFIG_SND_DEBUG and CONFIG_SND_DEBUG_MEMORY, and it compiled 
> just fine.
> 
> I had already tested the patches with an allyesconfig, but tested it 
> anyway just to be sure.
> 
> Are you sure you also applied the first patch in the series that creates 
> the kstrdup library function? If you are, can you send me your .config 
> so that I can test it here?

The compile should be fine but it may result in memory corruption
since kmalloc/kfree become wrappers when CONFIG_SND_DEBUG_MEMORY is
set.  See include/sound/core.h.


Takashi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
At Tue,  1 Feb 2005 03:28:46 +,
"" <[EMAIL PROTECTED]> wrote:
[1  ]
This patch removes the strdup implementation from the sound core
(snd_kmalloc_strdup), and updates it to use the kstrdup library function.
Signed-off-by: Paulo Marques <[EMAIL PROTECTED]>

This patch won't work properly if CONFIG_SND_DEBUG_MEMORY is set...
Humm.. compiles ok here.
I just rebuilt a vanilla 2.6.11-rc2-bk9 tree, applied the patches, 
selected CONFIG_SND_DEBUG and CONFIG_SND_DEBUG_MEMORY, and it compiled 
just fine.

I had already tested the patches with an allyesconfig, but tested it 
anyway just to be sure.

Are you sure you also applied the first patch in the series that creates 
the kstrdup library function? If you are, can you send me your .config 
so that I can test it here?

--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue,  1 Feb 2005 03:28:46 +,
"" <[EMAIL PROTECTED]> wrote:
> 
> [1  ]
> 
> This patch removes the strdup implementation from the sound core
> (snd_kmalloc_strdup), and updates it to use the kstrdup library function.
> 
> Signed-off-by: Paulo Marques <[EMAIL PROTECTED]>

This patch won't work properly if CONFIG_SND_DEBUG_MEMORY is set...


Takashi

> 
> --
> Paulo Marques - www.grupopie.com
>  
> All that is necessary for the triumph of evil is that good men do nothing.
> Edmund Burke (1729 - 1797)
> [2 patch7 ]
> diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h 
> linux-2.6.11-rc2-bk9/include/sound/core.h
> --- vanilla-2.6.11-rc2-bk9/include/sound/core.h   2005-01-31 
> 20:05:33.0 +
> +++ linux-2.6.11-rc2-bk9/include/sound/core.h 2005-01-31 21:31:54.0 
> +
> @@ -310,7 +310,6 @@ void snd_hidden_vfree(void *obj);
>  #define kfree_nocheck(obj) kfree(obj)
>  #define vfree_nocheck(obj) vfree(obj)
>  #endif
> -char *snd_kmalloc_strdup(const char *string, int flags);
>  int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, 
> size_t count);
>  int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, 
> size_t count);
>  
> diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c 
> linux-2.6.11-rc2-bk9/sound/core/info.c
> --- vanilla-2.6.11-rc2-bk9/sound/core/info.c  2005-01-31 20:05:34.0 
> +
> +++ linux-2.6.11-rc2-bk9/sound/core/info.c2005-01-31 21:31:02.0 
> +
> @@ -24,6 +24,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
>   entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
>   if (entry == NULL)
>   return NULL;
> - entry->name = snd_kmalloc_strdup(name, GFP_KERNEL);
> + entry->name = kstrdup(name, GFP_KERNEL);
>   if (entry->name == NULL) {
>   kfree(entry);
>   return NULL;
> diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c 
> linux-2.6.11-rc2-bk9/sound/core/info_oss.c
> --- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c  2004-12-24 
> 21:34:01.0 +
> +++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c2005-01-31 
> 21:30:35.0 +
> @@ -27,6 +27,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  
>  #if defined(CONFIG_SND_OSSEMUL) && defined(CONFIG_PROC_FS)
>  
> @@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
>   x = NULL;
>   }
>   } else {
> - x = snd_kmalloc_strdup(string, GFP_KERNEL);
> + x = kstrdup(string, GFP_KERNEL);
>   if (x == NULL) {
>   up();
>   return -ENOMEM;
> diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c 
> linux-2.6.11-rc2-bk9/sound/core/memory.c
> --- vanilla-2.6.11-rc2-bk9/sound/core/memory.c2005-01-31 
> 20:05:34.0 +
> +++ linux-2.6.11-rc2-bk9/sound/core/memory.c  2005-01-31 21:30:07.0 
> +
> @@ -221,29 +221,6 @@ int __exit snd_memory_info_done(void)
>  #endif /* CONFIG_SND_DEBUG_MEMORY */
>  
>  /**
> - * snd_kmalloc_strdup - copy the string
> - * @string: the original string
> - * @flags: allocation conditions, GFP_XXX
> - *
> - * Allocates a memory chunk via kmalloc() and copies the string to it.
> - *
> - * Returns the pointer, or NULL if no enoguh memory.
> - */
> -char *snd_kmalloc_strdup(const char *string, int flags)
> -{
> - size_t len;
> - char *ptr;
> -
> - if (!string)
> - return NULL;
> - len = strlen(string) + 1;
> - ptr = _snd_kmalloc(len, flags);
> - if (ptr)
> - memcpy(ptr, string, len);
> - return ptr;
> -}
> -
> -/**
>   * copy_to_user_fromio - copy data from mmio-space to user-space
>   * @dst: the destination pointer on user-space
>   * @src: the source pointer on mmio
> diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c 
> linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c
> --- vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c 2005-01-31 
> 20:05:34.0 +
> +++ linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c   2005-01-31 
> 21:30:19.0 +
> @@ -24,6 +24,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -1122,7 +1123,7 @@ static void snd_mixer_oss_proc_write(snd
>   goto __unlock;
>   }
>   tbl->oss_id = ch;
> - tbl->name = snd_kmalloc_strdup(str, GFP_KERNEL);
> + tbl->name = kstrdup(str, GFP_KERNEL);
>   if (! tbl->name) {
>   kfree(tbl);
>   goto __unlock;
> diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c 
> linux-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c
> --- vanilla-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c   2005-01-31 
> 20:05:34.0 +
> +++ 

Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue,  1 Feb 2005 03:28:46 +,
 [EMAIL PROTECTED] wrote:
 
 [1  text/plain; iso-8859-1 (quoted-printable)]
 
 This patch removes the strdup implementation from the sound core
 (snd_kmalloc_strdup), and updates it to use the kstrdup library function.
 
 Signed-off-by: Paulo Marques [EMAIL PROTECTED]

This patch won't work properly if CONFIG_SND_DEBUG_MEMORY is set...


Takashi

 
 --
 Paulo Marques - www.grupopie.com
  
 All that is necessary for the triumph of evil is that good men do nothing.
 Edmund Burke (1729 - 1797)
 [2 patch7 text/x-diff (base64)]
 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h 
 linux-2.6.11-rc2-bk9/include/sound/core.h
 --- vanilla-2.6.11-rc2-bk9/include/sound/core.h   2005-01-31 
 20:05:33.0 +
 +++ linux-2.6.11-rc2-bk9/include/sound/core.h 2005-01-31 21:31:54.0 
 +
 @@ -310,7 +310,6 @@ void snd_hidden_vfree(void *obj);
  #define kfree_nocheck(obj) kfree(obj)
  #define vfree_nocheck(obj) vfree(obj)
  #endif
 -char *snd_kmalloc_strdup(const char *string, int flags);
  int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, 
 size_t count);
  int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, 
 size_t count);
  
 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c 
 linux-2.6.11-rc2-bk9/sound/core/info.c
 --- vanilla-2.6.11-rc2-bk9/sound/core/info.c  2005-01-31 20:05:34.0 
 +
 +++ linux-2.6.11-rc2-bk9/sound/core/info.c2005-01-31 21:31:02.0 
 +
 @@ -24,6 +24,7 @@
  #include linux/vmalloc.h
  #include linux/time.h
  #include linux/smp_lock.h
 +#include linux/string.h
  #include sound/core.h
  #include sound/minors.h
  #include sound/info.h
 @@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
   entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
   if (entry == NULL)
   return NULL;
 - entry-name = snd_kmalloc_strdup(name, GFP_KERNEL);
 + entry-name = kstrdup(name, GFP_KERNEL);
   if (entry-name == NULL) {
   kfree(entry);
   return NULL;
 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c 
 linux-2.6.11-rc2-bk9/sound/core/info_oss.c
 --- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c  2004-12-24 
 21:34:01.0 +
 +++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c2005-01-31 
 21:30:35.0 +
 @@ -27,6 +27,7 @@
  #include sound/info.h
  #include sound/version.h
  #include linux/utsname.h
 +#include linux/string.h
  
  #if defined(CONFIG_SND_OSSEMUL)  defined(CONFIG_PROC_FS)
  
 @@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
   x = NULL;
   }
   } else {
 - x = snd_kmalloc_strdup(string, GFP_KERNEL);
 + x = kstrdup(string, GFP_KERNEL);
   if (x == NULL) {
   up(strings);
   return -ENOMEM;
 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c 
 linux-2.6.11-rc2-bk9/sound/core/memory.c
 --- vanilla-2.6.11-rc2-bk9/sound/core/memory.c2005-01-31 
 20:05:34.0 +
 +++ linux-2.6.11-rc2-bk9/sound/core/memory.c  2005-01-31 21:30:07.0 
 +
 @@ -221,29 +221,6 @@ int __exit snd_memory_info_done(void)
  #endif /* CONFIG_SND_DEBUG_MEMORY */
  
  /**
 - * snd_kmalloc_strdup - copy the string
 - * @string: the original string
 - * @flags: allocation conditions, GFP_XXX
 - *
 - * Allocates a memory chunk via kmalloc() and copies the string to it.
 - *
 - * Returns the pointer, or NULL if no enoguh memory.
 - */
 -char *snd_kmalloc_strdup(const char *string, int flags)
 -{
 - size_t len;
 - char *ptr;
 -
 - if (!string)
 - return NULL;
 - len = strlen(string) + 1;
 - ptr = _snd_kmalloc(len, flags);
 - if (ptr)
 - memcpy(ptr, string, len);
 - return ptr;
 -}
 -
 -/**
   * copy_to_user_fromio - copy data from mmio-space to user-space
   * @dst: the destination pointer on user-space
   * @src: the source pointer on mmio
 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c 
 linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c
 --- vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c 2005-01-31 
 20:05:34.0 +
 +++ linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c   2005-01-31 
 21:30:19.0 +
 @@ -24,6 +24,7 @@
  #include linux/smp_lock.h
  #include linux/slab.h
  #include linux/time.h
 +#include linux/string.h
  #include sound/core.h
  #include sound/minors.h
  #include sound/control.h
 @@ -1122,7 +1123,7 @@ static void snd_mixer_oss_proc_write(snd
   goto __unlock;
   }
   tbl-oss_id = ch;
 - tbl-name = snd_kmalloc_strdup(str, GFP_KERNEL);
 + tbl-name = kstrdup(str, GFP_KERNEL);
   if (! tbl-name) {
   kfree(tbl);
   goto __unlock;
 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c 
 

Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
At Tue,  1 Feb 2005 03:28:46 +,
 [EMAIL PROTECTED] wrote:
[1  text/plain; iso-8859-1 (quoted-printable)]
This patch removes the strdup implementation from the sound core
(snd_kmalloc_strdup), and updates it to use the kstrdup library function.
Signed-off-by: Paulo Marques [EMAIL PROTECTED]

This patch won't work properly if CONFIG_SND_DEBUG_MEMORY is set...
Humm.. compiles ok here.
I just rebuilt a vanilla 2.6.11-rc2-bk9 tree, applied the patches, 
selected CONFIG_SND_DEBUG and CONFIG_SND_DEBUG_MEMORY, and it compiled 
just fine.

I had already tested the patches with an allyesconfig, but tested it 
anyway just to be sure.

Are you sure you also applied the first patch in the series that creates 
the kstrdup library function? If you are, can you send me your .config 
so that I can test it here?

--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue, 01 Feb 2005 12:27:44 +,
Paulo Marques wrote:
 
 Takashi Iwai wrote:
  At Tue,  1 Feb 2005 03:28:46 +,
   [EMAIL PROTECTED] wrote:
  
 [1  text/plain; iso-8859-1 (quoted-printable)]
 
 This patch removes the strdup implementation from the sound core
 (snd_kmalloc_strdup), and updates it to use the kstrdup library function.
 
 Signed-off-by: Paulo Marques [EMAIL PROTECTED]
  
  
  This patch won't work properly if CONFIG_SND_DEBUG_MEMORY is set...
 
 Humm.. compiles ok here.
 
 I just rebuilt a vanilla 2.6.11-rc2-bk9 tree, applied the patches, 
 selected CONFIG_SND_DEBUG and CONFIG_SND_DEBUG_MEMORY, and it compiled 
 just fine.
 
 I had already tested the patches with an allyesconfig, but tested it 
 anyway just to be sure.
 
 Are you sure you also applied the first patch in the series that creates 
 the kstrdup library function? If you are, can you send me your .config 
 so that I can test it here?

The compile should be fine but it may result in memory corruption
since kmalloc/kfree become wrappers when CONFIG_SND_DEBUG_MEMORY is
set.  See include/sound/core.h.


Takashi
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
[...]
The compile should be fine but it may result in memory corruption
since kmalloc/kfree become wrappers when CONFIG_SND_DEBUG_MEMORY is
set.  See include/sound/core.h.
Ok, I see what you mean. I'm sorry I've missed this, but you must admit 
that code like this:

#define kmalloc(size, flags) snd_hidden_kmalloc(size, flags)
#define kfree(obj) snd_hidden_kfree(obj)
in sound/core.h make the code really hard to read :P
I thought of going all the way and changing the callers of kstrdup in 
sound to use kfree, so that it would work without debugging memory 
allocated for strdup'ed strings.

However the code there already uses kfree, just not the standard kfree 
because it might have been defined to something else in core.h if 
CONFIG_SND_DEBUG_MEMORY is set.

We could still go all the way and carry on with this approach: use the 
standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
kstrdup to be an internal sound function in sound/core/memory.c when 
CONFIG_SND_DEBUG_MEMORY is set.

Do you prefer that I do another patch to do this, or that I just drop 
the patch and leave snd_kmalloc_strdup alone?

--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue, 01 Feb 2005 13:07:25 +,
Paulo Marques wrote:
 
 I thought of going all the way and changing the callers of kstrdup in 
 sound to use kfree, so that it would work without debugging memory 
 allocated for strdup'ed strings.
 
 However the code there already uses kfree, just not the standard kfree 
 because it might have been defined to something else in core.h if 
 CONFIG_SND_DEBUG_MEMORY is set.
 
 We could still go all the way and carry on with this approach: use the 
 standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
 kstrdup to be an internal sound function in sound/core/memory.c when 
 CONFIG_SND_DEBUG_MEMORY is set.

This sounds good.  We can do just like normal kmalloc:

#ifdef CONFIG_SND_DEBUG_MEMORY
...
#define kstrdup(s) my_kstrdup_wrapper(s)
#endif

 Do you prefer that I do another patch to do this, or that I just drop 
 the patch and leave snd_kmalloc_strdup alone?

Heh, it's up to you ;)  Using kstrdup() in normal cases would be
better, of course.


Takashi
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
At Tue, 01 Feb 2005 13:07:25 +,
Paulo Marques wrote:
I thought of going all the way and changing the callers of kstrdup in 
sound to use kfree, so that it would work without debugging memory 
allocated for strdup'ed strings.

However the code there already uses kfree, just not the standard kfree 
because it might have been defined to something else in core.h if 
CONFIG_SND_DEBUG_MEMORY is set.

We could still go all the way and carry on with this approach: use the 
standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
kstrdup to be an internal sound function in sound/core/memory.c when 
CONFIG_SND_DEBUG_MEMORY is set.

This sounds good.  We can do just like normal kmalloc:
#ifdef CONFIG_SND_DEBUG_MEMORY
...
#define kstrdup(s) my_kstrdup_wrapper(s)
#endif

Do you prefer that I do another patch to do this, or that I just drop 
the patch and leave snd_kmalloc_strdup alone?

Heh, it's up to you ;)  Using kstrdup() in normal cases would be
better, of course.
Ok, how about this patch, then?
This was just compile-tested (with and without CONFIG_SND_DEBUG_MEMORY), 
but it seems correct...

--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h 
linux-2.6.11-rc2-bk9/include/sound/core.h
--- vanilla-2.6.11-rc2-bk9/include/sound/core.h 2005-01-31 20:05:33.0 
+
+++ linux-2.6.11-rc2-bk9/include/sound/core.h   2005-02-01 15:02:04.0 
+
@@ -291,6 +291,7 @@ void *snd_hidden_kcalloc(size_t n, size_
 void snd_hidden_kfree(const void *obj);
 void *snd_hidden_vmalloc(unsigned long size);
 void snd_hidden_vfree(void *obj);
+char *snd_hidden_kstrdup(const char *s, int flags);
 #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags)
 #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags)
 #define kfree(obj) snd_hidden_kfree(obj)
@@ -300,6 +301,7 @@ void snd_hidden_vfree(void *obj);
 #define vmalloc_nocheck(size) snd_wrapper_vmalloc(size)
 #define kfree_nocheck(obj) snd_wrapper_kfree(obj)
 #define vfree_nocheck(obj) snd_wrapper_vfree(obj)
+#define kstrdup(s, flags)  snd_hidden_kstrdup(s, flags)
 #else
 #define snd_memory_init() /*NOP*/
 #define snd_memory_done() /*NOP*/
@@ -310,7 +312,6 @@ void snd_hidden_vfree(void *obj);
 #define kfree_nocheck(obj) kfree(obj)
 #define vfree_nocheck(obj) vfree(obj)
 #endif
-char *snd_kmalloc_strdup(const char *string, int flags);
 int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, 
size_t count);
 int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, 
size_t count);
 
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c 
linux-2.6.11-rc2-bk9/sound/core/info.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info.c2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/info.c  2005-02-01 15:02:04.0 
+
@@ -24,6 +24,7 @@
 #include linux/vmalloc.h
 #include linux/time.h
 #include linux/smp_lock.h
+#include linux/string.h
 #include sound/core.h
 #include sound/minors.h
 #include sound/info.h
@@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
if (entry == NULL)
return NULL;
-   entry-name = snd_kmalloc_strdup(name, GFP_KERNEL);
+   entry-name = kstrdup(name, GFP_KERNEL);
if (entry-name == NULL) {
kfree(entry);
return NULL;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c 
linux-2.6.11-rc2-bk9/sound/core/info_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c2004-12-24 
21:34:01.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c  2005-02-01 15:27:43.0 
+
@@ -22,6 +22,7 @@
 #include sound/driver.h
 #include linux/slab.h
 #include linux/time.h
+#include linux/string.h
 #include sound/core.h
 #include sound/minors.h
 #include sound/info.h
@@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
x = NULL;
}
} else {
-   x = snd_kmalloc_strdup(string, GFP_KERNEL);
+   x = kstrdup(string, GFP_KERNEL);
if (x == NULL) {
up(strings);
return -ENOMEM;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c 
linux-2.6.11-rc2-bk9/sound/core/memory.c
--- vanilla-2.6.11-rc2-bk9/sound/core/memory.c  2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/memory.c2005-02-01 15:02:04.0 
+
@@ -184,6 +184,20 @@ void snd_hidden_vfree(void *obj)
snd_wrapper_vfree(obj);
 }
 
+char *snd_hidden_kstrdup(const char *s, int flags)
+{
+   int len;
+   char *buf;
+   
+   if (!s) return NULL;
+   
+   len = strlen(s) + 1;
+   buf = _snd_kmalloc(len, flags);
+   if (buf)
+   memcpy(buf, s, len);
+   

Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Takashi Iwai
At Tue, 01 Feb 2005 15:39:25 +,
Paulo Marques wrote:
 
 [1  text/plain; us-ascii (7bit)]
 Takashi Iwai wrote:
  At Tue, 01 Feb 2005 13:07:25 +,
  Paulo Marques wrote:
  
 I thought of going all the way and changing the callers of kstrdup in 
 sound to use kfree, so that it would work without debugging memory 
 allocated for strdup'ed strings.
 
 However the code there already uses kfree, just not the standard kfree 
 because it might have been defined to something else in core.h if 
 CONFIG_SND_DEBUG_MEMORY is set.
 
 We could still go all the way and carry on with this approach: use the 
 standard kstrdup / kfree when not CONFIG_SND_DEBUG_MEMORY, and define 
 kstrdup to be an internal sound function in sound/core/memory.c when 
 CONFIG_SND_DEBUG_MEMORY is set.
  
  
  This sounds good.  We can do just like normal kmalloc:
  
  #ifdef CONFIG_SND_DEBUG_MEMORY
  ...
  #define kstrdup(s) my_kstrdup_wrapper(s)
  #endif
  
  
 Do you prefer that I do another patch to do this, or that I just drop 
 the patch and leave snd_kmalloc_strdup alone?
  
  
  Heh, it's up to you ;)  Using kstrdup() in normal cases would be
  better, of course.
 
 Ok, how about this patch, then?

Thanks, that looks almost fine except:

 diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/sound.c 
 linux-2.6.11-rc2-bk9/sound/core/sound.c
 --- vanilla-2.6.11-rc2-bk9/sound/core/sound.c 2005-01-31 20:05:34.0 
 +
 +++ linux-2.6.11-rc2-bk9/sound/core/sound.c   2005-02-01 15:02:04.0 
 +
 @@ -401,7 +401,6 @@ EXPORT_SYMBOL(snd_hidden_kfree);
  EXPORT_SYMBOL(snd_hidden_vmalloc);
  EXPORT_SYMBOL(snd_hidden_vfree);
  #endif
 -EXPORT_SYMBOL(snd_kmalloc_strdup);
  EXPORT_SYMBOL(copy_to_user_fromio);
  EXPORT_SYMBOL(copy_from_user_toio);
/* init.c */

I guess here missing EXPORT(snd_hidden_kstrdup)?


Takashi
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-02-01 Thread Paulo Marques
Takashi Iwai wrote:
[...]
Thanks, that looks almost fine except:

diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/sound.c 
linux-2.6.11-rc2-bk9/sound/core/sound.c
--- vanilla-2.6.11-rc2-bk9/sound/core/sound.c   2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/sound.c 2005-02-01 15:02:04.0 
+
@@ -401,7 +401,6 @@ EXPORT_SYMBOL(snd_hidden_kfree);
EXPORT_SYMBOL(snd_hidden_vmalloc);
EXPORT_SYMBOL(snd_hidden_vfree);
#endif
-EXPORT_SYMBOL(snd_kmalloc_strdup);
EXPORT_SYMBOL(copy_to_user_fromio);
EXPORT_SYMBOL(copy_from_user_toio);
  /* init.c */

I guess here missing EXPORT(snd_hidden_kstrdup)?
Good catch.
Here is the revised patch... I hope this time everything is ok
--
Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h 
linux-2.6.11-rc2-bk9/include/sound/core.h
--- vanilla-2.6.11-rc2-bk9/include/sound/core.h 2005-01-31 20:05:33.0 
+
+++ linux-2.6.11-rc2-bk9/include/sound/core.h   2005-02-01 15:02:04.0 
+
@@ -291,6 +291,7 @@ void *snd_hidden_kcalloc(size_t n, size_
 void snd_hidden_kfree(const void *obj);
 void *snd_hidden_vmalloc(unsigned long size);
 void snd_hidden_vfree(void *obj);
+char *snd_hidden_kstrdup(const char *s, int flags);
 #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags)
 #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags)
 #define kfree(obj) snd_hidden_kfree(obj)
@@ -300,6 +301,7 @@ void snd_hidden_vfree(void *obj);
 #define vmalloc_nocheck(size) snd_wrapper_vmalloc(size)
 #define kfree_nocheck(obj) snd_wrapper_kfree(obj)
 #define vfree_nocheck(obj) snd_wrapper_vfree(obj)
+#define kstrdup(s, flags)  snd_hidden_kstrdup(s, flags)
 #else
 #define snd_memory_init() /*NOP*/
 #define snd_memory_done() /*NOP*/
@@ -310,7 +312,6 @@ void snd_hidden_vfree(void *obj);
 #define kfree_nocheck(obj) kfree(obj)
 #define vfree_nocheck(obj) vfree(obj)
 #endif
-char *snd_kmalloc_strdup(const char *string, int flags);
 int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, 
size_t count);
 int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, 
size_t count);
 
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c 
linux-2.6.11-rc2-bk9/sound/core/info.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info.c2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/info.c  2005-02-01 15:02:04.0 
+
@@ -24,6 +24,7 @@
 #include linux/vmalloc.h
 #include linux/time.h
 #include linux/smp_lock.h
+#include linux/string.h
 #include sound/core.h
 #include sound/minors.h
 #include sound/info.h
@@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
if (entry == NULL)
return NULL;
-   entry-name = snd_kmalloc_strdup(name, GFP_KERNEL);
+   entry-name = kstrdup(name, GFP_KERNEL);
if (entry-name == NULL) {
kfree(entry);
return NULL;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c 
linux-2.6.11-rc2-bk9/sound/core/info_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c2004-12-24 
21:34:01.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c  2005-02-01 15:27:43.0 
+
@@ -22,6 +22,7 @@
 #include sound/driver.h
 #include linux/slab.h
 #include linux/time.h
+#include linux/string.h
 #include sound/core.h
 #include sound/minors.h
 #include sound/info.h
@@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
x = NULL;
}
} else {
-   x = snd_kmalloc_strdup(string, GFP_KERNEL);
+   x = kstrdup(string, GFP_KERNEL);
if (x == NULL) {
up(strings);
return -ENOMEM;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c 
linux-2.6.11-rc2-bk9/sound/core/memory.c
--- vanilla-2.6.11-rc2-bk9/sound/core/memory.c  2005-01-31 20:05:34.0 
+
+++ linux-2.6.11-rc2-bk9/sound/core/memory.c2005-02-01 15:02:04.0 
+
@@ -184,6 +184,20 @@ void snd_hidden_vfree(void *obj)
snd_wrapper_vfree(obj);
 }
 
+char *snd_hidden_kstrdup(const char *s, int flags)
+{
+   int len;
+   char *buf;
+   
+   if (!s) return NULL;
+   
+   len = strlen(s) + 1;
+   buf = _snd_kmalloc(len, flags);
+   if (buf)
+   memcpy(buf, s, len);
+   return buf;
+}
+
 static void snd_memory_info_read(snd_info_entry_t *entry, snd_info_buffer_t * 
buffer)
 {
snd_iprintf(buffer, kmalloc: %li bytes\n, snd_alloc_kmalloc);
@@ -214,36 +228,9 @@ int __exit snd_memory_info_done(void)
return 0;
 }
 
-#else
-
-#define _snd_kmalloc kmalloc
-
 #endif /* CONFIG_SND_DEBUG_MEMORY */
 
 /**
- * snd_kmalloc_strdup - copy the string
- * @string: the original string
- * 

[PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-01-31 Thread

This patch removes the strdup implementation from the sound core
(snd_kmalloc_strdup), and updates it to use the kstrdup library function.

Signed-off-by: Paulo Marques <[EMAIL PROTECTED]>

--
Paulo Marques - www.grupopie.com
 
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h linux-2.6.11-rc2-bk9/include/sound/core.h
--- vanilla-2.6.11-rc2-bk9/include/sound/core.h	2005-01-31 20:05:33.0 +
+++ linux-2.6.11-rc2-bk9/include/sound/core.h	2005-01-31 21:31:54.0 +
@@ -310,7 +310,6 @@ void snd_hidden_vfree(void *obj);
 #define kfree_nocheck(obj) kfree(obj)
 #define vfree_nocheck(obj) vfree(obj)
 #endif
-char *snd_kmalloc_strdup(const char *string, int flags);
 int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, size_t count);
 int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, size_t count);
 
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c linux-2.6.11-rc2-bk9/sound/core/info.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info.c	2005-01-31 21:31:02.0 +
@@ -24,6 +24,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
 	entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
 	if (entry == NULL)
 		return NULL;
-	entry->name = snd_kmalloc_strdup(name, GFP_KERNEL);
+	entry->name = kstrdup(name, GFP_KERNEL);
 	if (entry->name == NULL) {
 		kfree(entry);
 		return NULL;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c linux-2.6.11-rc2-bk9/sound/core/info_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c	2004-12-24 21:34:01.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c	2005-01-31 21:30:35.0 +
@@ -27,6 +27,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #if defined(CONFIG_SND_OSSEMUL) && defined(CONFIG_PROC_FS)
 
@@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
 			x = NULL;
 		}
 	} else {
-		x = snd_kmalloc_strdup(string, GFP_KERNEL);
+		x = kstrdup(string, GFP_KERNEL);
 		if (x == NULL) {
 			up();
 			return -ENOMEM;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c linux-2.6.11-rc2-bk9/sound/core/memory.c
--- vanilla-2.6.11-rc2-bk9/sound/core/memory.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/memory.c	2005-01-31 21:30:07.0 +
@@ -221,29 +221,6 @@ int __exit snd_memory_info_done(void)
 #endif /* CONFIG_SND_DEBUG_MEMORY */
 
 /**
- * snd_kmalloc_strdup - copy the string
- * @string: the original string
- * @flags: allocation conditions, GFP_XXX
- *
- * Allocates a memory chunk via kmalloc() and copies the string to it.
- *
- * Returns the pointer, or NULL if no enoguh memory.
- */
-char *snd_kmalloc_strdup(const char *string, int flags)
-{
-	size_t len;
-	char *ptr;
-
-	if (!string)
-		return NULL;
-	len = strlen(string) + 1;
-	ptr = _snd_kmalloc(len, flags);
-	if (ptr)
-		memcpy(ptr, string, len);
-	return ptr;
-}
-
-/**
  * copy_to_user_fromio - copy data from mmio-space to user-space
  * @dst: the destination pointer on user-space
  * @src: the source pointer on mmio
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c	2005-01-31 21:30:19.0 +
@@ -24,6 +24,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -1122,7 +1123,7 @@ static void snd_mixer_oss_proc_write(snd
 			goto __unlock;
 		}
 		tbl->oss_id = ch;
-		tbl->name = snd_kmalloc_strdup(str, GFP_KERNEL);
+		tbl->name = kstrdup(str, GFP_KERNEL);
 		if (! tbl->name) {
 			kfree(tbl);
 			goto __unlock;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c linux-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c	2005-01-31 21:30:24.0 +
@@ -33,6 +33,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -2349,7 +2350,7 @@ static void snd_pcm_oss_proc_write(snd_i
 	for (setup1 = pstr->oss.setup_list; setup1->next; setup1 = setup1->next);
 	setup1->next = setup;
 }
-template.task_name = snd_kmalloc_strdup(task_name, GFP_KERNEL);
+template.task_name = kstrdup(task_name, GFP_KERNEL);
 			} else {
 buffer->error = -ENOMEM;
 			}
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/sound.c linux-2.6.11-rc2-bk9/sound/core/sound.c
--- vanilla-2.6.11-rc2-bk9/sound/core/sound.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/sound.c	2005-01-31 21:30:47.0 +
@@ -401,7 +401,6 @@ 

[PATCH 2.6] 7/7 replace snd_kmalloc_strdup by kstrdup

2005-01-31 Thread

This patch removes the strdup implementation from the sound core
(snd_kmalloc_strdup), and updates it to use the kstrdup library function.

Signed-off-by: Paulo Marques [EMAIL PROTECTED]

--
Paulo Marques - www.grupopie.com
 
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke (1729 - 1797)
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/include/sound/core.h linux-2.6.11-rc2-bk9/include/sound/core.h
--- vanilla-2.6.11-rc2-bk9/include/sound/core.h	2005-01-31 20:05:33.0 +
+++ linux-2.6.11-rc2-bk9/include/sound/core.h	2005-01-31 21:31:54.0 +
@@ -310,7 +310,6 @@ void snd_hidden_vfree(void *obj);
 #define kfree_nocheck(obj) kfree(obj)
 #define vfree_nocheck(obj) vfree(obj)
 #endif
-char *snd_kmalloc_strdup(const char *string, int flags);
 int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, size_t count);
 int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, size_t count);
 
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info.c linux-2.6.11-rc2-bk9/sound/core/info.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info.c	2005-01-31 21:31:02.0 +
@@ -24,6 +24,7 @@
 #include linux/vmalloc.h
 #include linux/time.h
 #include linux/smp_lock.h
+#include linux/string.h
 #include sound/core.h
 #include sound/minors.h
 #include sound/info.h
@@ -755,7 +756,7 @@ static snd_info_entry_t *snd_info_create
 	entry = kcalloc(1, sizeof(*entry), GFP_KERNEL);
 	if (entry == NULL)
 		return NULL;
-	entry-name = snd_kmalloc_strdup(name, GFP_KERNEL);
+	entry-name = kstrdup(name, GFP_KERNEL);
 	if (entry-name == NULL) {
 		kfree(entry);
 		return NULL;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c linux-2.6.11-rc2-bk9/sound/core/info_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/info_oss.c	2004-12-24 21:34:01.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/info_oss.c	2005-01-31 21:30:35.0 +
@@ -27,6 +27,7 @@
 #include sound/info.h
 #include sound/version.h
 #include linux/utsname.h
+#include linux/string.h
 
 #if defined(CONFIG_SND_OSSEMUL)  defined(CONFIG_PROC_FS)
 
@@ -51,7 +52,7 @@ int snd_oss_info_register(int dev, int n
 			x = NULL;
 		}
 	} else {
-		x = snd_kmalloc_strdup(string, GFP_KERNEL);
+		x = kstrdup(string, GFP_KERNEL);
 		if (x == NULL) {
 			up(strings);
 			return -ENOMEM;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/memory.c linux-2.6.11-rc2-bk9/sound/core/memory.c
--- vanilla-2.6.11-rc2-bk9/sound/core/memory.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/memory.c	2005-01-31 21:30:07.0 +
@@ -221,29 +221,6 @@ int __exit snd_memory_info_done(void)
 #endif /* CONFIG_SND_DEBUG_MEMORY */
 
 /**
- * snd_kmalloc_strdup - copy the string
- * @string: the original string
- * @flags: allocation conditions, GFP_XXX
- *
- * Allocates a memory chunk via kmalloc() and copies the string to it.
- *
- * Returns the pointer, or NULL if no enoguh memory.
- */
-char *snd_kmalloc_strdup(const char *string, int flags)
-{
-	size_t len;
-	char *ptr;
-
-	if (!string)
-		return NULL;
-	len = strlen(string) + 1;
-	ptr = _snd_kmalloc(len, flags);
-	if (ptr)
-		memcpy(ptr, string, len);
-	return ptr;
-}
-
-/**
  * copy_to_user_fromio - copy data from mmio-space to user-space
  * @dst: the destination pointer on user-space
  * @src: the source pointer on mmio
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/oss/mixer_oss.c	2005-01-31 21:30:19.0 +
@@ -24,6 +24,7 @@
 #include linux/smp_lock.h
 #include linux/slab.h
 #include linux/time.h
+#include linux/string.h
 #include sound/core.h
 #include sound/minors.h
 #include sound/control.h
@@ -1122,7 +1123,7 @@ static void snd_mixer_oss_proc_write(snd
 			goto __unlock;
 		}
 		tbl-oss_id = ch;
-		tbl-name = snd_kmalloc_strdup(str, GFP_KERNEL);
+		tbl-name = kstrdup(str, GFP_KERNEL);
 		if (! tbl-name) {
 			kfree(tbl);
 			goto __unlock;
diff -uprN -X dontdiff vanilla-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c linux-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c
--- vanilla-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c	2005-01-31 20:05:34.0 +
+++ linux-2.6.11-rc2-bk9/sound/core/oss/pcm_oss.c	2005-01-31 21:30:24.0 +
@@ -33,6 +33,7 @@
 #include linux/time.h
 #include linux/vmalloc.h
 #include linux/moduleparam.h
+#include linux/string.h
 #include sound/core.h
 #include sound/minors.h
 #include sound/pcm.h
@@ -2349,7 +2350,7 @@ static void snd_pcm_oss_proc_write(snd_i
 	for (setup1 = pstr-oss.setup_list; setup1-next; setup1 = setup1-next);
 	setup1-next = setup;
 }
-template.task_name = snd_kmalloc_strdup(task_name, GFP_KERNEL);
+template.task_name = kstrdup(task_name, GFP_KERNEL);
 			} else