]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/staging/comedi/comedi_fops.c
mm: mark most vm_operations_struct const
[linux-beck.git] / drivers / staging / comedi / comedi_fops.c
index 985d94b6cbfd6eeb21afe792ca14e6be2d2ee866..0e8a45102933ea0c0a103581959ad54c01918abc 100644 (file)
@@ -215,7 +215,6 @@ static struct comedi_subdevice
        struct comedi_subdevice *s;
        unsigned int i = minor - COMEDI_NUM_BOARD_MINORS;
 
-       BUG_ON(i >= COMEDI_NUM_SUBDEVICE_MINORS);
        mutex_lock(&comedi_subdevice_minor_table_lock);
        s = comedi_subdevice_minor_table[i];
        if (s && s->device != dev)
@@ -228,7 +227,6 @@ static struct comedi_device *comedi_dev_get_from_board_minor(unsigned minor)
 {
        struct comedi_device *dev;
 
-       BUG_ON(minor >= COMEDI_NUM_BOARD_MINORS);
        mutex_lock(&comedi_board_minor_table_lock);
        dev = comedi_dev_get(comedi_board_minor_table[minor]);
        mutex_unlock(&comedi_board_minor_table_lock);
@@ -241,7 +239,6 @@ static struct comedi_device *comedi_dev_get_from_subdevice_minor(unsigned minor)
        struct comedi_subdevice *s;
        unsigned int i = minor - COMEDI_NUM_BOARD_MINORS;
 
-       BUG_ON(i >= COMEDI_NUM_SUBDEVICE_MINORS);
        mutex_lock(&comedi_subdevice_minor_table_lock);
        s = comedi_subdevice_minor_table[i];
        dev = comedi_dev_get(s ? s->device : NULL);
@@ -2159,7 +2156,7 @@ static void comedi_vm_close(struct vm_area_struct *area)
        comedi_buf_map_put(bm);
 }
 
-static struct vm_operations_struct comedi_vm_ops = {
+static const struct vm_operations_struct comedi_vm_ops = {
        .open = comedi_vm_open,
        .close = comedi_vm_close,
 };
@@ -2599,14 +2596,14 @@ static int comedi_open(struct inode *inode, struct file *file)
        cfp->dev = dev;
 
        mutex_lock(&dev->mutex);
-       if (!dev->attached && !capable(CAP_NET_ADMIN)) {
-               dev_dbg(dev->class_dev, "not attached and not CAP_NET_ADMIN\n");
+       if (!dev->attached && !capable(CAP_SYS_ADMIN)) {
+               dev_dbg(dev->class_dev, "not attached and not CAP_SYS_ADMIN\n");
                rc = -ENODEV;
                goto out;
        }
        if (dev->attached && dev->use_count == 0) {
                if (!try_module_get(dev->driver->module)) {
-                       rc = -ENOSYS;
+                       rc = -ENXIO;
                        goto out;
                }
                if (dev->open) {
@@ -2777,12 +2774,6 @@ struct comedi_device *comedi_alloc_board_minor(struct device *hardware_device)
        return dev;
 }
 
-static void comedi_free_board_minor(unsigned minor)
-{
-       BUG_ON(minor >= COMEDI_NUM_BOARD_MINORS);
-       comedi_free_board_dev(comedi_clear_board_minor(minor));
-}
-
 void comedi_release_hardware_device(struct device *hardware_device)
 {
        int minor;
@@ -2838,12 +2829,10 @@ void comedi_free_subdevice_minor(struct comedi_subdevice *s)
 
        if (!s)
                return;
-       if (s->minor < 0)
+       if (s->minor < COMEDI_NUM_BOARD_MINORS ||
+           s->minor >= COMEDI_NUM_MINORS)
                return;
 
-       BUG_ON(s->minor >= COMEDI_NUM_MINORS);
-       BUG_ON(s->minor < COMEDI_NUM_BOARD_MINORS);
-
        i = s->minor - COMEDI_NUM_BOARD_MINORS;
        mutex_lock(&comedi_subdevice_minor_table_lock);
        if (s == comedi_subdevice_minor_table[i])
@@ -2857,10 +2846,13 @@ void comedi_free_subdevice_minor(struct comedi_subdevice *s)
 
 static void comedi_cleanup_board_minors(void)
 {
+       struct comedi_device *dev;
        unsigned i;
 
-       for (i = 0; i < COMEDI_NUM_BOARD_MINORS; i++)
-               comedi_free_board_minor(i);
+       for (i = 0; i < COMEDI_NUM_BOARD_MINORS; i++) {
+               dev = comedi_clear_board_minor(i);
+               comedi_free_board_dev(dev);
+       }
 }
 
 static int __init comedi_init(void)
@@ -2932,14 +2924,7 @@ module_init(comedi_init);
 
 static void __exit comedi_cleanup(void)
 {
-       int i;
-
        comedi_cleanup_board_minors();
-       for (i = 0; i < COMEDI_NUM_BOARD_MINORS; ++i)
-               BUG_ON(comedi_board_minor_table[i]);
-       for (i = 0; i < COMEDI_NUM_SUBDEVICE_MINORS; ++i)
-               BUG_ON(comedi_subdevice_minor_table[i]);
-
        class_destroy(comedi_class);
        cdev_del(&comedi_cdev);
        unregister_chrdev_region(MKDEV(COMEDI_MAJOR, 0), COMEDI_NUM_MINORS);