Staging: comedi: Added some validation of comedi module parameter values.
authorFrank Mori Hess <fmhess@users.sourceforge.net>
Mon, 15 Dec 2008 13:44:45 +0000 (13:44 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 3 Apr 2009 21:53:52 +0000 (14:53 -0700)
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: David Schleef <ds@schleef.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/comedi/comedi_fops.c
drivers/staging/comedi/comedidev.h

index ed9f2bb887521387273f25ebe5522287d13e4e7e..1464f550a5af61fa1359ff61002db20a8f85daa7 100644 (file)
@@ -1911,6 +1911,22 @@ static int __init comedi_init(void)
        printk(KERN_INFO "comedi: version " COMEDI_RELEASE
               " - http://www.comedi.org\n");
 
+       if (comedi_num_legacy_minors < 0 ||
+           comedi_num_legacy_minors > COMEDI_NUM_BOARD_MINORS) {
+               printk(KERN_ERR "comedi: error: invalid value for module "
+                      "parameter \"comedi_num_legacy_minors\".  Valid values "
+                      "are 0 through %i.\n", COMEDI_NUM_BOARD_MINORS);
+               return -EINVAL;
+       }
+
+       /*
+        * comedi is unusable if both comedi_autoconfig and
+        * comedi_num_legacy_minors are zero, so we might as well adjust the
+        * defaults in that case
+        */
+       if (comedi_autoconfig == 0 && comedi_num_legacy_minors == 0)
+               comedi_num_legacy_minors = 16;
+
        memset(comedi_file_info_table, 0,
               sizeof(struct comedi_device_file_info *) * COMEDI_NUM_MINORS);
 
index 6d67c48754c5672886240ae23e4522550e8fd019..9a56c0e86df395aa135233de92d47c2df6e5afc8 100644 (file)
 #define PCI_VENDOR_ID_MEILHAUS         0x1402
 
 #define COMEDI_NUM_MINORS 0x100
-#define COMEDI_NUM_LEGACY_MINORS 0x10
 #define COMEDI_NUM_BOARD_MINORS 0x30
 #define COMEDI_FIRST_SUBDEVICE_MINOR COMEDI_NUM_BOARD_MINORS