* [PATCH 1/15] module_param: check type correctness for module_param_array
@ 2011-12-15 3:00 Rusty Russell
2011-12-15 9:01 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 2+ messages in thread
From: Rusty Russell @ 2011-12-15 3:00 UTC (permalink / raw)
To: lkml - Kernel Mailing List
Cc: Pawel Moll, Luca Risolia, Mauro Carvalho Chehab, Eric Piel,
linux-media
module_param_array(), unlike its non-array cousins, didn't check the type
of the variable. Fixing this found two bugs.
Cc: Luca Risolia <luca.risolia@studio.unibo.it>
Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
Cc: Eric Piel <eric.piel@tremplin-utc.net>
Cc: linux-media@vger.kernel.org
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/media/video/et61x251/et61x251_core.c | 4 ++--
drivers/media/video/sn9c102/sn9c102_core.c | 4 ++--
drivers/mfd/janz-cmodio.c | 2 +-
drivers/misc/lis3lv02d/lis3lv02d.c | 2 ++
include/linux/moduleparam.h | 1 +
5 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c
--- a/drivers/media/video/et61x251/et61x251_core.c
+++ b/drivers/media/video/et61x251/et61x251_core.c
@@ -76,8 +76,8 @@ MODULE_PARM_DESC(video_nr,
"\none and for every other camera."
"\n");
-static short force_munmap[] = {[0 ... ET61X251_MAX_DEVICES-1] =
- ET61X251_FORCE_MUNMAP};
+static bool force_munmap[] = {[0 ... ET61X251_MAX_DEVICES-1] =
+ ET61X251_FORCE_MUNMAP};
module_param_array(force_munmap, bool, NULL, 0444);
MODULE_PARM_DESC(force_munmap,
"\n<0|1[,...]> Force the application to unmap previously"
diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c
--- a/drivers/media/video/sn9c102/sn9c102_core.c
+++ b/drivers/media/video/sn9c102/sn9c102_core.c
@@ -75,8 +75,8 @@ MODULE_PARM_DESC(video_nr,
"\none and for every other camera."
"\n");
-static short force_munmap[] = {[0 ... SN9C102_MAX_DEVICES-1] =
- SN9C102_FORCE_MUNMAP};
+static bool force_munmap[] = {[0 ... SN9C102_MAX_DEVICES-1] =
+ SN9C102_FORCE_MUNMAP};
module_param_array(force_munmap, bool, NULL, 0444);
MODULE_PARM_DESC(force_munmap,
" <0|1[,...]>"
diff --git a/drivers/mfd/janz-cmodio.c b/drivers/mfd/janz-cmodio.c
--- a/drivers/mfd/janz-cmodio.c
+++ b/drivers/mfd/janz-cmodio.c
@@ -33,7 +33,7 @@
/* Module Parameters */
static unsigned int num_modules = CMODIO_MAX_MODULES;
-static unsigned char *modules[CMODIO_MAX_MODULES] = {
+static char *modules[CMODIO_MAX_MODULES] = {
"empty", "empty", "empty", "empty",
};
diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c
--- a/drivers/misc/lis3lv02d/lis3lv02d.c
+++ b/drivers/misc/lis3lv02d/lis3lv02d.c
@@ -111,6 +111,8 @@ static struct kernel_param_ops param_ops
.get = param_get_int,
};
+#define param_check_axis(name, p) param_check_int(name, p)
+
module_param_array_named(axes, lis3_dev.ac.as_array, axis, NULL, 0644);
MODULE_PARM_DESC(axes, "Axis-mapping for x,y,z directions");
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -395,6 +395,7 @@ extern int param_get_invbool(char *buffe
* module_param_named() for why this might be necessary.
*/
#define module_param_array_named(name, array, type, nump, perm) \
+ param_check_##type(name, &(array)[0]); \
static const struct kparam_array __param_arr_##name \
= { .max = ARRAY_SIZE(array), .num = nump, \
.ops = ¶m_ops_##type, \
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 1/15] module_param: check type correctness for module_param_array
2011-12-15 3:00 [PATCH 1/15] module_param: check type correctness for module_param_array Rusty Russell
@ 2011-12-15 9:01 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 2+ messages in thread
From: Mauro Carvalho Chehab @ 2011-12-15 9:01 UTC (permalink / raw)
To: Rusty Russell
Cc: lkml - Kernel Mailing List, Pawel Moll, Luca Risolia, Eric Piel,
linux-media
On 15-12-2011 01:00, Rusty Russell wrote:
> module_param_array(), unlike its non-array cousins, didn't check the type
> of the variable. Fixing this found two bugs.
>
> Cc: Luca Risolia <luca.risolia@studio.unibo.it>
> Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
> Cc: Eric Piel <eric.piel@tremplin-utc.net>
> Cc: linux-media@vger.kernel.org
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> ---
> drivers/media/video/et61x251/et61x251_core.c | 4 ++--
> drivers/media/video/sn9c102/sn9c102_core.c | 4 ++--
Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com>
> drivers/mfd/janz-cmodio.c | 2 +-
> drivers/misc/lis3lv02d/lis3lv02d.c | 2 ++
> include/linux/moduleparam.h | 1 +
> 5 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c
> --- a/drivers/media/video/et61x251/et61x251_core.c
> +++ b/drivers/media/video/et61x251/et61x251_core.c
> @@ -76,8 +76,8 @@ MODULE_PARM_DESC(video_nr,
> "\none and for every other camera."
> "\n");
>
> -static short force_munmap[] = {[0 ... ET61X251_MAX_DEVICES-1] =
> - ET61X251_FORCE_MUNMAP};
> +static bool force_munmap[] = {[0 ... ET61X251_MAX_DEVICES-1] =
> + ET61X251_FORCE_MUNMAP};
> module_param_array(force_munmap, bool, NULL, 0444);
> MODULE_PARM_DESC(force_munmap,
> "\n<0|1[,...]> Force the application to unmap previously"
> diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c
> --- a/drivers/media/video/sn9c102/sn9c102_core.c
> +++ b/drivers/media/video/sn9c102/sn9c102_core.c
> @@ -75,8 +75,8 @@ MODULE_PARM_DESC(video_nr,
> "\none and for every other camera."
> "\n");
>
> -static short force_munmap[] = {[0 ... SN9C102_MAX_DEVICES-1] =
> - SN9C102_FORCE_MUNMAP};
> +static bool force_munmap[] = {[0 ... SN9C102_MAX_DEVICES-1] =
> + SN9C102_FORCE_MUNMAP};
> module_param_array(force_munmap, bool, NULL, 0444);
> MODULE_PARM_DESC(force_munmap,
> " <0|1[,...]>"
> diff --git a/drivers/mfd/janz-cmodio.c b/drivers/mfd/janz-cmodio.c
> --- a/drivers/mfd/janz-cmodio.c
> +++ b/drivers/mfd/janz-cmodio.c
> @@ -33,7 +33,7 @@
>
> /* Module Parameters */
> static unsigned int num_modules = CMODIO_MAX_MODULES;
> -static unsigned char *modules[CMODIO_MAX_MODULES] = {
> +static char *modules[CMODIO_MAX_MODULES] = {
> "empty", "empty", "empty", "empty",
> };
>
> diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c
> --- a/drivers/misc/lis3lv02d/lis3lv02d.c
> +++ b/drivers/misc/lis3lv02d/lis3lv02d.c
> @@ -111,6 +111,8 @@ static struct kernel_param_ops param_ops
> .get = param_get_int,
> };
>
> +#define param_check_axis(name, p) param_check_int(name, p)
> +
> module_param_array_named(axes, lis3_dev.ac.as_array, axis, NULL, 0644);
> MODULE_PARM_DESC(axes, "Axis-mapping for x,y,z directions");
>
> diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
> --- a/include/linux/moduleparam.h
> +++ b/include/linux/moduleparam.h
> @@ -395,6 +395,7 @@ extern int param_get_invbool(char *buffe
> * module_param_named() for why this might be necessary.
> */
> #define module_param_array_named(name, array, type, nump, perm) \
> + param_check_##type(name, &(array)[0]); \
> static const struct kparam_array __param_arr_##name \
> = { .max = ARRAY_SIZE(array), .num = nump, \
> .ops = ¶m_ops_##type, \
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-12-15 9:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-15 3:00 [PATCH 1/15] module_param: check type correctness for module_param_array Rusty Russell
2011-12-15 9:01 ` Mauro Carvalho Chehab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).