diff options
| author | Rusty Russell <rusty@rustcorp.com.au> | 2009-06-12 23:46:56 -0400 |
|---|---|---|
| committer | Rusty Russell <rusty@rustcorp.com.au> | 2009-06-12 08:16:56 -0400 |
| commit | 45fcc70c0b6ee0c508e1fdb5fef735c3546803f4 (patch) | |
| tree | 15ea34cf77ecd9bbd4f78259ced012f18a26e01b /kernel | |
| parent | 9a71af2c3627b379b7c31917a7f6ee0d29bc559b (diff) | |
module_param: split perm field into flags and perm
Impact: cleanup
Rather than hack KPARAM_KMALLOCED into the perm field, separate it out.
Since the perm field was 32 bits and only needs 16, we don't add bloat.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/params.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/kernel/params.c b/kernel/params.c index 023abbf5f89f..b4660dc13dbc 100644 --- a/kernel/params.c +++ b/kernel/params.c | |||
| @@ -24,9 +24,6 @@ | |||
| 24 | #include <linux/err.h> | 24 | #include <linux/err.h> |
| 25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
| 26 | 26 | ||
| 27 | /* We abuse the high bits of "perm" to record whether we kmalloc'ed. */ | ||
| 28 | #define KPARAM_KMALLOCED 0x80000000 | ||
| 29 | |||
| 30 | #if 0 | 27 | #if 0 |
| 31 | #define DEBUGP printk | 28 | #define DEBUGP printk |
| 32 | #else | 29 | #else |
| @@ -220,13 +217,13 @@ int param_set_charp(const char *val, struct kernel_param *kp) | |||
| 220 | return -ENOSPC; | 217 | return -ENOSPC; |
| 221 | } | 218 | } |
| 222 | 219 | ||
| 223 | if (kp->perm & KPARAM_KMALLOCED) | 220 | if (kp->flags & KPARAM_KMALLOCED) |
| 224 | kfree(*(char **)kp->arg); | 221 | kfree(*(char **)kp->arg); |
| 225 | 222 | ||
| 226 | /* This is a hack. We can't need to strdup in early boot, and we | 223 | /* This is a hack. We can't need to strdup in early boot, and we |
| 227 | * don't need to; this mangled commandline is preserved. */ | 224 | * don't need to; this mangled commandline is preserved. */ |
| 228 | if (slab_is_available()) { | 225 | if (slab_is_available()) { |
| 229 | kp->perm |= KPARAM_KMALLOCED; | 226 | kp->flags |= KPARAM_KMALLOCED; |
| 230 | *(char **)kp->arg = kstrdup(val, GFP_KERNEL); | 227 | *(char **)kp->arg = kstrdup(val, GFP_KERNEL); |
| 231 | if (!kp->arg) | 228 | if (!kp->arg) |
| 232 | return -ENOMEM; | 229 | return -ENOMEM; |
| @@ -591,7 +588,7 @@ void destroy_params(const struct kernel_param *params, unsigned num) | |||
| 591 | unsigned int i; | 588 | unsigned int i; |
| 592 | 589 | ||
| 593 | for (i = 0; i < num; i++) | 590 | for (i = 0; i < num; i++) |
| 594 | if (params[i].perm & KPARAM_KMALLOCED) | 591 | if (params[i].flags & KPARAM_KMALLOCED) |
| 595 | kfree(*(char **)params[i].arg); | 592 | kfree(*(char **)params[i].arg); |
| 596 | } | 593 | } |
| 597 | 594 | ||
