module_param: check type correctness for module_param_array
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>
This commit is contained in:
Родитель
e49ce14150
Коммит
bafeafeab9
|
@ -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"
|
||||
|
|
|
@ -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[,...]>"
|
||||
|
|
|
@ -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",
|
||||
};
|
||||
|
||||
|
|
|
@ -111,6 +111,8 @@ static struct kernel_param_ops param_ops_axis = {
|
|||
.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");
|
||||
|
||||
|
|
|
@ -395,6 +395,7 @@ extern int param_get_invbool(char *buffer, const struct kernel_param *kp);
|
|||
* 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, \
|
||||
|
|
Загрузка…
Ссылка в новой задаче